• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Kde Kontextmenü-Erweiterung

flueken

Newbie
Hi, ich möchte gern mein KDE Konstextmenü erweitern, aber habe dabei ein Problem.
Vorweg erstmal die Ausgangslage:
Suse 10.0, KDE

Diese Datei habe ich erstellt
/opt/kde3/share/apps/konqueror/servicemenus/mp3-index.desktop
Inhalt:
[Desktop Entry]
Actions=Makem3u
Icon=Juk
ServiceTypes=application/ogg,audio/vorbis,audio/x-mp3,audio/x-flac,audio/x-oggflac,audio/x-musepack

[Desktop Action Makem3u]
Exec=/bin/indexmp3.sh "%d"
Icon=kfm
Name=Make m3u
Name[de]=m3u erstellen

Das fügt meine Option dem Kontextmenü hinzu
Das Shellscript ist dieses:
#! /bin/sh
# Erstellt eine MP3 playlist
#
#
# August 2006
#cd $1
#echo $1 >> $1/'00 Playlist.m3u'
#pwd >> $1/'00 Playlist.m3u'

ls -1 $1\*.??3 >> $1\'00 Playlist.m3u'

#echo $1 >> '00.txt'
#ls -1 *.??3 >> '00.txt'

Problem:
Wenn ich auf eine im Konqueror rechts auf eine MP3-Datei klicke bekomme ich wie gewünscht meinen Menüeintrag. Wenn ich dann auf den Menüeintrag klicke, dann erstellt der mir aber nicht immer meine "00 Playlist.m3u" Datei. Wenn der Pfad z.B. "\music\Interpret xy\..." lautet, dann sthört den ls-Befehl dabei die Leerstelle zwischen "Interpret" und "xy". Ein cd zuvor in das Verzeichnis geht aus dem selben Grund auch nicht. Das indexmp3.sh script bekommt durch den %d Parameter den Pfad übergeben, aber da da schon eine Leerstelle drin ist klappt es nicht.

Ich hoffe mir kann jemand helfen :) THX
 
A

Anonymous

Gast
flueken schrieb:
ls -1 $1\*.??3 >> $1\'00 Playlist.m3u'

Habe das jetzt nicht ausprobiert, aber Leerzeichen im Pfad sind immer blöd und sollten gequotet oder escaped werden.

Was passiert denn, wenn du statt dessen mal Pfad und File in Anführungszeichen (") setzt? Also so:

ls -1 "$1"/*.??3 >> "$1/00 Playlist.m3u" # Pfad und Ausgabefile in Anführungszeichen
oder so
ls -1 "$1"/*.??3 >> "$1"/00\ Playlist.m3u # Pfad in Anf.Zeichen und Leerzeichen escaped mit \.

Wenn ich das gerade mal in leicht abgespeckter Form auf meiner cygwin-installation versuche, dann klappt das:
$ pwd
/cygdrive/d/Dokumente und Einstellungen/Jojo/Eigene Dateien/Privat/Sticks/Mucke/Anastacia/Pieces Of A Dream (Greatest Hits)

$ ls -1 $PWD/*??3 # $PWD ist das aktuelle directory
ls: und: No such file or directory
ls: Einstellungen/Jojo/Eigene: No such file or directory
ls: Dateien/Privat/Sticks/Mucke/Anastacia/Pieces: No such file or directory
ls: Of: No such file or directory
ls: A: No such file or directory
ls: Dream: No such file or directory
ls: (Greatest: No such file or directory
ls: Hits): No such file or directory
/cygdrive/d/Dokumente

$ ls -1 "$PWD"/*??3
01-i_m_outta_love_192_lame_cbr_ex.mp3*
02-not_that_kind_192_lame_cbr_ex.mp3*
03-cowboys__and__kisses_192_lame_cbr_ex.mp3*
...
 
OP
F

flueken

Newbie
Hier meine Lösung für alle interessierten:
Datei: Indexmp3.sh
#! /bin/sh
# Erstellt eine MP3 playlist
#
#
# August 2006
checkFile=~/.mp3playlistlog.txt

cd "$1"/

#################################
# Aktuellen Verzeichnispfad ermitteln
cmdpwd=`pwd`
echo $cmdpwd >> $checkFile

# Aktuellen Oberordnernamen ermitteln
dirName=`basename "$cmdpwd"`
echo $dirName >> $checkFile

#Playlistfilenamen ermitteln
plFile=$dirName'.m3u'
echo $plFile >> $checkFile

#Playlist erstellen...
#ls -1 *.??3 >> '00 Playlist.m3u'
#rm $checkFile
ls -1 *.??3 > "$plFile"

Datei: /opt/kde3/share/apps/konqueror/servicemenus/mp3-index.desktop
[Desktop Entry]
Actions=Makem3u
Icon=Juk
ServiceTypes=application/ogg,audio/vorbis,audio/x-mp3,audio/x-flac,audio/x-oggflac,audio/x-musepack

[Desktop Action Makem3u]
Exec=/bin/indexmp3.sh %d
Icon=amarok
Name=Make m3u
Name[de]=m3u erstellen


Man kann evtl. noch das eine oder andere schöner machen aber es läuft :)

Gruss an alle denen ich damit helfen konnte ;-)
 
Oben