Userscript

This commit is contained in:
Ruud
2011-09-28 09:17:34 +02:00
parent c6f322a2c2
commit f09572b662
5 changed files with 41 additions and 67 deletions
+1 -1
View File
@@ -66,7 +66,7 @@ def fireEvent(name, *args, **kwargs):
elif r[1]:
errorHandler(r[1])
else:
log.debug('Assume disabled plugin: %s' % r[2])
log.debug('Assume disabled eventhandler for: %s' % name)
else:
results = []
+6
View File
@@ -4,6 +4,7 @@ from couchpotato.core.helpers.variable import getExt
from couchpotato.core.logger import CPLog
from couchpotato.environment import Env
from flask.helpers import send_from_directory
from flask.templating import render_template_string
from libs.multipartpost import MultipartPostHandler
from urlparse import urlparse
import cookielib
@@ -40,6 +41,11 @@ class Plugin(object):
def getName(self):
return self.__class__.__name__
def renderTemplate(self, parent_file, template, **params):
template = open(os.path.join(os.path.dirname(parent_file), template), 'r').read()
return render_template_string(template, **params)
def registerStatic(self, plugin_file, add_to_head = True):
# Register plugin path
+23 -5
View File
@@ -1,10 +1,13 @@
from couchpotato.api import addApiView
from couchpotato.core.event import fireEvent
from couchpotato.core.helpers.request import getParam, jsonified
from couchpotato.core.helpers.variable import isDict
from couchpotato.core.logger import CPLog
from couchpotato.core.plugins.base import Plugin
from flask.globals import request
from flask.helpers import url_for
from flask.templating import render_template_string
import os
log = CPLog(__name__)
class Extension(Plugin):
@@ -12,17 +15,18 @@ class Extension(Plugin):
def __init__(self):
addApiView('userscript', self.getExtension)
addApiView('userscript.add_via_url', self.addViaUrl)
def getExtension(self):
params = {
'includes': fireEvent('userscript.get_includes', merge = True),
'excludes': fireEvent('userscript.get_excludes', merge = True),
'version': self.getVersion(),
'host': '%s%userscript.add_via_url/' % (request.host_url.rstrip('/'), url_for('api.index')),
'host': '%s%suserscript.add_via_url/' % (request.host_url.rstrip('/'), url_for('api.index')),
}
template = open(os.path.join(os.path.dirname(__file__), 'template.js'), 'r').read()
return render_template_string(template, **params)
return self.renderTemplate(__file__, 'template.js', **params)
def getVersion(self):
@@ -33,3 +37,17 @@ class Extension(Plugin):
version += v
return version
def addViaUrl(self):
url = getParam('url')
params = {
'url': url,
'movie': fireEvent('userscript.get_movie_via_url', url = url, single = True)
}
if not isDict(params['movie']):
log.error('Failed adding movie via url: %s' % url)
params['error'] = params['movie'] if params['movie'] else 'Failed getting movie info'
return self.renderTemplate(__file__, 'template.js', **params)
+8 -14
View File
@@ -1,6 +1,4 @@
from couchpotato.api import addApiView
from couchpotato.core.event import addEvent, fireEvent
from couchpotato.core.helpers.request import getParam
from couchpotato.core.logger import CPLog
from couchpotato.core.plugins.base import Plugin
from urlparse import urlparse
@@ -20,30 +18,26 @@ class UserscriptBase(Plugin):
addEvent('userscript.get_excludes', self.getExclude)
addEvent('userscript.get_version', self.getVersion)
addApiView('userscript.add_via_url', self.addViaUrl)
addEvent('userscript.get_movie_via_url', self.belongsTo)
def search(self, name, year = None):
movie = fireEvent('movie.search', q = '%s %s' % (name, year), limit = 1)
return movie
def addViaUrl(self):
def belongsTo(self, url):
url = getParam('url')
host = urlparse(url).hostname
if host.startswith('www.'):
host = host[4:]
# Check if the url matches the provider
is_provider = False
for include in self.includes:
if host in include:
is_provider = True
break
if not is_provider:
return False
return self.getMovie(url)
return
fireEvent()
def getMovie(self, url):
return None
def getInclude(self):
return self.includes
@@ -18,53 +18,9 @@ class IMDB(UserscriptBase):
# Don't add TV show
for head in headers:
if 'seasons' in head.lower():
return False
return 'IMDB url is a TV Show'
identifier = re.search('(?P<id>tt[0-9{7}]+)', url).group('id')
movie = fireEvent('movie.info', identifier = identifier)
movie = fireEvent('movie.info', identifier = identifier, merge = True)
return {
'id': re.search('(?P<id>tt[0-9{7}]+)', url).group('id'),
'year': self.getYear(html)
}
#CouchPotato['imdb.com'] = (function(){
#
# function isMovie(){
# var series = document.getElementsByTagName('h5')
# for (var i = 0; i < series.length; i++) {
# if (series[i].innerHTML == 'Seasons:') {
# return false;
# }
# }
# return true;
# }
#
# function getId(){
# return 'tt' + location.href.replace(/[^\d+]+/g, '');
# }
#
# function getYear(){
# try {
# return document.getElementsByTagName('h1')[0].getElementsByTagName('a')[0].text;
# } catch (e) {
# var spans = document.getElementsByTagName('h1')[0].getElementsByTagName('span');
# var pattern = /^\((TV|Video) ([0-9]+)\)$/;
# for (var i = 0; i < spans.length; i++) {
# if (spans[i].innerHTML.search(pattern)) {
# return spans[i].innerHTML.match(pattern)[1];
# }
# }
# }
# }
#
# var constructor = function(){
# if(isMovie()){
# lib.osd(getId(), getYear());
# }
# }
#
# return constructor;
#
#})();
return movie