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".

#1851 Le 21/05/2015, à 12:46

ljere

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

merci pour le lien tiramiseb, j'irai y jeter un oeil ça peut toujours être utile wink


astuce nvidia FX5200
Toshiba satellite_c670d-11l ubuntu 15.04 64 bit

Hors ligne

#1852 Le 08/06/2015, à 18:41

loutch

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

[ Modération : Image animée supprimée ]

Voila je viens ici pour faire une demande de script pour un conky radiotray.

je cherche à afficher l'image de la pochette joué par radiotray

j'ai réussi à faire écrire un fichier txt qui met ce qui est en train d'être joué donc je voudrais (si cela est possible ) qu'un script

récupère la première ligne (en fait il ni qu'une ligne qui est régénéré à chaque changement de titre )et aille chercher dans

google-image la pochette ou l'image correspondant à l'artiste et la télécharge automatiquement dans le dossier du conky.

Un truc de ce genre :

!/bin/bash

  wget ligne de : artite_titre.txt
      
     # puis demander à google image 
    wget  https://www.google.com/searchbyimage?image_url= résultat de artiste_titre.txt
    
    #puis prendre la première image la mettre dans le dossier suivant 

     ~/.conky/radiotray/cover

       # la convertir et l'afficher dans :
    convert ~/.conky/radiotray/cover/$nomimage.jpg ~/.conky/radiotray/cover/cover.png



exit

et enfin la supprimer lors du changement de titre .

Je sais que c'est du balèze et si cela n'est pas faisable je laisse tomber .

Merci d'avance et


   
       
         
   

[ Modération : Image animée supprimée ]


[b]Modération[/b]

Merci de respecter les membres du forum qui ont une connexion limitée en n'utilisant pas d'images animées quand cela n'est pas nécessaire à la résolution d'un problème.

Dernière modification par cqfd93 (Le 02/07/2015, à 20:07)

Hors ligne

#1853 Le 02/07/2015, à 19:50

WW

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Salut @loutch,

  Peux-tu nous partager ton script permettant de connaître le morceau en cours de lecture, s'il te plait ?
Tu as réussi à détecter le changement de titre je te laisse donc la suppression de l'image du morceau précédent.

D'après ce que je comprend ce qui te pose problème c'est la récupération de la pochette via google image.

La réponse courte

titre=$(head -1 artiste_titre.txt)
lienMiniature=$(wget -U'Googlebot-Image/1.0' -qO - "www.google.fr/search?q=$titre\&tbm=isch" | perl -pe 's!.*?<img .*?src="([^"]*)".*!$1!')
wget -qO miniatureGoogleImage $lienMiniature


La réponse longue

[HS]Pour information le moyen le plus sûr et souvent le plus simple pour interroger des services distants comme google image est d'utiliser les interfaces de programmation mis à disposition par les propriétaires des services.
A savoir que ces interfaces sont souvent utilisables avec une clé gratuite ou non. Pour exemple : http://stackoverflow.com/questions/5338 … search-api
Si tu veux faire des recherches là-dessus l'acronyme anglais est API, on parle aussi pour ces cas de web services.[/HS]

Cependant la solution ci-après utilise directement les pages web, les données souhaitées sont isolées via l'analyse des sources HTML de ces pages.
Leur récupération s'effectue à l'aide d'expressions rationnelles (toujours pour des recherches l'abréviation anglaise est regex).
Cela a pour inconvénient d'être extrêmement sensible aux modifications des sources HTML et de récupérer toute la page pour une seule information.

J'utilise ici les options longues alors que la réponse courte utilise les courtes et même un raccourci -1 de head qui n'est pas une option standard la "bonne" syntaxe est head -n 1.
Les options longues sont préférables dans les scripts car plus compréhensible pour un travail ultérieur.

# Récupération de ton travail :)
titre=$(head --lines=1 artiste_titre.txt)

# Affection du lien de la 1ere miniature de google image à la variable lienMiniature
# Utilisation de wget avec un agent utilisateur robot --user-agent 'Googlebot-Image/1.0' : la page téléchargée est plus légère
# --quiet : silencieux, pas d'affichage par wget
# --output-document=- : document dans lequel sont sauvés les sources HTML téléchargées.
# - : ici la page étant un résultat intermédiaire il n'est pas nécessaire de la sauver son contenu est envoyé en flux à la commande suivant le tube
# | : un tube permet de traiter le résultat d'une commande avec la commande qui suit le tube
# \ : ici notre tube est suivi de \ afin de taper la commande de traitement du résultat sur une nouvelle ligne (de même & est échappé)
lienMiniature=$(wget --user-agent 'Googlebot-Image/1.0' --quiet --output-document=- "www.google.fr/search?q=${title}\&tbm=isch" |\

# la commande suivant le tube est celle-ci
# filtre pour ne récupérer que le lien de la première image
# .*?<img : tout jusqu'à la première balise img
# .*?src=" : tout jusqu'au premier attribut src (ici celui de la première balise img)
# ([^"]*)" : tout ce qui n'est pas un " jusqu'au prochain " = récupération du lien
# .* : d'autres caractères après sont autorisées
# $1 : premier et unique élément récupéré
perl -pe 's!.*?<img .*?src="([^"]*)".*!$1!')

# Téléchargement silencieux vers le fichier miniatureGoogleImage depuis le lien précédement récupéré
wget --quiet --output-document="miniatureGoogleImage" ${lienMiniature}

Si tu veux télécharger l'image cible et non la miniature générée par google une solution possible :

titre=$(head --lines=1 artiste_titre.txt)
# Ajout d'un compteur si jamais tu veux faire défiler plusieurs images
count=1

imageLink=$(wget --user-agent 'Firefox/38.0' -qO - "https://www.google.fr/search?q=${titre}\&tbm=isch" |\
sed 's/</\n</g' | grep "a href=\"http://www.google.fr/imgres?imgurl=" | head --lines=${count} |\
sed 's!.*http://www.google.fr/imgres?imgurl=\([^&]*\).*!\1!')
wget -quiet --output-document="googleImage" $imageLink

Ici j'utilise sed qui est l'utilitaire des substitutions (à savoir que le "tout" (comprendre .*) de sed ne prend pas en charge les accents).

[HS]D'ailleurs avec les accents viennent les problèmes d'encodage. Pour les caractères accentués et autres caractères spécifiques le problème peut être gérer via l'utilisation de la codification unicode ou par des mécanismes d'échappement.
Pour interpréter les unicodes : echo -e (celui inclus dans bash pas le /bin/echo)
Un mécanisme d'échappement de Perl :
perl -e 'use URI::Escape; print uri_escape($ARGV[0]);' "$variableATraiter"
perl -e 'use URI::Escape; print uri_unescape($ARGV[0]);' "$variableATraiter"[/HS]

Bonne soirée


Quand on sait c'est facile, mais qui n'a jamais été débutant.

Hors ligne

Haut de page ↑