Cover downloader: Add 5-second connection timeout

This commit is contained in:
Thomas Perl 2013-02-26 21:46:38 +01:00
parent 4a9a4a406e
commit 9abcf6a3cc
2 changed files with 9 additions and 3 deletions

View File

@ -46,6 +46,9 @@ class CoverDownloader(object):
EXTENSIONS = SUPPORTED_EXTENSIONS.keys()
ALL_EPISODES_ID = ':gpodder:all-episodes:'
# Low timeout to avoid unnecessary hangs of GUIs
TIMEOUT = 5
def __init__(self):
pass
@ -81,7 +84,7 @@ class CoverDownloader(object):
try:
logger.info('Downloading cover art: %s', cover_url)
data = util.urlopen(cover_url).read()
data = util.urlopen(cover_url, timeout=self.TIMEOUT).read()
except Exception, e:
logger.warn('Cover art download failed: %s', e)
return self._fallback_filename(title)

View File

@ -986,7 +986,7 @@ def url_add_authentication(url, username, password):
return urlparse.urlunsplit(url_parts)
def urlopen(url, headers=None, data=None):
def urlopen(url, headers=None, data=None, timeout=None):
"""
An URL opener with the User-agent set to gPodder (with version)
"""
@ -1007,7 +1007,10 @@ def urlopen(url, headers=None, data=None):
headers.update({'User-agent': gpodder.user_agent})
request = urllib2.Request(url, data=data, headers=headers)
return opener.open(request)
if timeout is None:
return opener.open(request)
else:
return opener.open(request, timeout=timeout)
def get_real_url(url):
"""