Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 13/03/2008, à 12:37

CyrilouGarou

Création de miniatures pour dossiers d'artistes dans librairie amarok

Bonjour à tous,

Nous sommes nombreux à utiliser l'excellent amarok pour écouter notre zic.

Amarok permet de ranger sa collection de la façon suivante
(exemple de chemin pour la chanson hells bells d'ACDC)

/home/cyril/Ma\ Musique/A/AC_DC/Back\ in\ Black/02\ -\ Hells\ Bells.mp3

Des scripts existent déjà pour que le dossier Album soit représenté dans nautilus par la pochette téléchargée par amarok.

Par contre, aucun script n'existe pour télécharger automatiquement (exemple via google/images) une photo de l'artiste de sorte que le dossier de l'artiste soit représenté dans nautilus par l'icone de l'artiste.

Ca serait tellement la classe....

Ma question est donc:

Comment télécharger automatiquement la première image renvoyée par google/images pour chacun des artistes de ma collection ?


Ma page artiste soundcloud https://soundcloud.com/la-reponse

Hors ligne

#2 Le 14/03/2008, à 13:14

CyrilouGarou

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

up ?


Ma page artiste soundcloud https://soundcloud.com/la-reponse

Hors ligne

#3 Le 17/03/2008, à 00:10

CyrilouGarou

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

Up encore ?


Ma page artiste soundcloud https://soundcloud.com/la-reponse

Hors ligne

#4 Le 17/03/2008, à 23:43

CyrilouGarou

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

On sait jamais....


Ma page artiste soundcloud https://soundcloud.com/la-reponse

Hors ligne

#5 Le 28/03/2008, à 15:38

CyrilouGarou

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

up up up up ?


Ma page artiste soundcloud https://soundcloud.com/la-reponse

Hors ligne

#6 Le 28/03/2008, à 15:45

pOPeY_tGl

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

je serai vraiment intéressé par ce script aussi...
Bien que le menu context soit un mini ersatz de cet eventuel plugin.
Toutefois quel est ce fameux script pour nautilus?


"< niluje> windows est payant, pas linux, ça prouve bien que windows est mieux.
< Clex> Ben niluje, quitte ta femme et va aux putes."
Mon DevianArt

Hors ligne

#7 Le 29/03/2008, à 09:48

CyrilouGarou

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

Ca motive pas grand monde à part nous deux !


Ma page artiste soundcloud https://soundcloud.com/la-reponse

Hors ligne

#8 Le 10/04/2008, à 20:40

Ras&#039;

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

Bon j'ai commencé à regarder

Déja tu peux utiliser ça :

artisturl="AC/DC"
albumurl="live"
url="http://images.google.com/images?q=+%22""$artisturl""%22+%22""$albumurl""%22+filetype%3Apng&btnG=Search+Images"
wget -U="Mozilla/5.0" $url -O prout.txt

Ce qui te téléchargera le code source de la page de recherche (j'ai utilisé -U=Mozilla/5.0 parce que j'ai vu ça sur le net, on peut surement utiliser un autre navigateur mais j'avais la flemme de chercher la bonne syntaxt et ça marchait bien comme ça)


Ensuite tu fais un grep pour trouver l'url de l'image à dl :

pochetteurl=$( cat prout.txt | grep -o "http://[^ ]*\.png" | head -1 )

> le cat affiche
> le grep recherche les lignes de type http://*******************.png
> le head -1 récupère la première ligne parmis les lignes trouvées par grep


Le problème c'est qu'avec ça je suis tombé sur un résultat comme ça :
http://www.soundclick.com/lyrics/getAlbum.cfm%3Falbum%3DR%2B%2B%2B%2B53486&h=443&w=500&sz=38&hl=en&start=1","","cdW7GjVlqKFWCM:","http://ec1.images-amazon.com/images/I/519hzG41dAL.jpg
( j'ai fait mes tests avec des fichiers jpg)


et qu'il faut récupérer que la fin, ie http://ec1.images-amazon.com/images/I/519hzG41dAL.jpg

Ca doit certainement être possible avec sed ou un truc dans le genre...
mais là c'est l'heure de manger donc on verra plus tard ^^

Dernière modification par Raskal (Le 10/04/2008, à 20:41)


Va t'faire shampouiner en GMT-4 !
http://blag.xserver-x.org/
 
Les types awesome n'ont rien à prouver. À personne.

Hors ligne

#9 Le 11/04/2008, à 11:05

Ras&#039;

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

De façon un peu sale mais fonctionnelle, la commande :

echo "$url" | sed -e 's/http:\/\/[^ ]*http:\/\///'

Coupe dans l'url tout ce qu'il y a entre http:// et http:// et le remplace par rien, donc avec une url ultra complexe (même contenant plusieurs fois la chaîne http://) on se retrouve avec ce qui se trouve à la fin (donc ce qui nous interesse)
On rajoute le http:// manquant au début, on wget et ça déroule :

EDIT : j'avais pas vu que tu voulais uniquement l'artiste et non pas l'album, j'ai modifié le script en conséquence smile

artist="AC/DC"
url="http://images.google.com/images?q=+%22""$artist""%22+filetype%3Ajpg&btnG=Search+Images"
wget -q -U="Mozilla/5.0" $url -O prout.txt


pochette="http://$( cat prout.txt | grep -o "http://[^ ]*\.jpg" | head -1 | sed -e 's/http:\/\/[^ ]*http:\/\///' )"
wget -q $pochette

Est fonctionnel smile
Maintenant il reste à renommer la photo téléchargée, et intégrer ça dans le script que tu voulais faire wink


Hyper interessant en fait de programmer pour les autres ^^


C'est possible de voir un script qui télécharge la pochette d'album ?

Dernière modification par Raskal (Le 11/04/2008, à 11:12)


Va t'faire shampouiner en GMT-4 !
http://blag.xserver-x.org/
 
Les types awesome n'ont rien à prouver. À personne.

Hors ligne

#10 Le 11/04/2008, à 11:56

Ras&#039;

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

Le script suivant télécharge (uniquement télécharge) les images de chaque artiste dans ton type d'organisation :
[dossier musique]/[lettre]/[artiste]


J'ai testé sur un échantillon test fabriqué comme ça :

|-- prout
|   |-- a
|   |   |-- ac_dc
|   |   |   `-- album1
|   |   `-- aizell
|   `-- b
|       |-- benabar
|       |   |-- album1
|       |   `-- album2
|       |-- birdy_nam_nam
|       |   `-- album1
|       `-- black_uhuru

(super cette commande "tree" ^^)

et ça à très bien marché.
Donc ensuite faut trouver la commande pour mettre l'image en icone du dossier et j'en ai aucune idée... Donc faudrait que je vois l'autre script ou que quelqu'un qui la connait me la donne ^^




#!/bin/bash
#
# Script téléchargeant les premières images renvoyées par les recherches google des noms des artistes d'un dossier "Music"
# Made by Ras'
#

parent_dir="/home/ras/scripts/prout"

function dl_pochette
{
artist="$1"
echo "$artist"
url="http://images.google.com/images?q=+%22""$artist""%22+filetype%3Ajpg&btnG=Search+Images"
wget -q -U="Mozilla/5.0" "$url" -O prout.txt
img="http://$( cat prout.txt | grep -o "http://[^ ]*\.jpg" | head -1 | sed -e 's/http:\/\/[^ ]*http:\/\///' )"
artist=$( echo $artist | sed 's/\ /_/g' )
wget -q $img -O ".$artist.jpg"
rm -f prout.txt
}


for i in `ls $parent_dir`
do
cd "/$parent_dir/$i"
    for j in `ls`
    do
    j=$(echo $j | sed 's/_/\ /g' )
    dl_pochette "$j"
    done
done

Voilàààààà smile

EDIT : j'ai ajouté un petit "echo $artist" pour voir l'avancement ^^

RE EDIT : les fichiers images s'apellent maintenant comme les dossier auquels ils correspondent et ils sont cachés.

Dernière modification par Raskal (Le 11/04/2008, à 12:37)


Va t'faire shampouiner en GMT-4 !
http://blag.xserver-x.org/
 
Les types awesome n'ont rien à prouver. À personne.

Hors ligne

#11 Le 11/04/2008, à 12:54

h-ubuntu

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

Salut il éxiste ce logiciel:

http://www.libellules.ch/dotclear/index … -cover-art

Pour linux


Vitrine relookage ubuntu.fr : http://www.esnips.com/web/Capturesdesignubuntufr/
Tout pour skiner ton amsn, oui c'est possible! :http://amsn-skins.blogspot.com/
Tutoriaux:  http://www.esnips.com/web/TutoriauxSkineraMSN
Topic : http://forum.ubuntu-fr.org/viewtopic.php?id=81501

Hors ligne

#12 Le 11/04/2008, à 19:19

Ras&#039;

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

C'est pas pareil, déja ici c'est un soft pour mettre une image dans les idtag pour qu'elle soit visible sur un baladeur mp3 ou dans amarok, alors que Cyril veut un script qui met une image sur le dossier, donc visible dans nautilus.

Et puis avec ce logiciel c'est manuel, et apparement Cyril veut un truc automatique parce qu'il a beaucoup d'artistes (si je me rapelle bien de ce que j'ai lu sur un autre topic)


Bon j'ai pas eu le temps de chercher la commande, j'ai trouvé un truc pour KDE (créer un fichier .directory ?) mais rien pour gnome...
Donc je cherche toujours le script qui fait ça pour les albums ou directement la liste des commandes à taper...


Va t'faire shampouiner en GMT-4 !
http://blag.xserver-x.org/
 
Les types awesome n'ont rien à prouver. À personne.

Hors ligne

#13 Le 11/04/2008, à 23:17

h-ubuntu

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

Ha ok


Vitrine relookage ubuntu.fr : http://www.esnips.com/web/Capturesdesignubuntufr/
Tout pour skiner ton amsn, oui c'est possible! :http://amsn-skins.blogspot.com/
Tutoriaux:  http://www.esnips.com/web/TutoriauxSkineraMSN
Topic : http://forum.ubuntu-fr.org/viewtopic.php?id=81501

Hors ligne

#14 Le 11/04/2008, à 23:28

CyrilouGarou

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

Raskal: super boulot

Je vais retrouver comment faire afficher ces images par nautilus (manque de temps ce week end)

Juste un petit correctif: le script plante si le dossier artiste a un nom contenant des espaces.

Encore félicitations


Ma page artiste soundcloud https://soundcloud.com/la-reponse

Hors ligne

#15 Le 12/04/2008, à 11:24

Ras&#039;

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

Hum....
j'ai regardé ce qu'il se passe quand on ajoute une image en icône d'un dossier.

Le fichier /home/ras/.nautilus/metafiles/file:%2F%2F%2Fhome%2Fras%2Fscripts%2Fprout%2Fb.xml est modifié,

la zone :
<file name="benabar" timestamp="1207990423" screen="0" />

devient :
<file name="benabar" timestamp="1207990423" screen="0" custom_icon="file:///home/ras/scripts/prout/b/.benabar.jpg"/></directory>


donc en théorie avec un sed ça devrait être très simple de modifier ça, le problème c'est que j'ai essayé de modifier le fichier avec gedit et ça n'a rien changé... Je continues de chercher... ca doit être ailleurs

Dernière modification par Raskal (Le 12/04/2008, à 11:25)


Va t'faire shampouiner en GMT-4 !
http://blag.xserver-x.org/
 
Les types awesome n'ont rien à prouver. À personne.

Hors ligne

#16 Le 12/04/2008, à 12:00

CyrilouGarou

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

De mémoire c'est un truc comme ça.

tu as fait "nautilus -q" après ta manip ?


Ma page artiste soundcloud https://soundcloud.com/la-reponse

Hors ligne

#17 Le 12/04/2008, à 13:45

Ras&#039;

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

icon_cry.gif

J'ai galéré une bonne demi heure pour essayer de comprendre pourquoi ça voulait pas, je me demandais si je changeais le mauvais fichier ou quoi et en fait c'était tout nul hmm
j'avais quand même eu la présence d'esprit de fermer toutes mes instances de nautilus graphiquement, mais j'étais loin de me douter qu'il y avait une différence avec nautilus -q hmm

C'est quoi la différence ? graphiquement il ne se ferme pas vraiment ? Pour être préchargé au prochain démarrage ?

Dernière modification par Raskal (Le 12/04/2008, à 13:45)


Va t'faire shampouiner en GMT-4 !
http://blag.xserver-x.org/
 
Les types awesome n'ont rien à prouver. À personne.

Hors ligne

#18 Le 12/04/2008, à 13:58

Ras&#039;

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

et tant que j'y suis, quand et pourquoi sont créés ces fichiers ?
Parce que dans mon dossier .nautilus/metafiles j'ai pas grand chose... en tout cas pas un fichier par dossier, ni un fichier par dossier ayant une icone vu que quasiment aucun n'en a...

Parce que je pourrais créer un fichier pour chaque dossier, c'est pas un problème, mais dans ce fichier on trouve par exemple

timestamp="1207990423" screen="0"

j'imagine que timestamp est la date de création du fichier (en seconde depuis 1970-01-01) mais si je créé le fichier je met quoi comme timestamp ?
Et à quoi correspond screen="0" ?


Va t'faire shampouiner en GMT-4 !
http://blag.xserver-x.org/
 
Les types awesome n'ont rien à prouver. À personne.

Hors ligne

#19 Le 12/04/2008, à 15:19

CyrilouGarou

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

J'ai trouvé ce script en python qui va écrire dans ces fichiers xml pour changer des icônes.

Ca devrait t'aider.

Perso, je trouve que gnome manque de transparence à ce sujet (je veux dire qu'il n'est pas facile de trouver l'info)


#!/usr/bin/python

import sys
from optparse import OptionParser
import os
import fnmatch
from urllib import quote

def main():
    parser = OptionParser(usage="usage: %prog [options] folder [folder2 ...]",
                          version="%prog 0.1")
    parser.add_option("", "--names", dest="names",
                      default="[Ff]older.[Jj][Pp][Gg]",
                      help='specification to match image filenames [default: "%default"]')
    parser.add_option("-R", "--recursive", dest="recursive", action="store_true", default=False,
                      help="set icons for folders recursively")

    (options, folders) = parser.parse_args(sys.argv)
    folders = folders[1:]

    if not folders:
        parser.error("no folders specified")

    nautilus_metafiles = os.path.join(os.environ["HOME"], ".nautilus", "metafiles")
    noquote = "()'*"

    for folder in folders:
        for root, dirs, files in os.walk(folder):
            print root, "..."
            subdirs = []
            for d in dirs:
                images = fnmatch.filter(os.listdir(os.path.join(root, d)), options.names)
                if images:
                    image = os.path.basename(images[0])
                    subdirs.append((quote(d, safe=noquote), quote(image, safe=noquote)))
                else:
                    print "no image found for %s/%s" % (root, d)
            if subdirs:
                metafilename = "file:%2F%2F" + quote(quote(os.path.abspath(root), safe=noquote + "/"), safe=noquote) + ".xml"
                metafilepath = os.path.join(nautilus_metafiles, metafilename)
                metafile = open(metafilepath, "w")
                metafile.write('<?xml version="1.0"?>\n<directory>')
                for sd in subdirs:
                    metafile.write('<file name="%s" custom_icon="%s"/>' % sd)
                metafile.write('</directory>\n')
                metafile.close()
            if not options.recursive:
                dirs[:] = []
    print "done."

if __name__ == "__main__":
    main()

Ma page artiste soundcloud https://soundcloud.com/la-reponse

Hors ligne

#20 Le 12/04/2008, à 15:39

Ras&#039;

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

Ici pas de timestamp ni de screen
D'un autre coté j'ai supprimé les fichiers xml relatifs à mes dossier de test et à part le fait que j'ai perdu les images y'a pas vraiment eu de changement, je code ça comme ça et tu t'en servira a tes risques et périls ^^


Va t'faire shampouiner en GMT-4 !
http://blag.xserver-x.org/
 
Les types awesome n'ont rien à prouver. À personne.

Hors ligne

#21 Le 12/04/2008, à 17:27

Ras&#039;

Re : Création de miniatures pour dossiers d'artistes dans librairie amarok

Bon...
Je comprend pas tout là...

Je viens de faire marcher le script pour 4 des 5 dossier, pour le 6° j'ai eu le droit à :
** Message: Failed to close thumbnail pixbuf loader for /home/ras/scripts/prout/b/.birdy_nam_nam.jpg: Format d'image non reconnu
** Message: Failed to close thumbnail pixbuf loader for /home/ras/scripts/prout/b/.birdy_nam_nam.jpg: Format d'image non reconnu


Je l'ai renommé pour tester si ça le faisait avec d'autres artistes et c'est le cas...
j'ai testé 3 artistes et ça veut pas...
Je sais pas quel est le problème mais c'est louche, enfin à mon avis ça n'a pas de rapport avec le script.


Et j'ai aussi un souci, dans le script j'utilise :

echo "<file name=\"$artist\" timestamp=\"`date +%s`\" custom_icon=\"file:/`pwd`/.`echo $artist | sed 's/\ /_/g'`.jpg\"/>"

En console j'ai ça :

ras@ras-laptopoulos:~/scripts$ artist="birdy nam nam"
ras@ras-laptopoulos:~/scripts$ echo "<file name=\"$artist\" timestamp=\"`date +%s`\" custom_icon=\"file:/`pwd`/.`echo $artist | sed 's/\ /_/g'`.jpg\"/>"
<file name="birdy nam nam" timestamp="1208013086" custom_icon="file:///home/ras/scripts/.birdy_nam_nam.jpg"/>

mais dans le script, ça me donne
<file name="birdy nam nam" timestamp="1208013154" custom_icon="file:////home/ras/scripts/prout/b/.birdy_nam_nam.jpg"/>

C'est à dire un / de plus après "file:"
Donc c'est pas trop grave j'en ai enlevé un dans le script, mais je comprend pas d'ou vient cette différence ?


Enfin bref, à part ce petit problème de birdy nam nam que je comprend pas ça devrait être fonctionnel.
Je rapelle que tu fais ça à tes risques et périls ^^

#!/bin/bash
#
# Script téléchargeant les premières images renvoyées par les recherches google des noms des artistes d'un dossier "Music"
# Made by Ras'
#

parent_dir="/home/ras/scripts/prout"
clear
echo "Téléchargement des pochettes en cours..."

function dl_pochette
{
artist="$1"
echo "$artist"
url="http://images.google.com/images?q=+%22""$artist""%22+filetype%3Ajpg&btnG=Search+Images"
wget -q -U="Mozilla/5.0" "$url" -O .prout.txt
img="http://$( cat .prout.txt | grep -o "http://[^ ]*\.jpg" | head -1 | sed -e 's/http:\/\/[^ ]*http:\/\///' )"
artist=$( echo $artist | sed 's/\ /_/g' )
wget -q $img -O ".$artist.jpg"
if ! [[ -d $artist ]]
then artist=$( echo $artist | sed 's/_/\ /g' )
fi
echo "<file name=\"$artist\" timestamp=\"`date +%s`\" custom_icon=\"file:/`pwd`/.`echo $artist | sed 's/\ /_/g'`.jpg\"/>" >> $xml
rm -f .prout.txt
}


for i in `ls $parent_dir`
do
cd "/$parent_dir/$i"
xml=$( echo "$HOME/.nautilus/metafiles/$( echo file://$parent_dir/ | sed 's/\//%2F/g' )$i.xml" )
rm -f $xml
echo "<?xml version=\"1.0\"?>
<directory>" > $xml
    for j in `ls | sed 's/\ /_/g'`
    do
    j=$(echo "$j" | sed 's/_/\ /g' )
    dl_pochette "$j"
    done
echo "</directory>" >> $xml
done

echo "Fin du script redémmarage bourrin de nautilus"
nautilus -q
nautilus $parent_dir &

Et j'ai compris pour nautilus -q, c'est pas seulement nautilus le navigateur de fichier qui redémarre, c'est bien plus que ça wink

Le script fini "Initializing gnome-mount extension" et ne s'arrête pas je sais pas trop pourquoi.... un ctrl c règle le problème roll


Et si ça marche mais que tu veux modifier certaines images t'as qu'a remplacer l'image du script par la tienne du moment qu'elle a le même nom tout va bien, après tu fais nautilus -q puis nautilus & et en avant.

Dernière modification par Raskal (Le 12/04/2008, à 17:30)


Va t'faire shampouiner en GMT-4 !
http://blag.xserver-x.org/
 
Les types awesome n'ont rien à prouver. À personne.

Hors ligne

Haut de page ↑