diff --git a/couchpotato/core/media/movie/providers/userscript/filmweb.py b/couchpotato/core/media/movie/providers/userscript/filmweb.py
index a4a51a0..1f7b371 100644
--- a/couchpotato/core/media/movie/providers/userscript/filmweb.py
+++ b/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("
(?P[^<]+)", data)
-
- if name is None:
- name = re.search("(?P[^<]+)", data)
-
- name = name.group('name').decode('string_escape')
-
- year = re.search("\((?P[^\)]+)\).*?", 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)
diff --git a/couchpotato/core/media/movie/providers/userscript/flickchart.py b/couchpotato/core/media/movie/providers/userscript/flickchart.py
index c54a8ca..8b48ad7 100644
--- a/couchpotato/core/media/movie/providers/userscript/flickchart.py
+++ b/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('')
end = data.find('', start)
- page_title = data[start + len(''):end].strip().split('-')
+ page_title = data[start + len(''):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())
diff --git a/couchpotato/core/media/movie/providers/userscript/moviemeter.py b/couchpotato/core/media/movie/providers/userscript/moviemeter.py
index 4c9bb22..ee8d931 100644
--- a/couchpotato/core/media/movie/providers/userscript/moviemeter.py
+++ b/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))
diff --git a/couchpotato/core/media/movie/providers/userscript/rottentomatoes.py b/couchpotato/core/media/movie/providers/userscript/rottentomatoes.py
index c1ad4e3..e6ff262 100644
--- a/couchpotato/core/media/movie/providers/userscript/rottentomatoes.py
+++ b/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("(.*)", data)
- name_year = fireEvent('scanner.name_year', title[0].split(' - Rotten')[0].decode('unicode_escape'), single = True)
+ title = title[0].split(' - Rotten')[0].replace(' ', ' ').decode('unicode_escape')
+ name_year = fireEvent('scanner.name_year', title, single = True)
+
name = name_year.get('name')
year = name_year.get('year')
diff --git a/couchpotato/core/media/movie/providers/userscript/sharethe.py b/couchpotato/core/media/movie/providers/userscript/sharethe.py
deleted file mode 100644
index ef2f537..0000000
--- a/couchpotato/core/media/movie/providers/userscript/sharethe.py
+++ /dev/null
@@ -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/*']
diff --git a/couchpotato/core/media/movie/providers/userscript/tmdb.py b/couchpotato/core/media/movie/providers/userscript/tmdb.py
index f11dba2..fe7b139 100644
--- a/couchpotato/core/media/movie/providers/userscript/tmdb.py
+++ b/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\d+)', url)
diff --git a/couchpotato/core/media/movie/providers/userscript/whiwa.py b/couchpotato/core/media/movie/providers/userscript/whiwa.py
deleted file mode 100644
index bd602d2..0000000
--- a/couchpotato/core/media/movie/providers/userscript/whiwa.py
+++ /dev/null
@@ -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/*']
diff --git a/couchpotato/core/plugins/userscript/main.py b/couchpotato/core/plugins/userscript/main.py
index 4ca8ed3..0499526 100644
--- a/couchpotato/core/plugins/userscript/main.py
+++ b/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)))