Fixed up stream clicking stuff

This commit is contained in:
JohnDoee
2017-08-18 17:01:16 +02:00
parent 0818499231
commit 79de776da8
4 changed files with 31 additions and 49 deletions

View File

@@ -634,7 +634,7 @@ class Core(CorePluginBase):
port = self.config['port']
ip = self.config['ip']
elif self.config['serve_method'] == 'webui': # this webserver is fubar
elif self.config['serve_method'] == 'webui' and self.check_webui(): # this webserver is fubar
plugin_manager = component.get("CorePluginManager")
webui_plugin = plugin_manager['WebUi'].plugin
@@ -658,6 +658,7 @@ class Core(CorePluginBase):
self.site.stopFactory()
self.torrent_handler.shutdown()
if self.check_webui():
plugin_manager = component.get("CorePluginManager")
webui_plugin = plugin_manager['WebUi'].plugin

View File

@@ -579,7 +579,7 @@
</child>
<child>
<widget class="GtkCheckButton" id="input_use_stream_urls">
<property name="label" translatable="yes">Use stream urls</property>
<property name="label" translatable="yes">Use stream protocol urls</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
@@ -594,7 +594,7 @@
</child>
<child>
<widget class="GtkCheckButton" id="input_auto_open_stream_urls">
<property name="label" translatable="yes">Auto-open stream urls</property>
<property name="label" translatable="yes">Auto-open stream protocol urls</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>

View File

@@ -240,14 +240,14 @@ PreferencePage = Ext.extend(Ext.Panel, {
om.bind('use_stream_urls', fieldset.add({
xtype: 'checkbox',
name: 'use_stream_urls',
boxLabel: 'Use stream urls',
boxLabel: 'Use stream protocol urls',
style: 'margin-left: 12px;'
}));
om.bind('auto_open_stream_urls', fieldset.add({
xtype: 'checkbox',
name: 'auto_open_stream_urls',
boxLabel: 'Auto-open stream urls',
boxLabel: 'Auto-open stream protocol urls',
style: 'margin-left: 12px;'
}));
},

View File

@@ -39,7 +39,9 @@
import json
import gtk
import webbrowser
import os
import subprocess
import sys
from deluge.log import LOG as log
from deluge.ui.client import client
@@ -53,35 +55,18 @@ from twisted.web import server, resource
from common import get_resource
class LocalAddResource(resource.Resource):
gtkui = None
isLeaf = True
def __init__(self, gtkui):
self.gtkui = gtkui
resource.Resource.__init__(self)
def execute_url(url):
if sys.platform == 'win32':
os.startfile(url)
elif sys.platform == 'darwin':
subprocess.Popen(['open', url])
else:
try:
subprocess.Popen(['xdg-open', url])
except OSError:
print 'Unable to open URL %s' % (url, )
def render_GET(self, request):
useragent = request.getHeader('User-Agent')
if 'Deluge-Streamer' not in useragent:
request.setResponseCode(401)
return 'Unauthorized'
torrent_url = request.args.get('url', None)
if not torrent_url:
return json.dumps({'status': 'error', 'message': 'missing url in request'})
torrent_file = request.args.get('file', None)
if torrent_file:
torrent_file = torrent_file[0]
infohash = request.args.get('infohash', None)
if infohash:
infohash = infohash[0]
client.streaming.stream_torrent(url=torrent_url[0], infohash=infohash, filepath_or_index=torrent_file).addCallback(self.gtkui.stream_ready)
return json.dumps({'status': 'ok', 'message': 'queued'})
class GtkUI(GtkPluginBase):
def enable(self):
@@ -115,11 +100,6 @@ class GtkUI(GtkPluginBase):
self.sep_torrentmenu.show()
self.item_torrentmenu.show()
self.resource = LocalAddResource(self)
self.site = server.Site(self.resource)
self.listening = reactor.listenTCP(40747, self.site, interface='127.0.0.1')
@defer.inlineCallbacks
def disable(self):
component.get("Preferences").remove_page("Streaming")
component.get("PluginManager").deregister_hook("on_apply_prefs", self.on_apply_prefs)
@@ -135,9 +115,6 @@ class GtkUI(GtkPluginBase):
torrentmenu.remove(self.item_torrentmenu)
torrentmenu.remove(self.sep_torrentmenu)
self.site.stopFactory()
yield self.listening.stopListening()
@defer.inlineCallbacks
def on_apply_prefs(self):
log.debug("applying prefs for Streaming")
@@ -210,9 +187,13 @@ class GtkUI(GtkPluginBase):
if result.get('use_stream_urls', False):
url = "stream+%s" % result['url']
if result.get('auto_open_stream_urls', False):
threads.deferToThread(webbrowser.open, url)
threads.deferToThread(execute_url, url)
else:
dialogs.InformationDialog('Stream ready', '<a href="%s">Click here to open it</a>' % url).run()
def on_dialog_callback(response):
if response == gtk.RESPONSE_YES:
threads.deferToThread(execute_url, url)
dialogs.YesNoDialog('Stream ready', 'Do you want to play the video?').run().addCallback(on_dialog_callback)
else:
dialogs.ErrorDialog('Stream ready', 'Copy the link into a media player', details=result['url']).run()
else: