KDE Cover Thumbnailer (Update)

In: GNU/Linux

9

Jan

2011

KDE Cover Thumbnailer herunterladen

#!/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

Werbung:

17 Kommentare zu KDE Cover Thumbnailer (Update)

» Kommentar schreiben

Avatar

Steve`

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

Avatar

AdaMin

9. Januar 2011 um 14:46

Sehr hübsch!

Vielen Dank!

Diesen Beitrag zitieren

Avatar

Janek

9. Januar 2011 um 15:18

Schön, dass euch das Skript gefällt :)

Zitat Steve` :

2) wär toll, wenn auch noch cover.png berücksichtigt wäre
3) Cover aus ID3-Tag extrahieren wäre oberklasse

Hallo Steve,

ich habe das Skript aktualisiert und deine Wünsche umgesetzt.

Gruß Janek

Diesen Beitrag zitieren

Avatar

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

Avatar

Janek

9. Januar 2011 um 18:37

Zitat Tids :

Ist es Möglich dieses Script als Dolphin Servicemenü zu setzen, damit man nur bestimmte Ordner mit einem Cover versehen kann?

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

Avatar

Felix

9. Januar 2011 um 19:39

Mit inotify kann man Verzeichnisse auf Änderungen überwachen.

Diesen Beitrag zitieren

Avatar

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

Avatar

Janek

9. Januar 2011 um 20:14

Zitat Steve` :

Die Cover hat er 1a extrahiert.

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

Avatar

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

Avatar

Janek

10. Januar 2011 um 19:56

Zitat dawnrazor :

Wohin muss das script denn kopiert werden wenn ich das service menü für dolphin erstelle?

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

$HOME/Skripte/KDE-cover-thumbnailer.sh

$HOME ist 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

Avatar

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

Avatar

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

Avatar

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

Avatar

Janek

27. Januar 2011 um 16:28

Zitat Platte :

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 :)

Du könntest auch einfach die beiliegende Grafik “KDE-cover-thumbnailer-template.png” einfärben.

Gruß

Diesen Beitrag zitieren

Avatar

Möller

27. März 2011 um 18:04

Zitat dawnrazor :

So hab es jetzt so angepasst
wenn ich es benutzen will, kommt trotzdem immer der fehler “Programm cd nicht gefunden”

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

Avatar

Janek

27. März 2011 um 18:28

Zitat Möller :

Es kommt immer die Meldung “Programm cd nicht gefunden”. Ich hab noch nicht heraus gefunden, wie es stattdesssen heißen müsste.

cd macht scheinbar in Skripten teilweise Probleme. Bei mir tritt das Problem unter Arch Linux zwar nicht auf, aber ich werde das Skript umschreiben, sodass cd nicht mehr benötigt wird. Schau bitte in den nächsten 2 Tagen nochmal vorbei. Danke.

Gruß

Diesen Beitrag zitieren

Avatar

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

Kommentar schreiben

Erlaubte Tags:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

Die nofollow-freien Links richten sich in erster Linie an Blogger und Betreiber von privaten Homepages. Beiträge, die im Feld "Homepage" eine kommerziellen Internetseite enthalten, werden daher meist als Spam eingestuft, da davon ausgegangen werden muss, dass diese nur dem Linkaufbau dienen sollen.

Abonnieren ohne einen Kommentar abzugeben

Über 321tux.de

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.

Twitter Identi.ca Identi.ca

Google+

Beliebte Beiträge

Shell-Button

Panel Applets Button

EncFS-Button

Lucid-Button

Grafiken erstellt mit GIMP