Browse Source

Add caching to new providers

pull/62/head
Ruud 14 years ago
parent
commit
00f819b4f1
  1. 21
      couchpotato/core/providers/nzb/moovee/main.py
  2. 37
      couchpotato/core/providers/nzb/x264/main.py

21
couchpotato/core/providers/nzb/moovee/main.py

@ -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:

37
couchpotato/core/providers/nzb/x264/main.py

@ -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)
cache_key = 'x264.%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.regex, re.DOTALL).finditer(data)
match = re.compile(self.urls['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,
@ -72,4 +85,4 @@ class X264(NZBProvider, RSS):
match = re.match('http://85\.214\.105\.230/get_nzb\.php\?id=[0-9]*&section=hd', url) match = re.match('http://85\.214\.105\.230/get_nzb\.php\?id=[0-9]*&section=hd', url)
if match: if match:
return self return self
return return

Loading…
Cancel
Save