Browse Source

Userscript fixes and tests

pull/5287/head
Ruud 10 years ago
parent
commit
fbceb38d7d
  1. 20
      couchpotato/core/media/movie/providers/userscript/filmweb.py
  2. 6
      couchpotato/core/media/movie/providers/userscript/flickchart.py
  3. 14
      couchpotato/core/media/movie/providers/userscript/moviemeter.py
  4. 6
      couchpotato/core/media/movie/providers/userscript/rottentomatoes.py
  5. 8
      couchpotato/core/media/movie/providers/userscript/sharethe.py
  6. 4
      couchpotato/core/media/movie/providers/userscript/tmdb.py
  7. 8
      couchpotato/core/media/movie/providers/userscript/whiwa.py
  8. 49
      couchpotato/core/plugins/userscript/main.py

20
couchpotato/core/media/movie/providers/userscript/filmweb.py

@ -1,14 +1,14 @@
import re
from bs4 import BeautifulSoup
from couchpotato import fireEvent
from couchpotato.core.media._base.providers.userscript.base import UserscriptBase
autoload = 'Filmweb'
class Filmweb(UserscriptBase):
version = 2
version = 3
includes = ['http://www.filmweb.pl/film/*']
@ -21,14 +21,10 @@ class Filmweb(UserscriptBase):
except:
return
name = re.search("<h2.*?class=\"text-large caption\">(?P<name>[^<]+)</h2>", data)
if name is None:
name = re.search("<a.*?property=\"v:name\".*?>(?P<name>[^<]+)</a>", data)
name = name.group('name').decode('string_escape')
year = re.search("<span.*?id=filmYear.*?>\((?P<year>[^\)]+)\).*?</span>", data)
year = year.group('year')
html = BeautifulSoup(data)
name = html.find('meta', {'name': 'title'})['content'][:-9].strip()
name_year = fireEvent('scanner.name_year', name, single = True)
name = name_year.get('name')
year = name_year.get('year')
return self.search(name, year)

6
couchpotato/core/media/movie/providers/userscript/flickchart.py

@ -12,6 +12,8 @@ autoload = 'Flickchart'
class Flickchart(UserscriptBase):
version = 2
includes = ['http://www.flickchart.com/movie/*']
def getMovie(self, url):
@ -24,11 +26,11 @@ class Flickchart(UserscriptBase):
try:
start = data.find('<title>')
end = data.find('</title>', start)
page_title = data[start + len('<title>'):end].strip().split('-')
page_title = data[start + len('<title>'):end].strip().split('- Flick')
year_name = fireEvent('scanner.name_year', page_title[0], single = True)
return self.search(**year_name)
return self.search(year_name.get('name'), year_name.get('year'))
except:
log.error('Failed parsing page for title and year: %s', traceback.format_exc())

14
couchpotato/core/media/movie/providers/userscript/moviemeter.py

@ -1,3 +1,4 @@
from couchpotato.core.helpers.variable import getImdb
from couchpotato.core.media._base.providers.userscript.base import UserscriptBase
autoload = 'MovieMeter'
@ -6,3 +7,16 @@ autoload = 'MovieMeter'
class MovieMeter(UserscriptBase):
includes = ['http://*.moviemeter.nl/film/*', 'http://moviemeter.nl/film/*']
version = 2
def getMovie(self, url):
cookie = {'Cookie': 'cok=1'}
try:
data = self.urlopen(url, headers = cookie)
except:
return
return self.getInfo(getImdb(data))

6
couchpotato/core/media/movie/providers/userscript/rottentomatoes.py

@ -16,7 +16,7 @@ class RottenTomatoes(UserscriptBase):
includes = ['*://www.rottentomatoes.com/m/*']
excludes = ['*://www.rottentomatoes.com/m/*/*/']
version = 3
version = 4
def getMovie(self, url):
@ -27,7 +27,9 @@ class RottenTomatoes(UserscriptBase):
try:
title = re.findall("<title>(.*)</title>", data)
name_year = fireEvent('scanner.name_year', title[0].split(' - Rotten')[0].decode('unicode_escape'), single = True)
title = title[0].split(' - Rotten')[0].replace('&nbsp;', ' ').decode('unicode_escape')
name_year = fireEvent('scanner.name_year', title, single = True)
name = name_year.get('name')
year = name_year.get('year')

8
couchpotato/core/media/movie/providers/userscript/sharethe.py

@ -1,8 +0,0 @@
from couchpotato.core.media._base.providers.userscript.base import UserscriptBase
autoload = 'ShareThe'
class ShareThe(UserscriptBase):
includes = ['http://*.sharethe.tv/movies/*', 'http://sharethe.tv/movies/*']

4
couchpotato/core/media/movie/providers/userscript/tmdb.py

@ -9,7 +9,9 @@ autoload = 'TMDB'
class TMDB(UserscriptBase):
includes = ['http://www.themoviedb.org/movie/*']
version = 2
includes = ['*://www.themoviedb.org/movie/*']
def getMovie(self, url):
match = re.search('(?P<id>\d+)', url)

8
couchpotato/core/media/movie/providers/userscript/whiwa.py

@ -1,8 +0,0 @@
from couchpotato.core.media._base.providers.userscript.base import UserscriptBase
autoload = 'WHiWA'
class WHiWA(UserscriptBase):
includes = ['http://whiwa.net/stats/movie/*']

49
couchpotato/core/plugins/userscript/main.py

@ -1,4 +1,7 @@
import os
import traceback
import time
from base64 import b64encode, b64decode
from couchpotato import index
from couchpotato.api import addApiView
@ -15,7 +18,7 @@ log = CPLog(__name__)
class Userscript(Plugin):
version = 5
version = 8
def __init__(self):
addApiView('userscript.get/(.*)/(.*)', self.getUserScript, static = True)
@ -26,6 +29,7 @@ class Userscript(Plugin):
addApiView('userscript.bookmark', self.bookmark)
addEvent('userscript.get_version', self.getVersion)
addEvent('app.test', self.doTest)
def bookmark(self, host = None, **kwargs):
@ -91,3 +95,46 @@ class Userscript(Plugin):
params['error'] = params['movie'] if params['movie'] else 'Failed getting movie info'
return params
def doTest(self):
time.sleep(1)
tests = [
'aHR0cDovL3d3dy5hbGxvY2luZS5mci9maWxtL2ZpY2hlZmlsbV9nZW5fY2ZpbG09MjAxMTA1Lmh0bWw=',
'aHR0cDovL3RyYWlsZXJzLmFwcGxlLmNvbS90cmFpbGVycy9wYXJhbW91bnQvbWlzc2lvbmltcG9zc2libGVyb2d1ZW5hdGlvbi8=',
'aHR0cDovL3d3dy55b3V0aGVhdGVyLmNvbS92aWV3LnBocD9pZD0xMTI2Mjk5',
'aHR0cDovL3RyYWt0LnR2L21vdmllcy9taXNzaW9uLWltcG9zc2libGUtcm9ndWUtbmF0aW9uLTIwMTU=',
'aHR0cHM6Ly93d3cucmVkZGl0LmNvbS9yL0lqdXN0d2F0Y2hlZC9jb21tZW50cy8zZjk3bzYvaWp3X21pc3Npb25faW1wb3NzaWJsZV9yb2d1ZV9uYXRpb25fMjAxNS8=',
'aHR0cDovL3d3dy5yb3R0ZW50b21hdG9lcy5jb20vbS9taXNzaW9uX2ltcG9zc2libGVfcm9ndWVfbmF0aW9uLw==',
'aHR0cHM6Ly93d3cudGhlbW92aWVkYi5vcmcvbW92aWUvMTc3Njc3LW1pc3Npb24taW1wb3NzaWJsZS01',
'aHR0cDovL3d3dy5jcml0aWNrZXIuY29tL2ZpbG0vTWlzc2lvbl9JbXBvc3NpYmxlX1JvZ3VlLw==',
'aHR0cDovL2ZpbG1jZW50cnVtLm5sL2ZpbG1zLzE4MzIzL21pc3Npb24taW1wb3NzaWJsZS1yb2d1ZS1uYXRpb24v',
'aHR0cDovL3d3dy5maWxtc3RhcnRzLmRlL2tyaXRpa2VuLzIwMTEwNS5odG1s',
'aHR0cDovL3d3dy5maWxtd2ViLnBsL2ZpbG0vTWlzc2lvbiUzQStJbXBvc3NpYmxlKy0rUm9ndWUrTmF0aW9uLTIwMTUtNjU1MDQ4',
'aHR0cDovL3d3dy5mbGlja2NoYXJ0LmNvbS9tb3ZpZS8zM0NFMzEyNUJB',
'aHR0cDovL3d3dy5pbWRiLmNvbS90aXRsZS90dDIzODEyNDkv',
'aHR0cDovL2xldHRlcmJveGQuY29tL2ZpbG0vbWlzc2lvbi1pbXBvc3NpYmxlLXJvZ3VlLW5hdGlvbi8=',
'aHR0cDovL3d3dy5tb3ZpZW1ldGVyLm5sL2ZpbG0vMTA0MTcw',
'aHR0cDovL21vdmllcy5pby9tLzMxL2Vu',
]
success = 0
for x in tests:
x = b64decode(x)
try:
movie = self.getViaUrl(x)
movie = movie.get('movie', {}) or {}
imdb = movie.get('imdb')
if imdb and b64encode(imdb) in ['dHQxMjI5MjM4', 'dHQyMzgxMjQ5']:
success += 1
continue
except:
log.error('Failed userscript test "%s": %s', (x, traceback.format_exc()))
log.error('Failed userscript test "%s"', x)
if success == len(tests):
log.debug('All userscript tests successful')
else:
log.error('Failed userscript tests, %s out of %s', (success, len(tests)))

Loading…
Cancel
Save