More episode filters, group by published section
This commit is contained in:
parent
0da88e3577
commit
96f2b70f05
3 changed files with 25 additions and 2 deletions
|
@ -32,16 +32,22 @@ ListModel {
|
||||||
All: '',
|
All: '',
|
||||||
Fresh: 'new or downloading',
|
Fresh: 'new or downloading',
|
||||||
Downloaded: 'downloaded or downloading',
|
Downloaded: 'downloaded or downloading',
|
||||||
|
UnplayedDownloads: 'downloaded and not played',
|
||||||
|
FinishedDownloads: 'downloaded and finished',
|
||||||
HideDeleted: 'not deleted',
|
HideDeleted: 'not deleted',
|
||||||
Deleted: 'deleted',
|
Deleted: 'deleted',
|
||||||
|
ShortDownloads: 'downloaded and min > 0 and min < 10',
|
||||||
})
|
})
|
||||||
|
|
||||||
property var filters: ([
|
property var filters: ([
|
||||||
{ label: 'All', query: episodeListModel.queries.All },
|
{ label: 'All', query: episodeListModel.queries.All },
|
||||||
{ label: 'Fresh', query: episodeListModel.queries.Fresh },
|
{ label: 'Fresh', query: episodeListModel.queries.Fresh },
|
||||||
{ label: 'Downloaded', query: episodeListModel.queries.Downloaded },
|
{ 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: '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
|
property bool ready: false
|
||||||
|
|
17
main.py
17
main.py
|
@ -35,6 +35,8 @@ from gpodder.api import query
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import functools
|
import functools
|
||||||
|
import time
|
||||||
|
import datetime
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -141,6 +143,8 @@ class gPotherSide:
|
||||||
return [self.convert_podcast(podcast) for podcast in podcasts]
|
return [self.convert_podcast(podcast) for podcast in podcasts]
|
||||||
|
|
||||||
def convert_episode(self, episode):
|
def convert_episode(self, episode):
|
||||||
|
now = datetime.datetime.now()
|
||||||
|
tnow = time.time()
|
||||||
return {
|
return {
|
||||||
'id': episode.id,
|
'id': episode.id,
|
||||||
'title': episode.trimmed_title,
|
'title': episode.trimmed_title,
|
||||||
|
@ -149,9 +153,22 @@ class gPotherSide:
|
||||||
'isNew': episode.is_new,
|
'isNew': episode.is_new,
|
||||||
'playbackProgress': self._get_playback_progress(episode),
|
'playbackProgress': self._get_playback_progress(episode),
|
||||||
'published': util.format_date(episode.published),
|
'published': util.format_date(episode.published),
|
||||||
|
'section': self._format_published_section(now, tnow, episode.published),
|
||||||
'hasShownotes': episode.description != '',
|
'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):
|
def load_episodes(self, id=ALL_PODCASTS, eql=None):
|
||||||
if id is not None and id != self.ALL_PODCASTS:
|
if id is not None and id != self.ALL_PODCASTS:
|
||||||
podcasts = [self._get_podcast_by_id(id)]
|
podcasts = [self._get_podcast_by_id(id)]
|
||||||
|
|
|
@ -59,7 +59,7 @@ SlidePage {
|
||||||
|
|
||||||
model: GPodderEpisodeListModel { id: episodesListModel }
|
model: GPodderEpisodeListModel { id: episodesListModel }
|
||||||
|
|
||||||
section.property: 'published'
|
section.property: 'section'
|
||||||
section.delegate: SectionHeader { text: section }
|
section.delegate: SectionHeader { text: section }
|
||||||
|
|
||||||
delegate: EpisodeItem { }
|
delegate: EpisodeItem { }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue