Siduction Forum

Siduction Forum => Scripting & Kernelhacking => Topic started by: dieres on 2011/06/01, 18:27:47

Title: dateinamen in script verändern
Post by: dieres on 2011/06/01, 18:27:47
moin,

durch den Wiki Artikel über youtube download habe ich mir jetzt selbst ein script gebastelt, nur das zusammenbasteln des dateinamens funktioniert scheinbar, ist aber sicher unnötig kompliziert. Hab es aus dem Artikel abgeschaut, und nicht nur für *.flv sondern jetzt auch für *.mp4 erweitert.

#!/bin/sh
basename=$(basename $0)  # ie this is the name of the script that's being called
TMP="$(mktemp -d -p /tmp/ $basename.XXXXXX || exit 1)"                          
cd $TMP  
URL="$1"
filename="$(youtube-dl -t --get-filename "$URL")"
#echo "$filename"
youtube-dl -t "$URL"

Video="$filename"
Output="${Video%-*flv}"
Output2="${Output%-*mp4}.mp3"
#Output2="${Output%-*mp4}.ogg"
echo konvertiere "$Video" zu "$Output2"

ffmpeg -i "$Video" -ab 192k -ar 44100 "$Output2"
#für ogg: ffmpeg -i "$Video" -aq 60 -nv "$Output2"
mv "$Output2" ~/Desktop
rm -rf $TMP

echo mp3 Konvertierung beendet
#echo ogg Konvertierung beendet


Abgesehen davon das ich die rot unterlegten Zeilen von der Syntax her nicht wirklich verstehe, sollte das doch auch in einer Zeile mit einer Variablen gehen, oder ?
Wer kann mir hier Nachhilfe geben ?

Das rot einfärben des eines Textteil in einer codebox ist ja schonmal schiefgegangen. Es waren die Zeilen mit Output und Output2.

Ich hab dann eine Verknüpfung zu dem script unter /usr/local/bin auf den Desktop erstellt, dort hinter den Befehl %U gehängt, in den erweiterten Programmeinstellungen
"in Terminal ausführen" und "nach Programmende geöffnet lassen" angehakt.
Jetzt kann ich aus iceweasel die adresse einfach auf die Verknüpfung ziehen und eine Weile später erscheint das fertige mp3(ogg) auf dem desktop.
Title: dateinamen in script verändern
Post by: hefee on 2011/06/01, 18:46:43
naja es ist etwas das problem, das ich den Aufbau des Dateinamen den youtube-dl rausgibt kenne. Soweit ich von deinem Skript vermute ist es blalba-*mp4-*flv. Dann kannst du das durch das ersetzen:


Output2="${Video%-*mp4-*flv}.mp3"

das % sagt, danach kommt ein regex und versuche ihn möglichst weit hinten anzuwenden, der passenden Teil soll dann abgeschniten werden.
Title: dateinamen in script verändern
Post by: dieres on 2011/06/02, 02:11:42
der AusgansName ist entweder "Titel-file.mp4"  oder "Titel-file.flv"
und für beide Fälle soll "Titel.mp3" daraus werden.
Title: dateinamen in script verändern
Post by: hefee on 2011/06/02, 11:35:18
Dann entweder ungenauer mit bash Komandos (interessiert sich nicht mehr für die konkrete Endung):


Output2="${Video%-*}.mp3"


oder halt genauer per sed:


Output2=`echo "Video"|sed -e 's/-.*\(mp4\|flv\)$/.mp3/g'`

[/code]
Title: dateinamen in script verändern
Post by: dieres on 2011/06/02, 11:42:58
Quote from: "hefee"Dann entweder ungenauer mit bash Komandos (interessiert sich nicht mehr für die konkrete Endung):


Output2="${Video%-*}.mp3"


wenn in "Titel" schon ein "-" existiert macht das trotzdem nix, weil von hinten nach "-" gesucht wird, richtig ?

Rein interessehalber: wo finde ich denn übersichtlich ne deutsche Zusammenstellung der tringbearbeitungsmöglichkeiten im Netz?

Edit:
habe folgendes gefunden, aber das % Zeichen wird dort nicht erklärt. Aber Du hast mir jaschon kurz beschrieben was das macht.

http://linuxseiten.kg-it.de/index.php?index=bash_regexp#bash_regexp
Title: dateinamen in script verändern
Post by: hefee on 2011/06/02, 12:05:20
Puh, deutsch weiß ich jetzt nichts.
Ich schaue eigentlich immer im Advanced Bash Scripting nach (Auch als debian Paket abs-guide ) oder suche bei google.

Quotewenn in "Titel" schon ein "-" existiert macht das trotzdem nix, weil von hinten nach "-" gesucht wird, richtig ?
genau. Wenn dies ein Problem wäre hättest du es auch schon mit deinen Varianten. Bei der sed Variante ist dies jedoch ein Problem, weil sed versuch möglichst viele Zeichen in .* zu reinzubringen:


Output2=`echo "Video"|sed -e 's/-\[^-\]*\(mp4\|flv\)$/.mp3/g'`
Title: dateinamen in script verändern
Post by: dieres on 2011/06/02, 12:09:10
Danke erstmal, hab jetzt ne Menge Neues gelernt. Aber wie immer, tun sich sicher bald neue Fragen auf.