diff --git a/src/gpodder/gtkui/main.py b/src/gpodder/gtkui/main.py index ef3ac7418..ed3304682 100644 --- a/src/gpodder/gtkui/main.py +++ b/src/gpodder/gtkui/main.py @@ -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) diff --git a/src/gpodder/gtkui/model.py b/src/gpodder/gtkui/model.py index 76d2b5645..4243b8cdc 100644 --- a/src/gpodder/gtkui/model.py +++ b/src/gpodder/gtkui/model.py @@ -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' @@ -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 diff --git a/src/gpodder/model.py b/src/gpodder/model.py index 4171d6a6f..205bf3289 100644 --- a/src/gpodder/model.py +++ b/src/gpodder/model.py @@ -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