Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1851 Le 08/06/2015, à 17: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, à 19:07)

Hors ligne

#1852 Le 02/07/2015, à 18: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

#1853 Le 08/07/2015, à 12:07

loutch

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

Hello WW

j'ai fait un script avec la réponse courte et ça fonctionne au poil j'ai juste rajouté une fonction convert pour transformer miniatureGoogleImage en pochette.png

le script:

#bin/bash

 
titre=$(head -1 ~/.conky/radiotray/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

convert ~/miniatureGoogleImage ~/.conky/radiotray/pochette.png
WW a écrit :

Peux-tu nous partager ton script permettant de connaître le morceau en cours de lecture, s'il te plait ?

Il ni a pas de script j'ai juste rajouté au conky cette ligne et créé le fichier artiste_tritre.txt:

${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray getCurrentMetaData| fold -s -w40 > ~/.conky/radiotray/artiste_titre.txt}

La partie après TEXT :

${voffset -30}${font URW Chancery L:style=Bold:size=20}${alignc}Radiotray ${font}
Radio : ${alignc}${font URW Chancery L:style=Bold:size=12}${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray net.sourceforge.radiotray.getCurrentRadio}$font
${alignc}${voffset 50}En ce moment :
${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray getCurrentMetaData| fold -s -w40 }
${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray getCurrentMetaData| fold -s -w40 > ~/.conky/radiotray/artiste_titre.txt}
${if_match "${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray net.sourceforge.radiotray.getCurrentRadio}" == "RTL"}${lua fDrawImage ~/.conky/radiotray/logos/rtl.png 100 50 50 50}${else}
${if_match "${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray net.sourceforge.radiotray.getCurrentRadio}" == "HOTMIX80"}${lua fDrawImage ~/.conky/radiotray/logos/hotmix-80.png 100 50 50 50}${else}
${if_match "${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray net.sourceforge.radiotray.getCurrentRadio}" == "MAXI80"}${lua fDrawImage ~/.conky/radiotray/logos/maxi80.png 100 50 50 50}${else}
${if_match "${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray net.sourceforge.radiotray.getCurrentRadio}" == "RTL2"}${lua fDrawImage ~/.conky/radiotray/logos/rtl2.png 100 50 50 50}${else}
${if_match "${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray net.sourceforge.radiotray.getCurrentRadio}" == "MAGNUM LA RADIO"}${lua fDrawImage ~/.conky/radiotray/logos/magnumradio.png 40 50 150 50}${else}
${if_match "${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray net.sourceforge.radiotray.getCurrentRadio}" == "LOUNGERADIO"}${lua fDrawImage ~/.conky/radiotray/logos/image.png 100 50 50 50}${else}
${if_match "${execi 10 qdbus net.sourceforge.radiotray /net/sourceforge/radiotray net.sourceforge.radiotray.getCurrentRadio}" == "RFM"}${lua fDrawImage ~/.conky/radiotray/logos/rfm.png 100 50 50 50}${endif}
${endif}${endif}${endif}${endif}${endif}${endif}
${execi 10 ~/.conky/radiotray/pochette.sh}
${lua fDrawImage ~/.conky/radiotray/pochette.png 80 150 100 100}
${voffset -1000}

Encore merci et

@+

Dernière modification par loutch (Le 10/07/2015, à 12:04)

Hors ligne

#1854 Le 08/07/2015, à 12:26

loutch

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

Re

" mode Hors Sujet"

aux modos ok pas de problème


@+

Dernière modification par loutch (Le 08/07/2015, à 12:36)

Hors ligne

#1855 Le 09/07/2015, à 22:21

loutch

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

Bonsoir WW

Je viens d'essayer la version image :

titre=$(head --lines=1 ~/.conky/radiotray/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

Le problème c'est que je ne trouve pas l'image télécharger contrairement @ la miniature qui se trouve dans mon home.

@+

Hors ligne

#1856 Le 12/07/2015, à 12:43

WW

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

Salut @loutch,

  L'image téléchargée de trouve dans le même répertoire que le script tu peux préciser un chemin a la commande wget via l'option --output-document.

Si ca ne recupere rien il y a certainement un problème lors de l'extraction du lien depuis les sources HTML. Peux tu m'indiquer un exemple de recherche Google image posant problème?

À+


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

Hors ligne

#1857 Le 12/07/2015, à 18:51

loutch

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

Bonsoir WW

WW a écrit :

Peux tu m'indiquer un exemple de recherche Google image posant problème?

Justement non aucune recherche ne fonctionne .

@+

Hors ligne

#1858 Le 12/07/2015, à 19:11

loutch

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

RE

C@ marche  j'ai Qwanté un peu et j'ai trouvé il fallait rajouter .jpg après

"googleImage"

.

le script :

 #!/bin/bash


titre=$(head --lines=1 ~/.conky/radiotray/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 --output-document="googleImage".jpg $imageLink


convert ~/googleImage.jpg ~/.conky/radiotray/image.png

Maintenant il y a aussi un autre problème ,le script ne se lance pas @ la demande du conky, il fonctionne au poil seulement lors d'un double-clic dans dolphin ( pourtant le script est bien éxécutable.)


La commande dans conky:

${execi 10 ~/.conky/radiotray/image.sh}

J'utilise la même commande pour les miniatures et ç@ fonctionne au poil.

${execi 10 ~/.conky/radiotray/pochette.sh}


@+

Edit du 13-07

C@ fonctionne l'image comme la miniature apparait bien dans mon home :

remplacé :

execi 10

par

texeci 10

mais l'image disparait toute les 20-30 secondes   .

encore MERCI  et

@+

Dernière modification par loutch (Le 13/07/2015, à 12:25)

Hors ligne

#1859 Le 13/07/2015, à 08:59

enebre

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

Bonjour,
Y a t il possibilité d'obtenir un affichage en plein écran de la carte donnée par le site : http://www.radars-auto.com/emplacements … rientales/
Scripturalement parlant.
edit: je suis allé dans le code source de l'image et je constate que c'est une composition assez importante d'images, je pense préférable d'oublier ma demande wink
merci

Dernière modification par enebre (Le 13/07/2015, à 09:39)

Hors ligne

#1860 Le 13/07/2015, à 12:43

loutch

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

Bonjour

j'essais ceci :

imlib_cache_flush_interval 20
imlib_cache_size 100

et pour le moment ç@ clignote plus .

@+

Hors ligne

#1861 Le 25/07/2015, à 10:21

enebre

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

Bonjour,
J'ai un petit script de recherche développé par barbican82@
que j'aimerais modifier pour obtenir le résultat des documents de mon home odt pdf epub pps doc txt et aussi les fichiers en texte brut généré par mousepad sur xfce (sans extension visible)
J'obtiens ce que je recherche sauf les fichiers de texte brut sad
merci de votre aide
si possible j'aimerais aussi sélectionner plusieurs dossiers et avoir la possibilité d'en exclure certains (par exemple dossiers se trouvant dans téléchargement)
Le script :

#!/bin/sh -x
# script of barbican82@
# Modified by rodofr Live Voyager
# script de recherche récursive des videos avec création d'une page web
# on se place dans le home du user courant
# dependance : zenity

cd
ici=`pwd`
##On crée/vide le fichier
> $ici/index.html

# Selection du répertoire à explorer ($HOME par defaut)
chemin=$(zenity  --file-selection --title="Select Directory that contains JPEGS" --directory --filename=$HOME)
#chemin=$(HOME /media/ombre/53a67143-248a-45c3-9785-a210988d2c04/home/ombre/)
#Selection du type de fichier à chercher
#doc=$(zenity --entry --ok-label="Valider" --cancel-label="Annuler" --width=400 --height=100 --title="Saisie" --text="Selection" --entry-text="Movies" Music Document Ebook)
doc=Document

#Si on clique sur le bouton Annuler
if [ "$?" -eq 1 ]; then
    #On quitte le script
    exit
fi

case $doc in
		1) 
			exit 
		;;
		
		Movies)
			rep=$(zenity --entry --ok-label="Valider" --cancel-label="Annuler" --width=400 --height=100 --title=" Saisie" --text="Enter all or part of the name of the movie or leave blank - Entrez tout ou partie du nom du film ou laissez vide" )

#Si on clique sur le bouton Annuler
if [ "$?" -eq 1 ]; then
    #On quitte le script
    exit
fi

#Génération de la page web
# en-tête
echo '<html>' >> index.html
echo '<head><title></title><meta http-equiv="content-type" content="text/html; charset=utf-8" /></head>' >> index.html
echo '<h2>Movies</h2>' >> index.html

		# recherche des fichiers videos, on se limite aux avi AVI, mp4 MP4 et mkv MKV
		if [$rep == ""] ;then 
				find  $chemin $file -type f -iname '*.mp4' -o -iname '*.avi' -o -iname '*.mkv' | while read i
			#on ajoute les fichiers trouvés dans la page html
				do
				echo '<li><a href="'${i}'">'${i}'</a></li>' >> $ici/index.html
				done

				else 
				find $chemin $file -type f -iname "*$rep*.mp4" -o -iname "*$rep*.avi" -o -iname "*$rep*.mkv" | while read i
				do
				echo '<li><a href="'${i}'">'${i}'</a></li>' >> $ici/index.html
				done
		fi
			;;

		Music)
			rep=$(zenity --entry --ok-label="Valider" --cancel-label="Annuler" --width=400 --height=100 --title=" Saisie" --text="Enter all or part of the name of the movie or leave blank - Entrez tout ou partie du nom du film ou laissez vide" )

#Si on clique sur le bouton Annuler
if [ "$?" -eq 1 ]; then
    #On quitte le script
    exit
fi

#Génération de la page web
# en-tête
echo '<html>' >> index.html
echo '<head><title></title><meta http-equiv="content-type" content="text/html; charset=utf-8" /></head>' >> index.html
echo '<h1>Music</h1>' >> index.html

		# recherche des fichiers sons on se limite aux mp3, flac, wav
		if [$rep == ""] ;then 
				find $chemin $file -type f -iname '*.mp3' -o -iname '*.flac' -o -iname '*.wav' | while read i
				#on ajoute les fichiers trouvés dans la page html
				do
					echo '<li><a href="'${i}'">'${i}'</a></li>' >> $ici/index.html
				done
				else	 
					find $chemin  $file -type f -iname "*$rep*.mp3" -o -iname "*$rep*.flac" -o -iname "*$rep*.wav" | while read i
				do
					echo '<li><a href="'${i}'">'${i}'</a></li>' >> $ici/index.html
				done
		fi
			;;

		Document)
			#rep=$(zenity --entry --ok-label="Valider" --cancel-label="Annuler" --width=400 --height=100 --title=" Saisie" --text="Enter all or part of the name of the movie or leave blank - Entrez tout ou partie du nom du film ou laissez vide" )

#Si on clique sur le bouton Annuler
if [ "$?" -eq 1 ]; then
    #On quitte le script
    exit
fi

#Génération de la page web
# en-tête
echo '<html>' >> index.html
echo '<head><title></title><meta http-equiv="content-type" content="text/html; charset=utf-8" /></head>' >> index.html
echo '<h2>Document</h2>' >> index.html

			# recherche des fichiers  on se limite aux doc, xls, odt, ods
		if [$rep == ""] ;then 
				find $chemin $file -type f -iname '*.doc' -o -iname '*.odt' -o -iname '*.xls' -o -iname '*.ods' -o -iname '*.pdf' -o -iname '*.epub' -o -iname '*.texte brut' -o -iname '*.pps' | while read i
				#on ajoute les fichiers trouvés dans la page html
				do
					echo '<li><a href="'${i}'">'${i}'</a></li>' >> $ici/index.html
				done
				else 
				find $chemin $file -type f -iname "*$rep*.doc" -o -iname "*$rep*.odt" -o -iname "*$rep*.xls" -o -iname "*$rep*.pdf" -o -iname "*$rep*." -o -iname "*$rep*.epub" -o -iname "*$rep*.ods"| while read i
				do
				echo '<li><a href="'${i}'">'${i}'</a></li>' >> $ici/index.html
				done	
		fi
			;;
		Ebook)
			rep=$(zenity --entry --ok-label="Valider" --cancel-label="Annuler" --width=400 --height=100 --title=" Saisie" --text="Enter all or part of the name of the movie or leave blank - Entrez tout ou partie du nom du film ou laissez vide" )

#Si on clique sur le bouton Annuler
if [ "$?" -eq 1 ]; then
    #On quitte le script
    exit
fi

#Génération de la page web
# en-tête
echo '<html>' >> index.html
echo '<head><title></title><meta http-equiv="content-type" content="text/html; charset=utf-8" /></head>' >> index.html
echo '<h2>Ebook</h2>' >> index.html

			# recherche des fichiers  on se limite aux epub, pdf 
		if [$rep == ""] ;then 
				find $chemin $file -type f -iname '*.epub' -o -iname '*.pdf'  | while read i
				#on ajoute les fichiers trouvés dans la page html
				do
					echo '<li><a href="'${i}'">'${i}'</a></li>' >> $ici/index.html
				done
				else 
				find $chemin $file -type f -iname "*$rep*.epub" -o -iname "*$rep*.pdf " | while read i
				do
				echo '<li><a href="'${i}'">'${i}'</a></li>' >> $ici/index.html
				done	
		fi
			;;
			esac
	#Génération de la page web # en-tête
		echo '<html>' >> $ici/index.html
		echo '<li><a href="'${i}'">'${i}'</a></li>' >> $ici/index.html
	
echo '</ul></body></html>' >> $ici/index.html
# firefox ouvre la page
/home/ombre/Téléchargements/firefox/firefox $ici/index.html

#fin
exit 0

Dernière modification par enebre (Le 25/07/2015, à 10:26)

Hors ligne

#1862 Le 17/09/2015, à 13:08

abach

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

Une stratégie de sauvegarde en Shell

Nom du script: Sauvegarde des données

Compatible avec: Bash

Descriptif:Je suis un peu maniaque en ce qui concerne la sauvegarde de mes données... souvenir d'un temps où j'exerçais des responsabilités dans ce domaine.
Je me suis donc attelé à écrire une stratégie de sauvegarde "à ma façon", en tenant compte des possibilités dont je dispose.
Ces possibilités, quelles sont-elles :
* Un disque externe de 1To branché en USB3 sur mon PC
* Un Raspberry connecté en filaire sur mon réseau
* Un cloud hébergé sur mon site Internet chez OVH
* Un cloud chez Adrive

Je voulais aussi rapatrier les sites Internet que je gère pour les sauvegarder et sauver les machines virtuelles que j'utilise.

J'ai analysé les flux pour optimiser les temps en fonction des goulots d'étranglements et me permettre de reprendre la main le plus vite possible sur mon PC et reprendre le cours normal de mes activités.

Je voulais rendre cette sauvegarde souple, me permettant de lancer l'un, l'autre ou tous les éléments selon mon envie ou mon besoin tout en intégrant une planification en fonction du jour de la semaine.

Le résultat ? Plutôt que de mettre les scripts en pièces jointes, et dans le but de toujours vous proposer la dernière version "uptodate", je vous met le lien vers la page de mon site où j'en parle : C'est par ici que ça se passe. Bien entendu, si ça pose un problème aux modérateurs, je ferais autrement.

Pré-requis: le paquetage mpg123 pour la notification sonore.

Nota : le programme principal, celui à lancer, est sauvegarde.sh


Les chiens vous regardent tous avec vénération. Les chats vous toisent tous avec dédain. Il n’y a que les cochons qui vous considèrent comme leurs égaux. - Winston Churchill
Je suis parrain Linux

Hors ligne

#1863 Le 25/09/2015, à 18:15

abach

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

Un script pour encoder toutes les vidéos d'un répertoire et de ses sous-répertoires ?

Voici mon "problème" : J'ai pas mal de vidéos dans un répertoire et ses sous-répertoires. our faire simple, ce sont des vidéos d'anniversaire, de mariage etc...
Je voudrais, via avconv, les réencoder pour pouvoir les mettre ensuite sur mon site Internet sans avoir à passer par youtube.

L'idée serait de scanner le répertoire '$HOME/vidéos/départ" pour traiter toutes les vidéos (avi, mp4, asf, ...) pour mettre le résultat de la manip' dans '$HOME/vidéos/arrivée' en respectant l’arborescence  départ.

La partie "encodage vidéo" ne me pose pas spécialement de problème (winff me donne le code) mais le scan et le passage des noms et la position des fichiers, je sais pas faire...

Une idée ?


Les chiens vous regardent tous avec vénération. Les chats vous toisent tous avec dédain. Il n’y a que les cochons qui vous considèrent comme leurs égaux. - Winston Churchill
Je suis parrain Linux

Hors ligne

#1864 Le 25/09/2015, à 19:26

tiramiseb

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

abach: peux-tu montrer ce que tu ferais comme commande si tu le faisais à la main ? par exemple s'il n'y en avait que trois à faire...

Hors ligne

#1865 Le 25/09/2015, à 19:32

abach

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

tiramiseb a écrit :

abach: peux-tu montrer ce que tu ferais comme commande si tu le faisais à la main ? par exemple s'il n'y en avait que trois à faire...

Voici ce que me donne, par exemple, la commande issue de Winff :

/usr/bin/avconv -threads 4  -y -i "$cheminsource/$mavideo.avi" -vcodec flv -f flv -r 29.97 -filter:v scale=320:180 -aspect 16:9 -b:v 300k -g 160 -cmp dct -subcmp dct -mbd 2 -flags +aic+mv0+mv4 -trellis 1 -ac 1 -ar 22050 -b:a 56k "$chemindest/$mavideo.flv"

J'ai simplement remplacé les chemins et le nom de la vidéo par des variables...


Les chiens vous regardent tous avec vénération. Les chats vous toisent tous avec dédain. Il n’y a que les cochons qui vous considèrent comme leurs égaux. - Winston Churchill
Je suis parrain Linux

Hors ligne

#1866 Le 25/09/2015, à 19:42

tiramiseb

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

Peut-être quelque chose comme ça :

for f in $cheminsource/*.avi
do
  f_sans_ext="$(basename "$f" .avi)"
  /usr/bin/avconv -threads 4  -y -i "$f" -vcodec flv -f flv -r 29.97 -filter:v scale=320:180 -aspect 16:9 -b:v 300k -g 160 -cmp dct -subcmp dct -mbd 2 -flags +aic+mv0+mv4 -trellis 1 -ac 1 -ar 22050 -b:a 56k "$chemindest/$f_sans_ext.flv"
done

Hors ligne

#1867 Le 25/09/2015, à 20:23

abach

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

Merci tiramiseb,

Ca marche à un détail près : ça le fait pas le "recurse" pour scruter les sous-répertoires

J'ai bien sûr essayé d'ajouter "-R" derrière la ligne "for ..." mais sans résultat


Les chiens vous regardent tous avec vénération. Les chats vous toisent tous avec dédain. Il n’y a que les cochons qui vous considèrent comme leurs égaux. - Winston Churchill
Je suis parrain Linux

Hors ligne

#1868 Le 25/09/2015, à 20:32

tiramiseb

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

Ah oui, la récursion...

Peut-être ça...

find "$cheminsource" -name '*.avi' | while read f
do
  f_sans_ext="$(basename "$f" .avi)"
  /usr/bin/avconv -threads 4  -y -i "$f" -vcodec flv -f flv -r 29.97 -filter:v scale=320:180 -aspect 16:9 -b:v 300k -g 160 -cmp dct -subcmp dct -mbd 2 -flags +aic+mv0+mv4 -trellis 1 -ac 1 -ar 22050 -b:a 56k "$chemindest/$f_sans_ext.flv"
done

Hors ligne

#1869 Le 25/09/2015, à 20:38

abach

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

marche pas sad


Les chiens vous regardent tous avec vénération. Les chats vous toisent tous avec dédain. Il n’y a que les cochons qui vous considèrent comme leurs égaux. - Winston Churchill
Je suis parrain Linux

Hors ligne

#1870 Le 25/09/2015, à 20:42

tiramiseb

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

C'est vague.

Hors ligne

#1871 Le 25/09/2015, à 20:48

abach

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

Tu sais, c'est pas fondamental non plus...

Je peux me débrouiller pour, au moment de faire ma conversion, tout mettre à plat dans un répertoire smile

Faut parfois pas chercher midi à quatorze heure


Les chiens vous regardent tous avec vénération. Les chats vous toisent tous avec dédain. Il n’y a que les cochons qui vous considèrent comme leurs égaux. - Winston Churchill
Je suis parrain Linux

Hors ligne

#1872 Le 25/09/2015, à 21:01

tiramiseb

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

C'est toi qui vois.
Mais ce n'est pas avec un « marche pas » que je pourrai comprendre ce qui ne va pas.
Si tu veux de l'aide, s'il y a quelque chose qui ne fonctionne pas, il faut montrer ce que tu fais et ce que tu obtiens, messages d'erreur etc.

Hors ligne

#1873 Le 25/09/2015, à 21:13

abach

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

Tu as tout à fait raison.

Pour aider la reflexion, voici mon code :

#!/bin/sh
clear
# 
# Conversion vidéo en ligne de commande
# 
currentdir=$HOME/scripts
cheminsource=$HOME/Vidéos/source
destdir=$HOME/Vidéos/destination

logfile=$currentdir/logs/log_convert.log

rm $logfile
echo "===============================================================" >> $logfile
echo " DEBUT" >> $logfile
echo "===============================================================" >> $logfile
extension="avi"
find "$cheminsource" -name '*.avi' | while read f
do
	f_sans_ext="$(basename "$f" .$extension)"
	echo -n "\033]0; Conversion $f\007"
	DATE_SITE=`date "+%d/%m/%Y a %T"`
	if [ ! -e "$f_sans_ext.flv" ]; then
		echo "Conversion de $f_sans_ext.$extension commencée le $DATE_SITE" >> $logfile
		/usr/bin/avconv -threads 4  -y -i "$f" -vcodec flv -f flv -r 29.97 -filter:v scale=320:180 -aspect 16:9 -b:v 300k -g 160 -cmp dct -subcmp dct -mbd 2 -flags +aic+mv0+mv4 -trellis 1 -ac 1 -ar 22050 -b:a 56k "$destdir/$f_sans_ext.flv"
		DATE_SITE=`date "+%d/%m/%Y a %T"`
		echo "Conversion de $f_sans_ext.$extension terminée  le $DATE_SITE" >> $logfile
	else
		echo "$f_sans_ext.flv existe deja"
	fi
done

echo "===============================================================" >> $logfile
echo " FIN" >> $logfile
echo "===============================================================" >> $logfile
cat $logfile

Il va effectivement, et contrairement à ce que je croyais toute à l'heure, scruter l'arborescence pour récupérer les "avi" qui sont dans les sous-répertoires.
Par contre, il va placer le résultat à la racine du dossier destinataire sans recréer l'arborescence.


Les chiens vous regardent tous avec vénération. Les chats vous toisent tous avec dédain. Il n’y a que les cochons qui vous considèrent comme leurs égaux. - Winston Churchill
Je suis parrain Linux

Hors ligne

#1874 Le 25/09/2015, à 21:16

tiramiseb

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

il va placer le résultat à la racine du dossier destinataire sans recréer l'arborescence.

Ah merde, encore un truc que j'avais zappé smile

Hors ligne

#1875 Le 25/09/2015, à 21:22

tiramiseb

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

À tout hasard mais sans aucune certitude, non testé :

find "$cheminsource" -name '*.avi' | while read f
do
  dest="$(echo "$f" | sed "s%^$cheminsource%$chemindest%;s/.avi\$/.flv/")"
  destdir="$(dirname "$dest")"
  mkdir -p "$destdir"
  /usr/bin/avconv -threads 4  -y -i "$f" -vcodec flv -f flv -r 29.97 -filter:v scale=320:180 -aspect 16:9 -b:v 300k -g 160 -cmp dct -subcmp dct -mbd 2 -flags +aic+mv0+mv4 -trellis 1 -ac 1 -ar 22050 -b:a 56k "$dest"
done

Hors ligne