Userscript installation and updater
This commit is contained in:
@@ -2,6 +2,7 @@ from couchpotato.core.helpers.variable import natcmp
|
||||
from flask.globals import current_app
|
||||
from flask.helpers import json
|
||||
from libs.werkzeug.urls import url_decode
|
||||
from urllib import unquote_plus
|
||||
import flask
|
||||
import re
|
||||
|
||||
@@ -24,7 +25,7 @@ def getParams():
|
||||
|
||||
for item in nested:
|
||||
if item is nested[-1]:
|
||||
current[item] = value
|
||||
current[item] = unquote_plus(value)
|
||||
else:
|
||||
try:
|
||||
current[item]
|
||||
@@ -33,7 +34,7 @@ def getParams():
|
||||
|
||||
current = current[item]
|
||||
else:
|
||||
temp[param] = value
|
||||
temp[param] = unquote_plus(value)
|
||||
|
||||
return dictToList(temp)
|
||||
|
||||
@@ -54,7 +55,10 @@ def dictToList(params):
|
||||
return new
|
||||
|
||||
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):
|
||||
content = str(callback) + '(' + json.dumps(dict(*args, **kwargs)) + ')'
|
||||
|
||||
@@ -9,6 +9,7 @@ var NotificationBase = new Class({
|
||||
|
||||
// Listener
|
||||
App.addEvent('load', self.startInterval.bind(self));
|
||||
App.addEvent('unload', self.stopTimer.bind(self));
|
||||
self.addEvent('notification', self.notify.bind(self))
|
||||
|
||||
// Add test buttons to settings page
|
||||
|
||||
@@ -4,6 +4,10 @@ var UpdaterBase = new Class({
|
||||
var self = this;
|
||||
|
||||
App.addEvent('load', self.info.bind(self, 1000))
|
||||
App.addEvent('unload', function(){
|
||||
if(self.timer)
|
||||
clearTimeout(self.timer);
|
||||
});
|
||||
},
|
||||
|
||||
info: function(timeout){
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
from couchpotato import index
|
||||
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.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.helpers import url_for, make_response
|
||||
|
||||
log = CPLog(__name__)
|
||||
|
||||
@@ -18,20 +18,26 @@ class Userscript(Plugin):
|
||||
addApiView('userscript', self.iFrame)
|
||||
addApiView('userscript.add_via_url', self.getViaUrl)
|
||||
|
||||
addEvent('userscript.get_version', self.getVersion)
|
||||
|
||||
def getExtension(self):
|
||||
|
||||
params = {
|
||||
'includes': fireEvent('userscript.get_includes', merge = True),
|
||||
'excludes': fireEvent('userscript.get_excludes', merge = True),
|
||||
'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):
|
||||
|
||||
versions = fireEvent('userscript.get_version')
|
||||
versions = fireEvent('userscript.get_provider_version')
|
||||
|
||||
version = 0
|
||||
for v in versions:
|
||||
|
||||
@@ -7,7 +7,7 @@ Page.Userscript = new Class({
|
||||
|
||||
options: {
|
||||
'onOpened': function(){
|
||||
App.stopLoadTimer();
|
||||
App.fireEvent('unload');
|
||||
App.getBlock('header').hide();
|
||||
}
|
||||
},
|
||||
@@ -43,4 +43,71 @@ 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});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
// ==UserScript==
|
||||
// @name CouchPotato UserScript
|
||||
// @description Add movies like a real CouchPotato
|
||||
// @version {{version}}
|
||||
|
||||
// @include {{host}}*
|
||||
{% for include in includes %}
|
||||
// @include {{include}}{% endfor %}
|
||||
{% for exclude in excludes %}
|
||||
// @exclude {{exclude}}{% endfor %}
|
||||
// @exclude {{host}}{{api.rstrip('/')}}*
|
||||
|
||||
// ==/UserScript==
|
||||
|
||||
var version = {{version}},
|
||||
cpLocation = '{{host}}';
|
||||
host = '{{host}}';
|
||||
api = '{{api}}';
|
||||
|
||||
function create() {
|
||||
switch (arguments.length) {
|
||||
@@ -40,7 +44,7 @@ function create() {
|
||||
|
||||
if (typeof GM_addStyle == 'undefined'){
|
||||
GM_addStyle = function(css) {
|
||||
var head = document.getElementsByTagName('head')[0],
|
||||
var head = document.getElementsByTagName('head')[0],
|
||||
style = document.createElement('style');
|
||||
if (!head)
|
||||
return;
|
||||
@@ -53,53 +57,56 @@ if (typeof GM_addStyle == 'undefined'){
|
||||
|
||||
// Styles
|
||||
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; } \
|
||||
#cpPopup:hover { opacity: 1; } \
|
||||
#cpPopup a#addTo { cursor:pointer; text-align:center; text-decoration:none; color: #000; display:block; padding:15px 0 10px; } \
|
||||
#cpPopup a#closeBtn { cursor:pointer; float: right; padding:10px; } \
|
||||
#cpPopup a img { vertical-align: middle; } \
|
||||
#cpPopup a:hover { color:#000; } \
|
||||
#cpPopup iframe{ background:#f5f5f5; margin:6px; height:70px; width:188px; overflow:hidden; border:none; } \
|
||||
#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; } \
|
||||
#cp_popup:hover { } \
|
||||
#cp_popup a#add_to { cursor:pointer; text-align:center; text-decoration:none; color: #000; display:block; padding:5px 0 5px 5px; } \
|
||||
#cp_popup a#close_button { cursor:pointer; float: right; padding:120px 10px 10px; } \
|
||||
#cp_popup a img { vertical-align: middle; } \
|
||||
#cp_popup a:hover { color:#000; } \
|
||||
#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 closeImg = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAA5ElEQVR42tRTQYoEIQwsl/2Bl3gQoY9eBKEf5kvyG8G7h4Z+S38gIu5lp5lZ2R7YPm1BDhZJSFWiGmPgDj5wE7cbfD4/mBkAHprUj9yTTyn9OsGIMSLG+Fxwxc8SiAi9d4QQHskjhIDeO4jorQcq5wwiQmsN3nt479FaAxEh5zxJmyZIKalSClprL1FKQUpJXZr4DBH52xqZeRhjICKw1sJaCxGBMQbMPN41GFpriAicc6i1otYK5xxEBFrraQuThGVZAADbtp2amXms6woAOI7j0gO17/t5MN+HNfEvBf//M30NAKe7aRqUOIlfAAAAAElFTkSuQmCC';
|
||||
var cp_icon = 'data:image/png;base64,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';
|
||||
var close_img = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAA5ElEQVR42tRTQYoEIQwsl/2Bl3gQoY9eBKEf5kvyG8G7h4Z+S38gIu5lp5lZ2R7YPm1BDhZJSFWiGmPgDj5wE7cbfD4/mBkAHprUj9yTTyn9OsGIMSLG+Fxwxc8SiAi9d4QQHskjhIDeO4jorQcq5wwiQmsN3nt479FaAxEh5zxJmyZIKalSClprL1FKQUpJXZr4DBH52xqZeRhjICKw1sJaCxGBMQbMPN41GFpriAicc6i1otYK5xxEBFrraQuThGVZAADbtp2amXms6woAOI7j0gO17/t5MN+HNfEvBf//M30NAKe7aRqUOIlfAAAAAElFTkSuQmCC';
|
||||
|
||||
var osd = function(){
|
||||
var navbar, newElement;
|
||||
|
||||
var iFrame = create('iframe', {
|
||||
'src': cpLocation + "userscript.add_via_url/?url=" + escape(document.location),
|
||||
var iframe = create('iframe', {
|
||||
'src': host + api + "?url=" + escape(document.location.href),
|
||||
'frameborder': 0,
|
||||
'scrolling': 'no'
|
||||
});
|
||||
|
||||
var addToText = '<a class="addTo" href="#"></a>';
|
||||
var popupId = 'cpPopup';
|
||||
|
||||
var popup = create('div', {
|
||||
'id': popupId,
|
||||
'innerHTML': addToText
|
||||
'id': 'cp_popup'
|
||||
});
|
||||
var addButton = create('a', {
|
||||
'innerHTML': '<img src="' + movieImg + '" />Add to CouchPotato',
|
||||
'id': 'addTo',
|
||||
var add_button = create('a', {
|
||||
'innerHTML': '<img src="' + cp_icon + '" />',
|
||||
'id': 'add_to',
|
||||
'onclick': function(){
|
||||
popup.innerHTML = '';
|
||||
popup.appendChild(create('a', {
|
||||
'innerHTML': '<img src="' + closeImg + '" />',
|
||||
'id': 'closeBtn',
|
||||
'innerHTML': '<img src="' + close_img + '" />',
|
||||
'id': 'close_button',
|
||||
'onclick': function(){
|
||||
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);
|
||||
};
|
||||
|
||||
osd();
|
||||
var setVersion = function(){
|
||||
document.body.setAttribute('data-userscript_version', version)
|
||||
};
|
||||
|
||||
if(document.location.href.indexOf(host) == -1)
|
||||
osd();
|
||||
else
|
||||
setVersion();
|
||||
@@ -60,8 +60,6 @@ class X264(NZBProvider):
|
||||
'check_nzb': False,
|
||||
}
|
||||
|
||||
print new['name']
|
||||
|
||||
new['score'] = fireEvent('score.calculate', new, movie, single = True)
|
||||
is_correct_movie = fireEvent('searcher.correct_movie',
|
||||
nzb = new, movie = movie, quality = quality,
|
||||
|
||||
@@ -17,8 +17,7 @@ class UserscriptBase(Plugin):
|
||||
def __init__(self):
|
||||
addEvent('userscript.get_includes', self.getInclude)
|
||||
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)
|
||||
|
||||
def search(self, name, year = None):
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
from beautifulsoup import BeautifulSoup
|
||||
from couchpotato.core.event import fireEvent
|
||||
from couchpotato.core.helpers.variable import getImdb
|
||||
from couchpotato.core.providers.userscript.base import UserscriptBase
|
||||
import re
|
||||
|
||||
|
||||
class IMDB(UserscriptBase):
|
||||
@@ -9,16 +8,4 @@ class IMDB(UserscriptBase):
|
||||
includes = ['http*://*.imdb.com/title/tt*', 'http*://imdb.com/title/tt*']
|
||||
|
||||
def getMovie(self, url):
|
||||
|
||||
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)
|
||||
return fireEvent('movie.info', identifier = getImdb(url), merge = True)
|
||||
|
||||
@@ -29,7 +29,7 @@ var CouchPotato = new Class({
|
||||
else
|
||||
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){
|
||||
@@ -72,16 +72,9 @@ var CouchPotato = new Class({
|
||||
$(pg).inject(self.content);
|
||||
});
|
||||
|
||||
self.load_timer = (function(){
|
||||
self.fireEvent('load');
|
||||
}).delay(1000);
|
||||
self.fireEvent('load');
|
||||
|
||||
},
|
||||
|
||||
stopLoadTimer: function(){
|
||||
if(this.load_timer)
|
||||
clearInterval(this.load_timer);
|
||||
},
|
||||
|
||||
openPage: function(url) {
|
||||
var self = this;
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<script type="text/javascript" src="{{ url_for('web.static', filename='scripts/library/form_replacement/form_dropdown.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ url_for('web.static', filename='scripts/library/form_replacement/form_selectoption.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ url_for('web.static', filename='scripts/library/question.js') }}"></script>
|
||||
|
||||
|
||||
<script type="text/javascript" src="{{ url_for('web.static', filename='scripts/couchpotato.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ url_for('web.static', filename='scripts/api.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ url_for('web.static', filename='scripts/library/history.js') }}"></script>
|
||||
@@ -66,7 +66,8 @@
|
||||
'args': '{{ env.get('args') }}',
|
||||
'options': '{{ env.get('options') }}',
|
||||
'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);
|
||||
|
||||
Reference in New Issue
Block a user