Browse Source

get identifier helper

pull/2993/head
Ruud 11 years ago
parent
commit
be46ed12ac
  1. 8
      couchpotato/core/helpers/variable.py
  2. 5
      couchpotato/core/media/_base/media/main.py
  3. 4
      couchpotato/core/media/_base/providers/torrent/kickasstorrents.py
  4. 4
      couchpotato/core/media/_base/providers/torrent/passthepopcorn.py
  5. 29
      couchpotato/core/media/movie/_base/main.py
  6. 3
      couchpotato/core/media/movie/providers/nzb/binsearch.py
  7. 3
      couchpotato/core/media/movie/providers/nzb/newznab.py
  8. 3
      couchpotato/core/media/movie/providers/torrent/torrentpotato.py
  9. 8
      couchpotato/core/media/movie/searcher.py
  10. 5
      couchpotato/core/plugins/base.py
  11. 4
      couchpotato/core/plugins/renamer.py
  12. 4
      couchpotato/core/plugins/scanner.py

8
couchpotato/core/helpers/variable.py

@ -227,6 +227,10 @@ def toIterable(value):
return [value] return [value]
def getIdentifier(media):
return media.get('identifier') or media.get('identifiers', {}).get('imdb')
def getTitle(media_dict): def getTitle(media_dict):
try: try:
try: try:
@ -241,10 +245,10 @@ def getTitle(media_dict):
try: try:
return media_dict['media']['info']['titles'][0] return media_dict['media']['info']['titles'][0]
except: 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 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 return None
except: except:
log.error('Could not get title for library item: %s', media_dict) log.error('Could not get title for library item: %s', media_dict)

5
couchpotato/core/media/_base/media/main.py

@ -99,13 +99,10 @@ class MediaPlugin(MediaBase):
try: try:
media = get_db().get('id', media_id) media = get_db().get('id', media_id)
default_title = getTitle(media)
event = '%s.update_info' % media.get('type') event = '%s.update_info' % media.get('type')
def handler(): 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: if handler:
return handler return handler

4
couchpotato/core/media/_base/providers/torrent/kickasstorrents.py

@ -2,7 +2,7 @@ import re
import traceback import traceback
from bs4 import BeautifulSoup 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.logger import CPLog
from couchpotato.core.media._base.providers.torrent.base import TorrentMagnetProvider from couchpotato.core.media._base.providers.torrent.base import TorrentMagnetProvider
@ -38,7 +38,7 @@ class Base(TorrentMagnetProvider):
def _search(self, media, quality, results): 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: if data:

4
couchpotato/core/media/_base/providers/torrent/passthepopcorn.py

@ -5,7 +5,7 @@ import time
import traceback import traceback
from couchpotato.core.helpers.encoding import tryUrlencode 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.logger import CPLog
from couchpotato.core.media._base.providers.torrent.base import TorrentProvider from couchpotato.core.media._base.providers.torrent.base import TorrentProvider
from dateutil.parser import parse from dateutil.parser import parse
@ -36,7 +36,7 @@ class Base(TorrentProvider):
params = mergeDicts(self.quality_search_params[quality_id].copy(), { params = mergeDicts(self.quality_search_params[quality_id].copy(), {
'order_by': 'relevance', 'order_by': 'relevance',
'order_way': 'descending', 'order_way': 'descending',
'searchstr': media['identifier'] 'searchstr': getIdentifier(media)
}) })
url = '%s?json=noredirect&%s' % (self.urls['torrent'], tryUrlencode(params)) url = '%s?json=noredirect&%s' % (self.urls['torrent'], tryUrlencode(params))

29
couchpotato/core/media/movie/_base/main.py

@ -6,7 +6,7 @@ from couchpotato import get_db
from couchpotato.api import addApiView from couchpotato.api import addApiView
from couchpotato.core.event import fireEvent, fireEventAsync, addEvent from couchpotato.core.event import fireEvent, fireEventAsync, addEvent
from couchpotato.core.helpers.encoding import toUnicode 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.logger import CPLog
from couchpotato.core.media.movie import MovieTypeBase from couchpotato.core.media.movie import MovieTypeBase
import six import six
@ -266,7 +266,7 @@ class MovieBase(MovieTypeBase):
else: else:
media = db.get('media', 'imdb-%s' % identifier, with_doc = True)['doc'] 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 # Don't need those here
try: del info['in_wanted'] try: del info['in_wanted']
@ -275,7 +275,7 @@ class MovieBase(MovieTypeBase):
except: pass except: pass
if not info or len(info) == 0: 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 return False
# Update basic info # Update basic info
@ -285,19 +285,20 @@ class MovieBase(MovieTypeBase):
log.debug('Adding titles: %s', titles) log.debug('Adding titles: %s', titles)
# Define default title # Define default title
def_title = None
if default_title: if default_title:
counter = 0 def_title = None
for title in titles: if default_title:
if title.lower() == toUnicode(default_title.lower()) or (toUnicode(default_title) == six.u('') and toUnicode(titles[0]) == title): counter = 0
def_title = toUnicode(title) for title in titles:
break if title.lower() == toUnicode(default_title.lower()) or (toUnicode(default_title) == six.u('') and toUnicode(titles[0]) == title):
counter += 1 def_title = toUnicode(title)
break
counter += 1
if not def_title: if not def_title:
def_title = toUnicode(titles[0]) def_title = toUnicode(titles[0])
media['title'] = def_title media['title'] = def_title
# Files # Files
images = info.get('images', []) images = info.get('images', [])
@ -357,7 +358,7 @@ class MovieBase(MovieTypeBase):
dates = media.get('info').get('release_date') 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: 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}) media['info'].update({'release_date': dates})
db.update(media) db.update(media)

3
couchpotato/core/media/movie/providers/nzb/binsearch.py

@ -1,4 +1,5 @@
from couchpotato.core.helpers.encoding import tryUrlencode from couchpotato.core.helpers.encoding import tryUrlencode
from couchpotato.core.helpers.variable import getIdentifier
from couchpotato.core.logger import CPLog from couchpotato.core.logger import CPLog
from couchpotato.core.media._base.providers.nzb.binsearch import Base from couchpotato.core.media._base.providers.nzb.binsearch import Base
from couchpotato.core.media.movie.providers.base import MovieProvider from couchpotato.core.media.movie.providers.base import MovieProvider
@ -13,7 +14,7 @@ class BinSearch(MovieProvider, Base):
def buildUrl(self, media, quality): def buildUrl(self, media, quality):
query = tryUrlencode({ query = tryUrlencode({
'q': media['identifier'], 'q': getIdentifier(media),
'm': 'n', 'm': 'n',
'max': 400, 'max': 400,
'adv_age': Env.setting('retention', 'nzb'), 'adv_age': Env.setting('retention', 'nzb'),

3
couchpotato/core/media/movie/providers/nzb/newznab.py

@ -1,4 +1,5 @@
from couchpotato.core.helpers.encoding import tryUrlencode from couchpotato.core.helpers.encoding import tryUrlencode
from couchpotato.core.helpers.variable import getIdentifier
from couchpotato.core.logger import CPLog from couchpotato.core.logger import CPLog
from couchpotato.core.media._base.providers.nzb.newznab import Base from couchpotato.core.media._base.providers.nzb.newznab import Base
from couchpotato.core.media.movie.providers.base import MovieProvider from couchpotato.core.media.movie.providers.base import MovieProvider
@ -13,7 +14,7 @@ class Newznab(MovieProvider, Base):
def buildUrl(self, media, api_key): def buildUrl(self, media, api_key):
query = tryUrlencode({ query = tryUrlencode({
't': 'movie', 't': 'movie',
'imdbid': media['identifier'].replace('tt', ''), 'imdbid': getIdentifier(media).replace('tt', ''),
'apikey': api_key, 'apikey': api_key,
'extended': 1 'extended': 1
}) })

3
couchpotato/core/media/movie/providers/torrent/torrentpotato.py

@ -1,4 +1,5 @@
from couchpotato.core.helpers.encoding import tryUrlencode from couchpotato.core.helpers.encoding import tryUrlencode
from couchpotato.core.helpers.variable import getIdentifier
from couchpotato.core.logger import CPLog from couchpotato.core.logger import CPLog
from couchpotato.core.media._base.providers.torrent.torrentpotato import Base from couchpotato.core.media._base.providers.torrent.torrentpotato import Base
from couchpotato.core.media.movie.providers.base import MovieProvider from couchpotato.core.media.movie.providers.base import MovieProvider
@ -14,6 +15,6 @@ class TorrentPotato(MovieProvider, Base):
arguments = tryUrlencode({ arguments = tryUrlencode({
'user': host['name'], 'user': host['name'],
'passkey': host['pass_key'], 'passkey': host['pass_key'],
'imdbid': media['identifier'] 'imdbid': getIdentifier(media),
}) })
return '%s?%s' % (host['host'], arguments) return '%s?%s' % (host['host'], arguments)

8
couchpotato/core/media/movie/searcher.py

@ -8,7 +8,7 @@ from couchpotato import get_db
from couchpotato.api import addApiView from couchpotato.api import addApiView
from couchpotato.core.event import addEvent, fireEvent, fireEventAsync from couchpotato.core.event import addEvent, fireEvent, fireEventAsync
from couchpotato.core.helpers.encoding import simplifyString 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.logger import CPLog
from couchpotato.core.media._base.searcher.base import SearcherBase from couchpotato.core.media._base.searcher.base import SearcherBase
from couchpotato.core.media.movie import MovieTypeBase from couchpotato.core.media.movie import MovieTypeBase
@ -95,10 +95,10 @@ class MovieSearcher(SearcherBase, MovieTypeBase):
try: try:
self.single(media, search_protocols) self.single(media, search_protocols)
except IndexError: 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) fireEvent('movie.update_info', media_id)
except: 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 self.in_progress['to_go'] -= 1
@ -257,7 +257,7 @@ class MovieSearcher(SearcherBase, MovieTypeBase):
return True return True
# Check if nzb contains imdb link # Check if nzb contains imdb link
if getImdb(nzb.get('description', '')) == media['identifier']: if getImdb(nzb.get('description', '')) == getIdentifier(media):
return True return True
for raw_title in media['info']['titles']: for raw_title in media['info']['titles']:

5
couchpotato/core/plugins/base.py

@ -10,7 +10,7 @@ import urllib2
from couchpotato.core.event import fireEvent, addEvent from couchpotato.core.event import fireEvent, addEvent
from couchpotato.core.helpers.encoding import ss, toSafeString, \ from couchpotato.core.helpers.encoding import ss, toSafeString, \
toUnicode, sp 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.core.logger import CPLog
from couchpotato.environment import Env from couchpotato.environment import Env
import requests import requests
@ -338,7 +338,8 @@ class Plugin(object):
def cpTag(self, media): def cpTag(self, media):
if Env.setting('enabled', 'renamer'): 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 '' return ''

4
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.event import addEvent, fireEvent, fireEventAsync
from couchpotato.core.helpers.encoding import toUnicode, ss, sp from couchpotato.core.helpers.encoding import toUnicode, ss, sp
from couchpotato.core.helpers.variable import getExt, mergeDicts, getTitle, \ 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.logger import CPLog
from couchpotato.core.plugins.base import Plugin from couchpotato.core.plugins.base import Plugin
from couchpotato.environment import Env 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: if rls:
media = db.get('id', rls['media_id']) media = db.get('id', rls['media_id'])
release_download.update({ release_download.update({
'imdb_id': media['identifier'], 'imdb_id': getIdentifier(media),
'quality': rls['quality'], 'quality': rls['quality'],
'protocol': rls.get('info', {}).get('protocol') or rls.get('info', {}).get('type'), 'protocol': rls.get('info', {}).get('protocol') or rls.get('info', {}).get('type'),
'release_id': rls['_id'], 'release_id': rls['_id'],

4
couchpotato/core/plugins/scanner.py

@ -8,7 +8,7 @@ from couchpotato import get_db
from couchpotato.core.event import fireEvent, addEvent from couchpotato.core.event import fireEvent, addEvent
from couchpotato.core.helpers.encoding import toUnicode, simplifyString, sp from couchpotato.core.helpers.encoding import toUnicode, simplifyString, sp
from couchpotato.core.helpers.variable import getExt, getImdb, tryInt, \ from couchpotato.core.helpers.variable import getExt, getImdb, tryInt, \
splitString splitString, getIdentifier
from couchpotato.core.logger import CPLog from couchpotato.core.logger import CPLog
from couchpotato.core.plugins.base import Plugin from couchpotato.core.plugins.base import Plugin
from enzyme.exceptions import NoParserError, ParseError from enzyme.exceptions import NoParserError, ParseError
@ -403,7 +403,7 @@ class Scanner(Plugin):
if not group['media']: if not group['media']:
log.error('Unable to determine media: %s', group['identifiers']) log.error('Unable to determine media: %s', group['identifiers'])
else: 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 processed_movies[identifier] = group

Loading…
Cancel
Save