Merge branch 'refs/heads/develop'
This commit is contained in:
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()
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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:
|
||||||
|
|||||||
Reference in new issue
Block a user