Made nzbindex.nl more accurate

This commit is contained in:
Ruud
2012-02-03 21:16:37 +01:00
parent 177eae4f73
commit e6c5ca860d
2 changed files with 27 additions and 12 deletions
@@ -10,7 +10,6 @@ config = [{
'tab': 'providers', 'tab': 'providers',
'name': 'nzbindex', 'name': 'nzbindex',
'description': 'Free provider, but less accurate.', 'description': 'Free provider, but less accurate.',
'advanced': True,
'options': [ 'options': [
{ {
'name': 'enabled', 'name': 'enabled',
+27 -11
View File
@@ -1,10 +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 toUnicode
from couchpotato.core.helpers.rss import RSS from couchpotato.core.helpers.rss import RSS
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 dateutil.parser import parse from dateutil.parser import parse
from urllib import urlencode from urllib import urlencode
import re
import time import time
import xml.etree.ElementTree as XMLTree import xml.etree.ElementTree as XMLTree
@@ -15,7 +18,7 @@ class NzbIndex(NZBProvider, RSS):
urls = { urls = {
'download': 'http://www.nzbindex.nl/download/', 'download': 'http://www.nzbindex.nl/download/',
'api': 'http://www.nzbindex.nl/rss/', #http://www.nzbindex.nl/rss/?q=due+date+720p&age=1000&sort=agedesc&minsize=3500&maxsize=10000 'api': 'http://www.nzbindex.nl/rss/',
} }
http_time_between_calls = 1 # Seconds http_time_between_calls = 1 # Seconds
@@ -26,16 +29,21 @@ class NzbIndex(NZBProvider, RSS):
if self.isDisabled() or not self.isAvailable(self.urls['api']): if self.isDisabled() or not self.isAvailable(self.urls['api']):
return results return results
q = '%s %s %s' % (movie['library']['titles'][0]['title'], movie['library']['year'], quality.get('identifier'))
arguments = urlencode({ arguments = urlencode({
'q': '%s %s' % (simplifyString(movie['library']['titles'][0]['title']), quality.get('identifier')), 'q': q,
'age': Env.setting('retention', 'nzb'),
'sort': 'agedesc', 'sort': 'agedesc',
'minsize': quality.get('size_min'), 'minsize': quality.get('size_min'),
'maxsize': quality.get('size_max'), 'maxsize': quality.get('size_max'),
'rating': '1', 'rating': 1,
'max': 250,
'more': 1,
'complete': 1,
}) })
url = "%s?%s" % (self.urls['api'], arguments) url = "%s?%s" % (self.urls['api'], arguments)
cache_key = 'nzbindex.%s.%s' % (movie['library'].get('identifier'), quality.get('identifier')) cache_key = 'nzbindex.%s' % q
data = self.getCache(cache_key, url) data = self.getCache(cache_key, url)
if data: if data:
@@ -49,20 +57,28 @@ class NzbIndex(NZBProvider, RSS):
for nzb in nzbs: for nzb in nzbs:
enclosure = self.getElements(nzb, 'enclosure')[0].attrib enclosure = self.getElement(nzb, 'enclosure').attrib
nzbindex_id = int(self.getTextElement(nzb, "link").split('/')[4])
try:
description = self.getTextElement(nzb, "description")
if ' nfo' in description.lower():
nfo_url = re.search('href="(?P<nfo>.+)"', description).group('nfo')
description = toUnicode(self.getCache('nzbindex.%s' % nzbindex_id, nfo_url, timeout = 25920000))
except:
pass
id = int(self.getTextElement(nzb, "link").split('/')[4])
new = { new = {
'id': id, 'id': nzbindex_id,
'type': 'nzb', 'type': 'nzb',
'provider': self.getName(), 'provider': self.getName(),
'name': self.getTextElement(nzb, "title"), 'name': self.getTextElement(nzb, "title"),
'age': self.calculateAge(int(time.mktime(parse(self.getTextElement(nzb, "pubDate")).timetuple()))), 'age': self.calculateAge(int(time.mktime(parse(self.getTextElement(nzb, "pubDate")).timetuple()))),
'size': enclosure['length'], 'size': tryInt(enclosure['length']) / 1024 / 1024,
'url': enclosure['url'], 'url': enclosure['url'],
'download': self.download,
'detail_url': enclosure['url'].replace('/download/', '/release/'), 'detail_url': enclosure['url'].replace('/download/', '/release/'),
'description': self.getTextElement(nzb, "description"), 'description': description,
'check_nzb': True, 'check_nzb': True,
} }
new['score'] = fireEvent('score.calculate', new, movie, single = True) new['score'] = fireEvent('score.calculate', new, movie, single = True)