#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
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
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
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
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...
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#1865 Le 25/09/2015, à 19:32
- abach
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...
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
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
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
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#1869 Le 25/09/2015, à 20:38
- abach
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
marche pas
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.
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
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
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.
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
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é
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
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
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne