diff --git a/couchpotato/core/helpers/request.py b/couchpotato/core/helpers/request.py
index 6ffb7d5..09ee6b8 100644
--- a/couchpotato/core/helpers/request.py
+++ b/couchpotato/core/helpers/request.py
@@ -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)) + ')'
diff --git a/couchpotato/core/notifications/core/static/notification.js b/couchpotato/core/notifications/core/static/notification.js
index f4026d4..be42b06 100644
--- a/couchpotato/core/notifications/core/static/notification.js
+++ b/couchpotato/core/notifications/core/static/notification.js
@@ -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
diff --git a/couchpotato/core/plugins/updater/static/updater.js b/couchpotato/core/plugins/updater/static/updater.js
index f7268b2..623bacf 100644
--- a/couchpotato/core/plugins/updater/static/updater.js
+++ b/couchpotato/core/plugins/updater/static/updater.js
@@ -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){
diff --git a/couchpotato/core/plugins/userscript/main.py b/couchpotato/core/plugins/userscript/main.py
index 188790f..34ab6b5 100644
--- a/couchpotato/core/plugins/userscript/main.py
+++ b/couchpotato/core/plugins/userscript/main.py
@@ -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:
diff --git a/couchpotato/core/plugins/userscript/static/userscript.js b/couchpotato/core/plugins/userscript/static/userscript.js
index c03016d..a904bce 100644
--- a/couchpotato/core/plugins/userscript/static/userscript.js
+++ b/couchpotato/core/plugins/userscript/static/userscript.js
@@ -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({
}
-});
\ No newline at end of file
+});
+
+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});
+ }
+});
diff --git a/couchpotato/core/plugins/userscript/template.js b/couchpotato/core/plugins/userscript/template.js
index 7c1b0c2..7dbd4ea 100644
--- a/couchpotato/core/plugins/userscript/template.js
+++ b/couchpotato/core/plugins/userscript/template.js
@@ -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 = '';
- var popupId = 'cpPopup';
-
var popup = create('div', {
- 'id': popupId,
- 'innerHTML': addToText
+ 'id': 'cp_popup'
});
- var addButton = create('a', {
- 'innerHTML': '
Add to CouchPotato',
- 'id': 'addTo',
+ var add_button = create('a', {
+ 'innerHTML': '
',
+ 'id': 'add_to',
'onclick': function(){
popup.innerHTML = '';
popup.appendChild(create('a', {
- 'innerHTML': '
',
- 'id': 'closeBtn',
+ 'innerHTML': '
',
+ '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();
\ No newline at end of file
+var setVersion = function(){
+ document.body.setAttribute('data-userscript_version', version)
+};
+
+if(document.location.href.indexOf(host) == -1)
+ osd();
+else
+ setVersion();
\ No newline at end of file
diff --git a/couchpotato/core/providers/nzb/x264/main.py b/couchpotato/core/providers/nzb/x264/main.py
index aba7f64..c8eb1cb 100644
--- a/couchpotato/core/providers/nzb/x264/main.py
+++ b/couchpotato/core/providers/nzb/x264/main.py
@@ -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,
diff --git a/couchpotato/core/providers/userscript/base.py b/couchpotato/core/providers/userscript/base.py
index ec7693f..e23a540 100644
--- a/couchpotato/core/providers/userscript/base.py
+++ b/couchpotato/core/providers/userscript/base.py
@@ -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):
diff --git a/couchpotato/core/providers/userscript/imdb/main.py b/couchpotato/core/providers/userscript/imdb/main.py
index 06f6f16..5e5ae91 100644
--- a/couchpotato/core/providers/userscript/imdb/main.py
+++ b/couchpotato/core/providers/userscript/imdb/main.py
@@ -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('(?Ptt[0-9{7}]+)', url).group('id')
- return fireEvent('movie.info', identifier = identifier, merge = True)
+ return fireEvent('movie.info', identifier = getImdb(url), merge = True)
diff --git a/couchpotato/static/scripts/couchpotato.js b/couchpotato/static/scripts/couchpotato.js
index 2c5a02c..e1649ef 100644
--- a/couchpotato/static/scripts/couchpotato.js
+++ b/couchpotato/static/scripts/couchpotato.js
@@ -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;
diff --git a/couchpotato/templates/_desktop.html b/couchpotato/templates/_desktop.html
index 463ab18..95fb1cd 100644
--- a/couchpotato/templates/_desktop.html
+++ b/couchpotato/templates/_desktop.html
@@ -18,7 +18,7 @@
-
+
@@ -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);