Sitelet https://github.com/gpodder/gpodder/pull/1272/files
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions src/gpodder/gtkui/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2805,16 +2805,22 @@ def update_feed_cache_finish_callback():
# download older episodes first
episodes = list(Model.sort_episodes_by_pubdate(episodes))

if not episodes:
# Remove episodes without downloadable content
downloadable_episodes = [e for e in episodes if e.url]

if not downloadable_episodes:
# Nothing new here - but inform the user
self.pbFeedUpdate.set_fraction(1.0)
self.pbFeedUpdate.set_text(_('No new episodes'))
self.pbFeedUpdate.set_text(
_('No new episodes with downloadable content') if episodes else _('No new episodes'))
self.feed_cache_update_cancelled = True
self.btnCancelFeedUpdate.show()
self.btnCancelFeedUpdate.set_sensitive(True)
self.update_action.set_enabled(True)
self.btnCancelFeedUpdate.set_image(Gtk.Image.new_from_icon_name('edit-clear', Gtk.IconSize.BUTTON))
else:
episodes = downloadable_episodes

count = len(episodes)
# New episodes are available
self.pbFeedUpdate.set_fraction(1.0)
Expand Down
7 changes: 7 additions & 0 deletions src/gpodder/gtkui/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@ def __init__(self, config, on_filter_changed=lambda has_episodes: None):
# Are we currently showing "all episodes"/section or a single channel?
self._section_view = False

self.ICON_WEB_BROWSER = 'web-browser'
self.ICON_AUDIO_FILE = 'audio-x-generic'
self.ICON_VIDEO_FILE = 'video-x-generic'
self.ICON_IMAGE_FILE = 'image-x-generic'
Expand Down Expand Up @@ -466,6 +467,12 @@ def get_update_fields(self, episode, include_description):
if episode.state == gpodder.STATE_NORMAL and episode.is_new:
view_show_downloaded = self._config.ui.gtk.episode_list.always_show_new
view_show_unplayed = True
elif not episode.url:
tooltip.append(_('No downloadable content'))
status_icon = self.ICON_WEB_BROWSER
if episode.state == gpodder.STATE_NORMAL and episode.is_new:
view_show_downloaded = self._config.ui.gtk.episode_list.always_show_new
view_show_unplayed = True
elif episode.state == gpodder.STATE_NORMAL and episode.is_new:
tooltip.append(_('New episode'))
view_show_downloaded = self._config.ui.gtk.episode_list.always_show_new
Expand Down
6 changes: 5 additions & 1 deletion src/gpodder/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,11 @@ def from_podcastparser_entry(cls, entry, channel):
if link_has_media:
return episode

return None
# The episode has no downloadable content.
# It is either a blog post or it links to a webpage with content accessible from shownotes title.
# Remove the URL so downloading will fail.
episode.url = ''
return episode

def __init__(self, channel):
self.parent = channel
Expand Down