Welcome, Guest. Please login or register.
Did you miss your activation email?

Author Topic: [DE] dateinamen in script verändern  (Read 7490 times)

Offline dieres

  • User
  • Posts: 790
[DE] dateinamen in script verändern
« 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.

Code: [Select]
#!/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.

hefee

  • Guest
dateinamen in script verändern
« Reply #1 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:

Code: [Select]

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.

Offline dieres

  • User
  • Posts: 790
dateinamen in script verändern
« Reply #2 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.

hefee

  • Guest
dateinamen in script verändern
« Reply #3 on: 2011/06/02, 11:35:18 »
Dann entweder ungenauer mit bash Komandos (interessiert sich nicht mehr für die konkrete Endung):

Code: [Select]

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


oder halt genauer per sed:

Code: [Select]

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

[/code]

Offline dieres

  • User
  • Posts: 790
dateinamen in script verändern
« Reply #4 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):

Code: [Select]

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

hefee

  • Guest
dateinamen in script verändern
« Reply #5 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.

Quote
wenn 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:

Code: [Select]

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

Offline dieres

  • User
  • Posts: 790
dateinamen in script verändern
« Reply #6 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.