Raspberry: Youtube Video-Uploader via Cronjob – Nachtrag #2

Via Python kann man auf dem Raspberry mit dem youtube-uploader Programm Videos hochladen.
Da ich dies automatisch möchte, habe ich ein Script gebaut.

Nun prüft der Cronjob alle 15 Minuten, ob in einem Verzeichnis ein Video der Sorte mov, mp4, m2ts, .. liegt, lädt dieses zu youtube hoch und schickt mir eine E-Mail, wenn dies erledigt ist.

# Youtube Upload automatisch alle 15 min von 8-23 Uhr
*/15 8-22 * * * /bin/bash /home/user/scripts/youtube-upload.sh >/dev/null 2>&1


Das Shellscript: youtube-upload.sh (Ausführbar machen via chmod +x)

# Video Youtube.mov
# Zuerst die möglichen Dateinamen vordefinieren
declare -a arr=(“youtube” “youtube1” “youtube2” “youtube3”)
for NAME in “${arr[@]}”
do

# Dann die möglichen Endungen
declare -a arr2=(“mov” “mp4” “m2ts”)
for TYP in “${arr2[@]}”
do
file=”/media/usbstick/youtube-upload/$NAME.$TYP”
if [ -f “$file” ]
then

mv $file /media/usbstick/youtube-upload/youtube_uploading.$TYP
file=”/media/usbstick/youtube-upload/youtube_uploading.$TYP”

#/usr/bin/youtube_upload.py => Direkt auf die py da das Script als Cronjob ausgeführt wird

youtube-upload –email=eure.mail@gmail.com –password=”123456” –title=”Raspberry PI upload” –category=Sports –unlisted $file

mv $file /media/usbstick/youtube-upload/$(date +%Y-%m-%d_%H-%M-%S)_uploaded.$TYP

echo “$NAME.$TYP” | mail -s “Youtube Video hochgeladen” eure.mail@gmail.com
fi
done
done

Nachtrag #1

Mittlerweile habe ich ein besseres Script gefunden und erweitert.

Es prüft nach mp4 Dateien in einem definierten Ordner, nimmt den Dateinamen als Youtube Titel, lädt das Video hoch und verschiebt es unter uploaded.

sudo crontab -e:

*/30 7-23 * * * /home/user/scripts/youtube-upload.sh

nano youtube-upload.sh:

#!/bin/bash

#Quelle http://stackoverflow.com/questions/16374918/shell-file-parsing-to-automate-youtube-uploads

#Damit Python via “sudo crontab-e” geht muss das Script so aussehen
#*/30 7-23 * * * /home/user/scripts/youtube-upload.sh
if [ -e /media/usbstick/youtube-upload/*.mp4 ]
then
python –version
for file in /media/usbstick/youtube-upload/*.mp4 ; do

TIMEA=$(date +%H-%M-%S)

export title=$(basename “$file” “.mp4”)
echo $title “for” $file
description=$(grep “^$(basename “$file”)” desc | sed ‘s/.*.mp4 //’)

python /home/user/scripts/youtube_upload/youtube_upload.py –email=eure.mail@gmail.com –password=”123456” –title=”$title” –description=”Raspberry PI Upload” –category=Sports –unlisted “$file”

SIZE=$(du -h “$file”)
TIMEB=$(date +%H-%M-%S)

echo “Size: $SIZE”
echo “$SIZE – Upload Start $TIMEA – Upload Ende $TIMEB” | mail -s “Youtube Video hochgeladen” eure.mail@gmail.com
mv “$file” “/media/usbstick/youtube-upload/uploaded/

done
fi

Nachtrag #2

So sieht nun das neuste Ergebnis aus. Es benennt alle m2ts und mov Videos in mp4 um, lädt die Videos hoch, verschiebt sie und benennt sie um in den Ursprünglichen Namen. Außerdem (sollte das Video sehr groß sein) wird folgende Cronjob des Uploaders beendet, wenn ein aktiver Job läuft (sieht man an der activeupload.txt).

2015-09-16 YT Uploader

#!/bin/bash

videoquelle=”/media/usbstick/youtube-upload/
videoquelleuploaded=”/media/usbstick/youtube-upload/uploaded/

#Wenn aktiver Upload ist, dann abbrechen
#if [[ -f “$videoquelle”/activeupload.txt ]] ; then
if [[ -f “$videoquelle”/activeupload.txt ]] ; then
# echo ‘Abbruch – Aktiver Upload’
exit
fi

#Alle MOV und m2ts Dateien mit MP4 umbenennen
if [ -e “$videoquelle”/*.mov ]
then

for file in “$videoquelle”/*.mov ; do
mv “$file” “${file%.mov}.mov.mp4”
done
fi

if [ -e “$videoquelle”/*.m2ts ]
then

for file in “$videoquelle”/*.m2ts ; do
mv “$file” “${file%.m2ts}.m2ts.mp4”
done
fi

#Wenn kein Video zum UL vorhanden ist abbruch
for file in “$videoquelle”/*.mp4 ; do

if [[ ! -f $file ]]; then
# echo “Abbruch – Kein Video zum Upload vorhanden”
exit
fi
done

#Wenn Upload beginnen kann, erstelle ACTIVE UPLOAD Text
echo >> activeupload.txt
mv activeupload.txt $videoquelle

#Eigentliches Script
#Quelle http://stackoverflow.com/questions/16374918/shell-file-parsing-to-automate-youtube-uploads

#### CRONTAB ####
#*/30 7-23 * * * /home/user/scripts/youtube-upload.sh >/dev/null 2>&1
#### CRONTAB ####

python –version
for file in “$videoquelle”/*.mp4 ; do

TIMEA=$(date +%H-%M-%S)

export title2=$(basename “$file” “.mp4”)
export title1=$(basename “$title2” “.mov”)
export title=$(basename “$title1” “.m2ts”)

echo $title “for” $file
description=$(grep “^$(basename “$file”)” desc | sed ‘s/.*.mp4 //’)

START=$(date +%s);

#Für den Rückgabe-Link aus dem YT Upload
YOUTUBELINK=$(python /home/user/scripts/youtube_upload/youtube_upload.py –email=eure.mail@gmail.com –password=”123456” –title=”$title” –description=”Raspberry PI Upload” –category=Sports –unlisted “$file”)

END=$(date +%s);
#echo $((END-START)) | awk ‘{printf “%d:%02d:%02d”, $1/3600, ($1/60)%60, $1%60}’
DIFF=$(echo $((END-START)) | awk ‘{printf “%d:%02d:%02d”, $1/3600, ($1/60)%60, $1%60}’)

SIZE=$(du -h “$file”)
TIMEB=$(date +%H-%M-%S)

#Info Crontab TXT Upload Info für alle Uploads
# echo “Size: $SIZE”
echo “$SIZE – Upload Start $TIMEA – Upload Ende $TIMEB”

# Info via Mail pro Video
echo -e “Video Link: $YOUTUBELINK \n Upload Dauer: $DIFF \n \n Upload Start: $TIMEA Uhr – Ende: $TIMEB Uhr \n Größe: $SIZE ” | mail -s “Youtube Video ‘$title’ hochgeladen” eure.mail@gmail.com

mv “$file” $videoquelleuploaded

ACTIVEUPLOAD=”1″
done

#Wenn Uploads fertig sind, lösche ACTIVE UPLOAD TXT
if [ ! -z “$ACTIVEUPLOAD” ];
then
rm “$videoquelle”/activeupload.txt
fi

#ALLE MOV und m2ts zurück umbenennen
if [ -e “$videoquelleuploaded”/*.mov.mp4 ]
then

for file in “$videoquelleuploaded”/*.mov.mp4 ; do
mv “$file” “${file%.mov.mp4}.mov”
done
fi

if [ -e “$videoquelleuploaded”/*.m2ts.mp4 ]
then

for file in “$videoquelleuploaded”/*.m2ts.mp4 ; do
mv “$file” “${file%.m2ts.mp4}.m2ts”
done
fi

Paddy

Offenburger Naturfreund und IT'Ler. Immer auf der Suche, etwas Neues zu bäschdle ;-)

More Posts - Website

Follow Me:
TwitterFacebook

Ein Gedanke zu „Raspberry: Youtube Video-Uploader via Cronjob – Nachtrag #2

  1. fiverr seo

    Generally I don’t learn post on blogs, however I would like to say that this write-up very forced me to take a look at and do it! Your writing taste has been amazed me. Thank you, quite nice post.

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert