Mit Python rechnen
-
Publish3r -
23. Dezember 2017 um 12:54 -
Unerledigt
-
-
-
-
-
Dass scheint aber immer noch nicht zu wollen.
Das ist aber eine vage Aussage. Gibt es denn eine Fehlermeldung oder ähnliches? Was soll denn dabei herauskommen?
-
-
Um mein Vorhaben mal genauer zu beschreiben.
Ich möchte gerne per PVR IPTV Simple Aufnahmen starten.
Dies ist ja von Haus aus nicht möglich, also habe ich:1. Den Record Button in C:\Program Files\Kodi\addons\skin.estuary\xml\VideoOSD.xml umgeändert.
Python<control type="radiobutton" id="606"> <include content="OSDButton"> <param name="texture" value="osd/fullscreen/buttons/record.png"/> </include> <onclick>XBMC.RunScript(special://home/userdata/ffmpeg.py)</onclick> </control>
2. ffmpeg.py liest die m3u aus PVR Simple ein.
Anhand von zahl = xbmc.getInfoLabel('VideoPlayer.ChannelNumberLabel') wird der aktuelle Channel ermittelt, dann muss der eine + 2 bekommen, wege dem Zeilenunterschied in der m3u. // Das funktioniert ja noch nicht richtig.Python
Alles anzeigents = time.time() date = datetime.datetime.fromtimestamp(ts).strftime('%d.%m.%Y') time = datetime.datetime.fromtimestamp(ts).strftime('%H.%M') streamurl == xbmc.getInfoLabel('VideoPlayer.ChannelNumberLabel') name = 'Aufnahme_vom_'+date+'_um_'+time+'_Uhr' def start(): url = 'http://....m3u' req = urllib2.Request(url) req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0') response = urllib2.urlopen(req) link = response.read() lines = link.splitlines() i = int(streamurl) + 2 stream = lines[i] child = subprocess.Popen('C:\Users\TV\AppData\Roaming\Kodi\userdata\mkv.bat ' +stream+ ' ' +name+ '.mkv') rc = child.wait() sys.modules.clear() start()
3. Dann wird ein .bat File ausgeführt. Das .bat File startet ffmpeg und somit die Aufnahme.Code@echo off set input=%1 set name=%2 start /d "C:\Users\TV\AppData\Roaming\Kodi\userdata\" ffmpeg.exe -y -i "%input%" -c:v copy -c:a copy "C:\Users\TV\Videos\Aufnahmen\%name%" &
Wie gesagt, funktioniert alles, nur ich bekomme diese Rechnerei mit + 2 nicht hin.
Edit:
Man hätte auch infolabel Player.Filenameandpath nehmen können, dann würde die rechnerei wegfallen, aber das spuckt ja nur nur eine pvr:// adresse aus. Damit kann FFMPEG nichts anfangen. -
Hängt es jetzt nur am Protokoll der Adresse?
-
-
Ich muss die Stream Adresse irgendwie ausgelesen bekommen, daran scheitert es.
Entweder:
url = xbmc.getInfoLabel('Player.Filenameandpath')
print url
// Ergibt eine pvr://adresse.pvr - Damit kann ffmpeg nichts anfangen.Oder:
m3u URL Zeile für Zeile auslesen und mittels
zahl = xbmc.getInfoLabel('VideoPlayer.ChannelNumberLabel') + 2print zeile[zahl]
Beides bekomme ich nicht hin.
Setze ich allerdings print zeile[3] ohne den Rechnebefehl funktioniert es alles.
Also mache ich ja beim Rechnen irgendwas falsch.
-
Ok, so funktioniert es schonmal halb:
Python
Alles anzeigents = time.time() date = datetime.datetime.fromtimestamp(ts).strftime('%d.%m.%Y') time = datetime.datetime.fromtimestamp(ts).strftime('%H.%M') streamurl = xbmc.getInfoLabel('VideoPlayer.ChannelNumberLabel') name = 'Aufnahme_vom_'+date+'_um_'+time+'_Uhr' url = 'http://.....m3u' req = urllib2.Request(url) req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0') response = urllib2.urlopen(req) link = response.read() lines = link.splitlines() i = int(streamurl) + 2 stream = lines[i] child = subprocess.Popen('C:\Users\Chris\AppData\Roaming\Kodi\userdata\mkv.bat ' +stream+ ' ' +name+ '.mkv') rc = child.wait() sys.modules.clear()
Jetzt stimmt aber trotzdem irgendwas mit dem Zeilenoffset nicht. Lese ich die m3u falsch aus? -
-
-
Dann musst du die () anders setzen
-
-
Habs hinbekommen. Klappt jetzt alles.
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!