Use FTDWorld temp api. closes #1243
This commit is contained in:
@@ -1,12 +1,10 @@
|
|||||||
from bs4 import BeautifulSoup
|
|
||||||
from couchpotato.core.helpers.encoding import toUnicode, tryUrlencode
|
from couchpotato.core.helpers.encoding import toUnicode, tryUrlencode
|
||||||
from couchpotato.core.helpers.variable import tryInt
|
from couchpotato.core.helpers.variable import tryInt
|
||||||
from couchpotato.core.logger import CPLog
|
from couchpotato.core.logger import CPLog
|
||||||
from couchpotato.core.providers.nzb.base import NZBProvider
|
from couchpotato.core.providers.nzb.base import NZBProvider
|
||||||
from couchpotato.environment import Env
|
from couchpotato.environment import Env
|
||||||
from dateutil.parser import parse
|
from dateutil.parser import parse
|
||||||
import re
|
import traceback
|
||||||
import time
|
|
||||||
|
|
||||||
log = CPLog(__name__)
|
log = CPLog(__name__)
|
||||||
|
|
||||||
@@ -14,7 +12,7 @@ log = CPLog(__name__)
|
|||||||
class FTDWorld(NZBProvider):
|
class FTDWorld(NZBProvider):
|
||||||
|
|
||||||
urls = {
|
urls = {
|
||||||
'search': 'http://ftdworld.net/category.php?%s',
|
'search': 'http://ftdworld.net/api/index.php?%s',
|
||||||
'detail': 'http://ftdworld.net/spotinfo.php?id=%s',
|
'detail': 'http://ftdworld.net/spotinfo.php?id=%s',
|
||||||
'download': 'http://ftdworld.net/cgi-bin/nzbdown.pl?fileID=%s',
|
'download': 'http://ftdworld.net/cgi-bin/nzbdown.pl?fileID=%s',
|
||||||
'login': 'http://ftdworld.net/index.php',
|
'login': 'http://ftdworld.net/index.php',
|
||||||
@@ -25,7 +23,7 @@ class FTDWorld(NZBProvider):
|
|||||||
cat_ids = [
|
cat_ids = [
|
||||||
([4, 11], ['dvdr']),
|
([4, 11], ['dvdr']),
|
||||||
([1], ['cam', 'ts', 'dvdrip', 'tc', 'r5', 'scr', 'brrip']),
|
([1], ['cam', 'ts', 'dvdrip', 'tc', 'r5', 'scr', 'brrip']),
|
||||||
([10, 13, 14], ['bd50', '720p', '1080p']),
|
([7, 10, 13, 14], ['bd50', '720p', '1080p']),
|
||||||
]
|
]
|
||||||
cat_backup_id = 1
|
cat_backup_id = 1
|
||||||
|
|
||||||
@@ -43,38 +41,29 @@ class FTDWorld(NZBProvider):
|
|||||||
'ctype': ','.join([str(x) for x in self.getCatId(quality['identifier'])]),
|
'ctype': ','.join([str(x) for x in self.getCatId(quality['identifier'])]),
|
||||||
})
|
})
|
||||||
|
|
||||||
data = self.getHTMLData(self.urls['search'] % params, opener = self.login_opener)
|
data = self.getJsonData(self.urls['search'] % params, opener = self.login_opener)
|
||||||
|
|
||||||
if data:
|
if data:
|
||||||
try:
|
try:
|
||||||
|
|
||||||
html = BeautifulSoup(data)
|
if data.get('numRes') == 0:
|
||||||
main_table = html.find('table', attrs = {'id':'ftdresult'})
|
|
||||||
|
|
||||||
if not main_table:
|
|
||||||
return
|
return
|
||||||
|
|
||||||
items = main_table.find_all('tr', attrs = {'class': re.compile('tcontent')})
|
for item in data.get('data'):
|
||||||
|
|
||||||
for item in items:
|
|
||||||
tds = item.find_all('td')
|
|
||||||
nzb_id = tryInt(item.attrs['data-spot'])
|
|
||||||
|
|
||||||
up = item.find('img', attrs = {'src': re.compile('up.png')})
|
|
||||||
down = item.find('img', attrs = {'src': re.compile('down.png')})
|
|
||||||
|
|
||||||
|
nzb_id = tryInt(item.get('id'))
|
||||||
results.append({
|
results.append({
|
||||||
'id': nzb_id,
|
'id': nzb_id,
|
||||||
'name': toUnicode(item.find('a', attrs = {'href': re.compile('./spotinfo')}).text.strip()),
|
'name': toUnicode(item.get('Title')),
|
||||||
'age': self.calculateAge(int(time.mktime(parse(tds[2].text).timetuple()))),
|
'age': self.calculateAge(tryInt(item.get('Created'))),
|
||||||
'url': self.urls['download'] % nzb_id,
|
'url': self.urls['download'] % nzb_id,
|
||||||
'download': self.loginDownload,
|
'download': self.loginDownload,
|
||||||
'detail_url': self.urls['detail'] % nzb_id,
|
'detail_url': self.urls['detail'] % nzb_id,
|
||||||
'score': (tryInt(up.attrs['title'].split(' ')[0]) * 3) - (tryInt(down.attrs['title'].split(' ')[0]) * 3) if up else 0,
|
'score': (tryInt(item.get('webPlus', 0)) - tryInt(item.get('webMin', 0))) * 3,
|
||||||
})
|
})
|
||||||
|
|
||||||
except:
|
except:
|
||||||
log.error('Failed to parse HTML response from FTDWorld')
|
log.error('Failed to parse HTML response from FTDWorld: %s', traceback.format_exc())
|
||||||
|
|
||||||
def getLoginParams(self):
|
def getLoginParams(self):
|
||||||
return tryUrlencode({
|
return tryUrlencode({
|
||||||
|
|||||||
Reference in New Issue
Block a user