mirror of
https://github.com/SickGear/SickGear.git
synced 2025-01-07 10:33:38 +00:00
Change image cache processing for browse Trakt page.
Change logging for newznab response code 910 and add check for empty response data.
This commit is contained in:
parent
a981e836f0
commit
48032005fd
2 changed files with 90 additions and 14 deletions
|
@ -271,6 +271,7 @@ class NewznabProvider(generic.NZBProvider):
|
||||||
|
|
||||||
if 'error' == data.tag:
|
if 'error' == data.tag:
|
||||||
code = data.get('code', '')
|
code = data.get('code', '')
|
||||||
|
description = data.get('description', '')
|
||||||
|
|
||||||
if '100' == code:
|
if '100' == code:
|
||||||
raise AuthException('Your API key for %s is incorrect, check your config.' % self.name)
|
raise AuthException('Your API key for %s is incorrect, check your config.' % self.name)
|
||||||
|
@ -279,7 +280,8 @@ class NewznabProvider(generic.NZBProvider):
|
||||||
elif '102' == code:
|
elif '102' == code:
|
||||||
raise AuthException('Your account isn\'t allowed to use the API on %s, contact the admin.' % self.name)
|
raise AuthException('Your account isn\'t allowed to use the API on %s, contact the admin.' % self.name)
|
||||||
elif '910' == code:
|
elif '910' == code:
|
||||||
logger.log('%s currently has their API disabled, please check with provider.' % self.name,
|
logger.log('%s %s, please check with provider.' %
|
||||||
|
(self.name, ('currently has their API disabled', description)[description not in (None, '')]),
|
||||||
logger.WARNING)
|
logger.WARNING)
|
||||||
else:
|
else:
|
||||||
logger.log('Unknown error given from %s: %s' % (self.name, data.get('description', '')),
|
logger.log('Unknown error given from %s: %s' % (self.name, data.get('description', '')),
|
||||||
|
@ -624,6 +626,10 @@ class NewznabProvider(generic.NZBProvider):
|
||||||
|
|
||||||
data = helpers.getURL(search_url)
|
data = helpers.getURL(search_url)
|
||||||
|
|
||||||
|
if not data:
|
||||||
|
logger.log('No Data returned from %s' % self.name, logger.DEBUG)
|
||||||
|
break
|
||||||
|
|
||||||
# hack this in until it's fixed server side
|
# hack this in until it's fixed server side
|
||||||
if data and not data.startswith('<?xml'):
|
if data and not data.startswith('<?xml'):
|
||||||
data = '<?xml version="1.0" encoding="ISO-8859-1" ?>%s' % data
|
data = '<?xml version="1.0" encoding="ISO-8859-1" ?>%s' % data
|
||||||
|
@ -661,7 +667,7 @@ class NewznabProvider(generic.NZBProvider):
|
||||||
hits = (total // self.limits + int(0 < (total % self.limits)))
|
hits = (total // self.limits + int(0 < (total % self.limits)))
|
||||||
hits += int(0 == hits)
|
hits += int(0 == hits)
|
||||||
offset = helpers.tryInt(parsed_xml.find('.//%sresponse' % n_spaces['newznab']).get('offset', 0))
|
offset = helpers.tryInt(parsed_xml.find('.//%sresponse' % n_spaces['newznab']).get('offset', 0))
|
||||||
except AttributeError:
|
except (AttributeError, KeyError):
|
||||||
break
|
break
|
||||||
|
|
||||||
# No items found, prevent from doing another search
|
# No items found, prevent from doing another search
|
||||||
|
|
|
@ -67,7 +67,7 @@ from lib.libtrakt import TraktAPI
|
||||||
from lib.libtrakt.exceptions import TraktException, TraktAuthException
|
from lib.libtrakt.exceptions import TraktException, TraktAuthException
|
||||||
from trakt_helpers import build_config, trakt_collection_remove_account
|
from trakt_helpers import build_config, trakt_collection_remove_account
|
||||||
from sickbeard.bs4_parser import BS4Parser
|
from sickbeard.bs4_parser import BS4Parser
|
||||||
|
from lib.tmdb_api import TMDB
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import json
|
import json
|
||||||
|
@ -3052,10 +3052,11 @@ class NewHomeAddShows(Home):
|
||||||
newest_dt = dt_ordinal
|
newest_dt = dt_ordinal
|
||||||
newest = dt_string
|
newest = dt_string
|
||||||
|
|
||||||
img_uri = item.get('show', {}).get('images', {}).get('poster', {}).get('thumb', {}) or ''
|
tmdbid = item.get('show', {}).get('ids', {}).get('tmdb', 0)
|
||||||
if img_uri:
|
tvdbid = item.get('show', {}).get('ids', {}).get('tvdb', 0)
|
||||||
images = dict(poster=dict(thumb='imagecache?path=trakt/poster/thumb&source=%s' % img_uri))
|
traktid = item.get('show', {}).get('ids', {}).get('trakt', 0)
|
||||||
sickbeard.CACHE_IMAGE_URL_LIST.add_url(img_uri)
|
images = dict(poster=dict(thumb='imagecache?path=trakt/poster/thumb&filename=%s&tmdbid=%s&tvdbid=%s' %
|
||||||
|
('%s.jpg' % traktid, tmdbid, tvdbid)))
|
||||||
|
|
||||||
filtered.append(dict(
|
filtered.append(dict(
|
||||||
premiered=dt_ordinal,
|
premiered=dt_ordinal,
|
||||||
|
@ -3068,7 +3069,7 @@ class NewHomeAddShows(Home):
|
||||||
genres=('' if 'genres' not in item['show'] else
|
genres=('' if 'genres' not in item['show'] else
|
||||||
', '.join(['%s' % v for v in item['show']['genres']])),
|
', '.join(['%s' % v for v in item['show']['genres']])),
|
||||||
ids=item['show']['ids'],
|
ids=item['show']['ids'],
|
||||||
images='' if not img_uri else images,
|
images=images,
|
||||||
overview=('' if 'overview' not in item['show'] or None is item['show']['overview'] else
|
overview=('' if 'overview' not in item['show'] or None is item['show']['overview'] else
|
||||||
self.encode_html(item['show']['overview'][:250:].strip())),
|
self.encode_html(item['show']['overview'][:250:].strip())),
|
||||||
rating=0 < item['show'].get('rating', 0) and
|
rating=0 < item['show'].get('rating', 0) and
|
||||||
|
@ -5603,18 +5604,87 @@ class Cache(MainHandler):
|
||||||
|
|
||||||
|
|
||||||
class CachedImages(MainHandler):
|
class CachedImages(MainHandler):
|
||||||
def index(self, path='', source=None, *args, **kwargs):
|
@staticmethod
|
||||||
|
def should_try_image(filename, source, days=1, minutes=0):
|
||||||
|
try:
|
||||||
|
dummy_file = '%s.%s.dummy' % (ek.ek(os.path.splitext, filename)[0], source)
|
||||||
|
if ek.ek(os.path.isfile, dummy_file):
|
||||||
|
if ek.ek(os.stat, dummy_file).st_mtime < time.mktime((datetime.datetime.now() - datetime.timedelta(days=days, minutes=minutes)).timetuple()):
|
||||||
|
CachedImages.delete_dummy_image(dummy_file)
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
return True
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def create_dummy_image(filename, source):
|
||||||
|
dummy_file = '%s.%s.dummy' % (ek.ek(os.path.splitext, filename)[0], source)
|
||||||
|
CachedImages.delete_dummy_image(dummy_file)
|
||||||
|
try:
|
||||||
|
with open(dummy_file, 'w'):
|
||||||
|
pass
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def delete_dummy_image(dummy_file):
|
||||||
|
try:
|
||||||
|
if ek.ek(os.path.isfile, dummy_file):
|
||||||
|
ek.ek(os.remove, dummy_file)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def delete_all_dummy_images(filename):
|
||||||
|
for f in ['tmdb', 'tvdb']:
|
||||||
|
CachedImages.delete_dummy_image('%s.%s.dummy' % (ek.ek(os.path.splitext, filename)[0], f))
|
||||||
|
|
||||||
|
def index(self, path='', source=None, filename=None, tmdbid=None, tvdbid=None, *args, **kwargs):
|
||||||
|
|
||||||
path = path.strip('/')
|
path = path.strip('/')
|
||||||
file_name = ek.ek(os.path.basename, source)
|
file_name = ''
|
||||||
|
if None is not source:
|
||||||
|
file_name = ek.ek(os.path.basename, source)
|
||||||
|
elif filename not in [None, 0, '0']:
|
||||||
|
file_name = filename
|
||||||
static_image_path = ek.ek(os.path.join, sickbeard.CACHE_DIR, 'images', path, file_name)
|
static_image_path = ek.ek(os.path.join, sickbeard.CACHE_DIR, 'images', path, file_name)
|
||||||
static_image_path = ek.ek(os.path.abspath, static_image_path.replace('\\', '/'))
|
static_image_path = ek.ek(os.path.abspath, static_image_path.replace('\\', '/'))
|
||||||
if not ek.ek(os.path.isfile, static_image_path) and source is not None and has_image_ext(file_name) \
|
if not ek.ek(os.path.isfile, static_image_path) and has_image_ext(file_name):
|
||||||
and source in sickbeard.CACHE_IMAGE_URL_LIST:
|
|
||||||
basepath = ek.ek(os.path.dirname, static_image_path)
|
basepath = ek.ek(os.path.dirname, static_image_path)
|
||||||
helpers.make_dirs(basepath)
|
helpers.make_dirs(basepath)
|
||||||
if not helpers.download_file(source, static_image_path) and source.find('trakt.us'):
|
s = ''
|
||||||
helpers.download_file(source.replace('trakt.us', 'trakt.tv'), static_image_path)
|
tmdbimage = False
|
||||||
|
if source is not None and source in sickbeard.CACHE_IMAGE_URL_LIST:
|
||||||
|
s = source
|
||||||
|
if source is None and tmdbid not in [None, 0, '0'] and self.should_try_image(static_image_path, 'tmdb'):
|
||||||
|
tmdbimage = True
|
||||||
|
try:
|
||||||
|
tmdbapi = TMDB(sickbeard.TMDB_API_KEY)
|
||||||
|
tmdbconfig = tmdbapi.Configuration().info()
|
||||||
|
images = tmdbapi.TV(helpers.tryInt(tmdbid)).images()
|
||||||
|
s = '%s%s%s' % (tmdbconfig['images']['base_url'], tmdbconfig['images']['poster_sizes'][3], sorted(images['posters'], key=lambda x: x['vote_average'], reverse=True)[0]['file_path']) if len(images['posters']) > 0 else ''
|
||||||
|
except:
|
||||||
|
s = ''
|
||||||
|
if s and not helpers.download_file(s, static_image_path) and s.find('trakt.us'):
|
||||||
|
helpers.download_file(s.replace('trakt.us', 'trakt.tv'), static_image_path)
|
||||||
|
if tmdbimage and not ek.ek(os.path.isfile, static_image_path):
|
||||||
|
self.create_dummy_image(static_image_path, 'tmdb')
|
||||||
|
|
||||||
|
if source is None and tvdbid not in [None, 0, '0'] and not ek.ek(os.path.isfile, static_image_path) and self.should_try_image(static_image_path, 'tvdb'):
|
||||||
|
try:
|
||||||
|
r = sickbeard.indexerApi(INDEXER_TVDB).indexer()[helpers.tryInt(tvdbid), False]
|
||||||
|
if hasattr(r, 'data') and 'poster' in r.data:
|
||||||
|
s = r.data['poster']
|
||||||
|
except:
|
||||||
|
s = ''
|
||||||
|
if s:
|
||||||
|
helpers.download_file(s, static_image_path)
|
||||||
|
if not ek.ek(os.path.isfile, static_image_path):
|
||||||
|
self.create_dummy_image(static_image_path, 'tvdb')
|
||||||
|
|
||||||
|
if ek.ek(os.path.isfile, static_image_path):
|
||||||
|
self.delete_all_dummy_images(static_image_path)
|
||||||
|
|
||||||
if not ek.ek(os.path.isfile, static_image_path):
|
if not ek.ek(os.path.isfile, static_image_path):
|
||||||
self.redirect('images/trans.png')
|
self.redirect('images/trans.png')
|
||||||
|
|
Loading…
Reference in a new issue