mirror of
https://github.com/stonega/tsacdop
synced 2025-02-27 00:37:42 +01:00
Fix outdated download task delete failed.
This commit is contained in:
parent
acf41963aa
commit
ad754cfcd9
@ -1,5 +1,3 @@
|
|||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:sqflite/sqflite.dart';
|
import 'package:sqflite/sqflite.dart';
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'package:path/path.dart';
|
import 'package:path/path.dart';
|
||||||
@ -861,12 +859,9 @@ class DBHelper {
|
|||||||
// }
|
// }
|
||||||
// return episodes;
|
// return episodes;
|
||||||
//}
|
//}
|
||||||
Future<List<EpisodeBrief>> getOutdatedEpisode(int days) async {
|
Future<List<EpisodeBrief>> getOutdatedEpisode(int deadline) async {
|
||||||
var dbClient = await database;
|
var dbClient = await database;
|
||||||
List<EpisodeBrief> episodes = [];
|
List<EpisodeBrief> episodes = [];
|
||||||
if (days > 0) {
|
|
||||||
int deadline =
|
|
||||||
DateTime.now().subtract(Duration(days: days)).millisecondsSinceEpoch;
|
|
||||||
List<Map> list = await dbClient
|
List<Map> list = await dbClient
|
||||||
.rawQuery("""SELECT E.title, E.enclosure_url, E.enclosure_length,
|
.rawQuery("""SELECT E.title, E.enclosure_url, E.enclosure_length,
|
||||||
E.milliseconds, P.title as feed_title, E.duration, E.explicit, E.liked,
|
E.milliseconds, P.title as feed_title, E.duration, E.explicit, E.liked,
|
||||||
@ -891,7 +886,6 @@ class DBHelper {
|
|||||||
list[x]['is_new'],
|
list[x]['is_new'],
|
||||||
list[x]['skip_seconds']));
|
list[x]['skip_seconds']));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return episodes;
|
return episodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1101,26 +1095,35 @@ class DBHelper {
|
|||||||
Future<int> saveDownloaded(String url, String id) async {
|
Future<int> saveDownloaded(String url, String id) async {
|
||||||
var dbClient = await database;
|
var dbClient = await database;
|
||||||
int milliseconds = DateTime.now().millisecondsSinceEpoch;
|
int milliseconds = DateTime.now().millisecondsSinceEpoch;
|
||||||
int count = await dbClient.rawUpdate(
|
int count;
|
||||||
|
await dbClient.transaction((txn) async {
|
||||||
|
count = await txn.rawUpdate(
|
||||||
"UPDATE Episodes SET downloaded = ?, download_date = ? WHERE enclosure_url = ?",
|
"UPDATE Episodes SET downloaded = ?, download_date = ? WHERE enclosure_url = ?",
|
||||||
[id, milliseconds, url]);
|
[id, milliseconds, url]);
|
||||||
|
});
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<int> saveMediaId(String url, String path, String id, int size) async {
|
Future<int> saveMediaId(String url, String path, String id, int size) async {
|
||||||
var dbClient = await database;
|
var dbClient = await database;
|
||||||
int milliseconds = DateTime.now().millisecondsSinceEpoch;
|
int milliseconds = DateTime.now().millisecondsSinceEpoch;
|
||||||
int count = await dbClient.rawUpdate(
|
int count;
|
||||||
|
await dbClient.transaction((txn) async {
|
||||||
|
count = await txn.rawUpdate(
|
||||||
"UPDATE Episodes SET enclosure_length = ?, media_id = ?, download_date = ?, downloaded = ? WHERE enclosure_url = ?",
|
"UPDATE Episodes SET enclosure_length = ?, media_id = ?, download_date = ?, downloaded = ? WHERE enclosure_url = ?",
|
||||||
[size, path, milliseconds, id, url]);
|
[size, path, milliseconds, id, url]);
|
||||||
|
});
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<int> delDownloaded(String url) async {
|
Future<int> delDownloaded(String url) async {
|
||||||
var dbClient = await database;
|
var dbClient = await database;
|
||||||
int count = await dbClient.rawUpdate(
|
int count;
|
||||||
|
await dbClient.transaction((txn) async {
|
||||||
|
count = await txn.rawUpdate(
|
||||||
"UPDATE Episodes SET downloaded = 'ND', media_id = ? WHERE enclosure_url = ?",
|
"UPDATE Episodes SET downloaded = 'ND', media_id = ? WHERE enclosure_url = ?",
|
||||||
[url, url]);
|
[url, url]);
|
||||||
|
});
|
||||||
print('Deleted ' + url);
|
print('Deleted ' + url);
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
@ -225,7 +225,6 @@ class DownloadState extends ChangeNotifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
EpisodeTask episodeToTask(EpisodeBrief episode) {
|
EpisodeTask episodeToTask(EpisodeBrief episode) {
|
||||||
print(_episodeTasks.first.episode.description);
|
|
||||||
return _episodeTasks
|
return _episodeTasks
|
||||||
.firstWhere((task) => task.episode.enclosureUrl == episode.enclosureUrl,
|
.firstWhere((task) => task.episode.enclosureUrl == episode.enclosureUrl,
|
||||||
orElse: () {
|
orElse: () {
|
||||||
@ -322,8 +321,7 @@ class DownloadState extends ChangeNotifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_removeTask(EpisodeBrief episode) {
|
_removeTask(EpisodeBrief episode) {
|
||||||
_episodeTasks.removeWhere(
|
_episodeTasks.removeWhere((element) => element.episode == episode);
|
||||||
(element) => element.episode.enclosureUrl == episode.enclosureUrl);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_autoDelete() async {
|
_autoDelete() async {
|
||||||
@ -333,11 +331,21 @@ class DownloadState extends ChangeNotifier {
|
|||||||
if (autoDelete == 0)
|
if (autoDelete == 0)
|
||||||
await autoDeleteStorage.saveInt(30);
|
await autoDeleteStorage.saveInt(30);
|
||||||
else if (autoDelete > 0) {
|
else if (autoDelete > 0) {
|
||||||
List<EpisodeBrief> episodes =
|
int deadline = DateTime.now()
|
||||||
await dbHelper.getOutdatedEpisode(autoDelete);
|
.subtract(Duration(days: autoDelete))
|
||||||
|
.millisecondsSinceEpoch;
|
||||||
|
List<EpisodeBrief> episodes = await dbHelper.getOutdatedEpisode(deadline);
|
||||||
if (episodes.length > 0) {
|
if (episodes.length > 0) {
|
||||||
await Future.forEach(episodes, (episode) => delTask(episode));
|
await Future.forEach(
|
||||||
}
|
episodes, (episode) async => await delTask(episode));
|
||||||
|
}
|
||||||
|
final tasks = await FlutterDownloader.loadTasksWithRawQuery(
|
||||||
|
query:
|
||||||
|
'SELECT * FROM task WHERE time_created < $deadline AND status = 3');
|
||||||
|
await Future.forEach(
|
||||||
|
tasks,
|
||||||
|
(task) async => FlutterDownloader.remove(
|
||||||
|
taskId: task.taskId, shouldDeleteContent: true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
import 'dart:ui';
|
||||||
|
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:audio_service/audio_service.dart';
|
import 'package:audio_service/audio_service.dart';
|
||||||
|
|
||||||
@ -89,5 +91,5 @@ class EpisodeBrief {
|
|||||||
episode.enclosureUrl == enclosureUrl;
|
episode.enclosureUrl == enclosureUrl;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
int get hashCode => enclosureUrl.hashCode + title.hashCode;
|
int get hashCode => hashValues(enclosureUrl, title);
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
import 'dart:ui';
|
||||||
|
|
||||||
class PodcastLocal {
|
class PodcastLocal {
|
||||||
final String title;
|
final String title;
|
||||||
final String imageUrl;
|
final String imageUrl;
|
||||||
@ -24,5 +26,5 @@ class PodcastLocal {
|
|||||||
podcastLocal.id == id;
|
podcastLocal.id == id;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
int get hashCode => id.hashCode + rssUrl.hashCode;
|
int get hashCode => hashValues(id, rssUrl);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user