staging.inyokaproject.org

youtube-upload Befehl Verzeichniss Angabe

Status: Ungelöst | Ubuntu-Version: Ubuntu 17.10 (Artful Aardvark)
Antworten |

ubuntuufan

Anmeldungsdatum:
6. November 2017

Beiträge: 9

Hallo

ich arbeite gerade an einem Video Upload von time lapse videos. Dazu habe ich mir https://github.com/tokland/youtube-upload ausgesucht. Was mit folgendem Befehl gut funktioniert aber nur wenn die Videos auch im selben Ordner wie die Installation liegen.

youtube-upload --title="$(date "+%e-%b-%Y")" --privacy="private" $(date --date "-1 days" +'%e-%b-%Y').mp4

youtube-upload --title="$(date "+%e-%b-%Y")" --privacy="private" /home/pi/$(date --date "-1 days" +'%e-%b-%Y').mp4

Funktioniert nicht.

Wäre schön wenn mir einer helfen könnte. Ich versuche es schon sehr lange hinzubekommen.

Sobald ich den Befehl ferig habe kann ich mir dann ein Script schreiben für den FTP Upload.

Bearbeitet von ChickenLipsRfun2eat:

Bitte halte dich an die Forensyntax und verwende für Terminalausgaben den Codeblock!

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Herzlich willkommen!

Deine Anfrage ist unvollständig. Gut wäre zu wissen

  • was eigentlich der Fehler ist

  • wie die Dateien in dem Ordner heißen

ubuntuufan

(Themenstarter)

Anmeldungsdatum:
6. November 2017

Beiträge: 9

Der Fehler :

Using client secrets: /usr/local/share/youtube_upload/client_secrets.json
Using credentials file: /home/pi/.youtube-upload-credentials.json
Start upload: /home/pi/
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 178, in run_main
    video_id = upload_youtube_video(youtube, options, video_path, len(args), index)
  File "/usr/local/lib/python2.7/dist-packages/youtube_upload/main.py", line 140, in upload_youtube_video
    chunksize=options.chunksize)
  File "/usr/local/lib/python2.7/dist-packages/youtube_upload/upload_video.py", line 38, in upload
    resumable=True, mimetype="application/octet-stream")
  File "/usr/local/lib/python2.7/dist-packages/oauth2client/_helpers.py", line 133, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/googleapiclient/http.py", line 548, in __init__
    fd = open(self._filename, 'rb')
IOError: [Errno 21] Is a directory: '/home/pi/'

Die Datei heißt immer 05-Nov-2017.mp4 Aber vom Datum immer einen Tag Zurück. Das mit dem Befehl für das Automatische Datum funktionier ja schon. Das heißt es wird immer Nachts ein Video erstellt vom Vortag. Und das soll dann halt hochgeladen werden.

@ChickenLipsRfun2eat Danke.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

ubuntuufan schrieb:

Der Fehler :

Using client secrets: /usr/local/share/youtube_upload/client_secrets.json
Using credentials file: /home/pi/.youtube-upload-credentials.json
Start upload: /home/pi/

Das ist eindeutig: es wird der String "/home/pi/" als ein Argument übergeben. Mit dem kleinen Skript von meiner Benutzerseite sieht man auch sofort, was da schief geht:

1
2
3
4
5
6
7
$ args.sh youtube-upload --title="$(date "+%e-%b-%Y")" --privacy="private" /home/pi/$(date --date "-1 days" +'%e-%b-%Y').mp4
arg count: 5
arg[1]: 'youtube-upload'
arg[2]: '--title= 6-Nov-2017'
arg[3]: '--privacy=private'
arg[4]: '/home/pi/'
arg[5]: '5-Nov-2017.mp4'

Hier also auch! Man sieht, dass der Pfad und der Name der Datei getrennt werden. Das deutet auf Whitespace hin. Schauen wir weiter:

1
2
3
4
5
6
7
$ date --date "-1 days" +'%e-%b-%Y'
 5-Nov-2017
$ date --date "-1 days" +'%e-%b-%Y' | od -t x1c
0000000  20  35  2d  4e  6f  76  2d  32  30  31  37  0a
              5   -   N   o   v   -   2   0   1   7  \n
0000014
$ 

Siehe da, da ist ein Leerzeichen. Erste Lösung: den gesamten Dateinamen in doppelte Anführungsstriche. Das solltes Du auf jeden Fall machen, um solche Probleme zu verhindern und sicher zu stellen, dass der Name immer als ein Argument betrachtet wird. Aber: der Dateiname fängt nicht mit einem Leerzeichen an, sondern mit einer führenden Null. Du musst ihn also anders generieren:

1
2
$ date --date "-1 days" +'%d-%b-%Y'
05-Nov-2017

Also so:

1
youtube-upload --title="$(date '+%d-%b-%Y')" --privacy=private "/home/pi/$(date --date '-1 days' '+%d-%b-%Y').mp4"

(Ich habe noch überflüssige Quotes entfernt und andere durch einfache ersetzt.)

Das mit dem Befehl für das Automatische Datum funktionier ja schon.

Nicht ganz, denn Du hast das falsche Formatmuster genommen (s.o.).

ubuntuufan

(Themenstarter)

Anmeldungsdatum:
6. November 2017

Beiträge: 9

ganz großes Danke ! Funktioniert perfekt ! 👍 Damit haben sie mir echt sehr geholfen. Alleine hätte ich das nicht hinbekommen. Und gut erklärt haben sie es auch noch. Lehrne ich auch noch was.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

ubuntuufan schrieb:

ganz großes Danke !

Bittesehr.

Funktioniert perfekt ! 👍 Damit haben sie mir echt sehr geholfen. Alleine hätte ich das nicht hinbekommen. Und gut erklärt haben sie es auch noch.

Vielen Dank! Es ist gut zu wissen, wenn die Erklärung verständlich war.

Lehrne ich auch noch was.

Prima!

ubuntuufan

(Themenstarter)

Anmeldungsdatum:
6. November 2017

Beiträge: 9

Doch noch ein Problem ich brauche 9-Dec-2017.mp4 anstatt 09-Dec-2017.mp4. Das heißt es muss die Null am Anfang des Datums weg. Wie muss ich den Befehl jetzt ändern ?

date --date '-1 days' '+%d-%b-%Y'

Muss halt geändert werden.

Update habe doch selbst die Lösung gefunden:

date --date '-1 days' '+%-d-%b-%Y'

ubuntuufan

(Themenstarter)

Anmeldungsdatum:
6. November 2017

Beiträge: 9

Nächstes Problem: Die Datei heißt 9-Dec-2017.mp4. Anstatt 9-Dez-2017.mp4

Also der Monat ist Engl. nicht Deutsch.

Mal schauen wie man das anpassen muss.

Update Erledigt geht mit :

#!/bin/bash LANG=en_us_8859_1

oder gibt es noch eine direkte Änderung am Befehl ?

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4735

@ubuntuufan: Damit das funktioniert muss die entsprechende „locale“ installiert/konfiguriert sein. Ich würde in solchen Fällen eher LANG=C nehmen, weil das eigentlich immer funktionieren sollte.

Antworten |