git.iko.soy/maciek134/podphoenix
on main help sign in
Fix for download duplication when restarting Podbird (rev 156)
c0ed4e5Erzan Uzan
app/podbird.qml+31−7
@@ -78,12 +78,21 @@ MainView {
78 settings.lastCheck = today
78 settings.lastCheck = today
79 }
79 }
80
80
81+ delayStartTimer.start();
82+ }
83+
84+ Timer {
85+ id: delayStartTimer
86+ interval: 500
87+ repeat: false
88+ onTriggered: {
81− if (!NetworkingStatus.online || settings.maxEpisodeDownload === -1) {
89+ if (!NetworkingStatus.online || podbird.settings.maxEpisodeDownload === -1) {
82− console.log("[LOG]: Skipped autodownloading of new episodes...")
90+ console.log("[LOG]: Skipped autodownloading of new episodes...")
83− console.log("[LOG]: Online connectivity: " + NetworkingStatus.online)
91+ console.log("[LOG]: Online connectivity: " + NetworkingStatus.online)
84− console.log("[LOG]: User settings (maxEpisodeDownload): " + settings.maxEpisodeDownload)
92+ console.log("[LOG]: User settings (maxEpisodeDownload): " + podbird.settings.maxEpisodeDownload)
85− } else {
93+ } else {
86− Podcasts.autoDownloadEpisodes(settings.maxEpisodeDownload)
94+ Podcasts.autoDownloadEpisodes(podbird.settings.maxEpisodeDownload)
95+ }
87 }
96 }
88 }
97 }
89
98
@@ -173,7 +182,12 @@ MainView {
173 }
182 }
174
183
175 function downloadEpisode(image, title, guid, url, disableMobileDownload) {
184 function downloadEpisode(image, title, guid, url, disableMobileDownload) {
185+ if(downloader.isDownloadInQueue(guid)) {
186+ console.log("[LOG]: Download with GUID of :"+guid+ " is already in the download queue.")
187+ return false;
188+ }
189+
176− var singleDownload = singleDownloadComponent.createObject(podbird, {"image": image, "title": title, "guid": guid , allowMobileDownload : !disableMobileDownload })
190+ var singleDownload = singleDownloadComponent.createObject(podbird, {"image": image, "title": title, "guid": guid, allowMobileDownload : !disableMobileDownload })
177 singleDownload.download(url)
191 singleDownload.download(url)
178 }
192 }
179
193
@@ -184,6 +198,16 @@ MainView {
184 property int progress: downloads.length > 0 ? downloads[0].progress : 0
198 property int progress: downloads.length > 0 ? downloads[0].progress : 0
185
199
186 cleanDownloads: true
200 cleanDownloads: true
201+
202+ function isDownloadInQueue ( guid ) {
203+ for( var i=0; i < downloads.length; i++) {
204+ if( downloads[i].metadata.custom.guid && guid === downloads[i].metadata.custom.guid) {
205+ return true ;
206+ }
207+ }
208+ return false;
209+ }
210+
187 onDownloadFinished: {
211 onDownloadFinished: {
188 var db = Podcasts.init();
212 var db = Podcasts.init();
189 var finalLocation = fileManager.saveDownload(path);
213 var finalLocation = fileManager.saveDownload(path);
app/podcasts.js+5−4
@@ -356,12 +356,13 @@ function autoDownloadEpisodes(maxEpisodeDownload) {
356 var rs = tx.executeSql("SELECT rowid, * FROM Podcast ORDER BY name ASC");
356 var rs = tx.executeSql("SELECT rowid, * FROM Podcast ORDER BY name ASC");
357 for (var i=0; i < rs.rows.length; i++) {
357 for (var i=0; i < rs.rows.length; i++) {
358 var podcast = rs.rows.item(i);
358 var podcast = rs.rows.item(i);
359− var rs2 = tx.executeSql("SELECT rowid, * FROM Episode WHERE podcast=? ORDER BY published DESC", [rs.rows.item(i).rowid]);
359+ var rs2 = tx.executeSql("SELECT rowid, * FROM Episode WHERE podcast=? ORDER BY published DESC", [podcast.rowid]);
360 var loopCount = maxEpisodeDownload > rs2.rows.length ? rs2.rows.length : maxEpisodeDownload
360 var loopCount = maxEpisodeDownload > rs2.rows.length ? rs2.rows.length : maxEpisodeDownload
361 for (var j=0; j < loopCount; j++) {
361 for (var j=0; j < loopCount; j++) {
362+ var episode = rs2.rows.item(j);
362− if (!rs2.rows.item(j).downloadedfile && !rs2.rows.item(j).listened && rs2.rows.item(j).audiourl) {
363+ if ( !episode.downloadedfile && !episode.listened && episode.audiourl && !episode.queued ) {
363− podbird.downloadEpisode(rs.rows.item(i).image, rs2.rows.item(j).name, rs2.rows.item(j).guid, rs2.rows.item(j).audiourl, podbird.settings.downloadOverWifiOnly)
364+ podbird.downloadEpisode(podcast.image, episode.name, episode.guid, episode.audiourl, podbird.settings.downloadOverWifiOnly)
364− tx.executeSql("UPDATE Episode SET queued=1 WHERE guid = ?", [rs2.rows.item(j).guid]);
365+ tx.executeSql("UPDATE Episode SET queued=1 WHERE guid = ?", [episode.guid]);
365 }
366 }
366 }
367 }
367 }
368 }