Commit 3ebf9df7 authored by prx's avatar prx

ajout de stream en passant un magnet en argument

parent da55a745
......@@ -16,6 +16,7 @@ import sys
from argparse import ArgumentParser
from bottle import *
from threading import Thread
import webbrowser
from database import DontPanicDB
from i18n import _
......@@ -257,7 +258,7 @@ def pick_welcomemsg():
class DontPanic:
def __init__(self, host, port, admin, adminpw="password", local_=True):
def __init__(self, host, port, admin, adminpw="password", local_=True, magnet = ""):
self.startperc = None
self.tmp = tempdir
self.uplimit = None
......@@ -274,6 +275,8 @@ class DontPanic:
self.admin = admin
self.adminpw = adminpw
self.magnet_as_arg = magnet
with DontPanicDB() as db:
db.add_user(admin, adminpw)
......@@ -620,13 +623,15 @@ class DontPanic:
@self.app.route('/html5/<filename:path>')
def html5(filename):
video, links = "", ""
if not filename.lower().endswith('.avi'):
mtype = 'type="{}"'.format(mimetypes.guess_type(filename)[0])
video = '<video width="640" controls preload="auto" autoplay="true" >\n'
video += '<source src="/video/{}" {} >\n'.format(filename, mtype)
video += '</video>\n'
mtype = 'type="{}"'.format(mimetypes.guess_type(filename)[0])
video = '<video width="640" controls preload="auto" autoplay="true" >\n'
video += '<source src="/video/{}" {} >\n'.format(filename, mtype)
video += '</video>\n'
links = '<div>\n'
links += '<br/>\n'
links += _("If your browser doesn't support the player above, you may want to : ")
links += '<br/>\n'
if self.local:
links += '<a href="/localvideo/{}">{}</a> - \n'.format(filename, _('Play with external video player'))
links += '<a href="/video/{}">{}</a>\n'.format(filename, _('Download the video'))
......@@ -847,10 +852,12 @@ class DontPanic:
return conf
def open_in_browser(self):
import webbrowser
while not is_running():
time.sleep(0.1)
webbrowser.open("http://localhost:{}".format(self.port))
if self.magnet_as_arg != "":
webbrowser.open("http://localhost:{}/stream/dontpanic/{}/0".format(port, self.magnet_as_arg))
else:
webbrowser.open("http://localhost:{}".format(self.port))
def stop(self):
if sys.platform == 'win32' and sys.version_info < (3, 2):
......@@ -908,6 +915,7 @@ if __name__ == '__main__':
parser.add_argument("-v", "--verbose", action="count", default=0, help=_("Increase output verbosity"))
parser.add_argument("--version", action="version", version=progversion, help=_("Print version"))
parser.add_argument("magnet", nargs='?', action="store", default="", help=_("stream a magnet link"))
args = parser.parse_args()
setup_logging(args.verbose)
......@@ -923,7 +931,20 @@ if __name__ == '__main__':
else:
me = getpass.getuser()
myapp = DontPanic('localhost', port, me)
myapp.run()
# a magnet link is passed as argument
mgt = ""
if args.magnet.startswith("magnet:"):
mgt = quoteurl(args.magnet)
if not port: # already running
with open(lock_file, 'r') as l:
port = l.read().strip()
if mgt != "":
webbrowser.open("http://localhost:{}/stream/dontpanic/{}/0".format(port, mgt))
else:
webbrowser.open("http://localhost:{}".format(port))
else:
myapp = DontPanic('localhost', port, me, magnet = mgt)
myapp.run()
# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4
......@@ -3,9 +3,12 @@ Bugs:
- Lorsqu'un sous-titre a été téléchargé avec succès, la page ne se ferme pas automatiquement > Le javascript est-il activé?
- Un message d'erreur sur une exception socket est présent au premier lancement
À faire:
--------
- Associer les liens magnets à dontpanic sous windows
Suggestion:
-----------
- résultats apparaissent petit à petit
- Lorsque utilisateur choisit une vidéo: le titre de la vidéo est celui de sa recherche, plus logique d'afficher le nom de la vidéo
- Lorsque la vidéo est stocké dans la base de donnée, actuellement on stocke la recherche comme nom, plus logique de stocker le titre de la vidéo -> oui et non. On garde comme ça en mémoire aussi les différentes sources de vidéo qui peuvent être différentes d'une fois sur l'autre"
- Changer icone de la page en fonction de l'année, par exemple mettre un bonnet rouge comme VLC et d'autres logiciels lorsque période des fêtes de fin d'année
......
......@@ -210,10 +210,8 @@ def lock():
p.write(str(port))
return port
else:
sys.exit(0)
return False
def get_free_port():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("", 0))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment