Add caching to new providers

This commit is contained in:
Ruud
2011-10-13 21:19:43 +02:00
parent debcadcd40
commit 00f819b4f1
2 changed files with 40 additions and 18 deletions
+15 -6
View File
@@ -1,5 +1,4 @@
from couchpotato.core.event import fireEvent from couchpotato.core.event import fireEvent
from couchpotato.core.helpers.rss import RSS
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 dateutil.parser import parse from dateutil.parser import parse
@@ -10,24 +9,34 @@ import time
log = CPLog(__name__) log = CPLog(__name__)
class Moovee(NZBProvider, RSS): class Moovee(NZBProvider):
urls = { urls = {
'download': 'http://85.214.105.230/get_nzb.php?id=%s&section=moovee', 'download': 'http://85.214.105.230/get_nzb.php?id=%s&section=moovee',
'search': 'http://abmoovee.allfilled.com/search.php?q=%s&Search=Search', 'search': 'http://abmoovee.allfilled.com/search.php?q=%s&Search=Search',
'regex': '<td class="cell_reqid">(?P<reqid>.*?)</td>.+?<td class="cell_request">(?P<title>.*?)</td>.+?<td class="cell_statuschange">(?P<age>.*?)</td>',
} }
regex = '<td class="cell_reqid">(?P<reqid>.*?)</td>.+?<td class="cell_request">(?P<title>.*?)</td>.+?<td class="cell_statuschange">(?P<age>.*?)</td>'
def search(self, movie, quality): def search(self, movie, quality):
results = [] results = []
if self.isDisabled() or not self.isAvailable(self.urls['search']): if self.isDisabled() or not self.isAvailable(self.urls['search']):
return results return results
url = self.urls['search'] % quote_plus(movie['library']['titles'][0]['title'] + ' ' + quality.get('identifier')) q = '%s %s' % (movie['library']['titles'][0]['title'], quality.get('identifier'))
log.info('Searching: %s' % url) url = self.urls['search'] % quote_plus(q)
cache_key = 'moovee.%s' % q
data = self.getCache(cache_key)
if not data:
data = self.urlopen(url)
self.setCache(cache_key, data)
if not data:
log.error('Failed to get data from %s.' % url)
return results
data = self.urlopen(url)
match = re.compile(self.urls['regex'], re.DOTALL).finditer(data) match = re.compile(self.urls['regex'], re.DOTALL).finditer(data)
for nzb in match: for nzb in match:
+24 -11
View File
@@ -1,40 +1,51 @@
from couchpotato.core.event import fireEvent from couchpotato.core.event import fireEvent
from couchpotato.core.helpers.rss import RSS
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 urllib import quote_plus from urllib import quote_plus
from dateutil.parser import parse import math
import re import re
import time
log = CPLog(__name__) log = CPLog(__name__)
class X264(NZBProvider, RSS): class X264(NZBProvider):
urls = { urls = {
'download': 'http://85.214.105.230/get_nzb.php?id=%s&section=hd', 'download': 'http://85.214.105.230/get_nzb.php?id=%s&section=hd',
'search': 'http://85.214.105.230/x264/requests.php?release=%s&status=FILLED&age=700&sort=ID', 'search': 'http://85.214.105.230/x264/requests.php?release=%s&status=FILLED&age=700&sort=ID',
'regex': '<tr class="req_filled"><td class="reqid">(?P<id>.*?)</td><td class="release">(?P<title>.*?)</td>.+?<td class="age">(?P<age>\d+)d.+?</td>',
} }
regex = '<tr class="req_filled"><td class="reqid">(?P<id>.*?)</td><td class="release">(?P<title>.*?)</td>.+?<td class="age">(?P<age>.*?)</td>'
def search(self, movie, quality): def search(self, movie, quality):
results = [] results = []
if self.isDisabled() or not self.isAvailable(self.urls['search']): if self.isDisabled() or not self.isAvailable(self.urls['search']):
return results return results
url = self.urls['search'] % quote_plus(movie['library']['titles'][0]['title'] + ' ' + quality.get('identifier')) q = '%s %s' % (movie['library']['titles'][0]['title'], quality.get('identifier'))
log.info('Searching: %s' % url) url = self.urls['search'] % quote_plus(q)
data = self.urlopen(url) cache_key = 'x264.%s' % q
match = re.compile(self.urls['regex'], re.DOTALL).finditer(data) data = self.getCache(cache_key)
if not data:
data = self.urlopen(url)
self.setCache(cache_key, data)
if not data:
log.error('Failed to get data from %s.' % url)
return results
match = re.compile(self.regex, re.DOTALL).finditer(data)
for nzb in match: for nzb in match:
age = nzb.group('age') try:
if not age: age_match = re.match('((?P<day>\d+)d)', nzb.group('age'))
age = age_match.group('day')
except:
age = 1 age = 1
new = { new = {
'id': nzb.group('id'), 'id': nzb.group('id'),
'name': nzb.group('title'), 'name': nzb.group('title'),
@@ -49,6 +60,8 @@ class X264(NZBProvider, RSS):
'check_nzb': False, 'check_nzb': False,
} }
print new['name']
new['score'] = fireEvent('score.calculate', new, movie, single = True) new['score'] = fireEvent('score.calculate', new, movie, single = True)
is_correct_movie = fireEvent('searcher.correct_movie', is_correct_movie = fireEvent('searcher.correct_movie',
nzb = new, movie = movie, quality = quality, nzb = new, movie = movie, quality = quality,