Merge branch 'develop'
This commit is contained in:
@@ -31,7 +31,7 @@ class Hadouken(DownloaderBase):
|
|||||||
log.error('Config properties are not filled in correctly, port is missing.')
|
log.error('Config properties are not filled in correctly, port is missing.')
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if not self.conf('apikey'):
|
if not self.conf('api_key'):
|
||||||
log.error('Config properties are not filled in correctly, API key is missing.')
|
log.error('Config properties are not filled in correctly, API key is missing.')
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
import os
|
import os
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
from couchpotato import CPLog
|
from couchpotato import CPLog, md5
|
||||||
from couchpotato.core.event import addEvent, fireEvent, fireEventAsync
|
from couchpotato.core.event import addEvent, fireEvent, fireEventAsync
|
||||||
from couchpotato.core.helpers.encoding import toUnicode
|
from couchpotato.core.helpers.encoding import toUnicode
|
||||||
|
from couchpotato.core.helpers.variable import getExt
|
||||||
from couchpotato.core.plugins.base import Plugin
|
from couchpotato.core.plugins.base import Plugin
|
||||||
import six
|
import six
|
||||||
|
|
||||||
@@ -92,7 +93,15 @@ class MediaBase(Plugin):
|
|||||||
if not isinstance(image, (str, unicode)):
|
if not isinstance(image, (str, unicode)):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if file_type not in existing_files or len(existing_files.get(file_type, [])) == 0:
|
# Check if it has top image
|
||||||
|
filename = '%s.%s' % (md5(image), getExt(image))
|
||||||
|
existing = existing_files.get(file_type, [])
|
||||||
|
has_latest = False
|
||||||
|
for x in existing:
|
||||||
|
if filename in x:
|
||||||
|
has_latest = True
|
||||||
|
|
||||||
|
if not has_latest or file_type not in existing_files or len(existing_files.get(file_type, [])) == 0:
|
||||||
file_path = fireEvent('file.download', url = image, single = True)
|
file_path = fireEvent('file.download', url = image, single = True)
|
||||||
if file_path:
|
if file_path:
|
||||||
existing_files[file_type] = [toUnicode(file_path)]
|
existing_files[file_type] = [toUnicode(file_path)]
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class Base(TorrentProvider):
|
|||||||
'login': 'https://www.torrentleech.org/user/account/login/',
|
'login': 'https://www.torrentleech.org/user/account/login/',
|
||||||
'login_check': 'https://torrentleech.org/user/messages',
|
'login_check': 'https://torrentleech.org/user/messages',
|
||||||
'detail': 'https://www.torrentleech.org/torrent/%s',
|
'detail': 'https://www.torrentleech.org/torrent/%s',
|
||||||
'search': 'https://www.torrentleech.org/torrents/browse/index/query/%s/categories/%d',
|
'search': 'https://www.torrentleech.org/torrents/browse/index/query/%s/categories/%s',
|
||||||
'download': 'https://www.torrentleech.org%s',
|
'download': 'https://www.torrentleech.org%s',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,12 +13,12 @@ log = CPLog(__name__)
|
|||||||
class Base(TorrentProvider):
|
class Base(TorrentProvider):
|
||||||
|
|
||||||
urls = {
|
urls = {
|
||||||
'test': 'http://torrentshack.eu/',
|
'test': 'https://theshack.us.to/',
|
||||||
'login': 'http://torrentshack.eu/login.php',
|
'login': 'https://theshack.us.to/login.php',
|
||||||
'login_check': 'http://torrentshack.eu/inbox.php',
|
'login_check': 'https://theshack.us.to/inbox.php',
|
||||||
'detail': 'http://torrentshack.eu/torrent/%s',
|
'detail': 'https://theshack.us.to/torrent/%s',
|
||||||
'search': 'http://torrentshack.eu/torrents.php?action=advanced&searchstr=%s&scene=%s&filter_cat[%d]=1',
|
'search': 'https://theshack.us.to/torrents.php?action=advanced&searchstr=%s&scene=%s&filter_cat[%d]=1',
|
||||||
'download': 'http://torrentshack.eu/%s',
|
'download': 'https://theshack.us.to/%s',
|
||||||
}
|
}
|
||||||
|
|
||||||
http_time_between_calls = 1 # Seconds
|
http_time_between_calls = 1 # Seconds
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ class Base(TorrentProvider):
|
|||||||
data = self.getJsonData(search_url)
|
data = self.getJsonData(search_url)
|
||||||
data = data.get('data')
|
data = data.get('data')
|
||||||
|
|
||||||
if data and data.get('movies'):
|
if isinstance(data, dict) and data.get('movies'):
|
||||||
try:
|
try:
|
||||||
for result in data.get('movies'):
|
for result in data.get('movies'):
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import json
|
|||||||
import re
|
import re
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
|
from couchpotato import Env
|
||||||
from couchpotato.core.event import addEvent, fireEvent
|
from couchpotato.core.event import addEvent, fireEvent
|
||||||
from couchpotato.core.helpers.encoding import tryUrlencode
|
from couchpotato.core.helpers.encoding import tryUrlencode
|
||||||
from couchpotato.core.helpers.variable import tryInt, tryFloat, splitString
|
from couchpotato.core.helpers.variable import tryInt, tryFloat, splitString
|
||||||
@@ -17,8 +18,8 @@ autoload = 'OMDBAPI'
|
|||||||
class OMDBAPI(MovieProvider):
|
class OMDBAPI(MovieProvider):
|
||||||
|
|
||||||
urls = {
|
urls = {
|
||||||
'search': 'http://www.omdbapi.com/?%s',
|
'search': 'http://www.omdbapi.com/?type=movie&%s',
|
||||||
'info': 'http://www.omdbapi.com/?i=%s',
|
'info': 'http://www.omdbapi.com/?type=movie&i=%s',
|
||||||
}
|
}
|
||||||
|
|
||||||
http_time_between_calls = 0
|
http_time_between_calls = 0
|
||||||
@@ -38,7 +39,8 @@ class OMDBAPI(MovieProvider):
|
|||||||
}
|
}
|
||||||
|
|
||||||
cache_key = 'omdbapi.cache.%s' % q
|
cache_key = 'omdbapi.cache.%s' % q
|
||||||
cached = self.getCache(cache_key, self.urls['search'] % tryUrlencode({'t': name_year.get('name'), 'y': name_year.get('year', '')}), timeout = 3)
|
url = self.urls['search'] % tryUrlencode({'t': name_year.get('name'), 'y': name_year.get('year', '')})
|
||||||
|
cached = self.getCache(cache_key, url, timeout = 3, headers = {'User-Agent': Env.getIdentifier()})
|
||||||
|
|
||||||
if cached:
|
if cached:
|
||||||
result = self.parseMovie(cached)
|
result = self.parseMovie(cached)
|
||||||
@@ -56,7 +58,7 @@ class OMDBAPI(MovieProvider):
|
|||||||
return {}
|
return {}
|
||||||
|
|
||||||
cache_key = 'omdbapi.cache.%s' % identifier
|
cache_key = 'omdbapi.cache.%s' % identifier
|
||||||
cached = self.getCache(cache_key, self.urls['info'] % identifier, timeout = 3)
|
cached = self.getCache(cache_key, self.urls['info'] % identifier, timeout = 3, headers = {'User-Agent': Env.getIdentifier()})
|
||||||
|
|
||||||
if cached:
|
if cached:
|
||||||
result = self.parseMovie(cached)
|
result = self.parseMovie(cached)
|
||||||
|
|||||||
@@ -16,12 +16,12 @@ class TorrentLeech(MovieProvider, Base):
|
|||||||
([9], ['ts', 'tc']),
|
([9], ['ts', 'tc']),
|
||||||
([10], ['r5', 'scr']),
|
([10], ['r5', 'scr']),
|
||||||
([11], ['dvdrip']),
|
([11], ['dvdrip']),
|
||||||
([14], ['brrip']),
|
([13, 14], ['brrip']),
|
||||||
([12], ['dvdr']),
|
([12], ['dvdr']),
|
||||||
]
|
]
|
||||||
|
|
||||||
def buildUrl(self, title, media, quality):
|
def buildUrl(self, title, media, quality):
|
||||||
return (
|
return (
|
||||||
tryUrlencode(title.replace(':', '')),
|
tryUrlencode(title.replace(':', '')),
|
||||||
self.getCatId(quality)[0]
|
','.join([str(x) for x in self.getCatId(quality)])
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ class Plugin(object):
|
|||||||
headers['Host'] = headers.get('Host', None)
|
headers['Host'] = headers.get('Host', None)
|
||||||
headers['User-Agent'] = headers.get('User-Agent', self.user_agent)
|
headers['User-Agent'] = headers.get('User-Agent', self.user_agent)
|
||||||
headers['Accept-encoding'] = headers.get('Accept-encoding', 'gzip')
|
headers['Accept-encoding'] = headers.get('Accept-encoding', 'gzip')
|
||||||
headers['Connection'] = headers.get('Connection', 'close')
|
headers['Connection'] = headers.get('Connection', 'keep-alive')
|
||||||
headers['Cache-Control'] = headers.get('Cache-Control', 'max-age=0')
|
headers['Cache-Control'] = headers.get('Cache-Control', 'max-age=0')
|
||||||
|
|
||||||
r = Env.get('http_opener')
|
r = Env.get('http_opener')
|
||||||
|
|||||||
@@ -240,7 +240,7 @@ class QualityPlugin(Plugin):
|
|||||||
|
|
||||||
# Add additional size score if only 1 size validated
|
# Add additional size score if only 1 size validated
|
||||||
if len(size_scores) == 1:
|
if len(size_scores) == 1:
|
||||||
self.calcScore(score, size_scores[0], 8)
|
self.calcScore(score, size_scores[0], 7)
|
||||||
del size_scores
|
del size_scores
|
||||||
|
|
||||||
# Return nothing if all scores are <= 0
|
# Return nothing if all scores are <= 0
|
||||||
@@ -491,6 +491,7 @@ class QualityPlugin(Plugin):
|
|||||||
'Movie Name.2014.720p Web-Dl Aac2.0 h264-ReleaseGroup': {'size': 3800, 'quality': 'brrip'},
|
'Movie Name.2014.720p Web-Dl Aac2.0 h264-ReleaseGroup': {'size': 3800, 'quality': 'brrip'},
|
||||||
'Movie Name.2014.720p.WEBRip.x264.AC3-ReleaseGroup': {'size': 3000, 'quality': 'scr'},
|
'Movie Name.2014.720p.WEBRip.x264.AC3-ReleaseGroup': {'size': 3000, 'quality': 'scr'},
|
||||||
'Movie.Name.2014.1080p.HDCAM.-.ReleaseGroup': {'size': 5300, 'quality': 'cam'},
|
'Movie.Name.2014.1080p.HDCAM.-.ReleaseGroup': {'size': 5300, 'quality': 'cam'},
|
||||||
|
'Movie.Name.2014.720p.HDSCR.4PARTS.MP4.AAC.ReleaseGroup': {'size': 2401, 'quality': 'scr'},
|
||||||
}
|
}
|
||||||
|
|
||||||
correct = 0
|
correct = 0
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ autoload = 'Subtitle'
|
|||||||
|
|
||||||
class Subtitle(Plugin):
|
class Subtitle(Plugin):
|
||||||
|
|
||||||
services = ['opensubtitles', 'thesubdb', 'subswiki', 'podnapisi', 'subscenter']
|
services = ['opensubtitles', 'thesubdb', 'subswiki', 'subscenter']
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
addEvent('renamer.before', self.searchSingle)
|
addEvent('renamer.before', self.searchSingle)
|
||||||
|
|||||||
Reference in New Issue
Block a user