Merge branch 'refs/heads/develop'

This commit is contained in:
Ruud committed 2013-11-17 00:07:01 +01:00
commit e622e68701
6 files changed
+63 -7

No files matched your search

@@ -3,6 +3,7 @@ from couchpotato.core.helpers.encoding import isInt
from couchpotato.core.logger import CPLog from couchpotato.core.logger import CPLog
import json import json
import requests import requests
import traceback
log = CPLog(__name__) log = CPLog(__name__)
@@ -34,12 +35,12 @@ class Synology(Downloader):
elif data['protocol'] in ['nzb', 'torrent']: elif data['protocol'] in ['nzb', 'torrent']:
log.info('Adding %s' % data['protocol']) log.info('Adding %s' % data['protocol'])
if not filedata: if not filedata:
log.error('No %s data found' % data['protocol']) log.error('No %s data found', data['protocol'])
else: else:
filename = data['name'] + '.' + data['protocol'] filename = data['name'] + '.' + data['protocol']
response = srpc.create_task(filename = filename, filedata = filedata) response = srpc.create_task(filename = filename, filedata = filedata)
except Exception, err: except:
log.error('Exception while adding torrent: %s', err) log.error('Exception while adding torrent: %s', traceback.format_exc())
finally: finally:
return response return response
@@ -147,7 +147,7 @@ class Searcher(SearcherBase):
except: pass except: pass
# Match longest name between [] # Match longest name between []
try: check_names.append(max(check_name.split('['), key = len)) try: check_names.append(max(re.findall(r'[^[]*\[([^]]*)\]', check_name), key = len).strip())
except: pass except: pass
for check_name in list(set(check_names)): for check_name in list(set(check_names)):
@@ -151,7 +151,7 @@ class MovieLibraryPlugin(LibraryBase):
else: else:
dates = library.info.get('release_date') dates = library.info.get('release_date')
if dates and dates.get('expires', 0) < time.time() 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.release_date', identifier = identifier, merge = True) dates = fireEvent('movie.release_date', identifier = identifier, merge = True)
library.info.update({'release_date': dates }) library.info.update({'release_date': dates })
db.commit() db.commit()
+5 -2
View File
@@ -1,11 +1,11 @@
from couchpotato.core.event import addEvent from couchpotato.core.event import addEvent, fireEvent
from couchpotato.core.helpers.encoding import toUnicode from couchpotato.core.helpers.encoding import toUnicode
from couchpotato.core.helpers.variable import getTitle, splitString from couchpotato.core.helpers.variable import getTitle, splitString
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.core.plugins.score.scores import nameScore, nameRatioScore, \ from couchpotato.core.plugins.score.scores import nameScore, nameRatioScore, \
sizeScore, providerScore, duplicateScore, partialIgnoredScore, namePositionScore, \ sizeScore, providerScore, duplicateScore, partialIgnoredScore, namePositionScore, \
halfMultipartScore halfMultipartScore, sceneScore
from couchpotato.environment import Env from couchpotato.environment import Env
log = CPLog(__name__) log = CPLog(__name__)
@@ -62,4 +62,7 @@ class Score(Plugin):
if extra_score: if extra_score:
score += extra_score(nzb) score += extra_score(nzb)
# Scene / Nuke scoring
score += sceneScore(nzb['name'])
return score return score
+40
View File
@@ -1,8 +1,13 @@
from couchpotato.core.event import fireEvent from couchpotato.core.event import fireEvent
from couchpotato.core.helpers.encoding import simplifyString from couchpotato.core.helpers.encoding import simplifyString
from couchpotato.core.helpers.variable import tryInt from couchpotato.core.helpers.variable import tryInt
from couchpotato.core.logger import CPLog
from couchpotato.environment import Env from couchpotato.environment import Env
import re import re
import traceback
log = CPLog(__name__)
name_scores = [ name_scores = [
# Tags # Tags
@@ -160,3 +165,38 @@ def halfMultipartScore(nzb_name):
return -30 return -30
return 0 return 0
def sceneScore(nzb_name):
check_names = [nzb_name]
# Match names between "
try: check_names.append(re.search(r'([\'"])[^\1]*\1', nzb_name).group(0))
except: pass
# Match longest name between []
try: check_names.append(max(re.findall(r'[^[]*\[([^]]*)\]', nzb_name), key = len).strip())
except: pass
for name in check_names:
# Strip twice, remove possible file extensions
name = name.lower().strip(' "\'\.-_\[\]')
name = re.sub('\.([a-z0-9]{0,4})$', '', name)
name = name.strip(' "\'\.-_\[\]')
# Make sure year and groupname is in there
year = re.findall('(?P<year>19[0-9]{2}|20[0-9]{2})', name)
group = re.findall('\-([a-z0-9]+)$', name)
if len(year) > 0 and len(group) > 0:
try:
validate = fireEvent('release.validate', name, single = True)
if validate and tryInt(validate.get('score')) != 0:
log.debug('Release "%s" scored %s, reason: %s', (nzb_name, validate['score'], validate['reasons']))
return tryInt(validate.get('score'))
except:
log.error('Failed scoring scene: %s', traceback.format_exc())
return 0
@@ -3,6 +3,7 @@ from couchpotato.core.helpers.encoding import tryUrlencode
from couchpotato.core.logger import CPLog from couchpotato.core.logger import CPLog
from couchpotato.core.providers.info.base import MovieProvider from couchpotato.core.providers.info.base import MovieProvider
from couchpotato.environment import Env from couchpotato.environment import Env
import base64
import time import time
log = CPLog(__name__) log = CPLog(__name__)
@@ -11,6 +12,7 @@ log = CPLog(__name__)
class CouchPotatoApi(MovieProvider): class CouchPotatoApi(MovieProvider):
urls = { urls = {
'validate': 'https://api.couchpota.to/validate/%s/',
'search': 'https://api.couchpota.to/search/%s/', 'search': 'https://api.couchpota.to/search/%s/',
'info': 'https://api.couchpota.to/info/%s/', 'info': 'https://api.couchpota.to/info/%s/',
'is_movie': 'https://api.couchpota.to/ismovie/%s/', 'is_movie': 'https://api.couchpota.to/ismovie/%s/',
@@ -30,6 +32,8 @@ class CouchPotatoApi(MovieProvider):
addEvent('movie.suggest', self.getSuggestions) addEvent('movie.suggest', self.getSuggestions)
addEvent('movie.is_movie', self.isMovie) addEvent('movie.is_movie', self.isMovie)
addEvent('release.validate', self.validate)
addEvent('cp.source_url', self.getSourceUrl) addEvent('cp.source_url', self.getSourceUrl)
addEvent('cp.messages', self.getMessages) addEvent('cp.messages', self.getMessages)
@@ -51,6 +55,14 @@ class CouchPotatoApi(MovieProvider):
def search(self, q, limit = 5): def search(self, q, limit = 5):
return self.getJsonData(self.urls['search'] % tryUrlencode(q) + ('?limit=%s' % limit), headers = self.getRequestHeaders()) return self.getJsonData(self.urls['search'] % tryUrlencode(q) + ('?limit=%s' % limit), headers = self.getRequestHeaders())
def validate(self, name = None):
if not name:
return
name_enc = base64.b64encode(name)
return self.getJsonData(self.urls['validate'] % name_enc, headers = self.getRequestHeaders())
def isMovie(self, identifier = None): def isMovie(self, identifier = None):
if not identifier: if not identifier: