diff --git a/couchpotato/core/helpers/variable.py b/couchpotato/core/helpers/variable.py index 96faefc..34e66e9 100644 --- a/couchpotato/core/helpers/variable.py +++ b/couchpotato/core/helpers/variable.py @@ -227,6 +227,10 @@ def toIterable(value): return [value] +def getIdentifier(media): + return media.get('identifier') or media.get('identifiers', {}).get('imdb') + + def getTitle(media_dict): try: try: @@ -241,10 +245,10 @@ def getTitle(media_dict): try: return media_dict['media']['info']['titles'][0] except: - log.error('Could not get title for %s', media_dict.get('identifier')) + log.error('Could not get title for %s', getIdentifier(media_dict)) return None - log.error('Could not get title for %s', media_dict['identifier']) + log.error('Could not get title for %s', getIdentifier(media_dict)) return None except: log.error('Could not get title for library item: %s', media_dict) diff --git a/couchpotato/core/media/_base/media/main.py b/couchpotato/core/media/_base/media/main.py index 85047e9..c09d416 100644 --- a/couchpotato/core/media/_base/media/main.py +++ b/couchpotato/core/media/_base/media/main.py @@ -99,13 +99,10 @@ class MediaPlugin(MediaBase): try: media = get_db().get('id', media_id) - - - default_title = getTitle(media) event = '%s.update_info' % media.get('type') def handler(): - fireEvent(event, identifier = media.get('identifier'), default_title = default_title, on_complete = self.createOnComplete(media_id)) + fireEvent(event, media_id = media_id, on_complete = self.createOnComplete(media_id)) if handler: return handler diff --git a/couchpotato/core/media/_base/providers/torrent/kickasstorrents.py b/couchpotato/core/media/_base/providers/torrent/kickasstorrents.py index 03f0a99..b347ccb 100644 --- a/couchpotato/core/media/_base/providers/torrent/kickasstorrents.py +++ b/couchpotato/core/media/_base/providers/torrent/kickasstorrents.py @@ -2,7 +2,7 @@ import re import traceback from bs4 import BeautifulSoup -from couchpotato.core.helpers.variable import tryInt +from couchpotato.core.helpers.variable import tryInt, getIdentifier from couchpotato.core.logger import CPLog from couchpotato.core.media._base.providers.torrent.base import TorrentMagnetProvider @@ -38,7 +38,7 @@ class Base(TorrentMagnetProvider): def _search(self, media, quality, results): - data = self.getHTMLData(self.urls['search'] % (self.getDomain(), 'm', media['identifier'].replace('tt', ''))) + data = self.getHTMLData(self.urls['search'] % (self.getDomain(), 'm', getIdentifier(media).replace('tt', ''))) if data: diff --git a/couchpotato/core/media/_base/providers/torrent/passthepopcorn.py b/couchpotato/core/media/_base/providers/torrent/passthepopcorn.py index 56550d2..5368ad3 100644 --- a/couchpotato/core/media/_base/providers/torrent/passthepopcorn.py +++ b/couchpotato/core/media/_base/providers/torrent/passthepopcorn.py @@ -5,7 +5,7 @@ import time import traceback from couchpotato.core.helpers.encoding import tryUrlencode -from couchpotato.core.helpers.variable import getTitle, tryInt, mergeDicts +from couchpotato.core.helpers.variable import getTitle, tryInt, mergeDicts, getIdentifier from couchpotato.core.logger import CPLog from couchpotato.core.media._base.providers.torrent.base import TorrentProvider from dateutil.parser import parse @@ -36,7 +36,7 @@ class Base(TorrentProvider): params = mergeDicts(self.quality_search_params[quality_id].copy(), { 'order_by': 'relevance', 'order_way': 'descending', - 'searchstr': media['identifier'] + 'searchstr': getIdentifier(media) }) url = '%s?json=noredirect&%s' % (self.urls['torrent'], tryUrlencode(params)) diff --git a/couchpotato/core/media/movie/_base/main.py b/couchpotato/core/media/movie/_base/main.py index d8060d7..932c8b2 100644 --- a/couchpotato/core/media/movie/_base/main.py +++ b/couchpotato/core/media/movie/_base/main.py @@ -6,7 +6,7 @@ from couchpotato import get_db from couchpotato.api import addApiView from couchpotato.core.event import fireEvent, fireEventAsync, addEvent from couchpotato.core.helpers.encoding import toUnicode -from couchpotato.core.helpers.variable import splitString, getTitle, getImdb +from couchpotato.core.helpers.variable import splitString, getTitle, getImdb, getIdentifier from couchpotato.core.logger import CPLog from couchpotato.core.media.movie import MovieTypeBase import six @@ -266,7 +266,7 @@ class MovieBase(MovieTypeBase): else: media = db.get('media', 'imdb-%s' % identifier, with_doc = True)['doc'] - info = fireEvent('movie.info', merge = True, extended = extended, identifier = media.get('identifier')) + info = fireEvent('movie.info', merge = True, extended = extended, identifier = getIdentifier(media)) # Don't need those here try: del info['in_wanted'] @@ -275,7 +275,7 @@ class MovieBase(MovieTypeBase): except: pass if not info or len(info) == 0: - log.error('Could not update, no movie info to work with: %s', media.get('identifier')) + log.error('Could not update, no movie info to work with: %s', identifier) return False # Update basic info @@ -285,19 +285,20 @@ class MovieBase(MovieTypeBase): log.debug('Adding titles: %s', titles) # Define default title - def_title = None if default_title: - counter = 0 - for title in titles: - if title.lower() == toUnicode(default_title.lower()) or (toUnicode(default_title) == six.u('') and toUnicode(titles[0]) == title): - def_title = toUnicode(title) - break - counter += 1 + def_title = None + if default_title: + counter = 0 + for title in titles: + if title.lower() == toUnicode(default_title.lower()) or (toUnicode(default_title) == six.u('') and toUnicode(titles[0]) == title): + def_title = toUnicode(title) + break + counter += 1 - if not def_title: - def_title = toUnicode(titles[0]) + if not def_title: + def_title = toUnicode(titles[0]) - media['title'] = def_title + media['title'] = def_title # Files images = info.get('images', []) @@ -357,7 +358,7 @@ class MovieBase(MovieTypeBase): dates = media.get('info').get('release_date') if dates and (dates.get('expires', 0) < time.time() or dates.get('expires', 0) > time.time() + (604800 * 4)) or not dates: - dates = fireEvent('movie.info.release_date', identifier = media['identifier'], merge = True) + dates = fireEvent('movie.info.release_date', identifier = getIdentifier(media), merge = True) media['info'].update({'release_date': dates}) db.update(media) diff --git a/couchpotato/core/media/movie/providers/nzb/binsearch.py b/couchpotato/core/media/movie/providers/nzb/binsearch.py index f4c16c4..d6f4852 100644 --- a/couchpotato/core/media/movie/providers/nzb/binsearch.py +++ b/couchpotato/core/media/movie/providers/nzb/binsearch.py @@ -1,4 +1,5 @@ from couchpotato.core.helpers.encoding import tryUrlencode +from couchpotato.core.helpers.variable import getIdentifier from couchpotato.core.logger import CPLog from couchpotato.core.media._base.providers.nzb.binsearch import Base from couchpotato.core.media.movie.providers.base import MovieProvider @@ -13,7 +14,7 @@ class BinSearch(MovieProvider, Base): def buildUrl(self, media, quality): query = tryUrlencode({ - 'q': media['identifier'], + 'q': getIdentifier(media), 'm': 'n', 'max': 400, 'adv_age': Env.setting('retention', 'nzb'), diff --git a/couchpotato/core/media/movie/providers/nzb/newznab.py b/couchpotato/core/media/movie/providers/nzb/newznab.py index dd4d94c..9783f8d 100644 --- a/couchpotato/core/media/movie/providers/nzb/newznab.py +++ b/couchpotato/core/media/movie/providers/nzb/newznab.py @@ -1,4 +1,5 @@ from couchpotato.core.helpers.encoding import tryUrlencode +from couchpotato.core.helpers.variable import getIdentifier from couchpotato.core.logger import CPLog from couchpotato.core.media._base.providers.nzb.newznab import Base from couchpotato.core.media.movie.providers.base import MovieProvider @@ -13,7 +14,7 @@ class Newznab(MovieProvider, Base): def buildUrl(self, media, api_key): query = tryUrlencode({ 't': 'movie', - 'imdbid': media['identifier'].replace('tt', ''), + 'imdbid': getIdentifier(media).replace('tt', ''), 'apikey': api_key, 'extended': 1 }) diff --git a/couchpotato/core/media/movie/providers/torrent/torrentpotato.py b/couchpotato/core/media/movie/providers/torrent/torrentpotato.py index 9c99207..6757353 100644 --- a/couchpotato/core/media/movie/providers/torrent/torrentpotato.py +++ b/couchpotato/core/media/movie/providers/torrent/torrentpotato.py @@ -1,4 +1,5 @@ from couchpotato.core.helpers.encoding import tryUrlencode +from couchpotato.core.helpers.variable import getIdentifier from couchpotato.core.logger import CPLog from couchpotato.core.media._base.providers.torrent.torrentpotato import Base from couchpotato.core.media.movie.providers.base import MovieProvider @@ -14,6 +15,6 @@ class TorrentPotato(MovieProvider, Base): arguments = tryUrlencode({ 'user': host['name'], 'passkey': host['pass_key'], - 'imdbid': media['identifier'] + 'imdbid': getIdentifier(media), }) return '%s?%s' % (host['host'], arguments) diff --git a/couchpotato/core/media/movie/searcher.py b/couchpotato/core/media/movie/searcher.py index 515f5f9..d217c65 100644 --- a/couchpotato/core/media/movie/searcher.py +++ b/couchpotato/core/media/movie/searcher.py @@ -8,7 +8,7 @@ from couchpotato import get_db from couchpotato.api import addApiView from couchpotato.core.event import addEvent, fireEvent, fireEventAsync from couchpotato.core.helpers.encoding import simplifyString -from couchpotato.core.helpers.variable import getTitle, possibleTitles, getImdb +from couchpotato.core.helpers.variable import getTitle, possibleTitles, getImdb, getIdentifier from couchpotato.core.logger import CPLog from couchpotato.core.media._base.searcher.base import SearcherBase from couchpotato.core.media.movie import MovieTypeBase @@ -95,10 +95,10 @@ class MovieSearcher(SearcherBase, MovieTypeBase): try: self.single(media, search_protocols) except IndexError: - log.error('Forcing library update for %s, if you see this often, please report: %s', (media['identifier'], traceback.format_exc())) + log.error('Forcing library update for %s, if you see this often, please report: %s', (getIdentifier(media), traceback.format_exc())) fireEvent('movie.update_info', media_id) except: - log.error('Search failed for %s: %s', (media['identifier'], traceback.format_exc())) + log.error('Search failed for %s: %s', (getIdentifier(media), traceback.format_exc())) self.in_progress['to_go'] -= 1 @@ -257,7 +257,7 @@ class MovieSearcher(SearcherBase, MovieTypeBase): return True # Check if nzb contains imdb link - if getImdb(nzb.get('description', '')) == media['identifier']: + if getImdb(nzb.get('description', '')) == getIdentifier(media): return True for raw_title in media['info']['titles']: diff --git a/couchpotato/core/plugins/base.py b/couchpotato/core/plugins/base.py index 08f8efd..1e4bfeb 100644 --- a/couchpotato/core/plugins/base.py +++ b/couchpotato/core/plugins/base.py @@ -10,7 +10,7 @@ import urllib2 from couchpotato.core.event import fireEvent, addEvent from couchpotato.core.helpers.encoding import ss, toSafeString, \ toUnicode, sp -from couchpotato.core.helpers.variable import getExt, md5, isLocalIP, scanForPassword, tryInt +from couchpotato.core.helpers.variable import getExt, md5, isLocalIP, scanForPassword, tryInt, getIdentifier from couchpotato.core.logger import CPLog from couchpotato.environment import Env import requests @@ -338,7 +338,8 @@ class Plugin(object): def cpTag(self, media): if Env.setting('enabled', 'renamer'): - return '.cp(' + media.get('identifier') + ')' if media.get('identifier') else '' + identifier = getIdentifier(media) + return '.cp(' + identifier + ')' if identifier else '' return '' diff --git a/couchpotato/core/plugins/renamer.py b/couchpotato/core/plugins/renamer.py index 0f531bc..4cfc987 100644 --- a/couchpotato/core/plugins/renamer.py +++ b/couchpotato/core/plugins/renamer.py @@ -10,7 +10,7 @@ from couchpotato.api import addApiView from couchpotato.core.event import addEvent, fireEvent, fireEventAsync from couchpotato.core.helpers.encoding import toUnicode, ss, sp from couchpotato.core.helpers.variable import getExt, mergeDicts, getTitle, \ - getImdb, link, symlink, tryInt, splitString, fnEscape, isSubFolder + getImdb, link, symlink, tryInt, splitString, fnEscape, isSubFolder, getIdentifier from couchpotato.core.logger import CPLog from couchpotato.core.plugins.base import Plugin from couchpotato.environment import Env @@ -1043,7 +1043,7 @@ Remove it if you want it to be renamed (again, or at least let it try again) if rls: media = db.get('id', rls['media_id']) release_download.update({ - 'imdb_id': media['identifier'], + 'imdb_id': getIdentifier(media), 'quality': rls['quality'], 'protocol': rls.get('info', {}).get('protocol') or rls.get('info', {}).get('type'), 'release_id': rls['_id'], diff --git a/couchpotato/core/plugins/scanner.py b/couchpotato/core/plugins/scanner.py index 0066c36..65ae257 100644 --- a/couchpotato/core/plugins/scanner.py +++ b/couchpotato/core/plugins/scanner.py @@ -8,7 +8,7 @@ from couchpotato import get_db from couchpotato.core.event import fireEvent, addEvent from couchpotato.core.helpers.encoding import toUnicode, simplifyString, sp from couchpotato.core.helpers.variable import getExt, getImdb, tryInt, \ - splitString + splitString, getIdentifier from couchpotato.core.logger import CPLog from couchpotato.core.plugins.base import Plugin from enzyme.exceptions import NoParserError, ParseError @@ -403,7 +403,7 @@ class Scanner(Plugin): if not group['media']: log.error('Unable to determine media: %s', group['identifiers']) else: - group['identifier'] = group['media'].get('identifier') or group['media']['info'].get('imdb') + group['identifier'] = getIdentifier(group['media']) or group['media']['info'].get('imdb') processed_movies[identifier] = group