print ("<!DOCTYPE html>\n<html><head><title>partyparty beb</title></head><body>")
print (partyparty.css ())
-print '<p style="font-size: 5rem"><a href="upload.html">Upload A Song</a> | <a href="normals.cgi">home</a> | <a href="normals.cgi?browseartists=1">browse</a></p>'
+print '<p style="font-size: 5rem"><a href="upload.html">Upload A Song</a> | <a href="youtube.html">Add From YouTube</a> | <a href="normals.cgi">home</a> | <a href="normals.cgi?browseartists=1">browse</a></p>'
from xbmcjson import XBMC
import urllib
from yattag import Doc
+import youtube_dl
xbmc = None
self.attempt_rpgain ()
return self.filename
+class Youtube:
+ upload_dir = '/srv/archive/incoming/youtube-moosic'
+ ydl_opts = {
+ 'format': 'bestaudio/best',
+ 'outtmpl': upload_dir + '/%(id)s.%(ext)s',
+ 'quiet': True,
+ 'postprocessors': [
+ {
+ 'key': 'FFmpegMetadata',
+ },
+ {
+ 'key': 'FFmpegExtractAudio',
+ 'preferredcodec': 'vorbis',
+ }],
+
+ }
+
+ def __init__ (self, form, field):
+ self.ydl = youtube_dl.YoutubeDL(self.ydl_opts)
+ self.url = form.getvalue (field)
+
+ def save (self):
+ info = self.ydl.extract_info (self.url, download=True)
+ filename = '{}/{}.ogg'.format (self.upload_dir, info['display_id'])
+ subprocess.call (["/usr/bin/vorbisgain", "-q", filename])
+ return filename
+
def css ():
doc, tag, text = Doc ().tagtext ()
upload = Upload (form, 'song')
filename = upload.save ()
self.randomqueue ({"file": filename}, 1 if 'asap' not in form else 3)
+ elif 'youtubego' in form:
+ youtube = Youtube (form, 'youtubeurl')
+ filename = youtube.save ()
+ self.randomqueue ({"file": filename}, 1 if 'asap' not in form else 3)
elif 'partyon' in form:
if 'error' in xbmc.Player.SetPartymode (partymode=True, playerid=0):
xbmc.Player.Open (item={"partymode": "music"})
--- /dev/null
+<!DOCTYPE html>
+<html>
+ <head>
+ <style>
+ body { font-family: sans-serif; }
+ input[type=url] { height: 2em; width:
+ 100%; font-size: 200%; }
+ button { font-size: 400%; background-color: slategray; border: 0px
+ solid black; border-radius: 10px; width: 95%; display: block;
+ margin: 2rem auto; }
+
+ label[for=asap] { font-size: 350%; }
+ input[type=checkbox] { transform: scale(2.5); margin-right: 2em; }
+ </style>
+ </head>
+ <body>
+ <form action="normals.cgi" method="post" enctype="multipart/form-data">
+ <p>
+ <label for="youtubeurl">YouTube URL</label>
+ <input name="youtubeurl" type="text" required="required" />
+ <!-- <input type="submit" value="Party On!" /> -->
+ <button name="youtubego" type="submit">Party On!</button>
+ <input type="checkbox" value="faster" name="asap" />
+ <label for="asap">nnooowww</label>
+ </p>
+ </form>
+ </body>
+</html>