Browse Source

Userscript installation and updater

pull/62/head
Ruud 14 years ago
parent
commit
e8ae2dced0
  1. 10
      couchpotato/core/helpers/request.py
  2. 1
      couchpotato/core/notifications/core/static/notification.js
  3. 4
      couchpotato/core/plugins/updater/static/updater.js
  4. 16
      couchpotato/core/plugins/userscript/main.py
  5. 69
      couchpotato/core/plugins/userscript/static/userscript.js
  6. 57
      couchpotato/core/plugins/userscript/template.js
  7. 2
      couchpotato/core/providers/nzb/x264/main.py
  8. 3
      couchpotato/core/providers/userscript/base.py
  9. 17
      couchpotato/core/providers/userscript/imdb/main.py
  10. 9
      couchpotato/static/scripts/couchpotato.js
  11. 3
      couchpotato/templates/_desktop.html

10
couchpotato/core/helpers/request.py

@ -2,6 +2,7 @@ from couchpotato.core.helpers.variable import natcmp
from flask.globals import current_app from flask.globals import current_app
from flask.helpers import json from flask.helpers import json
from libs.werkzeug.urls import url_decode from libs.werkzeug.urls import url_decode
from urllib import unquote_plus
import flask import flask
import re import re
@ -24,7 +25,7 @@ def getParams():
for item in nested: for item in nested:
if item is nested[-1]: if item is nested[-1]:
current[item] = value current[item] = unquote_plus(value)
else: else:
try: try:
current[item] current[item]
@ -33,7 +34,7 @@ def getParams():
current = current[item] current = current[item]
else: else:
temp[param] = value temp[param] = unquote_plus(value)
return dictToList(temp) return dictToList(temp)
@ -54,7 +55,10 @@ def dictToList(params):
return new return new
def getParam(attr, default = None): def getParam(attr, default = None):
return getattr(flask.request, 'args').get(attr, default) try:
return unquote_plus(getattr(flask.request, 'args').get(attr, default))
except:
return None
def padded_jsonify(callback, *args, **kwargs): def padded_jsonify(callback, *args, **kwargs):
content = str(callback) + '(' + json.dumps(dict(*args, **kwargs)) + ')' content = str(callback) + '(' + json.dumps(dict(*args, **kwargs)) + ')'

1
couchpotato/core/notifications/core/static/notification.js

@ -9,6 +9,7 @@ var NotificationBase = new Class({
// Listener // Listener
App.addEvent('load', self.startInterval.bind(self)); App.addEvent('load', self.startInterval.bind(self));
App.addEvent('unload', self.stopTimer.bind(self));
self.addEvent('notification', self.notify.bind(self)) self.addEvent('notification', self.notify.bind(self))
// Add test buttons to settings page // Add test buttons to settings page

4
couchpotato/core/plugins/updater/static/updater.js

@ -4,6 +4,10 @@ var UpdaterBase = new Class({
var self = this; var self = this;
App.addEvent('load', self.info.bind(self, 1000)) App.addEvent('load', self.info.bind(self, 1000))
App.addEvent('unload', function(){
if(self.timer)
clearTimeout(self.timer);
});
}, },
info: function(timeout){ info: function(timeout){

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

@ -1,12 +1,12 @@
from couchpotato import index from couchpotato import index
from couchpotato.api import addApiView from couchpotato.api import addApiView
from couchpotato.core.event import fireEvent from couchpotato.core.event import fireEvent, addEvent
from couchpotato.core.helpers.request import getParam, jsonified from couchpotato.core.helpers.request import getParam, jsonified
from couchpotato.core.helpers.variable import isDict from couchpotato.core.helpers.variable import isDict
from couchpotato.core.logger import CPLog from couchpotato.core.logger import CPLog
from couchpotato.core.plugins.base import Plugin from couchpotato.core.plugins.base import Plugin
from flask.globals import request from flask.globals import request
from flask.helpers import url_for from flask.helpers import url_for, make_response
log = CPLog(__name__) log = CPLog(__name__)
@ -18,20 +18,26 @@ class Userscript(Plugin):
addApiView('userscript', self.iFrame) addApiView('userscript', self.iFrame)
addApiView('userscript.add_via_url', self.getViaUrl) addApiView('userscript.add_via_url', self.getViaUrl)
addEvent('userscript.get_version', self.getVersion)
def getExtension(self): def getExtension(self):
params = { params = {
'includes': fireEvent('userscript.get_includes', merge = True), 'includes': fireEvent('userscript.get_includes', merge = True),
'excludes': fireEvent('userscript.get_excludes', merge = True), 'excludes': fireEvent('userscript.get_excludes', merge = True),
'version': self.getVersion(), 'version': self.getVersion(),
'host': '%s%suserscript/' % (request.host_url.rstrip('/'), url_for('api.index')), 'api': '%suserscript/' % url_for('api.index').lstrip('/'),
'host': request.host_url,
} }
return self.renderTemplate(__file__, 'template.js', **params) response = make_response(self.renderTemplate(__file__, 'template.js', **params))
response.headers['Content-Type'] = 'text/javascript'
return response
return
def getVersion(self): def getVersion(self):
versions = fireEvent('userscript.get_version') versions = fireEvent('userscript.get_provider_version')
version = 0 version = 0
for v in versions: for v in versions:

69
couchpotato/core/plugins/userscript/static/userscript.js

@ -7,7 +7,7 @@ Page.Userscript = new Class({
options: { options: {
'onOpened': function(){ 'onOpened': function(){
App.stopLoadTimer(); App.fireEvent('unload');
App.getBlock('header').hide(); App.getBlock('header').hide();
} }
}, },
@ -44,3 +44,70 @@ Page.Userscript = new Class({
} }
}); });
var UserscriptSettingTab = new Class({
tab: '',
content: '',
initialize: function(){
var self = this;
App.addEvent('load', self.addSettings.bind(self))
},
addSettings: function(){
var self = this;
self.settings = App.getPage('Settings')
self.settings.addEvent('create', function(){
var tab = self.settings.createTab('userscript', {
'label': 'Userscript',
'name': 'userscript'
});
self.tab = tab.tab;
self.content = tab.content;
self.createUserscript();
});
},
createUserscript: function(){
var self = this;
self.settings.createGroup({
'label': 'Install the Userscript'
}).inject(self.content).adopt(
new Element('a', {
'text': 'Install userscript',
'href': Api.createUrl('userscript.get')+'?couchpotato.user.js',
'normalhref': true
})
);
}
});
window.addEvent('domready', function(){
new UserscriptSettingTab();
});
window.addEvent('load', function(){
var your_version = $(document.body).get('data-userscript_version')
latest_version = App.getOption('userscript_version')
key = 'cp_version_check',
checked_already = Cookie.read(key);
if(your_version < latest_version && checked_already < latest_version){
if(confirm("Update to the latest Userscript?\nYour version: " + your_version + ', new version: ' + latest_version )){
document.location = Api.getOption('url')+'userscript.get/?couchpotato.user.js';
}
Cookie.write(key, latest_version, {duration: 100});
}
});

57
couchpotato/core/plugins/userscript/template.js

@ -1,16 +1,20 @@
// ==UserScript== // ==UserScript==
// @name CouchPotato UserScript // @name CouchPotato UserScript
// @description Add movies like a real CouchPotato // @description Add movies like a real CouchPotato
// @version {{version}}
// @include {{host}}* // @include {{host}}*
{% for include in includes %} {% for include in includes %}
// @include {{include}}{% endfor %} // @include {{include}}{% endfor %}
{% for exclude in excludes %} {% for exclude in excludes %}
// @exclude {{exclude}}{% endfor %} // @exclude {{exclude}}{% endfor %}
// @exclude {{host}}{{api.rstrip('/')}}*
// ==/UserScript== // ==/UserScript==
var version = {{version}}, var version = {{version}},
cpLocation = '{{host}}'; host = '{{host}}';
api = '{{api}}';
function create() { function create() {
switch (arguments.length) { switch (arguments.length) {
@ -53,53 +57,56 @@ if (typeof GM_addStyle == 'undefined'){
// Styles // Styles
GM_addStyle('\ GM_addStyle('\
#cpPopup { opacity: 0.5; width:200px; font-family: "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif; -moz-border-radius-topleft: 6px; -moz-border-radius-topright: 6px; -webkit-border-top-left-radius: 6px; -webkit-border-top-right-radius: 6px; -moz-box-shadow: 0 0 20px rgba(0,0,0,0.5); -webkit-box-shadow: 0 0 20px rgba(0,0,0,0.5); position:fixed; z-index:9999; bottom:0; right:0; font-size:15px; margin: 0 20px; display: block; background:#f5f5f5; } \ #cp_popup { font-family: "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif; -moz-border-radius-topleft: 6px; -moz-border-radius-bottomleft: 6px; -webkit-border-top-left-radius: 6px; -webkit-border-bottom-left-radius: 6px; -moz-box-shadow: 0 0 20px rgba(0,0,0,0.5); -webkit-box-shadow: 0 0 20px rgba(0,0,0,0.5); position:fixed; z-index:9999; bottom:0; right:0; font-size:15px; margin: 20px 0; display: block; background:#4E5969; } \
#cpPopup:hover { opacity: 1; } \ #cp_popup:hover { } \
#cpPopup a#addTo { cursor:pointer; text-align:center; text-decoration:none; color: #000; display:block; padding:15px 0 10px; } \ #cp_popup a#add_to { cursor:pointer; text-align:center; text-decoration:none; color: #000; display:block; padding:5px 0 5px 5px; } \
#cpPopup a#closeBtn { cursor:pointer; float: right; padding:10px; } \ #cp_popup a#close_button { cursor:pointer; float: right; padding:120px 10px 10px; } \
#cpPopup a img { vertical-align: middle; } \ #cp_popup a img { vertical-align: middle; } \
#cpPopup a:hover { color:#000; } \ #cp_popup a:hover { color:#000; } \
#cpPopup iframe{ background:#f5f5f5; margin:6px; height:70px; width:188px; overflow:hidden; border:none; } \ #cp_popup iframe{ background:#4E5969; margin:6px 0 2px 6px; height:140px; width:450px; overflow:hidden; border:none; } \
'); ');
var movieImg = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAZCAYAAABQDyyRAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA+9JREFUeNrMVklIXFkUPVWWY5cDccIpMQ444YCi7UJ3KrpUxAkURRAFW6GdMCI0ooKuxIWCIkrc6FYMcYogrgxoEHFeRFRE42w5D/X73dv1i4pUOiGmkly4/u9779c979x7z3sKSZLwK02JX2y/BYCXwmeESybyGV0Mo6YQNTBzf38f09/fj7GxMRwcHPyQnTk5OSEpKQm5ublQqVTvxdCfXwIg9fT0YGBgAO7u7qipqUFAQACurq7Q29uLoaEhXhgdHY3q6mqo1WocHx+jpaUF8/PzPJeamor8/HwKhKWlJbS2tmJ/f5/nsrKyUFhYSK8vhG8+BmD2j7Dm5mZotVqcnp5ibW0N4eHhcHFxQUREBM7OznhsZ2cHu7u7iI2Nhb29PQOi8b29PaysrECpVCIqKgpubm4IDAzE7OwsLi8vsbW1hYyMDIrVK/yTUQDd3d2oqKjgjygFc3NzCAsLg7OzMyIjI3F+fo7V1VVsbm5ie3sbMTExsLW15acMYmFhAbe3twza1dUVwcHB0Gg0WF9fR15eHsXqNAZA3wUJCQkoKipiGilIQ0MDf2xmZsYUJicn87rp6Wmm+OLigpmglIWEhPDc4OAg+vr6cH19zSwUFBR8tVa4BhITE03aauPj4/QIE75gFMBPanmjAFT05ycxYNRU8svo6CiGh4fR2dkJoQvw8PBAXV0dfHx8cHNzw+MjIyO8Ni4uDpWVlbCxseGibWpqwuLiIs9lZ2cjJycHlpaW3DlTU1N6afhfABMTE+jq6uLgnp6eqK+v5+BU2aQTcvD4+HhUVVXB2toaJycnrAdy8MzMTNYDasnl5WUeIzA6eyWc0GiNdkFbWxvvlIKKzvxs57IYGQYnMWpsbNSLEQWibqHgBIiA2dnZIS0tDbW1taxlwm0o3YYp1zNwd3fHSlheXs4MUO+TElJaZCUsKyuDubk5q9xjJaTd02/ISkgAqR1JCw4PD+XNSiZvQysrKygUClhYWDCrpAX+/v7o6OjQiOkA4RpdGi4/Y+Cp5uDggJKSEj5HiAkCQSmU2T06OlILuadikURqbgXAt+K9khlIT0/nc+ApRqceSe63/FZQUBDa29vp9W9mICUlhU/DJ10slP/Vs6+vLx9gZNRRGxsb3JJeXl76td7e3vrPiIEPYmEEtdrk5CRR9V0AHB0dUVpaitDQUD0gOmGJEV0NUAEeGVxU3gn/CwLAS7qUSCYwUf2SOOSk4uJi+vdYuJtwtfA/6AQgpxR81N1WnIU//4EKbP7w8PBGPJ9REersTHTchaE8G3bBvs6fZHJLiwBW4vakJfr9/Py4JIx+IFNhAqf6em2QkT7hysfr/hVgAIhbr+v/xmSzAAAAAElFTkSuQmCC'; var cp_icon = 'data:image/png;base64,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';
var closeImg = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAA5ElEQVR42tRTQYoEIQwsl/2Bl3gQoY9eBKEf5kvyG8G7h4Z+S38gIu5lp5lZ2R7YPm1BDhZJSFWiGmPgDj5wE7cbfD4/mBkAHprUj9yTTyn9OsGIMSLG+Fxwxc8SiAi9d4QQHskjhIDeO4jorQcq5wwiQmsN3nt479FaAxEh5zxJmyZIKalSClprL1FKQUpJXZr4DBH52xqZeRhjICKw1sJaCxGBMQbMPN41GFpriAicc6i1otYK5xxEBFrraQuThGVZAADbtp2amXms6woAOI7j0gO17/t5MN+HNfEvBf//M30NAKe7aRqUOIlfAAAAAElFTkSuQmCC'; var close_img = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAA5ElEQVR42tRTQYoEIQwsl/2Bl3gQoY9eBKEf5kvyG8G7h4Z+S38gIu5lp5lZ2R7YPm1BDhZJSFWiGmPgDj5wE7cbfD4/mBkAHprUj9yTTyn9OsGIMSLG+Fxwxc8SiAi9d4QQHskjhIDeO4jorQcq5wwiQmsN3nt479FaAxEh5zxJmyZIKalSClprL1FKQUpJXZr4DBH52xqZeRhjICKw1sJaCxGBMQbMPN41GFpriAicc6i1otYK5xxEBFrraQuThGVZAADbtp2amXms6woAOI7j0gO17/t5MN+HNfEvBf//M30NAKe7aRqUOIlfAAAAAElFTkSuQmCC';
var osd = function(){ var osd = function(){
var navbar, newElement; var navbar, newElement;
var iFrame = create('iframe', { var iframe = create('iframe', {
'src': cpLocation + "userscript.add_via_url/?url=" + escape(document.location), 'src': host + api + "?url=" + escape(document.location.href),
'frameborder': 0, 'frameborder': 0,
'scrolling': 'no' 'scrolling': 'no'
}); });
var addToText = '<a class="addTo" href="#"></a>';
var popupId = 'cpPopup';
var popup = create('div', { var popup = create('div', {
'id': popupId, 'id': 'cp_popup'
'innerHTML': addToText
}); });
var addButton = create('a', { var add_button = create('a', {
'innerHTML': '<img src="' + movieImg + '" />Add to CouchPotato', 'innerHTML': '<img src="' + cp_icon + '" />',
'id': 'addTo', 'id': 'add_to',
'onclick': function(){ 'onclick': function(){
popup.innerHTML = ''; popup.innerHTML = '';
popup.appendChild(create('a', { popup.appendChild(create('a', {
'innerHTML': '<img src="' + closeImg + '" />', 'innerHTML': '<img src="' + close_img + '" />',
'id': 'closeBtn', 'id': 'close_button',
'onclick': function(){ 'onclick': function(){
popup.innerHTML = ''; popup.innerHTML = '';
popup.appendChild(addButton); popup.appendChild(add_button);
} }
})); }));
popup.appendChild(iFrame) popup.appendChild(iframe)
} }
}); });
popup.appendChild(addButton); popup.appendChild(add_button);
document.body.parentNode.insertBefore(popup, document.body); document.body.parentNode.insertBefore(popup, document.body);
}; };
var setVersion = function(){
document.body.setAttribute('data-userscript_version', version)
};
if(document.location.href.indexOf(host) == -1)
osd(); osd();
else
setVersion();

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

@ -60,8 +60,6 @@ class X264(NZBProvider):
'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,

3
couchpotato/core/providers/userscript/base.py

@ -17,8 +17,7 @@ class UserscriptBase(Plugin):
def __init__(self): def __init__(self):
addEvent('userscript.get_includes', self.getInclude) addEvent('userscript.get_includes', self.getInclude)
addEvent('userscript.get_excludes', self.getExclude) addEvent('userscript.get_excludes', self.getExclude)
addEvent('userscript.get_version', self.getVersion) addEvent('userscript.get_provider_version', self.getVersion)
addEvent('userscript.get_movie_via_url', self.belongsTo) addEvent('userscript.get_movie_via_url', self.belongsTo)
def search(self, name, year = None): def search(self, name, year = None):

17
couchpotato/core/providers/userscript/imdb/main.py

@ -1,7 +1,6 @@
from beautifulsoup import BeautifulSoup
from couchpotato.core.event import fireEvent from couchpotato.core.event import fireEvent
from couchpotato.core.helpers.variable import getImdb
from couchpotato.core.providers.userscript.base import UserscriptBase from couchpotato.core.providers.userscript.base import UserscriptBase
import re
class IMDB(UserscriptBase): class IMDB(UserscriptBase):
@ -9,16 +8,4 @@ class IMDB(UserscriptBase):
includes = ['http*://*.imdb.com/title/tt*', 'http*://imdb.com/title/tt*'] includes = ['http*://*.imdb.com/title/tt*', 'http*://imdb.com/title/tt*']
def getMovie(self, url): def getMovie(self, url):
return fireEvent('movie.info', identifier = getImdb(url), merge = True)
data = self.urlopen(url)
html = BeautifulSoup(data)
headers = html.findAll('h5')
# Don't add TV show
for head in headers:
if 'seasons' in head.lower():
return 'IMDB url is a TV Show'
identifier = re.search('(?P<id>tt[0-9{7}]+)', url).group('id')
return fireEvent('movie.info', identifier = identifier, merge = True)

9
couchpotato/static/scripts/couchpotato.js

@ -29,7 +29,7 @@ var CouchPotato = new Class({
else else
self.openPage(window.location.pathname); self.openPage(window.location.pathname);
self.c.addEvent('click:relay(a:not([target=_blank]))', self.pushState.bind(self)); self.c.addEvent('click:relay(a:not([target=_blank]):not([normalhref=true]))', self.pushState.bind(self));
}, },
getOption: function(name){ getOption: function(name){
@ -72,17 +72,10 @@ var CouchPotato = new Class({
$(pg).inject(self.content); $(pg).inject(self.content);
}); });
self.load_timer = (function(){
self.fireEvent('load'); self.fireEvent('load');
}).delay(1000);
}, },
stopLoadTimer: function(){
if(this.load_timer)
clearInterval(this.load_timer);
},
openPage: function(url) { openPage: function(url) {
var self = this; var self = this;

3
couchpotato/templates/_desktop.html

@ -66,7 +66,8 @@
'args': '{{ env.get('args') }}', 'args': '{{ env.get('args') }}',
'options': '{{ env.get('options') }}', 'options': '{{ env.get('options') }}',
'app_dir': '{{ env.get('app_dir') }}', 'app_dir': '{{ env.get('app_dir') }}',
'data_dir': '{{ env.get('data_dir') }}' 'data_dir': '{{ env.get('data_dir') }}',
'userscript_version': {{ fireEvent('userscript.get_version', single = True)|safe }}
}); });
//Wizard.start.delay(100, Wizard); //Wizard.start.delay(100, Wizard);

Loading…
Cancel
Save