ubuntuusers.de

Youtube Videos als MP3 auf der Platte speichern

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

KarstenW.

Avatar von KarstenW.

Anmeldungsdatum:
27. Juni 2011

Beiträge: 208

Hallo,

habe mal ein einfaches Script geschrieben mit dem es möglich ist ein Video von Youtube durch Eingabe der URL und Angabe eines Namens als MP3 auf die Platte zu bringen.

Zwingend vorausgesetzt damit das Programm läuft, wird die aktuelle Version von Youtube-dl sowie ffmpeg und lame. Bevor man das Script ausführt muss man noch den Ordner "tubemp3" im HOME anlegen. Das Script ausführbar machen und mit doppelklick "Anwendung im Terminal starten" ausführen.

Schritt 1: Youtube Video URL eingeben. Man kann auch einfach den Link aus den Suchergebnissen nehmen, ohne die eigentliche Videoseite zu öffnen.

Schritt 2: Einen Namen für die MP3 Datei angeben. Man braucht nicht .mp3 dahintersetzen dies mach das Script automatisch.

Jetzt wird das Video temporär heruntergeladen, anschließend die Tonspur extrahiert und dann mit lame in mp3 gewandelt. Die temporären Dateien werden anschließend entfernt, so das nur noch die gewünschte MP3 im Ordner $HOME/tubemp3 übrig bleibt.

Bitte einfach mal testen und vielleicht ein Feedback dazu schreiben.

Hier das Script:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
echo ============================
echo  bash-Tube2mp3                       
echo  Auto: Karsten Weidenfeld 
echo  www.Bitdome.de           
echo ============================
echo
echo "Bitte geben Sie die Youtube Video URL ein:"
read url 
echo
echo "Wie soll die fertige mp3 Datei heissen:"
read name
youtube-dl -o ~/tubemp3/neu.flv "$url"
ffmpeg -i ~/tubemp3/neu.flv -vn ~/tubemp3/temp.wav
lame --preset 128 ~/tubemp3/temp.wav ~/tubemp3/"$name.mp3"
rm -rf ~/tubemp3/neu.flv
rm -rf ~/tubemp3/temp.wav
echo "Fertig"
sleep 3
exit 1

Viel Spaß Gruß Karsten

Jeanbarth

Avatar von Jeanbarth

Anmeldungsdatum:
19. April 2011

Beiträge: 205

Hi Karsten,

nettes Skript! Zwar gibts schon viele Internetseiten die einen die Videos in *.mp3 convertieren, aber so ein Skript hat schon immer was schönes eigenes.

Was hälst du von folgender Änderung?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/bash
while [ answer != "0" ] 
do
clear
echo ============================
echo  bash-Tube2mp3                       
echo  Auto: Karsten Weidenfeld 
echo  www.Bitdome.de           
echo ============================
echo
echo "1. Youtube Video downloaden"
echo "2. beenden"
read -p "Bitte wählen: " auswahl
	case $auswahl in 
"1") clear
echo "Bitte geben Sie die Youtube Video URL ein:"
read url 
echo
echo "Wie soll die fertige mp3 Datei heissen:"
read name
youtube-dl -o ~/tubemp3/neu.flv "$url"
ffmpeg -i ~/tubemp3/neu.flv -vn ~/tubemp3/temp.wav
lame --preset 128 ~/tubemp3/temp.wav ~/tubemp3/"$name.mp3"
rm -rf ~/tubemp3/neu.flv
rm -rf ~/tubemp3/temp.wav
echo "Fertig"
sleep 3
;;

"2") clear
break
;;

"*") break ;;
esac 
echo "Enter drücken um in das Hauptmenü zurückzukehren"
read key
done
exit 0

Der User kann mehrmals ein Video convertieren und hat ein kleines "Menü"

Gruß

-Jeanbarth

KarstenW.

(Themenstarter)
Avatar von KarstenW.

Anmeldungsdatum:
27. Juni 2011

Beiträge: 208

Hi Jeanbarth,

ich danke Dir für Dein Feedback und dafür das Du Dir die Mühe gemacht hast das Script zu erweitern, was mir sehr gut gefällt. Natürlich gibt es zahlreiche Webdienste die das anbieten, aber der Reiz war groß etwas eigenes zu machen. Das Script habe ich jetzt unter /usr/bin ohne .sh abgelegt und kann es jetzt systemweit über das Terminal mit y2mp3 aufrufen. Was mir bei Webdiensten auch schonmal aufgefallen ist, dort sieht man meistens nicht den Vorgang und wenn es Fehler gibt dann bekommt man oft keine Rückmeldung. Bei dem Script kann ich im Terminal verfolgen ob es richtig durchläuft und wenn es nicht mehr funktioniert weiss ich das ich warscheinlich eine neue Version von youtube-dl brauche weil Youtube wiedermal was geändert hat.

Gruß Karsten

Jeanbarth

Avatar von Jeanbarth

Anmeldungsdatum:
19. April 2011

Beiträge: 205

Hi,

konnte die Finger nicht davon lassen und wollte eigentlich die "Installation" der Pakete mit integrieren. Optisch ganz ansprechend und meines Wissens auch soweit okay, aber irgendwie funktioniert es nicht so ganz... Vielleicht kannst du ja nochmal drüberschauen... Sind das wirklich nur die 3 Pakete???

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/bin/bash
while [ answer != "0" ] 
do
clear
echo ============================
echo  bash-Tube2mp3                       
echo  Auto: Karsten Weidenfeld 
echo  www.Bitdome.de           
echo ============================
echo
echo "1. Installieren"
echo "2. Youtube Video downloaden"
echo "3. beenden"
read -p "Bitte wählen: " auswahl
	case $auswahl in 

"1") clear
echo "Um das Skript nutzen zu können, muss folgendes installiert sein:"
echo "1. Youtube-dl"
echo "2. ffmpeg"
echo "3. lame"
echo "Um entsprechendes zu installieren, bitte auswählen; 0 für alles"
read -p "Bitte wählen: " instwahl

if [ $instwahl = 0 ]; then
	sudo apt-get install Youtube-dl 
	sudo apt-get install ffmpeg
	sudo apt-get install lame
	echo "Es wurde alles installiert"
		else
if [ $instwahl = 1 ]; then
	sudo apt-get install Youtube-dl
	echo "Youtube-dl wurde installiert" 
		else
if [ $instwahl = 2 ]; then
	sudo apt-get install ffmpeg
	echo "ffmpeg wurde installiert"
		else
if [ $instwahl = 3 ]; then
	sudo apt-get install lame
	echo "lame wurde installiert"
		else
			clear
fi
fi
fi
fi
mkdir $HOME/tubemp3/
;;

"2") clear
echo "Bitte geben Sie die Youtube Video URL ein:"
read url 
echo
echo "Wie soll die fertige mp3 Datei heissen:"
read name
youtube-dl -o ~/tubemp3/neu.flv "$url"
ffmpeg -i ~/tubemp3/neu.flv -vn ~/tubemp3/temp.wav
lame --preset 128 ~/tubemp3/temp.wav ~/tubemp3/"$name.mp3"
rm -rf ~/tubemp3/neu.flv
rm -rf ~/tubemp3/temp.wav
echo "Fertig"
sleep 3
;;

"3") clear
break
;;

"*") break ;;
esac 
echo "Enter drücken um in das Hauptmenü zurückzukehren"
read key
done
exit 0

KarstenW.

(Themenstarter)
Avatar von KarstenW.

Anmeldungsdatum:
27. Juni 2011

Beiträge: 208

Die Sache ist folgendermaßen:

Die youtube-dl aus den Ubuntuquellen ist veraltet und lässt sich auch nicht updaten. Man muss die youtube-dl von der youtube-dl Homepage nehmen: http://rg3.github.com/youtube-dl/download.html und diese dann manuell in /usr/bin kopieren. Vorher am besten die alte Version mit sudo apt-get autoremove youtube-dl wieder deinstallieren. Mit der neuen youtube-dl sollte nun alles funktionieren.

Gruß Karsten

busfahrer

Avatar von busfahrer

Anmeldungsdatum:
9. April 2007

Beiträge: 3052

Hallo

hier ein paar Anmerkungen von mir.

  • 1. Ich glaube mich zu erinnern das youtube-dl in der aktuellen Version von Hause aus in *.mp3 konvertieren kann.

  • 2. Man könnte sich lame sparen und gleich mit ffmpeg in *.mp3 konvertieren.

  • 3. Es gibt zum einen elif und ich glaube da sind ein paar fi zu viel im Skript(Zeile 45-47)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
if [ $instwahl = 0 ]; then
	sudo apt-get install Youtube-dl 
	sudo apt-get install ffmpeg
	sudo apt-get install lame
	echo "Es wurde alles installiert"
		else
elif [ $instwahl = 1 ]; then
	sudo apt-get install Youtube-dl
	echo "Youtube-dl wurde installiert" 
		else
elif [ $instwahl = 2 ]; then
	sudo apt-get install ffmpeg
	echo "ffmpeg wurde installiert"
		else
elif [ $instwahl = 3 ]; then
	sudo apt-get install lame
	echo "lame wurde installiert"
		else
			clear
fi

Gruß...busfahrer

Jeanbarth

Avatar von Jeanbarth

Anmeldungsdatum:
19. April 2011

Beiträge: 205

Hi Busfahrer,

ja mir ist elif bekannt. Aber bei mir wird dann in der Ausgaben folgendes angezeigt:

1
youtube.sh: 31: Syntax error: "elif" unexpected

darum habe ich nur if benutzt und muss demnach auch die fi benutzen... Weiß nicht warum die Ausgabe bei mir erscheint, habe darum den "kurzen und einfachen" Weg genommen und die if benutzt.

Prinzipiell ist es doch egal oder?

Naja zu deinen anderen Anmerkungen kann ich leider nichts sagen... Da bin ich nicht im Thema ☺

busfahrer

Avatar von busfahrer

Anmeldungsdatum:
9. April 2007

Beiträge: 3052

Hallo

ich habe deinen Codeausschnitt per copy&paste genommen. Sehe jetzt gerade das du da in jedem if Zweig ein else drin hast. Nimm die mal raus, dann nehme ich an das es funktioniert.

if [ $instwahl = 0 ]; then
	sudo apt-get install Youtube-dl 
	sudo apt-get install ffmpeg
	sudo apt-get install lame
	echo "Es wurde alles installiert"
		else

So sollte es gehen

if [ $instwahl = 0 ]; then
	sudo apt-get install Youtube-dl 
	sudo apt-get install ffmpeg
	sudo apt-get install lame
	echo "Es wurde alles installiert"
elif [ $instwahl = 1 ]; then
	sudo apt-get install Youtube-dl
	echo "Youtube-dl wurde installiert" 
elif [ $instwahl = 2 ]; then
	sudo apt-get install ffmpeg
	echo "ffmpeg wurde installiert"
elif [ $instwahl = 3 ]; then
	sudo apt-get install lame
	echo "lame wurde installiert"
	clear
fi

Gruß...busfahrer

Jeanbarth

Avatar von Jeanbarth

Anmeldungsdatum:
19. April 2011

Beiträge: 205

👍

Kompliziertes kann soooo einfach sein ☺

Danke!

KarstenW.

(Themenstarter)
Avatar von KarstenW.

Anmeldungsdatum:
27. Juni 2011

Beiträge: 208

Wie bereits erwähnt funktioniert youtube-dl aus den Quellen nicht da diese veraltet ist, liegt daran das Youtube schon ein paar mal was an der Seite geändert hat. Die youtube-dl soll mp3 erzeugen können, habe ich gehört aber hab es noch nicht hinbekommen deswegen bin ich den Weg über Lame gegangen ☺

Gruß Karsten

Jeanbarth

Avatar von Jeanbarth

Anmeldungsdatum:
19. April 2011

Beiträge: 205

Hi,

so, nun müsste alles gehen ☺

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/bin/bash
while [ answer != "0" ] 
do
clear
echo ============================
echo  bash-Tube2mp3                       
echo  Auto: Karsten Weidenfeld 
echo  www.Bitdome.de           
echo ============================
echo
echo "1. Installieren"
echo "2. Youtube Video downloaden"
echo "3. beenden"
read -p "Bitte wählen: " auswahl
	case $auswahl in 

"1") clear
echo "Um das Skript nutzen zu können, muss folgendes installiert sein:"
echo "1. Youtube-dl"
echo "2. ffmpeg"
echo "3. lame"
echo "Um entsprechendes zu installieren, bitte auswählen; 0 für alles"
read -p "Bitte wählen: " instwahl

if [ $instwahl = 0 ]; then
	sudo apt-get remove youtube-dl
	sudo wget https://github.com/rg3/youtube-dl/raw/2011.09.30/youtube-dl -O /usr/bin/youtube-dl
	sudo chmod +x /usr/bin/youtube-dl
	sudo cp /usr/bin/youtube-dl /usr/local/bin
	sudo apt-get install ffmpeg
	sudo apt-get install lame
	clear
	echo "Es wurde alles installiert"
elif [ $instwahl = 1 ]; then
	sudo apt-get remove youtube-dl
	sudo wget https://github.com/rg3/youtube-dl/raw/2011.09.30/youtube-dl -O /usr/bin/youtube-dl
	sudo chmod +x /usr/bin/youtube-dl
	sudo cp /usr/bin/youtube-dl /usr/local/bin
	clear
	echo "Youtube-dl wurde installiert" 
elif [ $instwahl = 2 ]; then
	sudo apt-get install ffmpeg
	clear
	echo "ffmpeg wurde installiert"
elif [ $instwahl = 3 ]; then
	sudo apt-get install lame
	clear
	echo "lame wurde installiert"
fi
mkdir $HOME/tubemp3
;;

"2") clear
if [ -d $HOME/tubemp3 ]; then
clear
else
mkdir  $HOME/tubemp3
fi
echo "Bitte geben Sie die Youtube Video URL ein:"
read url 
echo
echo "Wie soll die fertige mp3 Datei heissen:"
read name
youtube-dl -o ~/tubemp3/neu.flv "$url"
ffmpeg -i ~/tubemp3/neu.flv -vn ~/tubemp3/temp.wav
lame --preset 128 ~/tubemp3/temp.wav ~/tubemp3/"$name.mp3"
rm -rf ~/tubemp3/neu.flv
rm -rf ~/tubemp3/temp.wav
echo ""
sleep 3
;;

"3") clear
break
;;

"*") break ;;
esac 
echo "Enter drücken um in das Hauptmenü zurückzukehren"
read key
done
exit 0

Gruß

-Jeanbarth

youtube.sh (1.9 KiB)
Download youtube.sh

KarstenW.

(Themenstarter)
Avatar von KarstenW.

Anmeldungsdatum:
27. Juni 2011

Beiträge: 208

Denkste, es gibt noch einen Fehler. Wenn ich im Installationsmenü bin und einfach nur die Entertaste drücke oder was anderes eingebe bricht das Script mit ner Fehlermeldung ab. Im Prinzip wären 2 voneinander getrennte Scripte sinnvoller, 1x Installations- Script und dann das Haupt- Script. Aber ich arbeite noch daran, war nur schonmal vorab um das ganze anzustoßen.

Gruß Karsten

Jeanbarth

Avatar von Jeanbarth

Anmeldungsdatum:
19. April 2011

Beiträge: 205

N'Abend,

hab ich jetzt auch bemerkt. Ersetze 1) mit folgendem

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
"1") clear
echo "Um das Skript nutzen zu können, muss folgendes installiert sein:"
echo "1. Youtube-dl"
echo "2. ffmpeg"
echo "3. lame"
echo "4. Zurück ins Hauptmenü"
echo "Um entsprechendes zu installieren, bitte auswählen; 0 für alles"
read -p "Bitte wählen: " instwahl

if [ $instwahl = 0 ]; then
	sudo apt-get remove youtube-dl
	sudo wget https://github.com/rg3/youtube-dl/raw/2011.09.30/youtube-dl -O /usr/bin/youtube-dl
	sudo chmod +x /usr/bin/youtube-dl
	sudo cp /usr/bin/youtube-dl /usr/local/bin
	sudo apt-get install ffmpeg
	sudo apt-get install lame
	clear
	echo "Es wurde alles installiert"
elif [ $instwahl = 1 ]; then
	sudo apt-get remove youtube-dl
	sudo wget https://github.com/rg3/youtube-dl/raw/2011.09.30/youtube-dl -O /usr/bin/youtube-dl
	sudo chmod +x /usr/bin/youtube-dl
	sudo cp /usr/bin/youtube-dl /usr/local/bin
	clear
	echo "Youtube-dl wurde installiert" 
elif [ $instwahl = 2 ]; then
	sudo apt-get install ffmpeg
	clear
	echo "ffmpeg wurde installiert"
elif [ $instwahl = 3 ]; then
	sudo apt-get install lame
	clear
	echo "lame wurde installiert"
elif [ $instwahl = 4 ]; then
	clear
elif [ $instwahl = " " ]; then
	clear
fi
if [ -d $HOME/tubemp3 ]; then
clear
else
mkdir  $HOME/tubemp3
fi
;;

s. Anhang ☺

Gruß

Tobi

youtube.sh (2.1 KiB)
Download youtube.sh

KarstenW.

(Themenstarter)
Avatar von KarstenW.

Anmeldungsdatum:
27. Juni 2011

Beiträge: 208

Gratulation so läuft es einwandfrei:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/bin/bash
while [ answer != "0" ] 
do
clear
echo ============================
echo  bash-Tube2mp3                       
echo  Autor: Karsten Weidenfeld 
echo  www.Bitdome.de           
echo ============================
echo
echo "1. Installieren"
echo "2. Youtube Video downloaden"
echo "3. beenden"
read -p "Bitte wählen: " auswahl
	case $auswahl in 

"1") clear
echo "Um das Skript nutzen zu können, muss folgendes installiert sein:"
echo "1. Youtube-dl"
echo "2. ffmpeg"
echo "3. lame"
echo "4. Zurück ins Hauptmenü"
echo "Um entsprechendes zu installieren, bitte auswählen; 0 für alles"
read -p "Bitte wählen: " instwahl

if [ $instwahl = 0 ]; then
	sudo apt-get remove youtube-dl
	sudo wget https://github.com/rg3/youtube-dl/raw/2011.09.30/youtube-dl -O /usr/bin/youtube-dl
	sudo chmod +x /usr/bin/youtube-dl
	sudo cp /usr/bin/youtube-dl /usr/local/bin
	sudo apt-get install ffmpeg
	sudo apt-get install lame
	clear
	echo "Es wurde alles installiert"
elif [ $instwahl = 1 ]; then
	sudo apt-get remove youtube-dl
	sudo wget https://github.com/rg3/youtube-dl/raw/2011.09.30/youtube-dl -O /usr/bin/youtube-dl
	sudo chmod +x /usr/bin/youtube-dl
	sudo cp /usr/bin/youtube-dl /usr/local/bin
	clear
	echo "Youtube-dl wurde installiert" 
elif [ $instwahl = 2 ]; then
	sudo apt-get install ffmpeg
	clear
	echo "ffmpeg wurde installiert"
elif [ $instwahl = 3 ]; then
	sudo apt-get install lame
	clear
	echo "lame wurde installiert"
elif [ $instwahl = 4 ]; then
	clear
elif [ $instwahl = " " ]; then
	clear
fi
if [ -d $HOME/tubemp3 ]; then
clear
else
mkdir  $HOME/tubemp3
fi
;;

"2") clear
if [ -d $HOME/tubemp3 ]; then
clear
else
mkdir  $HOME/tubemp3
fi
echo "Bitte geben Sie die Youtube Video URL ein:"
read url 
echo
echo "Wie soll die fertige mp3 Datei heissen:"
read name
youtube-dl -o ~/tubemp3/neu.flv "$url"
ffmpeg -i ~/tubemp3/neu.flv -vn ~/tubemp3/temp.wav
lame --preset 128 ~/tubemp3/temp.wav ~/tubemp3/"$name.mp3"
rm -rf ~/tubemp3/neu.flv
rm -rf ~/tubemp3/temp.wav
echo ""
sleep 3
;;

"3") clear
break
;;

"*") break ;;
esac 
echo "Enter drücken um in das Hauptmenü zurückzukehren"
read key
done
exit 0

Gruß Karsten

busfahrer

Avatar von busfahrer

Anmeldungsdatum:
9. April 2007

Beiträge: 3052

Hallo

einen hab ich noch für euch. Was für einen Sinn hat es denn mit

sudo wget https://github.com/rg3/youtube-dl/raw/2011.09.30/youtube-dl -O /usr/bin/youtube-dl

youtube-dl nach /usr/bin/youtube-dl runter zu laden umd es anschließend mit

sudo cp /usr/bin/youtube-dl /usr/local/bin

nach /usr/local/bin zu kopieren und es 2 mal auf dem Rechner zu haben. Da wäre es doch sicher klüger es direkt nach /usr/local/bin runter zu laden.

Gruß....busfahrer

Antworten |