Merge pull request #472 from MarkusHackspacher/style231
fix E231 missing whitespace after ','
This commit is contained in:
commit
21acabebb5
|
@ -1,5 +1,5 @@
|
|||
[pycodestyle]
|
||||
count=1
|
||||
select = W1, W2, W3, E11, E124, E125, E129, E20, E21, E22, E241, E251, E26, E271, E272, E3, E401, E502, E703, E711, E712, E713, E721, E731, E9
|
||||
select = W1, W2, W3, E11, E124, E125, E129, E2, E3, E401, E502, E703, E711, E712, E713, E721, E731, E9
|
||||
# https://pycodestyle.readthedocs.io/en/latest/intro.html#error-codes
|
||||
max-line-length = 100
|
||||
|
|
|
@ -276,12 +276,12 @@ class MPRISDBusReceiver(object):
|
|||
self.cur.update(pos=position)
|
||||
|
||||
def query_position(self):
|
||||
proxy = self.bus.get_object(self.OBJECT_VLC,self.PATH_MPRIS)
|
||||
proxy = self.bus.get_object(self.OBJECT_VLC, self.PATH_MPRIS)
|
||||
props = dbus.Interface(proxy, self.INTERFACE_PROPS)
|
||||
return props.Get(self.INTERFACE_MPRIS, 'Position')
|
||||
|
||||
def query_status(self):
|
||||
proxy = self.bus.get_object(self.OBJECT_VLC,self.PATH_MPRIS)
|
||||
proxy = self.bus.get_object(self.OBJECT_VLC, self.PATH_MPRIS)
|
||||
props = dbus.Interface(proxy, self.INTERFACE_PROPS)
|
||||
return props.Get(self.INTERFACE_MPRIS, 'PlaybackStatus')
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ DefaultConfig = {
|
|||
}
|
||||
|
||||
ROCKBOX_EXTENSION = "mpg"
|
||||
EXTENTIONS_TO_CONVERT = ['.mp4',"." + ROCKBOX_EXTENSION]
|
||||
EXTENTIONS_TO_CONVERT = ['.mp4', "." + ROCKBOX_EXTENSION]
|
||||
FFMPEG_CMD = 'ffmpeg -y -i "%(from)s" -s %(width)sx%(height)s %(options)s "%(to)s"'
|
||||
|
||||
|
||||
|
|
|
@ -104,7 +104,7 @@ class gPodderExtension(object):
|
|||
with open(srt_filename, 'w+') as srtFile:
|
||||
srtFile.write(sub.encode("utf-8"))
|
||||
except Exception as e:
|
||||
logger.warn("Can't write srt file: %s",e)
|
||||
logger.warn("Can't write srt file: %s", e)
|
||||
|
||||
def on_episode_delete(self, episode, filename):
|
||||
srt_filename = self.get_srt_filename(filename)
|
||||
|
|
|
@ -166,7 +166,7 @@ def get_escapist_real_url(data, config_json):
|
|||
|
||||
# Bitwise XOR num_hashes and the hash
|
||||
result_num = []
|
||||
for idx in range(0,len(num_hashes)):
|
||||
for idx in range(0, len(num_hashes)):
|
||||
result_num.append(num_hashes[idx] ^ hash_n[idx % len(hash_n)])
|
||||
|
||||
# At last, Numbers back into characters
|
||||
|
|
|
@ -88,7 +88,9 @@ class GtkBuilderWidget(object):
|
|||
|
||||
widget_api_name = '_'.join(re.findall(tokenize.Name, widget_name))
|
||||
if hasattr(self, widget_api_name):
|
||||
raise AttributeError("instance %s already has an attribute %s" % (self,widget_api_name))
|
||||
raise AttributeError(
|
||||
"instance %s already has an attribute %s" % (
|
||||
self, widget_api_name))
|
||||
else:
|
||||
setattr(self, widget_api_name, widget)
|
||||
|
||||
|
|
|
@ -321,7 +321,8 @@ class gPodderEpisodeSelector(BuilderWidget):
|
|||
text = []
|
||||
if count == 0:
|
||||
text.append(_('Nothing selected'))
|
||||
text.append(N_('%(count)d episode', '%(count)d episodes', count) % {'count':count})
|
||||
text.append(N_('%(count)d episode', '%(count)d episodes',
|
||||
count) % {'count': count})
|
||||
if total_size > 0:
|
||||
text.append(_('size: %s') % util.format_filesize(total_size))
|
||||
self.labelTotalSize.set_text(', '.join(text))
|
||||
|
|
|
@ -342,7 +342,8 @@ class gPodderPreferences(BuilderWidget):
|
|||
yield (container.metadata.category, container)
|
||||
|
||||
old_category = None
|
||||
for category, container in sorted(convert(gpodder.user_extensions.get_extensions()), key=key_func):
|
||||
for category, container in sorted(convert(
|
||||
gpodder.user_extensions.get_extensions()), key=key_func):
|
||||
if old_category != category:
|
||||
label = '<span weight="bold">%s</span>' % cgi.escape(category)
|
||||
self.extensions_model.append((None, label, None, False))
|
||||
|
@ -527,7 +528,8 @@ class gPodderPreferences(BuilderWidget):
|
|||
if value == 0:
|
||||
return _('manually')
|
||||
else:
|
||||
return N_('after %(count)d day', 'after %(count)d days', value) % {'count':value}
|
||||
return N_('after %(count)d day', 'after %(count)d days',
|
||||
value) % {'count': value}
|
||||
|
||||
def on_expiration_value_changed(self, range):
|
||||
value = int(range.get_value())
|
||||
|
@ -579,7 +581,8 @@ class gPodderPreferences(BuilderWidget):
|
|||
index = self.combobox_on_sync.get_active()
|
||||
self.on_sync_model.set_index(index)
|
||||
|
||||
def on_checkbutton_create_playlists_toggled(self, widget,device_type_changed=False):
|
||||
def on_checkbutton_create_playlists_toggled(
|
||||
self, widget, device_type_changed=False):
|
||||
if not widget.get_active():
|
||||
self._config.device_sync.playlists.create = False
|
||||
self.toggle_playlist_interface(False)
|
||||
|
|
|
@ -169,7 +169,7 @@ class gPodderSyncUI(object):
|
|||
cycle begins again...
|
||||
"""
|
||||
|
||||
def resume_sync(episode_urls, channel_urls,progress):
|
||||
def resume_sync(episode_urls, channel_urls, progress):
|
||||
if progress is not None:
|
||||
progress.on_finished()
|
||||
|
||||
|
@ -249,7 +249,7 @@ class gPodderSyncUI(object):
|
|||
# but user decided not to delete them from gpodder
|
||||
# so jump straight to sync
|
||||
logger.info('Starting sync - no episodes selected for deletion')
|
||||
resume_sync([],[],None)
|
||||
resume_sync([], [], None)
|
||||
else:
|
||||
# episodes need to be deleted from gpodder
|
||||
for episode_to_delete in episodes:
|
||||
|
@ -257,8 +257,8 @@ class gPodderSyncUI(object):
|
|||
episode_to_delete.title)
|
||||
|
||||
logger.info('Will start sync - after deleting episodes')
|
||||
self.delete_episode_list(episodes,False,
|
||||
True,resume_sync)
|
||||
self.delete_episode_list(episodes, False,
|
||||
True, resume_sync)
|
||||
|
||||
return
|
||||
|
||||
|
@ -272,13 +272,13 @@ class gPodderSyncUI(object):
|
|||
title=_('Episodes have been deleted on device'),
|
||||
instructions='Select the episodes you want to delete:',
|
||||
episodes=episodes_to_delete,
|
||||
selected=[True,] * len(episodes_to_delete),
|
||||
selected=[True, ] * len(episodes_to_delete),
|
||||
columns=columns,
|
||||
callback=auto_delete_callback,
|
||||
_config=self._config)
|
||||
else:
|
||||
logger.warning("Starting sync - no episodes to delete")
|
||||
resume_sync([],[],None)
|
||||
resume_sync([], [], None)
|
||||
|
||||
except IOError as ioe:
|
||||
title = _('Error writing playlist files')
|
||||
|
@ -286,7 +286,7 @@ class gPodderSyncUI(object):
|
|||
self.notification(message, title)
|
||||
else:
|
||||
logger.info('Not creating playlists - starting sync')
|
||||
resume_sync([],[],None)
|
||||
resume_sync([], [], None)
|
||||
|
||||
# This function is used to remove files from the device
|
||||
def cleanup_episodes():
|
||||
|
|
|
@ -221,7 +221,8 @@ def draw_text_pill(left_text, right_text, x=0, y=0, border=2, radius=14, font_de
|
|||
rect_width = left_side_width + right_side_width
|
||||
rect_height = text_height + border * 2
|
||||
if left_text is not None:
|
||||
draw_rounded_rectangle(ctx,x,y,rect_width,rect_height,radius, left_side_width, RRECT_LEFT_SIDE, right_text is None)
|
||||
draw_rounded_rectangle(ctx, x, y, rect_width, rect_height, radius,
|
||||
left_side_width, RRECT_LEFT_SIDE, right_text is None)
|
||||
linear = cairo.LinearGradient(x, y, x + left_side_width / 2, y + rect_height / 2)
|
||||
linear.add_color_stop_rgba(0, .8, .8, .8, .5)
|
||||
linear.add_color_stop_rgba(.4, .8, .8, .8, .7)
|
||||
|
@ -237,7 +238,8 @@ def draw_text_pill(left_text, right_text, x=0, y=0, border=2, radius=14, font_de
|
|||
ctx.set_source_rgba(1., 1., 1., .3)
|
||||
ctx.set_line_width(1)
|
||||
ctx.stroke()
|
||||
draw_rounded_rectangle(ctx,x,y,rect_width,rect_height,radius, left_side_width, RRECT_LEFT_SIDE, right_text is None)
|
||||
draw_rounded_rectangle(ctx, x, y, rect_width, rect_height, radius,
|
||||
left_side_width, RRECT_LEFT_SIDE, right_text is None)
|
||||
ctx.set_source_rgba(.2, .2, .2, .6)
|
||||
ctx.set_line_width(1)
|
||||
ctx.stroke()
|
||||
|
|
|
@ -77,12 +77,12 @@ try:
|
|||
fileAliasDesc = filelist.descriptorAtIndex_(i)
|
||||
fileURLDesc = fileAliasDesc.coerceToDescriptorType_(aeKeyword(typeFileURL))
|
||||
fileURLData = fileURLDesc.data()
|
||||
url = buffer(fileURLData.bytes(),0,fileURLData.length())
|
||||
url = buffer(fileURLData.bytes(), 0, fileURLData.length())
|
||||
url = str(url)
|
||||
util.idle_add(self.gp.on_item_import_from_file_activate, None,url)
|
||||
util.idle_add(self.gp.on_item_import_from_file_activate, None, url)
|
||||
urls.append(str(url))
|
||||
|
||||
print(("open Files :",urls), file=sys.stderr)
|
||||
print(("open Files :", urls), file=sys.stderr)
|
||||
result = NSAppleEventDescriptor.descriptorWithInt32_(42)
|
||||
reply.setParamDescriptor_forKeyword_(result, aeKeyword('----'))
|
||||
|
||||
|
@ -90,7 +90,7 @@ try:
|
|||
""" handles a 'Subscribe to...' event"""
|
||||
filelist = event.paramDescriptorForKeyword_(aeKeyword(keyDirectObject))
|
||||
fileURLData = filelist.data()
|
||||
url = buffer(fileURLData.bytes(),0,fileURLData.length())
|
||||
url = buffer(fileURLData.bytes(), 0, fileURLData.length())
|
||||
url = str(url)
|
||||
print(("Subscribe to :" + url), file=sys.stderr)
|
||||
util.idle_add(self.gp.subscribe_to_url, url)
|
||||
|
|
|
@ -425,7 +425,9 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
_('Loading incomplete downloads'),
|
||||
_('Some episodes have not finished downloading in a previous session.'),
|
||||
False, self.get_dialog_parent())
|
||||
self.partial_downloads_indicator.on_message(N_('%(count)d partial file', '%(count)d partial files', count) % {'count':count})
|
||||
self.partial_downloads_indicator.on_message(N_(
|
||||
'%(count)d partial file', '%(count)d partial files',
|
||||
count) % {'count': count})
|
||||
|
||||
util.idle_add(self.wNotebook.set_current_page, 1)
|
||||
|
||||
|
@ -1245,7 +1247,9 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
episode_urls = [task.url for task in self.download_tasks_seen]
|
||||
|
||||
if downloading > 0:
|
||||
title.append(N_('downloading %(count)d file', 'downloading %(count)d files', downloading) % {'count':downloading})
|
||||
title.append(N_('downloading %(count)d file',
|
||||
'downloading %(count)d files',
|
||||
downloading) % {'count': downloading})
|
||||
|
||||
if total_size > 0:
|
||||
percentage = 100.0 * done_size / total_size
|
||||
|
@ -1255,9 +1259,13 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
total_speed = util.format_filesize(total_speed)
|
||||
title[1] += ' (%d%%, %s/s)' % (percentage, total_speed)
|
||||
if synchronizing > 0:
|
||||
title.append(N_('synchronizing %(count)d file', 'synchronizing %(count)d files', synchronizing) % {'count':synchronizing})
|
||||
title.append(N_('synchronizing %(count)d file',
|
||||
'synchronizing %(count)d files',
|
||||
synchronizing) % {'count': synchronizing})
|
||||
if queued > 0:
|
||||
title.append(N_('%(queued)d task queued', '%(queued)d tasks queued', queued) % {'queued':queued})
|
||||
title.append(N_('%(queued)d task queued',
|
||||
'%(queued)d tasks queued',
|
||||
queued) % {'queued': queued})
|
||||
if (downloading + synchronizing + queued) == 0:
|
||||
self.set_download_progress(1.)
|
||||
self.downloads_finished(self.download_tasks_seen)
|
||||
|
@ -1495,15 +1503,19 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
self.show_message(message, _('Downloads failed'))
|
||||
|
||||
if finished_syncs and failed_syncs:
|
||||
message = self.format_episode_list(list(map((lambda task: str(task)),finished_syncs)), 5)
|
||||
message = self.format_episode_list(list(map((
|
||||
lambda task: str(task)), finished_syncs)), 5)
|
||||
message += '\n\n<i>%s</i>\n' % _('Could not sync some episodes:')
|
||||
message += self.format_episode_list(list(map((lambda task: str(task)),failed_syncs)), 5)
|
||||
message += self.format_episode_list(list(map((
|
||||
lambda task: str(task)), failed_syncs)), 5)
|
||||
self.show_message(message, _('Device synchronization finished'), True)
|
||||
elif finished_syncs:
|
||||
message = self.format_episode_list(list(map((lambda task: str(task)),finished_syncs)))
|
||||
message = self.format_episode_list(list(map((
|
||||
lambda task: str(task)), finished_syncs)))
|
||||
self.show_message(message, _('Device synchronization finished'))
|
||||
elif failed_syncs:
|
||||
message = self.format_episode_list(list(map((lambda task: str(task)),failed_syncs)))
|
||||
message = self.format_episode_list(list(map((
|
||||
lambda task: str(task)), failed_syncs)))
|
||||
self.show_message(message, _('Device synchronization failed'), True)
|
||||
|
||||
# Do post-sync processing if required
|
||||
|
@ -1547,7 +1559,9 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
more_episodes = len(episode_list) - max_episodes
|
||||
if more_episodes > 0:
|
||||
result.append('(...')
|
||||
result.append(N_('%(count)d more episode', '%(count)d more episodes', more_episodes) % {'count':more_episodes})
|
||||
result.append(N_('%(count)d more episode',
|
||||
'%(count)d more episodes',
|
||||
more_episodes) % {'count': more_episodes})
|
||||
result.append('...)')
|
||||
|
||||
return (''.join(result)).strip()
|
||||
|
@ -2568,7 +2582,8 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
self.btnUpdateFeeds.hide()
|
||||
|
||||
count = len(channels)
|
||||
text = N_('Updating %(count)d feed...', 'Updating %(count)d feeds...', count) % {'count':count}
|
||||
text = N_('Updating %(count)d feed...', 'Updating %(count)d feeds...',
|
||||
count) % {'count': count}
|
||||
|
||||
self.pbFeedUpdate.set_text(text)
|
||||
self.pbFeedUpdate.set_fraction(0)
|
||||
|
@ -2650,18 +2665,25 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
|
||||
if self.config.auto_download == 'download':
|
||||
self.download_episode_list(episodes)
|
||||
title = N_('Downloading %(count)d new episode.', 'Downloading %(count)d new episodes.', count) % {'count':count}
|
||||
title = N_('Downloading %(count)d new episode.',
|
||||
'Downloading %(count)d new episodes.',
|
||||
count) % {'count': count}
|
||||
self.show_message(title, _('New episodes available'))
|
||||
elif self.config.auto_download == 'queue':
|
||||
self.download_episode_list_paused(episodes)
|
||||
title = N_('%(count)d new episode added to download list.', '%(count)d new episodes added to download list.', count) % {'count':count}
|
||||
title = N_(
|
||||
'%(count)d new episode added to download list.',
|
||||
'%(count)d new episodes added to download list.',
|
||||
count) % {'count': count}
|
||||
self.show_message(title, _('New episodes available'))
|
||||
else:
|
||||
if (show_new_episodes_dialog and
|
||||
self.config.auto_download == 'show'):
|
||||
self.new_episodes_show(episodes, notification=True)
|
||||
else: # !show_new_episodes_dialog or auto_download == 'ignore'
|
||||
message = N_('%(count)d new episode available', '%(count)d new episodes available', count) % {'count':count}
|
||||
message = N_('%(count)d new episode available',
|
||||
'%(count)d new episodes available',
|
||||
count) % {'count': count}
|
||||
self.pbFeedUpdate.set_text(message)
|
||||
|
||||
self.show_update_feeds_buttons()
|
||||
|
@ -2737,7 +2759,8 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
return False
|
||||
|
||||
count = len(episodes)
|
||||
title = N_('Delete %(count)d episode?', 'Delete %(count)d episodes?', count) % {'count':count}
|
||||
title = N_('Delete %(count)d episode?', 'Delete %(count)d episodes?',
|
||||
count) % {'count': count}
|
||||
message = _('Deleting episodes removes downloaded files.')
|
||||
|
||||
if confirm and not self.show_confirmation(message, title):
|
||||
|
@ -2801,7 +2824,7 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
selection_buttons = {
|
||||
_('Select played'): lambda episode: not episode.is_new,
|
||||
_('Select finished'): lambda episode: episode.is_finished(),
|
||||
msg_older_than % {'count':self.config.episode_old_age}: lambda episode: episode.age_in_days() > self.config.episode_old_age,
|
||||
msg_older_than % {'count': self.config.episode_old_age}: lambda episode: episode.age_in_days() > self.config.episode_old_age,
|
||||
}
|
||||
|
||||
instructions = _('Select the episodes you want to delete:')
|
||||
|
@ -3268,7 +3291,7 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
count = len(self.channels)
|
||||
title = N_('%(count)d subscription exported',
|
||||
'%(count)d subscriptions exported',
|
||||
count) % {'count':count}
|
||||
count) % {'count': count}
|
||||
self.show_message(_('Your podcast list has been successfully '
|
||||
'exported.'),
|
||||
title, widget=self.treeChannels)
|
||||
|
|
|
@ -138,8 +138,12 @@ class SoundcloudUser(object):
|
|||
track it can find for its user."""
|
||||
global CONSUMER_KEY
|
||||
try:
|
||||
json_url = 'https://api.soundcloud.com/users/%(user)s/%(feed)s.json?filter=downloadable&consumer_key=%(consumer_key)s&limit=200' \
|
||||
% {"user":self.get_user_id(), "feed":feed, "consumer_key": CONSUMER_KEY}
|
||||
json_url = 'https://api.soundcloud.com/users/%(user)s/%(feed)s.' \
|
||||
'json?filter=downloadable&consumer_key=%' \
|
||||
'(consumer_key)s&limit=200' \
|
||||
% {"user": self.get_user_id(),
|
||||
"feed": feed,
|
||||
"consumer_key": CONSUMER_KEY}
|
||||
logger.debug("loading %s", json_url)
|
||||
|
||||
json_tracks = json.loads(util.urlopen(json_url).read().decode('utf-8'))
|
||||
|
@ -228,7 +232,7 @@ class SoundcloudFavFeed(SoundcloudFeed):
|
|||
URL_REGEX = re.compile('https?://([a-z]+\.)?soundcloud\.com/([^/]+)/favorites', re.I)
|
||||
|
||||
def __init__(self, username):
|
||||
super(SoundcloudFavFeed,self).__init__(username)
|
||||
super(SoundcloudFavFeed, self).__init__(username)
|
||||
|
||||
def get_title(self):
|
||||
return _('%s\'s favorites on Soundcloud') % self.username
|
||||
|
|
|
@ -247,7 +247,7 @@ class Device(services.ObservableService):
|
|||
logger.warning('Not syncing disks. Unmount your device before unplugging.')
|
||||
return True
|
||||
|
||||
def add_sync_tasks(self,tracklist, force_played=False, done_callback=None):
|
||||
def add_sync_tasks(self, tracklist, force_played=False, done_callback=None):
|
||||
for track in list(tracklist):
|
||||
# Filter tracks that are not meant to be synchronized
|
||||
does_not_exist = not track.was_downloaded(and_exists=True)
|
||||
|
@ -453,7 +453,7 @@ class iPodDevice(Device):
|
|||
gpod.itdb_track_unlink(track)
|
||||
util.delete_file(filename)
|
||||
|
||||
def add_track(self, episode,reporthook=None):
|
||||
def add_track(self, episode, reporthook=None):
|
||||
self.notify('status', _('Adding %s') % episode.title)
|
||||
tracklist = gpod.sw_get_playlist_tracks(self.podcasts_playlist)
|
||||
podcasturls = [track.podcasturl for track in tracklist]
|
||||
|
@ -578,7 +578,7 @@ class MP3PlayerDevice(Device):
|
|||
def get_episode_file_on_device(self, episode):
|
||||
return episode_filename_on_device(self._config, episode)
|
||||
|
||||
def add_track(self, episode,reporthook=None):
|
||||
def add_track(self, episode, reporthook=None):
|
||||
self.notify('status', _('Adding %s') % episode.title)
|
||||
|
||||
# get the folder on the device
|
||||
|
@ -764,7 +764,7 @@ class MTPDevice(Device):
|
|||
try:
|
||||
mtp = mtp.replace(" ", "0")
|
||||
# replace blank with 0 to fix some invalid string
|
||||
d = time.strptime(mtp[:8] + mtp[9:13],"%Y%m%d%H%M%S")
|
||||
d = time.strptime(mtp[:8] + mtp[9:13], "%Y%m%d%H%M%S")
|
||||
_date = calendar.timegm(d)
|
||||
if len(mtp) == 20:
|
||||
# TIME ZONE SHIFTING: the string contains a hour/min shift relative to a time zone
|
||||
|
|
|
@ -443,7 +443,7 @@ def file_age_to_string(days):
|
|||
if days < 1:
|
||||
return ''
|
||||
else:
|
||||
return N_('%(count)d day ago', '%(count)d days ago', days) % {'count':days}
|
||||
return N_('%(count)d day ago', '%(count)d days ago', days) % {'count': days}
|
||||
|
||||
|
||||
def is_system_file(filename):
|
||||
|
@ -642,7 +642,7 @@ def remove_html_tags(html):
|
|||
result = re_unicode_entities.sub(lambda x: chr(int(x.group(1))), result)
|
||||
|
||||
# Convert named HTML entities to their unicode character
|
||||
result = re_html_entities.sub(lambda x: entitydefs.get(x.group(1),''), result)
|
||||
result = re_html_entities.sub(lambda x: entitydefs.get(x.group(1), ''), result)
|
||||
|
||||
# Convert more than two newlines to two newlines
|
||||
result = re.sub('([\r\n]{2})([\r\n])+', '\\1', result)
|
||||
|
@ -1373,7 +1373,8 @@ def format_seconds_to_hour_min_sec(seconds):
|
|||
"""
|
||||
|
||||
if seconds < 1:
|
||||
return N_('%(count)d second', '%(count)d seconds', seconds) % {'count':seconds}
|
||||
return N_('%(count)d second', '%(count)d seconds',
|
||||
seconds) % {'count': seconds}
|
||||
|
||||
result = []
|
||||
|
||||
|
@ -1386,13 +1387,16 @@ def format_seconds_to_hour_min_sec(seconds):
|
|||
seconds = seconds % 60
|
||||
|
||||
if hours:
|
||||
result.append(N_('%(count)d hour', '%(count)d hours', hours) % {'count':hours})
|
||||
result.append(N_('%(count)d hour', '%(count)d hours',
|
||||
hours) % {'count': hours})
|
||||
|
||||
if minutes:
|
||||
result.append(N_('%(count)d minute', '%(count)d minutes', minutes) % {'count':minutes})
|
||||
result.append(N_('%(count)d minute', '%(count)d minutes',
|
||||
minutes) % {'count': minutes})
|
||||
|
||||
if seconds:
|
||||
result.append(N_('%(count)d second', '%(count)d seconds', seconds) % {'count':seconds})
|
||||
result.append(N_('%(count)d second', '%(count)d seconds',
|
||||
seconds) % {'count': seconds})
|
||||
|
||||
if len(result) > 1:
|
||||
return (' ' + _('and') + ' ').join((', '.join(result[:-1]), result[-1]))
|
||||
|
@ -1614,7 +1618,7 @@ def relpath(p1, p2):
|
|||
def pathsplit(s):
|
||||
return s.split(os.path.sep)
|
||||
|
||||
(common,l1,l2) = commonpath(pathsplit(p1), pathsplit(p2))
|
||||
(common, l1, l2) = commonpath(pathsplit(p1), pathsplit(p2))
|
||||
p = []
|
||||
if len(l1) > 0:
|
||||
p = [('..' + os.sep) * len(l1)]
|
||||
|
@ -1775,7 +1779,7 @@ def get_update_info():
|
|||
data = urlopen(url).read().decode('utf-8')
|
||||
info = json.loads(data)
|
||||
|
||||
latest_version = info.get('tag_name','').replace('gpodder-','')
|
||||
latest_version = info.get('tag_name', '').replace('gpodder-', '')
|
||||
release_date = info['published_at']
|
||||
|
||||
release_parsed = datetime.datetime.strptime(release_date, '%Y-%m-%dT%H:%M:%SZ')
|
||||
|
|
Loading…
Reference in New Issue