Raspberry YouTube Video Upload Installieren Cronjob

Veröffentlicht am: Di, 27/02/2018 - 04:09 Von: Markus

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

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.

Eingeschränktes HTML

  • Zulässige HTML-Tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • HTML - Zeilenumbrüche und Absätze werden automatisch erzeugt.
  • Website- und E-Mail-Adressen werden automatisch in Links umgewandelt.