Show error icon on episodes that fail to download.
This commit is contained in:
parent
8b4a4e381a
commit
1e10a4f9bd
|
@ -898,6 +898,9 @@ class DownloadTask(object):
|
|||
logger.error('Download failed: %s', str(e), exc_info=True)
|
||||
self.error_message = _('Error: %s') % (str(e),)
|
||||
|
||||
if self.status == DownloadTask.FAILED:
|
||||
self.__episode._download_error = self.error_message
|
||||
|
||||
if self.status == DownloadTask.DOWNLOADING:
|
||||
# Everything went well - we're done
|
||||
self.status = DownloadTask.DONE
|
||||
|
|
|
@ -3054,6 +3054,7 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
for episode in episodes:
|
||||
logger.debug('Downloading episode: %s', episode.title)
|
||||
if not episode.was_downloaded(and_exists=True):
|
||||
episode._download_error = None
|
||||
task_exists = False
|
||||
for task in self.download_tasks_seen:
|
||||
if episode.url == task.url:
|
||||
|
@ -3075,6 +3076,7 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
try:
|
||||
task = download.DownloadTask(episode, self.config, downloader=downloader)
|
||||
except Exception as e:
|
||||
episode._download_error = str(e)
|
||||
d = {'episode': html.escape(episode.title), 'message': html.escape(str(e))}
|
||||
message = _('Download error while downloading %(episode)s: %(message)s')
|
||||
self.show_message(message % d, _('Download error'), important=True)
|
||||
|
|
|
@ -198,6 +198,7 @@ class EpisodeListModel(Gtk.ListStore):
|
|||
self.ICON_GENERIC_FILE = 'text-x-generic'
|
||||
self.ICON_DOWNLOADING = Gtk.STOCK_GO_DOWN
|
||||
self.ICON_DELETED = 'edit-delete'
|
||||
self.ICON_ERROR = 'dialog-error'
|
||||
|
||||
self.background_update = None
|
||||
self.background_update_tag = None
|
||||
|
@ -391,11 +392,6 @@ class EpisodeListModel(Gtk.ListStore):
|
|||
tooltip.append(_('Deleted'))
|
||||
status_icon = self.ICON_DELETED
|
||||
view_show_undeleted = False
|
||||
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
|
||||
view_show_unplayed = True
|
||||
elif episode.state == gpodder.STATE_DOWNLOADED:
|
||||
tooltip = []
|
||||
view_show_downloaded = True
|
||||
|
@ -454,6 +450,16 @@ class EpisodeListModel(Gtk.ListStore):
|
|||
if episode.total_time > 0 and episode.current_position:
|
||||
tooltip.append('%d%%' % (100. * float(episode.current_position) /
|
||||
float(episode.total_time),))
|
||||
elif episode._download_error is not None:
|
||||
tooltip.append(_('ERROR: %s') % episode._download_error)
|
||||
status_icon = self.ICON_ERROR
|
||||
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
|
||||
view_show_unplayed = True
|
||||
|
||||
if episode.total_time:
|
||||
total_time = util.format_time(episode.total_time)
|
||||
|
|
|
@ -262,7 +262,7 @@ class PodcastEpisode(PodcastModelObject):
|
|||
MAX_FILENAME_LENGTH = 120 # without extension
|
||||
MAX_FILENAME_WITH_EXT_LENGTH = 140 - len(".partial.webm") # with extension
|
||||
|
||||
__slots__ = schema.EpisodeColumns
|
||||
__slots__ = schema.EpisodeColumns + ('_download_error',)
|
||||
|
||||
def _deprecated(self):
|
||||
raise Exception('Property is deprecated!')
|
||||
|
@ -359,6 +359,8 @@ class PodcastEpisode(PodcastModelObject):
|
|||
# Timestamp of last playback time
|
||||
self.last_playback = 0
|
||||
|
||||
self._download_error = None
|
||||
|
||||
@property
|
||||
def channel(self):
|
||||
return self.parent
|
||||
|
@ -496,6 +498,7 @@ class PodcastEpisode(PodcastModelObject):
|
|||
gpodder.user_extensions.on_episode_delete(self, filename)
|
||||
util.delete_file(filename)
|
||||
|
||||
self._download_error = None
|
||||
self.set_state(gpodder.STATE_DELETED)
|
||||
|
||||
def get_playback_url(self, config=None, allow_partial=False):
|
||||
|
|
Loading…
Reference in New Issue