Seite 1 von 1
Anfänger - youtube-dl und omxplayer
Verfasst: Samstag 12. November 2016, 11:26
von snu-snu
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import youtube_dl
import subprocess
import time
from subprocess import Popen
import sys
url = raw_input("paste URL and press return: ")
yta = ['youtube-dl', '-g',url, '--restrict-filenames']
yt = subprocess.Popen(yta,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
(res, err) = yt.communicate()
run = 1
while run == 1:
#if "streamcloud" in url:
# print "streamcloud video"
# print "catching stream url"
if "youtube" in url:
print "youtube video"
yta
yt
print "extracted URL: " + res
print "Video wird gesestartet"
subprocess.Popen(["omxplayer", "-o", "alsa", res])
time.sleep(30)
sys.exit()
else:
sys.exit()
Hi,
ich bin snu und ein totaler Anfänger in Sachen Python. Dieses script soll mir auf dem RaspberrPi3 dazu dienen, Links über das Modul youtube-dl in Video-URLs zu verwandeln, um diese an den OMX-Player weiter zu geben.
Mein Problem ist, dass das Script tadellos ausgeführt wird und auch der OMXPlayer sein übliches feedback "have a nice day
" ausgibt, aber dann kein Video startet. Deswegen hab ich auch das time.sleep(30) angehängt, mit der Überlegung, vlt. muss ich ja warten?
Die andere Überlegung ist, da print(res) 2 identische URLs ausgibt, dass der OMXPlayer mit dieser doppelten Adresse nicht zu recht kommt.
Weiß jemand Hilfe?
Beste Grüße snu-snu
Re: Anfänger - youtube-dl und omxplayer
Verfasst: Sonntag 13. November 2016, 00:47
von __deets__
Hast du mal eine konkrete URL mit der man das ausprobieren kann was der OMXPlayer daraus macht?
Re: Anfänger - youtube-dl und omxplayer
Verfasst: Sonntag 13. November 2016, 09:46
von snu-snu
konkret mit:
https://www.youtube.com/watch?v=kxZD0VQvfqU passiert folgendes
Code: Alles auswählen
paste URL and press return: https://www.youtube.com/watch?v=kxZD0VQvfqU
youtube video
extracted URL: https://r6---sn-uxaxjva0hc0n-nm4l.googlevideo.com/videoplayback?gcr=de&pl=32&keepalive=yes&requiressl=yes&expire=1479048162&gir=yes&clen=20661065&lmt=1458206776513827&ipbits=0&key=yt6&itag=135&mime=video%2Fmp4&mv=m&mt=1479026465&ms=au&dur=256.222&upn=rwyIa1XWej0&mn=sn-uxaxjva0hc0n-nm4l&mm=31&source=youtube&initcwndbps=2535000&sparams=clen%2Cdur%2Cei%2Cgcr%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Ckeepalive%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Crequiressl%2Csource%2Cupn%2Cexpire&id=o-AMVWcHhaNHzNvRhDK3sB2JetK0vgYYMCBQU2hP8QA5B4&ei=gicoWPevDKOiigbozYOgBA&ip=2a02%3A2450%3A102e%3A34c%3Af3bb%3A173e%3Ac626%3A25f4&signature=6DB6EDD6D17997C6980575B214A252C2C59CD751.2197F9F70EC8AD1F984E786C6997211BC2E5BC10&ratebypass=yes
https://r6---sn-uxaxjva0hc0n-nm4l.googlevideo.com/videoplayback?gcr=de&pl=32&keepalive=yes&requiressl=yes&expire=1479048162&gir=yes&clen=4262139&lmt=1449599779353270&ipbits=0&key=yt6&itag=251&mime=audio%2Fwebm&mv=m&mt=1479026465&ms=au&dur=256.221&upn=rwyIa1XWej0&mn=sn-uxaxjva0hc0n-nm4l&mm=31&source=youtube&initcwndbps=2535000&sparams=clen%2Cdur%2Cei%2Cgcr%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Ckeepalive%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Crequiressl%2Csource%2Cupn%2Cexpire&id=o-AMVWcHhaNHzNvRhDK3sB2JetK0vgYYMCBQU2hP8QA5B4&ei=gicoWPevDKOiigbozYOgBA&ip=2a02%3A2450%3A102e%3A34c%3Af3bb%3A173e%3Ac626%3A25f4&signature=60C29FA627AF84187C0C7B52EC0DD81131D8D186.DDE9F0BFEA2BA966D69D0BC82A5418B33282F62B&ratebypass=yes
Video wird gesestartet
have a nice day ;)
(program exited with code: 0)
Press return to continue
---
Mir ist mittlerweile klar geworden, das die "have a nice day
" Meldung bedeutet, der OMXPlayer wurde beendet. Also vermutlich wird der Link so nicht angenommen, weil der Variablen der link doppelt zugeteilt wird.
Re: Anfänger - youtube-dl und omxplayer
Verfasst: Sonntag 13. November 2016, 10:17
von Sirius3
@snu-snu: warum importierst Du youtube_dl, wenn Du es doch als externes Programm aufrufst? Eine while-Schleife, die immer beim ersten Durchgang per sys.exit abgebrochen wird, ist ziemlich witzlos. Zeile 23 und 24 machen nichts. Wenn Du die URL nur einmal willst, dann nimm halt nur die erste:
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
import subprocess
def generate_video_url(url):
result = subprocess.check_output(['youtube-dl', '-g', url, '--restrict-filenames'])
return result.split()[0]
def main():
url = raw_input("paste URL and press return: ")
video_url = generate_video_url(url)
print "extracted URL:", video_url
subprocess.call(["omxplayer", "-o", "alsa", video_url])
if __name__ == '__main__':
main()
Re: Anfänger - youtube-dl und omxplayer
Verfasst: Sonntag 27. November 2016, 21:01
von snu-snu
besten Dank! Funktioniert so wunderbar. Die Idee hinter der Schleife war *.msu*-Endungen zu erkennen und als Stream wiederzugeben. Das sys.exit dort gelandet ist, war schlicht Verzweiflung und Unwissenheit
.