Cronjob youtube-upload

  • Hallo

    ich habe https://github.com/tokland/youtube-upload installiert und möchte das jetzt per Cronjob ausführen.

    Dazu habe ich mit

    Code
    1. crontab -l

    den Cronjob erstellt

    */5 * * * * bash /home/pi/youtube-upload.sh


    Das Problem ist es passiert nichts.

    Shell-Script
    1. #!/bin/bash
    2. # Upload Youtube
    3. youtube-upload --title="$(date '+%d-%b-%Y')" --privacy=private "/home/pi/$(date --date '-1 days' '+%d-%b-%Y').mp4"

    Habe ich in der .sh Datei.

    Wenn ich einen Befehl wie mkdir ubuntu einfüge zum test, wird der Ordner erstellt.

    Also wird der Cronjob ausgeführt.


    Wenn ich die Datei mit sudo sh ./youtube-upload.sh in der Konsole ausführe kommt beim ersten Mal ganz normal Check this link in your browser: https://accounts.google.com und man gibt den Code ein.


    Oder wie kann ich das anders ausführen bzw die Authentication erledigen ?

    Es steht zwar dort was das man sich bei Google anmelden muss usw aber da finde ich mich nicht zurrecht.

  • Doku lesen ist keine Alernative?

    Quote

    You'll see that there is no email/password options. Instead, the Youtube API uses OAuth 2.0 to authenticate the upload. The first time you try to upload a video, you will be asked to follow a URL in your browser to get an authentication token. If you have multiple channels for the logged in user, you will also be asked to pick which one you want to upload the videos to. You can use multiple credentials, just use the option --credentials-file. Also, check the token expiration policies.

    The package includes a default client_secrets.json file. If you plan to make a heavy use of the script, please create and use your own OAuth 2.0 file, it's a free service. Steps:

    • Go to the Google console.
    • Create project.
    • Side menu: APIs & auth -> APIs
    • Top menu: Enabled API(s): Enable all Youtube APIs.
    • Side menu: APIs & auth -> Credentials.
    • Create a Client ID: Add credentials -> OAuth 2.0 Client ID -> Other -> Name: youtube-upload -> Create -> OK
    • Download JSON: Under the section "OAuth 2.0 client IDs". Save the file to your local system.
    • Use this JSON as your credentials file: --client-secrets=CLIENT_SECRETS

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

  • Ja habe ich.

    Nur damit kenne ich mich halt nicht aus.

    Und die Beschreibung passt halt nicht ganz auf die Aktuelle Google Seite.

    Und wenn ich so einen code habe wie muss dann der Befehl aussehen ?

    Kann man den Cronjob nicht einfach anpassen das er wie in der Konsole ausgeführt wird ? Weil das funktioniert ja direkt.

  • Ein stückchen weiter unten auf der github seite ist doch sogar ein umfangreiches Beispiel


    Quote
    • Upload a video with extra metadata, with your own client secrets and credentials file, and to a playlist (if not found, it will be created):

    Alles was du nicht brauchst, kannst du ach weglassen. Wie man die secret Datei erstellt hab ich ja schon zitiert. Bist du dem Link gefolgt, welcher beim ersten hochlade Versuch angezeigt wurde?

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

  • Ja dann kommt nach dem Link zum Anmelden.

    Und dann ein code den man in die Konsole Kopiert und Enter Drückt und der Upload startet.


    Der gleiche Befehl im Cronjob geht aber nicht.


    Kan man irgendwie ein Log vom Cronjob erstellen wie die Ausgabe bei der Konsole ?

    Vieleicht zeigt er mir ja dann den Link an.

  • Ok ich habe jetzt die Daten von Google.

    Aber youtube-upload --title="$(date '+%d-%b-%Y')" --privacy=private --credentials-file=client_secrets.json "/home/public/picam/timelapse/$(date --date '-1 days' '+%d-%b-%Y').mp4"

    funktioniert nicht.


    Ich habe halt das --credentials-file=client_secrets.json ergäntzt.

  • und in der client_secrets.json (die gleichen Pfad wie dein Script liegt) steht auch das richtige drin?

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

  • So sieht das aus.

  • Sonst halt ohne die Datei geht es aber eben nicht als Cronjob :

    Quote

    /usr/local/share/youtube_upload $ youtube-upload --title="$(date '+%d-%b-%Y')" --privacy=private "/home/public/picam/timelapse/$(date --date '-1 days' '+%d-%b-%Y').mp4" Using client secrets: /usr/local/share/youtube_upload/client_secrets.json

    Using credentials file: /home/pi/.youtube-upload-credentials.json

    Start upload: /home/public/picam/timelapse/17-Nov-2017.mp4

    100% |############################################################################################################################################################################################| 790.8 KiB/s

    Video URL: https://www.you tube.com/watch?v=5trefd

  • Hat sich erledigt

    /usr/local/bin/youtube-upload


    als Befehl funktioniert.

    Nach dem ich mit

    /home/pi/cron.log 2>&1

    alles geloggt habe konnte ich den Fehler suchen.

    Und wieder was gelernt.


    Ist nur schade wenn man so lange suchen muss weil man sich noch nicht so gut mit Linux auskennt.



  • Ist nur schade wenn man so lange suchen muss weil man sich noch nicht so gut mit Linux auskennt.

    Jeder fängt irgendwann an und dass man nicht alles aufeinmal weiß ist klar.


    Wärst du als Kind mit Linux aufgewachsen, würden wohl Windows lange Suchzeiten verursachen (denk ich mir mal)

    Vorallem denke ich, wäre ich mit Linux aufgewachen, hätte ich kein Windows:conf: