diff --git a/common/GPodderEpisodeListModel.qml b/common/GPodderEpisodeListModel.qml index bc467e0..2deaa1e 100644 --- a/common/GPodderEpisodeListModel.qml +++ b/common/GPodderEpisodeListModel.qml @@ -32,16 +32,22 @@ ListModel { All: '', Fresh: 'new or downloading', Downloaded: 'downloaded or downloading', + UnplayedDownloads: 'downloaded and not played', + FinishedDownloads: 'downloaded and finished', HideDeleted: 'not deleted', Deleted: 'deleted', + ShortDownloads: 'downloaded and min > 0 and min < 10', }) property var filters: ([ { label: 'All', query: episodeListModel.queries.All }, { label: 'Fresh', query: episodeListModel.queries.Fresh }, { label: 'Downloaded', query: episodeListModel.queries.Downloaded }, + { label: 'Unplayed downloads', query: episodeListModel.queries.UnplayedDownloads }, + { label: 'Finished downloads', query: episodeListModel.queries.FinishedDownloads }, { label: 'Hide deleted', query: episodeListModel.queries.HideDeleted }, - { label: 'Deleted', query: episodeListModel.queries.Deleted }, + { label: 'Deleted episodes', query: episodeListModel.queries.Deleted }, + { label: 'Short downloads (< 10 min)', query: episodeListModel.queries.ShortDownloads }, ]) property bool ready: false diff --git a/main.py b/main.py index 3f8b26d..461a51e 100644 --- a/main.py +++ b/main.py @@ -35,6 +35,8 @@ from gpodder.api import query import logging import functools +import time +import datetime logger = logging.getLogger(__name__) @@ -141,6 +143,8 @@ class gPotherSide: return [self.convert_podcast(podcast) for podcast in podcasts] def convert_episode(self, episode): + now = datetime.datetime.now() + tnow = time.time() return { 'id': episode.id, 'title': episode.trimmed_title, @@ -149,9 +153,22 @@ class gPotherSide: 'isNew': episode.is_new, 'playbackProgress': self._get_playback_progress(episode), 'published': util.format_date(episode.published), + 'section': self._format_published_section(now, tnow, episode.published), 'hasShownotes': episode.description != '', } + def _format_published_section(self, now, tnow, published): + diff = (tnow - published) + + if diff < 60 * 60 * 24 * 7: + return util.format_date(published) + + dt = datetime.datetime.fromtimestamp(published) + if dt.year == now.year: + return dt.strftime('%B %Y') + + return dt.strftime('%Y') + def load_episodes(self, id=ALL_PODCASTS, eql=None): if id is not None and id != self.ALL_PODCASTS: podcasts = [self._get_podcast_by_id(id)] diff --git a/touch/EpisodeQueryPage.qml b/touch/EpisodeQueryPage.qml index 841fc49..1e97dba 100644 --- a/touch/EpisodeQueryPage.qml +++ b/touch/EpisodeQueryPage.qml @@ -59,7 +59,7 @@ SlidePage { model: GPodderEpisodeListModel { id: episodesListModel } - section.property: 'published' + section.property: 'section' section.delegate: SectionHeader { text: section } delegate: EpisodeItem { }