From b9844c0bac65039a80d60ee358d9195ca2020754 Mon Sep 17 00:00:00 2001 From: Justin Forest Date: Sun, 9 Nov 2008 00:27:36 +0300 Subject: [PATCH] Optionally remove old episodes from iPod If ipod_purge_old_episodes is turned on in advanced settings, episodes which were played and don't have stars are removed from iPod before sync. --- src/gpodder/config.py | 1 + src/gpodder/gui.py | 3 +++ src/gpodder/sync.py | 13 ++++++++++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/gpodder/config.py b/src/gpodder/config.py index 1fad087a..e3db8c3f 100644 --- a/src/gpodder/config.py +++ b/src/gpodder/config.py @@ -72,6 +72,7 @@ gPodderSettings = { 'episode_list_descriptions': (bool, True), 'show_toolbar': (bool, True), 'ipod_write_gtkpod_extended': (bool, False), + 'ipod_purge_old_episodes': (bool, False), 'mp3_player_delete_played': (bool, False), # Tray icon and notification settings diff --git a/src/gpodder/gui.py b/src/gpodder/gui.py index a563e840..e8161762 100644 --- a/src/gpodder/gui.py +++ b/src/gpodder/gui.py @@ -1866,6 +1866,9 @@ class gPodder(GladeWidget): self.notification(message, title) return + if gl.config.ipod_purge_old_episodes: + device.purge() + sync_all_episodes = not bool(episodes) if episodes is None: diff --git a/src/gpodder/sync.py b/src/gpodder/sync.py index d2a730f4..5245ae02 100644 --- a/src/gpodder/sync.py +++ b/src/gpodder/sync.py @@ -296,6 +296,15 @@ class iPodDevice(Device): Device.close(self) return True + def purge(self): + for track in gpod.sw_get_playlist_tracks(self.podcasts_playlist): + if gpod.itdb_filename_on_ipod(track) is None: + log('Episode has no file: %s', track.title, sender=self) + # self.remove_track_gpod(track) + elif track.mark_unplayed == 1 and not track.rating: + log('Purging episode: %s', track.title, sender=self) + self.remove_track_gpod(track) + def get_all_tracks(self): tracks = [] for track in gpod.sw_get_playlist_tracks(self.podcasts_playlist): @@ -313,7 +322,9 @@ class iPodDevice(Device): def remove_track(self, track): self.notify('status', _('Removing %s') % track.title) - track = track.libgpodtrack + self.remove_track_gpod(track.libgpodtrack) + + def remove_track_gpod(self, track): filename = gpod.itdb_filename_on_ipod(track) try: -- 2.11.4.GIT