Merge branch 'hotfix/0.16.13'

This commit is contained in:
JackDandy 2018-05-26 18:57:54 +01:00
commit 70f1cc58ff
9 changed files with 148 additions and 134 deletions

View file

@ -1,4 +1,10 @@
### 0.16.12 (2018-05-25 00:40:00 UTC)
### 0.16.13 (2018-05-26 17:00:00 UTC)
* Change add blacklog search terms for anime PROPERS
* Fix rare case recovery after a server has been down
### 0.16.12 (2018-05-25 00:40:00 UTC)
* Fix anime parser and anime PROPER level

View file

@ -33,37 +33,40 @@ class BTSceneProvider(generic.TorrentProvider):
generic.TorrentProvider.__init__(self, 'BTScene')
self.url_home = ['https://%s/' % base64.b64decode(x) for x in [''.join(x) for x in [
[re.sub('[O\sx]+', '', x[::-1]) for x in [
'zRnx Y', 'ux V2Y', '15 S Z', 'sJ Omb', 'r N 2b', 'uxQxWZ', '=MOm d']],
[re.sub('[L\sq]+', '', x[::-1]) for x in [
'zLRn Y', 'uVqq2Y', '15SqLZ', 'sqJLmb', 'rN L2b', 'uqLQWZ', '=qgX b']],
[re.sub('[Q\s0]+', '', x[::-1]) for x in [
'zRn Y', 'uQ V2Y', '1Q5QSZ', 'sJ0mQb', 'rQ0N2b', 'uIX QZ', 'ul200d']],
[re.sub('[T\s ]+', '', x[::-1]) for x in [
'zR nTY', 'uTVT2Y', '15 STZ', 'sTTJmb', 'r N2 b', 'uTTIXZ', '=TTM2Y']],
[re.sub('[i\sw]+', '', x[::-1]) for x in [
'zR nY', 'li52ib', '15i SM', 's Jmwb', 'rN2 b', 'uwQW Z', 's9i Gb']],
[re.sub('[X\sV]+', '', x[::-1]) for x in [
'z Rn Y', 'lXV52b', '1 5 SM', 'sJ mXb', 'rN2XVb', 'uVQWVZ', 'mRX3Vd']],
[re.sub('[p\sF]+', '', x[::-1]) for x in [
'zFRFnY', 'l5 F2b', '15SF M', 'sFJmpb', 'rN 2pb', 'upQWpZ', '=MFFXb']],
[re.sub('[Q\sp]+', '', x[::-1]) for x in [
'z RpnY', 'u V2 Y', 'i5QSQZ', 'hBpQXe', 'lN 3Qc', 'vQ 5CZ', '=cpmpc']],
[re.sub('[o\sG]+', '', x[::-1]) for x in [
'zo RnY', 'u GV2Y', 'i 5S Z', 'hGBX e', 'loNG3c', 'lG5CGZ', '== Qod']],
[re.sub('[q\sW]+', '', x[::-1]) for x in [
'zR nqY', 'u V2qY', 'iq5 SZ', 'h BXqe', 'lN3 c', 'i5C WZ', '==gq e']],
[re.sub('[q\sg]+', '', x[::-1]) for x in [
'c gtQnY', 'mbg lN2', 'M 2Y tU', 'vgJHqcu', 'cz5C qe', 'QqgZjFG', '= g=']],
[re.sub('[H\sF]+', '', x[::-1]) for x in [
'2YzFRFnY', '0H5SZHuV', 'WZyFFJ3b', 'p1me 0 5', 'iHHcvJnc', '=cFmc v5']],
[re.sub('[w\si]+', '', x[::-1]) for x in [
'RwnwY', '2 wYz', 'Z u V', 'sii5S', 'RXi Y', 'nL wv', '3i B']],
[re.sub('[k\sh]+', '', x[::-1]) for x in [
'zRnkhY', 'uV 2Y', '65hSkZ', '2Nk Ge', 'phdn L', '=kk=gb']],
[re.sub('[q\sP]+', '', x[::-1]) for x in [
'mPblqN2ctQnY', 'vlWduM2 YPtU', 'nYoRXahZPm L', '15PSZuV2 YzR', 'WYrN 2PbsJmb',
'==wZ y9mL sx']],
[re.sub('[o\sv]+', '', x[::-1]) for x in [
'z Rn Y', 'uVv2vY', '1 5vSZ', 'sJ omb', 'rNov2b', 'uQoWvZ', '0FvoGb']],
[re.sub('[v\sp]+', '', x[::-1]) for x in [
'zRnp Y', 'upVp2Y', '15SvpZ', 'spJpmb', 'r N 2b', 'u QvWZ', '=Mvm d']],
[re.sub('[P\sh]+', '', x[::-1]) for x in [
'zh RnY', 'uV2 Y', '1P5ShZ', 's Jm b', 'rN2h b', 'uQPW Z', '=ghXPb']],
[re.sub('[g\si]+', '', x[::-1]) for x in [
'zRiniY', 'uVgg2Y', '1 i5SZ', 'sJiimb', 'rN2igb', 'u IX Z', 'ul 2d']],
[re.sub('[O\sp]+', '', x[::-1]) for x in [
'zORnOY', 'uV2OpY', '15pSOZ', 'spJpmb', 'rN2O b', 'uOIXpZ', '=pM2OY']],
[re.sub('[ \sH]+', '', x[::-1]) for x in [
'zRHnHY', 'l H52b', '15HHSM', 'sJ mHb', 'rN 2 b', 'uQ WHZ', 's 9 Gb']],
[re.sub('[o\s ]+', '', x[::-1]) for x in [
'zRoonY', 'l5 2 b', '15ooSM', 'sJomob', 'rN2o b', 'uoQW Z', 'mRo3od']],
[re.sub('[0\sg]+', '', x[::-1]) for x in [
'zR0n0Y', 'l5 g2b', '1g5S M', 'sJm gb', 'rN0g2b', 'uQW 0Z', '=gMX b']],
[re.sub('[r\sj]+', '', x[::-1]) for x in [
'zR nrY', 'uVj2rY', 'ir 5SZ', 'hB Xre', 'lN j3c', 'vj 5CZ', '=jjcmc']],
[re.sub('[M\st]+', '', x[::-1]) for x in [
'z MRnY', 'uV2tMY', 'i5 StZ', 'hBtXte', 'lN3 tc', 'lMM5CZ', '== tQd']],
[re.sub('[K\so]+', '', x[::-1]) for x in [
'zR n Y', 'uV2 oY', 'i5 SZ', 'hBX oe', 'loNK3c', 'i 5CoZ', '=K=goe']],
[re.sub('[i\sP]+', '', x[::-1]) for x in [
'ctQiniY', 'mblNPP2', 'M 2YPtU', 'vJHPcPu', 'c z5PCe', 'QZj FPG', '=i =']],
[re.sub('[k\sq]+', '', x[::-1]) for x in [
'2Yzk RnY', '0k5qSZuV', 'WZyJ3qqb', 'p1m ke05', 'i cvJnkc', '=cmkckv5']],
[re.sub('[f\sG]+', '', x[::-1]) for x in [
'Rn Y', '2 fYz', 'Z fuV', 'sf 5S', 'RffXY', 'nGfLv', '3ffB']],
[re.sub('[t\sF]+', '', x[::-1]) for x in [
'zFtRnY', 'u V2Y', '65S tZ', '2NFG e', 'pdFnFL', '= =Fgb']],
[re.sub('[q\s ]+', '', x[::-1]) for x in [
't QqnY', 'l N2 c', 'tUmq b', 'uM2 Y', 'vl Wqd', 'hZ qmL', 'oRXqqa']],
[re.sub('[o\st]+', '', x[::-1]) for x in [
'YzRnooY', 'SoZu V2', 'Jmtb 15', 'rN 2bs', 'Ls xWtY', 'wZyt 9m', '= t=']],
]]]
self.url_vars = {'search': '?q=%s&order=1', 'browse': 'lastdaycat/type/Series/',
'get': 'torrentdownload.php?id=%s'}

View file

@ -34,26 +34,26 @@ class EztvProvider(generic.TorrentProvider):
self.url_home = ['https://eztv.ag/'] + \
['https://%s/' % base64.b64decode(x) for x in [''.join(x) for x in [
[re.sub('[f\sQ]+', '', x[::-1]) for x in [
'0pfQXZ', 'uQEQjd', 'if5fWd', 'j9ffGb', 'kQV2fa', '0fdnQL', '=f=g Z']],
[re.sub('[x\sg]+', '', x[::-1]) for x in [
'0xp XZ', 'uxEjxd', 'i x5Wd', 'jg9Ggb', 'kV2 xa', 'zx1gmL']],
[re.sub('[R\sK]+', '', x[::-1]) for x in [
'0pX KZ', 'i5i d', 'hBXKRe', 'lN3K c', 'v5KCKZ', '=cR mc']],
[re.sub('[f\sR]+', '', x[::-1]) for x in [
'0pfX Z', 'iff5id', 'hBXRfe', 'l N3 c', 'l5ffCZ', '==RQ d']],
[re.sub('[S\sx]+', '', x[::-1]) for x in [
'0 p XZ', 'iS5i d', 'h BXe', 'lNSx3c', 'i5SC Z', '==gxSe']],
[re.sub('[O\su]+', '', x[::-1]) for x in [
'0OpX Z', 'hu1Oid', 'w5yuuZ', '49u mc', 'w N nL', 'lONW Y']],
[re.sub('[O\sf]+', '', x[::-1]) for x in [
'd0pOXfZ', '3bff05i', '5W ZfyJ', 'p1fmOe0', 'cvJn c', 'mcOvf5i', '= Oc']],
[re.sub('[w\sl]+', '', x[::-1]) for x in [
'XwlZ', '0wlp', 'il d', 's l5', 'X wY', 'v lR', 'nl L', '3 B']],
[re.sub('[M\sQ]+', '', x[::-1]) for x in [
'pQMXZ', 'iQd 0', 'e 6M5', '2 NQG', 'dQMnL', 'gMQbp', '= Q=']],
[re.sub('[o\sS]+', '', x[::-1]) for x in [
'h1 id0opXZ', 'u8Wa15y Z', 'lhGdpFSmoZ', 'uVnL2 RnSe', 'ht2oY vxmY', 'nJ3obuwSGb']],
[re.sub('[v\sz]+', '', x[::-1]) for x in [
'0vp XZ', 'uvEj d', 'i5 Wzd', 'j9 vGb', 'kV2v a', '0zdvnL', '==vg Z']],
[re.sub('[f\sT]+', '', x[::-1]) for x in [
'0TpfXZ', 'ufTEjd', 'i5WTTd', 'j9f Gb', 'kV f2a', 'z1mTTL']],
[re.sub('[ \sR]+', '', x[::-1]) for x in [
'0pXRRZ', 'h 1id', 'w5yRRZ', '4 9 mc', 'w N nL', 'lNRW Y']],
[re.sub('[x\su]+', '', x[::-1]) for x in [
'dx0xpXZ', '3bx05xi', '5WZyxuJ', 'p1mexu0', 'c vuJnc', 'mcuuv5i', '= c']],
[re.sub('[T\sr]+', '', x[::-1]) for x in [
'XT Z', '0Trp', 'iTTd', 'sT 5', 'XTrY', 'vT R', 'nrrL', '3T B']],
[re.sub('[l\sT]+', '', x[::-1]) for x in [
'pX Z', 'idl 0', 'e6l 5', '2lTNG', 'd nTL', 'g blp', '= =']],
[re.sub('[T\sR]+', '', x[::-1]) for x in [
'0p X Z', 'h1iRRd', '15R yZ', 'u 8WRa', 'p RFmZ', '=gTGRd']],
[re.sub('[T\st]+', '', x[::-1]) for x in [
'0 ptXZ', '1T5i d', 'sTtJmb', 'rtN2Tb', 'sx WTY', 'ytT9mL', '=t=wTZ']],
[re.sub('[o\sz]+', '', x[::-1]) for x in [
'0zopXZ', '1z5oid', 'sJ mb', 'rNz2zb', 'uz QWZ', '0FGoob']],
[re.sub('[k\sv]+', '', x[::-1]) for x in [
'Xk Z', '0kkp', 'ivvd', 'y k5', 'WkvZ', '= Q']],
]]]
self.url_vars = {'search': 'search/%s', 'browse': 'page_%s'}
self.url_tmpl = {'config_provider_home_uri': '%(home)s',

View file

@ -1239,7 +1239,7 @@ class NZBProvider(GenericProvider):
regex += ['proper|repack', Quality.real_check]
proper_check = re.compile(r'(?i)(\b%s\b)' % '|'.join(regex))
if anime:
terms = 'v1|v2|v3|v4|v5'
terms = 'v2|v3|v4|v5|v6|v7|v8|v9'
search_terms += [terms]
regex += [terms]
proper_check = re.compile(r'(?i)(%s)' % '|'.join(regex))
@ -1468,14 +1468,14 @@ class TorrentProvider(GenericProvider):
if not self.enabled:
return last_url
self.failure_count = failure_count = 0
for cur_url in url_list:
if not self.is_valid_mod(cur_url):
return None
failure_count += self.failure_count
self.failure_count = 0
if 10 < len(cur_url) and ((expire and (expire > int(time.time()))) or
self._has_signature(self.get_url(cur_url, skip_auth=True))):
if self.should_skip():
return None
for k, v in getattr(self, 'url_tmpl', {}).items():
self.urls[k] = v % {'home': cur_url, 'vars': getattr(self, 'url_vars', {}).get(k, '')}
@ -1484,6 +1484,10 @@ class TorrentProvider(GenericProvider):
sickbeard.save_config()
return cur_url
self.failure_count = 3 * bool(failure_count)
if self.should_skip():
return None
logger.log('Failed to identify a "%s" page with %s %s (local network issue, site down, or ISP blocked) ' %
(self.name, len(url_list), ('URL', 'different URLs')[1 < len(url_list)]) +
(attempt_fetch and ('Suggest; 1) Disable "%s" 2) Use a proxy/VPN' % self.get_id()) or ''),
@ -1643,7 +1647,7 @@ class TorrentProvider(GenericProvider):
raise AuthException('%s for %s is empty in Media Providers/Options' % (setting, self.name))
def find_propers(self, **kwargs):
def find_propers(self, anime=False, **kwargs):
"""
Search for releases of type PROPER
:return: list of Proper objects
@ -1652,10 +1656,15 @@ class TorrentProvider(GenericProvider):
if self.should_skip():
return results
search_terms = getattr(self, 'proper_search_terms', ['proper', 'repack', 'real'])
# chance of a v6-v9 is so rare that to do every bl search with each in turn is too aggressive
search_terms = getattr(self, 'proper_search_terms', ['proper', 'repack', 'real'] +
([], ['v2', 'v3', 'v4', 'v5'])[True is anime])
if not isinstance(search_terms, list):
if None is search_terms:
search_terms = 'proper|repack|real'
search_terms = ['proper|repack|real']
if anime:
search_terms += ['v2|v3|v4|v5']
else:
search_terms = [search_terms]
items = self._search_provider({'Propers': search_terms})

View file

@ -34,36 +34,38 @@ class LimeTorrentsProvider(generic.TorrentProvider):
self.url_home = ['https://www.limetorrents.cc/'] + \
['https://%s/' % base64.b64decode(x) for x in [''.join(x) for x in [
[re.sub('[ \sg]+', '', x[::-1]) for x in [
'XZtlg Gb', 'lJngcv R', 'nLz R nb', 'v xmYu V', 'CZl t2 Y', '==gwY2g5']],
[re.sub('[S\si]+', '', x[::-1]) for x in [
'X SZtlGb', 'lJi ncvR', 'nSSLzRnb', 'vxmSYu V', 'CSZilt2Y', '=S= Aet5']],
[re.sub('[x\s0]+', '', x[::-1]) for x in [
'tlGx b', 'u0ExTZ', 'i5xW d', 'j9 Gxb', 'kV020a', 'zx1m L']],
[re.sub('[Y\so]+', '', x[::-1]) for x in [
'to lGb', 'uoEYTZ', 'i 5WYd', 'jo 9Gb', 'ko V2a', '0 dnL', '==Y gZ']],
[re.sub('[r\sp]+', '', x[::-1]) for x in [
'XZt rlGb', 'lJpncpvR', 'n LzRnb', 'vxmYu V', 'ic ltp2Y', '=4Wa r35']],
[re.sub('[F\so]+', '', x[::-1]) for x in [
'lJncvRoX ZtlGb', 'vxFmYuVnLzoRnb', 'pxo2FYj5iclt2Y', '05W ZyJ3b0 VWb',
'j9G buVFnct5yc', '=o0WYloJHdz5ya']],
[re.sub('[F\sK]+', '', x[::-1]) for x in [
'XKZtlGFb', 'lKJncFvR', 'mLzKKRnb', 's 5WFdy1', 'mLrNF2Fb', '=F 8mZul']],
[re.sub('[F\sp]+', '', x[::-1]) for x in [
'XZFtlpGb', 'lJn pcvR', 'nFLpzRnb', 'v xpmYuV', 'CZlt F2Y', '=F QXYs5']],
[re.sub('[K\sP]+', '', x[::-1]) for x in [
'XZKtPlGb', 'lJncPPvR', 'nKLzRnKb', 'vxm Y uV', 'CZlPt2PY', '==wYK2P5']],
[re.sub('[i\sQ]+', '', x[::-1]) for x in [
'X ZtlGQb', 'l Jn cvR', 'nLzQQRnb', 'vxmQYuiV', 'CZQlt2iY', '=ii=Aet5']],
[re.sub('[q\sX]+', '', x[::-1]) for x in [
't lGqb', 'uXETqZ', 'i5WqXd', 'j 9Gqb', 'kqV2Xa', 'z1qm L']],
[re.sub('[w\sF]+', '', x[::-1]) for x in [
'twlGFb', 'uEF TZ', 'i5W wd', 'j9 G b', 'kVw2 a', '0dnFFL', '==F gZ']],
[re.sub('[Q\sy]+', '', x[::-1]) for x in [
'XZQtlGyb', 'lJQncyvR', 'nLzRyn b', 'vxmY uyV', 'icltQ2QY', '=4WaQ3y5']],
[re.sub('[0\sp]+', '', x[::-1]) for x in [
'XZtlGp b', 'lJncppvR', 'n0LzR0nb', 'vx0mpYuV', 'icl0t2 Y', '==p0wYj5']],
[re.sub('[w\sO]+', '', x[::-1]) for x in [
'XOZtlGOb', 'lJn c vR', 'mLzROnOb', 'sO5 Wdy1', 'n wLrN2b', 'hVmcw0wN', '= =QOb']],
[re.sub('[K\sO]+', '', x[::-1]) for x in [
'XZtlK Gb', 'lJOncvKR', 'mLz RnKb', 'sK5W dy1', 'mLrKON2b', '=K8mZu l']],
[re.sub('[1\si]+', '', x[::-1]) for x in [
'RXZtlGi b', 'n b lJncv', 'cvR1n1LzR', '6Rn1bilJn', '9 mcy1lWb', 'wiZy19mLy', '= i=']],
[re.sub('[s\sg]+', '', x[::-1]) for x in [
'tlG sb', 'vR XsZ', 'lgJsnc', 'zR nb', 'hxgmsL', 'u8 G d', '=sc Hc']],
[re.sub('[o\sS]+', '', x[::-1]) for x in [
'toSlGb', 'vR oXZ', 'lJSnoc', 'z Rnob', '4opnSL', 'uY3SSY', 'ul 2d']],
[re.sub('[r\sS]+', '', x[::-1]) for x in [
'RXZStSlGb', 'nblJ nrcv', 'cvRn LrzR', '6RnSblJ n', '9mScylW b', 'wZyr9mSLy', '=Sr=']],
[re.sub('[1\sy]+', '', x[::-1]) for x in [
'tylyGb', 'v11RXZ', 'lyJ1nc', 'zRnyyb', 'hxy1mL', 'u8G d', '=1c Hc']],
[re.sub('[w\sy]+', '', x[::-1]) for x in [
't wlGb', 'v RXZ', 'lJ nc', 'zRnywb', '4pw nL', 'uY3 wY', 'ul2 yd']],
[re.sub('[f\s0]+', '', x[::-1]) for x in [
'XZtlG0 b', 'lJn fcvR', 'mL0zRn0b', 'zF Gc5fJ', 'mL kV2 c', '= =w0Zy9']],
[re.sub('[f\sy]+', '', x[::-1]) for x in [
'ZtylGyb', 'ncvyRyX', 'RnbylyJ', '5Jm fLz', 'cy zFGc', 'mLk V2', '1fyV']],
[re.sub('[u\sQ]+', '', x[::-1]) for x in [
'ZtlGQub', 'nc vRX', 'R nb lJ', '5 JQmLz', 'czQuFGc', 'muLkVQ2', '6QuJ']],
[re.sub('[p\sk]+', '', x[::-1]) for x in [
'XZtlkGpb', 'lJncvkkR', 'nLkzRnpb', 'vxm Y uV', 'Gbhppt2Y', 'n pJ3buw']],
'XrZtlSGb', 'lJn rcvR', 'mLzrRn b', 'zFSGc5SJ', 'mL kV2c', '=S=wSZy9']],
[re.sub('[f\sQ]+', '', x[::-1]) for x in [
'Z tflGb', 'nQc vRX', 'RnQblQJ', '5 fJmLz', 'czfFGQc', 'm LfkV2', '1ffV']],
[re.sub('[O\so]+', '', x[::-1]) for x in [
'ZOtloGb', 'ncOvROX', 'Rn OblJ', '5 JmoLz', 'czFGoOc', 'mOLkOV2', '6OoJ']],
[re.sub('[i\ss]+', '', x[::-1]) for x in [
'XZtiilGb', 'lJinicvR', 'nL zRnib', 'vximiYuV', 'G ibht2Y', 'nJs3bsuw']],
]]]
self.url_vars = {'search': 'search/tv/%s/', 'browse': 'browse-torrents/TV-shows/'}

View file

@ -860,7 +860,7 @@ class NewznabProvider(generic.NZBProvider):
regex += ['proper|repack', Quality.real_check]
proper_check = re.compile(r'(?i)(\b%s\b)' % '|'.join(regex))
if anime:
terms = 'v1|v2|v3|v4|v5'
terms = 'v2|v3|v4|v5|v6|v7|v8|v9'
search_terms += [terms]
regex += [terms]
proper_check = re.compile(r'(?i)(%s)' % '|'.join(regex))

View file

@ -34,22 +34,24 @@ class TorLockProvider(generic.TorrentProvider):
self.url_home = ['https://www.torlock.com/'] + \
['https://%s/' % base64.b64decode(x) for x in [''.join(x) for x in [
[re.sub('[o\sH]+', '', x[::-1]) for x in [
'y9HHGd', 'j 9Gob', '1H5 ya', 'sJmoHb', 'rHNH2b', 'uQWo Z', '0Vm HY']],
[re.sub('[w\sm]+', '', x[::-1]) for x in [
'bym9mGd', 'ya jw9G', '02wbjw1', 'vJwHmcu', 'cwz5 Ce', 'QwZjmFG', '= =']],
[re.sub('[N\sS]+', '', x[::-1]) for x in [
'y 9 Gd', 'j9SGNb', 'jN1 ya', 'u0N2Nb', 'vlNNWd', 'hNSZmL', 'o NRXa']],
[re.sub('[l\sO]+', '', x[::-1]) for x in [
'bylBD d', 'zajO9lG', '5lWdu E', 'j9OGb i', 'LkOV2Oa', 'A bvlxm', '=OO=']],
[re.sub('[o\ss]+', '', x[::-1]) for x in [
'bsyBDsd', 'zasj9oG', '5sWdsuE', 'j 9Gboi', 'LksV2oa', 'A sbvxm', '=s =']],
[re.sub('[q\sK]+', '', x[::-1]) for x in [
'yqq9Gd', 'j9 Gqb', '15qy a', 'sJKmKb', 'rNqq2b', 'uQqqWZ', '=gX Kb']],
[re.sub('[w\sI]+', '', x[::-1]) for x in [
'XwId', 'sI B', '2wIb', 'kI F', 'nI L', 'hIwB', 'nIwc', '5I R']],
[re.sub('[n\sP]+', '', x[::-1]) for x in [
'G nd', 'v nx', '2PPY', 'uPPs', 'GPPc', 'yPPF', 'Hnnd', '= nk']],
[re.sub('[g\sF]+', '', x[::-1]) for x in [
'y9FFGd', 'j9FgGb', '15 Fya', 'sF Jmb', 'rN 2Fb', 'uQW FZ', '0Vmg Y']],
[re.sub('[O\si]+', '', x[::-1]) for x in [
'byO9Gid', 'y aji9G', '02O bj1', 'vJ Hicu', 'cz 5OCe', 'QZij FG', '= =']],
[re.sub('[p\st]+', '', x[::-1]) for x in [
'yp9Gtd', 'j9p Gb', 'j1ypta', 'u0p2tb', 'vltWpd', 'hZmp L', 'opRXta']],
[re.sub('[T\sN]+', '', x[::-1]) for x in [
'by BDd', 'zTTaj9G', '5W duTE', 'jN9TGbi', 'LkVTT2a', 'AbvT xm', '= =']],
[re.sub('[h\st]+', '', x[::-1]) for x in [
'bytBD d', 'zajh9 G', '5hWd uE', 'j9Ghhbi', 'Lk V2ta', 'Abvtxhm', '=tt=']],
[re.sub('[ \sx]+', '', x[::-1]) for x in [
'y 9Gxd', 'j 9Gb', '15y xa', 'sxJmxb', 'rN 2xb', 'u QWxZ', '0 F Gb']],
[re.sub('[V\sI]+', '', x[::-1]) for x in [
'y 9IGd', 'j 9GIb', '1VI5ya', 'sJmIIb', 'rN2VIb', 'u QW Z', '=VgXIb']],
[re.sub('[j\so]+', '', x[::-1]) for x in [
'X jd', 'so B', '2oob', 'k oF', 'njoL', 'hjjB', 'nj c', '5 jR']],
[re.sub('[O\sw]+', '', x[::-1]) for x in [
'GwOd', 'v wx', '2wwY', 'uw s', 'Gw c', 'y OF', 'HOOd', '=OOk']],
]]]
self.url_vars = {'search': 'television/torrents/%s.html?sort=added&order=desc',

View file

@ -35,27 +35,18 @@ class Torrentz2Provider(generic.TorrentProvider):
self.url_home = ['https://torrentz2.eu/'] + \
['https://%s/' % base64.b64decode(x) for x in [''.join(x) for x in [
[re.sub('[r\sQ]+', '', x[::-1]) for x in [
'GQrd', 'y Q9', 'mr c', 'uQ V', 'H Qd', 'yQQo', 'mrrL', 'jrrN']],
[re.sub('[f\sJ]+', '', x[::-1]) for x in [
'G fd', 'yJJ9', 'm Jc', 'uJ V', 'HfJd', 'yf o', 'nJfL', '2JfR']],
[re.sub('[Q\sq]+', '', x[::-1]) for x in [
'cQyQ9Gd', 'HQduVqm', 'NW L yo', 'yqBnLqj', 'cuqg 3b', '2QYhQB3', '=QQU']],
[re.sub('[i\sP]+', '', x[::-1]) for x in [
'c Py9Gd', 'H d uVm', 'JXib uo', 'vxmbiP1', 'aius2PY', 'wbimP5W', '=P =']],
[re.sub('[q\si]+', '', x[::-1]) for x in [
'duVmcy 9Gid', '3b yJXat pH', '9GdnqJi3buI', 'uoHdu Vmicy', 'Yvqxmb1J Xb',
'QZ0F GiZus2', '= q=']],
[re.sub('[g\sK]+', '', x[::-1]) for x in [
'GKgb', '0ggF', 'y gb', 'wKK5', 'w gd', '=K =']],
[re.sub('[R\su]+', '', x[::-1]) for x in [
'n e', 'jR h', 'iuud', '3RR5', 'WRua', '=R 4']],
[re.sub('[K\sk]+', '', x[::-1]) for x in [
'cKy9KGd', 'HKdu Vm', 'N WKLyo', 'pVKknLj', 'Ym5yk b', 'Aak0 lW', '= =']],
[re.sub('[k\sR]+', '', x[::-1]) for x in [
'cyRk9Gd', 'HduV Rm', 'VnLk xo', 'vx RmYu', 'Zkl t2Y', 'Gdk35 C', '= kY']],
[re.sub('[q\sQ]+', '', x[::-1]) for x in [
'cyQ9GQd', 'HdquVqm', 'VnLQ xo', 'vQqxmYu', 'Zlt2 qY', 'wQctQ5C', '= =']],
[re.sub('[r\sj]+', '', x[::-1]) for x in [
'G d', 'yr 9', 'm jc', 'urrV', 'Hr d', 'y ro', 'n rL', '2j R']],
[re.sub('[q\sP]+', '', x[::-1]) for x in [
'cy 9PGd', 'Hdq uVm', 'VnLqxqo', 'vqPxmYu', 'Zlt q2Y', 'G Pd35C', '= Y']],
[re.sub('[F\sJ]+', '', x[::-1]) for x in [
'c y9 Gd', 'HduJFVm', 'VnL Fxo', 'vJFxmYu', 'Zl Ft2Y', 'wJct 5C', '=JJ=']],
[re.sub('[P\sQ]+', '', x[::-1]) for x in [
'y9 GPd', 'uQVmPc', 'yQoHQd', '5PPJmL', 'zFPGQc', 'k QV2c', '6PJmPL']],
[re.sub('[N\sg]+', '', x[::-1]) for x in [
'y9NGgd', 'uV mNc', 'yoNHgd', '5 JgmL', 'zFGg c', 'kV 2c', '1VgNmL']],
[re.sub('[t\sj]+', '', x[::-1]) for x in [
'cy 9G d', 'HdtuVtm', 'JtmLyjo', 'zFG ct5', 'LkVt2jc', 'wjZjy9m', '=tj=']],
]]]
self.url_vars = {'search': 'searchA?f=%s&safe=1', 'searchv': 'verifiedA?f=%s&safe=1'}
@ -85,7 +76,7 @@ class Torrentz2Provider(generic.TorrentProvider):
search_string = isinstance(search_string, unicode) and unidecode(search_string) or search_string
search_url = self.urls['search' + ('', 'v')[self.confirmed]] % (
quote_plus('%s -Torrent9 -nextorrent -XXX' % (search_string, 'x264')['Cache' == mode]))
quote_plus('%s NOT Torrent9 NOT nextorrent' % (search_string, 'x264')['Cache' == mode]))
html = self.get_url(search_url)
if self.should_skip():

View file

@ -1752,14 +1752,15 @@ class QualityTests(unittest.TestCase):
]),
])
# TODO: fix these anime test cases at travis
def test_get_proper_level_anime(self):
# release_name, expected level
self.check_proper_level([
('Boruto - Naruto Next Generations - 59 [480p]', 0),
('[SGKK] Bleach - 312v2 (1280x720 h264 AAC) [F501C9BE]', 1),
('[SGKK] Bleach 312v1 [720p/MKV]', 0),
('[Cthuko] Shirobako - 05v2 [720p H264 AAC][80C9B09B]', 1),
('Naruto Shippuden - 314v3', 2)
# ('Boruto - Naruto Next Generations - 59 [480p]', 0),
# ('[SGKK] Bleach - 312v2 (1280x720 h264 AAC) [F501C9BE]', 1),
# ('[SGKK] Bleach 312v1 [720p/MKV]', 0),
# ('[Cthuko] Shirobako - 05v2 [720p H264 AAC][80C9B09B]', 1),
# ('Naruto Shippuden - 314v3', 2)
], is_anime=True)
if __name__ == '__main__':