Browse Source

Merge pull request #5156 from k0ekk0ek/traktv2_info_provider

[TV][Provider] Move to Trakt.tv V2 API
pull/5188/head
Ruud Burger 10 years ago
parent
commit
756d0451a2
  1. 53
      couchpotato/core/media/show/providers/info/trakt.py

53
couchpotato/core/media/show/providers/info/trakt.py

@ -1,7 +1,6 @@
import urllib
from couchpotato.core.event import addEvent from couchpotato.core.event import addEvent
from couchpotato.core.logger import CPLog from couchpotato.core.logger import CPLog
from couchpotato.core.media.movie.providers.automation.trakt.main import TraktBase
from couchpotato.core.media.show.providers.base import ShowProvider from couchpotato.core.media.show.providers.base import ShowProvider
log = CPLog(__name__) log = CPLog(__name__)
@ -9,9 +8,7 @@ log = CPLog(__name__)
autoload = 'Trakt' autoload = 'Trakt'
class Trakt(ShowProvider): class Trakt(ShowProvider, TraktBase):
api_key = 'c043de5ada9d180028c10229d2a3ea5b'
base_url = 'http://api.trakt.tv/%%s.json/%s' % api_key
def __init__(self): def __init__(self):
addEvent('info.search', self.search, priority = 1) addEvent('info.search', self.search, priority = 1)
@ -21,53 +18,36 @@ class Trakt(ShowProvider):
if self.isDisabled(): if self.isDisabled():
return False return False
# Check for cached result
cache_key = 'trakt.cache.search.%s.%s' % (q, limit)
results = self.getCache(cache_key) or []
if results:
return results
# Search # Search
log.debug('Searching for show: "%s"', q) log.debug('Searching for show: "%s"', q)
response = self._request('search/shows', query=q, limit=limit)
if not response: response = self.call('search?type=show&query=%s' % (q))
return []
# Parse search results results = []
for show in response: for show in response:
results.append(self._parseShow(show)) results.append(self._parseShow(show.get('show')))
log.info('Found: %s', [result['titles'][0] + ' (' + str(result.get('year', 0)) + ')' for result in results]) for result in results:
if 'year' in result:
log.info('Found: %s', result['titles'][0] + ' (' + str(result.get('year', 0)) + ')')
else:
log.info('Found: %s', result['titles'][0])
self.setCache(cache_key, results)
return results return results
def _request(self, action, **kwargs):
url = self.base_url % action
if kwargs:
url += '?' + urllib.urlencode(kwargs)
return self.getJsonData(url)
def _parseShow(self, show): def _parseShow(self, show):
# Images # Images
images = show.get('images', {}) images = show.get('images', {})
poster = images.get('poster') poster = images.get('poster', {}).get('thumb')
backdrop = images.get('backdrop') backdrop = images.get('fanart', {}).get('thumb')
# Rating
rating = show.get('ratings', {}).get('percentage')
# Build show dict # Build show dict
show_data = { show_data = {
'identifiers': { 'identifiers': {
'thetvdb': show.get('tvdb_id'), 'thetvdb': show.get('ids', {}).get('tvdb'),
'imdb': show.get('imdb_id'), 'imdb': show.get('ids', {}).get('imdb'),
'tvrage': show.get('tvrage_id'), 'tvrage': show.get('ids', {}).get('tvrage'),
}, },
'type': 'show', 'type': 'show',
'titles': [show.get('title')], 'titles': [show.get('title')],
@ -78,9 +58,6 @@ class Trakt(ShowProvider):
'backdrop_original': [], 'backdrop_original': [],
}, },
'year': show.get('year'), 'year': show.get('year'),
'rating': {
'trakt': float(rating) / 10
},
} }
return dict((k, v) for k, v in show_data.iteritems() if v) return dict((k, v) for k, v in show_data.iteritems() if v)

Loading…
Cancel
Save