#!/bin/bash # = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = # # KDE COVER THUMBNAILER # 2011 by JaiBee (http://www.321tux.de) # Licence: http://creativecommons.org/licenses/by/3.0/deed.de # # = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = # # Das Skript erstellt ansprechende Ordner-Icons in CD-Hüllen-Optik # aus den Grafiken cover.jpg/png bzw. folder.jpg/png [Dolphin (KDE)]. # # Das Template "KDE-cover-thumbnailer-template.png" basiert auf "JEWEL CASE PSD FILE" # von "LeMarquis": # http://lemarquis.deviantart.com/art/JEWEL-CASE-PSD-FILE-69316052 (CC BY-ND 3.0) # # = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = # # This script generates shining folder icons of cover.jpg/png or folder.jpg/png [Dolphin (KDE)]. # # The template "KDE-cover-thumbnailer-template.png" is based upon "JEWEL CASE PSD FILE" # by "LeMarquis": # http://lemarquis.deviantart.com/art/JEWEL-CASE-PSD-FILE-69316052 (CC BY-ND 3.0) # # = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = DIR="$HOME/Musik/" # Arbeitsverzeichnis | working directory TEMPL="$(dirname $(readlink -f $0) )/KDE-cover-thumbnailer-template.png" # absoluter Pfad zum Template | absolute path to template CASE=".case.png" # Dateiname der generierten CD-Hülle | filename of generated jewel case SIZE="96" # Größe der CD-Hülle | size of jewel case # 16 / 22 / 32 / 48 / 64 / 80 / 96 / # 112 / 128 / 144 / 160 / 176 / 192 / 208 / 224 / 240 / 256 IFS=$'\12' # nicht ändern | do not change echo -e "\033[1;34mKDE COVER THUMBNAILER\033[0m\n2011 by JaiBee, http://www.321tux.de\n" while getopts "rcuh" opt do case $opt in r) # [-r] aktuelles Verzeichnis verwenden | use current directory DIR=$(pwd) ;; c) # [-c] Cover aus den ID3-Tags der ersten MP3-Datei eines Ordners extrahieren und in cover.jpg umbenennen # Read ID3 tags of the first MP3 file in each folder and extract the cover; then rename it to cover.jpg which eyeD3 > /dev/null || { echo "Sie benötigen das Programm \"eyeD3\", um die Cover zu extrahieren." && exit 1 ; } echo "Extrahiere ggf. Cover aus den ID3-Tags" # Ordner mit MP3-Dateien finden | find folders that contain MP3 files for mp3dir in $(find "$DIR" -iname *.mp3 -exec dirname {} \; | uniq); do # wenn noch keine cover.jpg im MP3-Ordner existiert | if no cover.jpg exists already if ! [ -f "$mp3dir/cover.jpg" ]; then # erste MP3-Datei im Ordner finden | find first MP3 file mp3="$(ls -1 $mp3dir | grep .mp3 | head -n1)" # Cover aus der Datei in den Ordner schreiben | extract cover eyeD3 -i $mp3dir "$mp3dir/$mp3" > /dev/null # .jpeg-Grafik, die in der letzten Minute geändert wurde (= das Cover) in cover.jpg umbenennen # rename jpeg image that was last modified one minute ago to cover.jpg find "$mp3dir" -iname *.jpeg -mmin 1 -exec mv {} "$mp3dir/cover.jpg" \; fi done ;; u) read -p "Alle \"$CASE\" werden gelöscht und \".directory\" in \"$DIR\" werden zurückgesetzt [Enter]" # [-u] CD-Hüllen entfernen | remove jewel cases find "$DIR" -name "$CASE" -delete # .directory zurücksetzen | reset .directory for i in $(find $DIR -name .directory); do sed -i '/Icon=/d' "$i"; done exit ;; h) echo -e "\033[4moptionale Optionen:\033[0m" echo " -r aktuelles Verzeichnis verwenden (\"$(pwd)\")" echo " -c Cover aus den ID3-Tags auslesen und als cover.jpg speichern" echo " -u Thumbnails entfernen" echo " -h Hilfe anzeigen" exit;; ?) ;; esac done which convert composite > /dev/null || { echo "Sie benötigen das Programm \"imagemagick\" zur Ausführung dieses Skriptes." && exit 1 ; } ! [ -f "$TEMPL" ] && echo "ERROR: \"$TEMPL\" existiert nicht" && exit 1 # Cover finden | find covers for i in $(find "$DIR" -iname cover.jpg -o -iname cover.png -o -iname folder.jpg -o -iname folder.png); do cd $(dirname $i) TMP=".tmp.$(basename $i)" # temporäre Datei | temporary file echo "Betrete $(pwd)" if ! [ -f "$CASE" ]; then echo " generiere Case" # Cover verkleinern und Hintergrund vergrößern (2x) | shrink cover and resize background (2x) convert "$i" -resize 220x217! -gravity east -extent 252x224 -gravity west -extent 256x224 "$TMP" # Template und Cover zusammensetzen | composite template and modified cover composite -gravity East "$TEMPL" "$TMP" "$CASE" # CD-Hülle verkleinern | resize jewel case convert "$CASE" -resize $SIZE -background transparent -gravity south -extent ${SIZE}x$SIZE "$CASE" rm "$TMP" fi # .directory erstellen, falls die Datei noch nicht existiert | create .directory if it not exists already if ! [ -f .directory ] ; then echo " erstelle .directory" echo -e "[Desktop Entry]\nIcon=./$CASE" > .directory else # falls existierende .directory nicht das gewünschte Icon enthält | if existing .directory doesn't contain desired icon if ! grep -q "Icon=./$CASE" .directory; then echo " bearbeite .directory" # wenn .directory ein anderes Icon enthält, wird dieses ersetzt (&&), ansonsten (||) wird der korrekte Eintrag angehängt # if .directory contains another icon: replace it (&&); else: attach right entry (||) grep -q "Icon=" .directory && sed -i 's/^Icon=.*/Icon=.\/'$CASE'/g' .directory \ || echo -e "\n[Desktop Entry]\nIcon=./$CASE" >> .directory fi fi done
Seiten: 1 2
Hier bloggt Janek (19 Jahre, Schüler) aka JaiBee v.a. über Themen rund um Ubuntu und GNU/Linux, sowie vereinzelt auch über WordPress und sonstigen Themen des Internets.
17 Kommentare zu KDE Cover Thumbnailer (Update)
» Kommentar schreibenSteve`
8. Januar 2011 um 20:56
Hi,
1) sauber!
2) wär toll, wenn auch noch cover.png berücksichtigt wäre
3) Cover aus ID3-Tag extrahieren wäre oberklasse
Diesen Beitrag zitieren
AdaMin
9. Januar 2011 um 14:46
Sehr hübsch!
Vielen Dank!
Diesen Beitrag zitieren
Janek
9. Januar 2011 um 15:18
Schön, dass euch das Skript gefällt
Zitat Steve` ↑:
Hallo Steve,
ich habe das Skript aktualisiert und deine Wünsche umgesetzt.
Gruß Janek
Diesen Beitrag zitieren
Tids
9. Januar 2011 um 17:03
Hi
ich finde es toll. Und nutze es auch, ich würde aber gerne nicht als Cron laufen lassen. Ist es Möglich dieses Script als Dolphin Servicemenü zu setzen, damit man nur bestimmte Ordner mit einem Cover versehen kann? Ich hab davon leider überhaupt keine ahnung, sonst würd ich es selbst versuchen xD
Diesen Beitrag zitieren
Janek
9. Januar 2011 um 18:37
Zitat Tids ↑:
Das hatte ich ursprünglich auch vor, aber ich wusste nicht, wie sich das umsetzen lässt.
Nun habe ich nochmals gegoogelt und das Ergebnis findest du oben im aktualisierten Beitrag
. Viel Spaß damit!
Gruß Janek
Diesen Beitrag zitieren
Felix
9. Januar 2011 um 19:39
Mit inotify kann man Verzeichnisse auf Änderungen überwachen.
Diesen Beitrag zitieren
Steve`
9. Januar 2011 um 19:56
Hi,
vielen Dank für die Änderungen, funktioniert hervorragend. Die Cover hat er 1a extrahiert.
Diesen Beitrag zitieren
Janek
9. Januar 2011 um 20:14
Zitat Steve` ↑:
Sehr schön. Ich habe es nämlich nur mit 2 Ordnern getestet, da ich bei meiner Musiksammlung die Covers nicht in den ID3-Tags stehen habe. Und danke für den Backlink
.
Vielen Dank, Felix, für den Hinweis auf inotify. Das werde ich mir bei Gelegenheit mal anschauen.
Gruß Janek
Diesen Beitrag zitieren
dawnrazor
10. Januar 2011 um 17:29
Wohin muss das script denn kopiert werden wenn ich das service menü für dolphin erstelle?
p.s. der pfad bei kubuntu ist richtig
Diesen Beitrag zitieren
Janek
10. Januar 2011 um 19:56
Zitat dawnrazor ↑:
Hallo dawnrazor,
das Skript darf sich in einem beliebigen Verzeichnis befinden. Anpassen musst du jedoch den Pfad in der Zeile
Exec=(s.o.). Wenn das Skript zum Beispiel in deinem Home-Ordner im Unterordner “Skripte” liegt, dann lautet der (absolute) Pfad zu dem Skript$HOMEist eine Umgebungsvariable, die für /home/[benutzer] steht. Alternativ kann man auch eine Tilde~verwenden oder den Pfad einfach ausschreiben.Ich werde wohl morgen eine neue Version des Skriptes veröffentlichen, die u.a. die .desktop-Datei (in verbesserter Form) selbstständig anlegt. Daher kannst du auch einfach bis morgen (Nachmittag) warten.
Viele Grüße
Janek
Diesen Beitrag zitieren
dawnrazor
12. Januar 2011 um 10:49
So hab es jetzt so angepasst
wenn ich es benutzen will, kommt trotzdem immer der fehler “Programm cd nicht gefunden”
Diesen Beitrag zitieren
Janek
14. Januar 2011 um 18:59
Habe momentan leider keine Zeit, die versprochenen Änderungen durchzuführen…
@dawnrazor: Wenn das Problem weiterhin besteht, melde dich bitte kurz über das Kontaktformular.
Gruß
Diesen Beitrag zitieren
Platte
25. Januar 2011 um 14:46
Es wäre genial wenn man bei Musik die Farbe vom Cd – Rand auswählen könnte oder ihn gleich Transparent erscheinen lassen könnte
freundliche grüsse
Platte
Diesen Beitrag zitieren
Janek
27. Januar 2011 um 16:28
Zitat Platte ↑:
Du könntest auch einfach die beiliegende Grafik “KDE-cover-thumbnailer-template.png” einfärben.
Gruß
Diesen Beitrag zitieren
Möller
27. März 2011 um 18:04
Zitat dawnrazor ↑:
Ich habe das gleiche Problem mit der .desktop-Datei. Es kommt immer die Meldung “Programm cd nicht gefunden”. Ich hab noch nicht heraus gefunden, wie es stattdesssen heißen müsste.
Kann jemand eine Lösung posten?
Gruß
Diesen Beitrag zitieren
Janek
27. März 2011 um 18:28
Zitat Möller ↑:
cdmacht scheinbar in Skripten teilweise Probleme. Bei mir tritt das Problem unter Arch Linux zwar nicht auf, aber ich werde das Skript umschreiben, sodasscdnicht mehr benötigt wird. Schau bitte in den nächsten 2 Tagen nochmal vorbei. Danke.Gruß
Diesen Beitrag zitieren
doc.horn
7. Mai 2011 um 10:57
Super Skript, vielen Dank dafür. Die Anzeige funktioniert aber leider nur, wenn man unter Einstellungen -> Allgemein -> Vorschauen die automatische Ordner-Ansicht ausschaltet. Dann werden jedoch keine in den Ordnern befindlichen Bilder mehr auf dem Ordner-Symbol angezeigt.
Du kennst nicht zufällig eine Möglichkeit die beiden Features zu kombinieren?
Diesen Beitrag zitieren