Um Videos automatisch auf YouTube hochzuladen gibt es bei github ein Python Script (youtube-upload) von Tokland.
Damit ist es möglich Videos mit Metadaten direkt auf YouTube hochzuladen, beispielsweise mit einem Raspberry.
Aber auch jedem anderem System das Linux verwendet.
Bei rothlive.de verwende ich das Script für die von Picam erstellten Zeitraffer Videos.
Die Installation des Scriptes ist sehr einfach und schnell erledigt.
Dazu muss zuerst das Python Paketverwaltungsprogramm Pip installiert werden mit:
sudo apt-get install python-pip
Dies ist erforderlich weil die verwendeten Python Erweiterungen mit Pip installiert werden.
Anschließend die für das Script erforderlichen Erweiterungen:
sudo pip install --upgrade google-api-python-client progress
Um das Script herunterzuladen geben sie den Befehl:
wget https://github.com/tokland/youtube-upload/archive/master.zip
ein und entpacken die Zip Datei mit:
unzip master.zip
Zur Installation wechseln sie in das Verzeichnis der gerade entpackten Daten mit :
cd youtube-upload-master
und Starten die Installation mit :
sudo python setup.py install
Damit ist die eigentliche Installation abgeschlossen.
Um das Script zu verwenden sollten sie ein Script schreiben, das sie zu einem bestimmten Zeitpunkt per Cronjob ausführen lassen.
Dazu können sie ihre Video Namen entweder durch fortlaufende Nummern oder dem Datum versehen. Oder aber sie löschen jedes Video nach dem Upload automatisch.
Dazu wird ein YouTube Kanal benötigt.
Mehr zur Anmeldung eines YouTube Kanals unter :
https://rothlive.de/de/article/youtube-kanal-anmelden-anlegen-erstellen
Nach dem sie über Anmeldedaten für YouTube verfügen können sie das Script in der Konsole testen.
Dazu legen sie ein beliebiges Video im Ordner /home/pi/Video.mp4 ab.
Um den Upload zu aktivieren geben sie folgenden Befehl ein:
youtube-upload --title="Testname" --privacy="private" /home/pi/Video.mp4
Jetzt steht werden sie zur Eingabe eines Verifikationscode aufgefordert.
Dazu kopieren sie den Link aus der Konsole in ihren Browser. An welchem Gerät sie die Seite aufrufen ist unwichtig.
https://accounts.google.com/o/oauth2/auth?...
Nach dem sie sich angemeldet haben kommt es darauf an welches Brand Konto sie auswählen.
Dadurch entscheiden sie bei welchem YouTube Kanal der Video Upload erfolgt.
In dem sie die Berechtigung erteilen, erlauben sie dem Upload Script den Zugriff auf ihr YouTube Konto.
Den anschließend angezeigten Code Kopieren sie in die Konsole.
Sollte durch das Kopieren des Links die Eingabe abgebrochen worden sein geben sie den Befehlt einfach erneut ein.
Der Code ist weiterhin gültig.
Es beginnt direkt der Video Upload.
Nach Beendigung des Uploads erscheint der YouTube Link zum Video.
Die Vergabe der Berechtigung ist nur einmal erforderlich.
Es gibt scheinbar auch eine bessere Möglichkeit der Authentifizierung, dies hat in meinem Test leider nicht funktioniert.
https://github.com/tokland/youtube-upload#authentication
Nach dem sie erfolgreich die korrekte Funktion des Scriptes getestet haben, sind weitere Einstellungen durch Änderung des Befehls möglich.
Besonders wichtig derzeit bewirkt --privacy="private" das das Video nur ihnen zur Verfügung steht.
Andere Besucher können es nicht aufrufen.
Ändern sie später den Befehl in --privacy="public"
Die Berechtigung des Scriptes können sie bei Google einsehen und löschen in dem sie unter
https://myaccount.google.com auf Apps mit Kontozugriff klicken.
Wichtig wechseln sie vorher in das entsprechende Brand Konto.
Um die Berechtigung zu löschen klicken sie auf Apps verwalten. In dem sie auf die Jeweilige App Klicken erhalten sie weitere Informationen zu Freigabe und die Möglichkeit diese zu entfernen.
Video Upload per Cronjob starten
Den Upload Automatisch zu starten erledigten sie am besten über einen Cronjob.
Dazu erstellen sie ein Script in dem sie mit
Sudo nano youtube-upload.sh
den Editor öffnen.
Anfangs reicht wenn sie in das Script nur
#!/bin/bash
/usr/local/bin/youtube-upload --title="Testvideo" --privacy=public "/home/pi /Video.mp4"
Also einfach nur das ein Upload erfolgen kann.
Beispiel Script für den Späteren Einsatz für z.b Picam:
#!/bin/bash
LANG=en_us_8859_1 #Umstellung der Monatsname auf Englisch
# Upload YouTube
/usr/local/bin/youtube-upload --title="Timelapse / Zeitraffer Video vom $(date --date '-1 days' '+%d-%b-%Y')" --privacy=public "/home/public/picam/timelapse/$(date --date '-1 days' '+%-d-%b-%Y').mp4"
Um den Dateinamen automatisch nach dem Datum zu vergeben eignet sich der Date Befehl.
-1 days ist nötig weil im Falle eines Zeitraffer Videos der Upload erst nach Mitternacht erfolgt.
Der Date Befehl verwendet immer das Aktuelle Datum / Wochentag /Uhrzeit.
date --date '-1 days' '+%-d-%b-%Y'
date --date '-1 days' '+%d-%b-%Y'
Es gibt noch weitere Möglichkeiten den Befehl anzupassen.
https://github.com/tokland/youtube-upload#examples
Nach dem sie die Datei erstellt haben erzeugen sie den Cronjob mit:
sudo crontab -e
https://www.raspberrypi.org/documentation/linux/usage/cron.md
Und mit:
0 5 * * * bash /home/pi/youtube-upload.sh > /home/pi/cron.log 2>&1
Startet das Script Täglich um 5 Uhr und erzeigt eine Log Datei unter home/pi/cron.log.
Die Log Datei ist nötig zur Fehlersuche.
Empfehlung zum Testen den Cronjob alle 2 Minuten ausführen:
*/2 * * * * bash /home/pi/youtube-upload.sh > /home/pi/cron.log 2>&1
Außerdem müssen sie erneut den Verifikationscode bei Google eingeben. Wahrscheinlich weil der Cronjob andere Rechte auf dem System hat. Um an den Link zu kommen dient die Log Datei.
Die Logdatei enthält dann folgenden Code:
Using client secrets: /usr/local/share/youtube_upload/client_secrets.json
Using credentials file: /root/.youtube-upload-credentials.json
/usr/local/lib/python2.7/dist-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access /root/.youtube-upload-credentials.json: No such file or directory
warnings.warn(_MISSING_FILE_MESSAGE.format(filename))
Check this link in your browser: https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.upload+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&client_id=8567887554545-tir6ffgg5mdnfbougfrhlkehghghgrnh23dng9.apps.googleusercontent.com&access_type=offline
Enter verification code: Traceback (most recent call last):
File "/usr/local/bin/youtube-upload", line 10, in <module>
main.run()
File "/usr/local/lib/python2.7/dist-packages/youtube_upload/main.py", line 261, in run
sys.exit(lib.catch_exceptions(EXIT_CODES, main, sys.argv[1:]))
File "/usr/local/lib/python2.7/dist-packages/youtube_upload/lib.py", line 42, in catch_exceptions
fun(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/youtube_upload/main.py", line 255, in main
run_main(parser, options, args)
File "/usr/local/lib/python2.7/dist-packages/youtube_upload/main.py", line 174, in run_main
youtube = get_youtube_handler(options)
File "/usr/local/lib/python2.7/dist-packages/youtube_upload/main.py", line 160, in get_youtube_handler
get_code_callback=get_code_callback)
File "/usr/local/lib/python2.7/dist-packages/youtube_upload/auth/__init__.py", line 39, in get_resource
credentials = _get_credentials(flow, storage, get_code_callback)
File "/usr/local/lib/python2.7/dist-packages/youtube_upload/auth/__init__.py", line 32, in _get_credentials
return _get_credentials_interactively(flow, storage, get_code_callback)
File "/usr/local/lib/python2.7/dist-packages/youtube_upload/auth/__init__.py", line 19, in _get_credentials_interactively
code = get_code_callback(authorize_url)
File "/usr/local/lib/python2.7/dist-packages/youtube_upload/auth/console.py", line 13, in get_code
return input("Enter verification code: ")
EOFError: EOF when reading a line
Jetzt können sie anhand des Link den Code erhalten.
Um den Code einzugeben verwenden sie den Befehl:
sudo sh ./youtube-upload.sh
Damit starten sie ihr Script in der Konsole. Und geben den Code ein.
Anschließend sollte alles funktionieren.
In der Log Datei können sie den Upload verfolgen:
Using client secrets: /usr/local/share/youtube_upload/client_secrets.json
Using credentials file: /root/.youtube-upload-credentials.json
Start upload: /home/pi/Video.mp4
Video URL: https://www.youtube.com/watch?v=5bkF6ztgr9Bhxo
Sollte dort keine Video Adresse stehen ist dies weil das Video Doppelt hochgeladen wurde.
Neuen Kommentar hinzufügen