More episode filters, group by published section

This commit is contained in:
Thomas Perl 2014-03-15 16:33:24 +01:00
parent 0da88e3577
commit 96f2b70f05
3 changed files with 25 additions and 2 deletions

View file

@ -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

17
main.py
View file

@ -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)]

View file

@ -59,7 +59,7 @@ SlidePage {
model: GPodderEpisodeListModel { id: episodesListModel }
section.property: 'published'
section.property: 'section'
section.delegate: SectionHeader { text: section }
delegate: EpisodeItem { }