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.

#1 Le 31/03/2008, à 20:53

Krevan

Éditer une variable en lui ajoutant des caractères.

Bonjour bonjour !
Je suis actuellement en train de finir un script qui permet d'encoder en deux clics un fichier pour ma PSP. Tout se passe pour le mieux mais j'aimerais procéder à un amélioration pour éviter d'avoir à entrer le nom du fichier sortant manuellement.

En gros. Je voudrais que le nom du fichier reste le même tout en ajoutant les caractères "psp-" en préfixe. Mais je ne sais pas comment procéder.
Pour schématiser, ça donnerait ça :

$sortant = "psp-" + $entrant

Voici mon code, j'ignore si ça aidera... Mais le voici quand même !

#!/bin/sh
# Version 0.4-6
# Script sous licence GNU GPL

echo " __  __";
echo "  / / /   FFMPEG";
echo " / / / /| (GTK) Script Encodeur Express pour PSP";
echo "| / / / | Version 0.4-6";
echo "|/ / / /";
echo "  /_/ /__ ";
echo "";

title="(g)seep 0.4-6"

# Nouvelle méthode de selection du format sortant (graphique). 
format=`zenity --list --title "$title" --radiolist --text="Choix du format sortant" --column "" --column "Format"  TRUE "MP4"  FALSE "AVI"`
entrant=`zenity --title "$title" --file-selection`

# Condition vérifiant le format désiré et encode la vidéo en conséquence. 
if [ "$format" = "MP4" ]; then
{
        ffmpeg -i $entrant -f psp -r 29.97 -b 768k -ar 24000 -ab 64k -s 480x272 output-psp.mp4;
        zenity --info --title="$title" --text="Encodage de $entrant terminé";
}
elif [ "$format" = "AVI" ]; then
{
        ffmpeg -i $entrant -vcodec xvid -acodec mp3 -b 1000kb -s 480x272 output-psp.avi;
        zenity --info --title="$title" --text="Encodage de $entrant terminé";
}
fi

# Fin.
echo ;
echo "Le script a été lu jusqu'au bout. Et s'est terminé.";

exit 0;

Voilà !
Merci d'avance pour vos réponses,
à bientôt !


« Ce n'est pas une miette de pain, c'est la moisson du monde entier qu'il faut à la race humaine, sans exploiteur et sans exploité. »
Louise Michel

Hors ligne

#2 Le 31/03/2008, à 21:53

best_friend_fr

Re : Éditer une variable en lui ajoutant des caractères.

Salut

Inspire toi de

#!/bin/bash

entrant=toto
sortant=$entrant-truc
echo $sortant

sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr

Hors ligne

#3 Le 31/03/2008, à 22:45

Alain.g

Re : Éditer une variable en lui ajoutant des caractères.

Bonsoir
si $entrant vaut par exemple : "/home/bidule/un dossier/video.avi"
Afin que $sortant corresponde à "/home/bidule/un dossier/ps-video.avi", on peut faire :

sortant=`echo "$entrant" | sed 's/[^\/]*$/psp-&/'`

"[^\/]*$" correspond à la suite de caractères ne contenant pas de / (echappé ici pour ne pas être interprété comme délimiteur (s///). On aurait pu aussi changer le caractère délimiteur("s,,," par exemple)) en fin de la chaîne : bref, le nom du fichier.
& reprend ce qui correspond au motif (donc le nom du fichier) et on met devant "ps-"

Sinon je te conseille de mettre entre guillemets les variables (ça t'évitera des soucis si les noms de fichier contiennent des espaces) et les accolades ne sont pas utiles dans ce cas.

Dernière modification par Alain.g (Le 31/03/2008, à 23:51)


Xubuntu Karmic !

Hors ligne

#4 Le 02/04/2008, à 20:06

Krevan

Re : Éditer une variable en lui ajoutant des caractères.

Merci à vous deux !
Je suis tombé ce matin dans le cas d'une vidéo *.flv que je voulais convertir en *.avi.
Le fichier est correctement converti mais l'extension reste *.flv puisqu'on ajoute simplement un préfixe. J'aimerais savoir comment procéder pour modifier l'extension aussi.

Merci d'avance.


« Ce n'est pas une miette de pain, c'est la moisson du monde entier qu'il faut à la race humaine, sans exploiteur et sans exploité. »
Louise Michel

Hors ligne

#5 Le 02/04/2008, à 20:53

Alain.g

Re : Éditer une variable en lui ajoutant des caractères.

sortant=`echo "$entrant" | sed -r 's,([^/]+)\.[^\.]+$,psp-\1,'`

ajoute le préfixe et supprime l'extension. Il reste à ajouter .mp4 ou .avi derrière "$sortant" dans la ligne de ffmpeg

Mais si l'on part du principe que le nom du fichier source peut ne pas contenir d'extension, il serait plus correct de lister les différentes extensions qu'on peut rencontrer pour ne supprimer que si ça correspond  :

sortant=`echo "$entrant" | sed -r 's,[^/]*$,psp-&,;s/\.(avi|flv|mpe?g|vob|ts|mkv|mp4|ogg|ogm|rmvb|rm)$//I'`

En bash, on peut également rogner l'extension comme ceci : "${sortant%.*}"
(peut éventuellement poser problème si le nom ne contient pas d'extension et contient un point)

Dernière modification par Alain.g (Le 02/04/2008, à 21:07)


Xubuntu Karmic !

Hors ligne