Pages : 1
#1 Le 23/01/2006, à 00:57
- ZeBob
Mon premier script bash terminé!
Il sert à remplacer la musique enregistrée avec streamripper que l'on n'aime pas par un fichier vide. De cette manière streamripper ne réenregistre pas cette musique et on gagne de la place.
Dites moi ce que vous en pensez, si je dois faire des améliorations... Merci
Si vous savez où je peux le publier aussi...
#!/bin/bash
#################################################################
# #
# DESCRIPTION #
# StreamManager: script which delete non-wanted songs #
# recorded by streamripper and which create a blank file #
# with the same name in order to not re-record it. #
# #
#################################################################
#################################################################
# #
# INFO #
# Author : ZeBob - zebob.m AT gmail DOT com #
# Licence : GNU GPL #
# Dependency #
# zenity #
# History #
# 22.01.2006 : v0.1 #
# Install #
# Put in ~/.gnome2/nautilus-scripts/ #
# In a console : #
# chmod u+x ~/.gnome2/nautilus-scripts/streammanager #
# Use #
# Select files to delete in Nautilus or just run the script #
# to list all music files in the folder #
# Todo #
# More localization #
# Add a zenity progress dialog when loading files #
# Known bugs #
# Don't work for file beginning with '-' #
# #
#################################################################
version="0.1"
#################################################################
# TRADUCTIONS (todo) #
#################################################################
###### English #####
titre="StreamManager "$version""
choisir="Choose the files you want to delete and replace by blank files."
colonne="Files"
efface=" has been deleted and replaced."
case $LANG in
###### French #####
fr* )
titre="StreamManager "$version""
choisir="Choississez les fichiers que vous voulez supprimer et remplacer par des versions vides."
colonne="Fichiers"
efface=" a été supprimé et remplacé."
###### Add others #####
esac
#################################################################
# VARIABLES #
#################################################################
liste= #array with selected files or the folder where the script is run
liste_choisie= #array with selected files after the zenity dialog
fichier_a_supprimer= #variable with the current file to delete
resultat= #variable which contains the results
sm_dir="$HOME/.Trash/streammanager" #the path of the deleted files
#################################################################
# PROGRAM #
#################################################################
if [ $# -eq 0 ]; then #check if there is files in command line parameter, if not select all the file in the folder
for fichier in *
do
#check if the file is: writeable, ogg or mp3
if [ -w "${fichier}" ]; then
if [ "$(file -bi "${fichier}")" == "application/ogg" \
-o "$(file -bi "${fichier}")" == "audio/mpeg" ]; then
liste=("${liste[@]}" "TRUE" "${fichier}") #then put all files in an array
fi
fi
done
else
for fichier
do
if [ -w "${fichier}" ]; then #same as above
if [ "$(file -bi "${fichier}")" == "application/ogg" \
-o "$(file -bi "${fichier}")" == "audio/mpeg" ]; then
liste=("${liste[@]}" "TRUE" "${fichier}")
fi
fi
done
fi
#show a zenity dialog with files in order to choose which to delete
liste_choisie=$(zenity --title="${titre}" --width=640 --height=480 --list --text="${choisir}" --checklist \
--separator=";" --column=" " --column="${colonne}" "${liste[@]:1}")
if [ -n "${liste_choisie}" ]; then
if [ ! -e $sm_dir ]; then #check if the streammanager folder exists in the trash
mkdir $sm_dir
elif [ ! -d $sm_dir ]; then
rm $sm_dir
mkdir $sm_dir
fi
IFS=";"
for fichier_a_supprimer in ${liste_choisie[@]}
do
mv "${fichier_a_supprimer}" "${sm_dir}/${fichier_a_supprimer}" #move the file to trash
touch "${fichier_a_supprimer}" #create a blank file with the same name
resultat=("${resultat[@]}" "${fichier_a_supprimer}${efface}")
done
unset resultat[0]
zenity --title="${titre}" --text="" --width=640 --height=480 --list --column="${colonne}" "${resultat[@]}"
fi
exit 0
Dernière modification par ZeBob (Le 25/01/2006, à 19:32)
Hors ligne
#2 Le 23/01/2006, à 08:29
- mrf
Re : Mon premier script bash terminé!
LOL, j'ai jamais vu un script bash comme ça :D
Chez moi, il n'y a pas de commentaires, et pas de structure et tout pour connaitre les variables ..etc
Chapi chapo
#3 Le 23/01/2006, à 08:42
- yeKcim
Re : Mon premier script bash terminé!
Pour ma part je suis aggréablement surpris de constater que nous programons de la meme façon, plein de commentaires partout, un explicatif au départ, plein de # pour faire des barres... Heureux de constater que la lisibilité des scripts n'est pas que mon obsession. On pourrait peut-etre le mettre sur gscript si tu veux. Envoie moi un mail si tu le veux.
Participer à un projet libre est un jeu... Et toi, à quoi tu joues ?
http://yeknan.free.fr
Hors ligne
#4 Le 23/01/2006, à 11:10
- ZeBob
Re : Mon premier script bash terminé!
Les commentaires ça vient de mes mon habitude de script dos, et aussi du fait que je me retrouve perdu quand je les relis. Et ça fait plus propre.
Par contre pour la partie traduction je me suis inspiré de scripts sur g-script.
Mais sinon pour le code en lui-même, y'a des trucs qui paraissent farfelus ?
Hors ligne
#5 Le 06/04/2006, à 10:47
- kabdz08
Re : Mon premier script bash terminé!
moi aussi je commence à programmer et le fait de bien commenter le script me plait !
windows ou Linux ? hum.... that's the question !
Hors ligne
#6 Le 06/04/2006, à 10:58
- Fy
Re : Mon premier script bash terminé!
moi aussi je commence à programmer et le fait de bien commenter le script me plait !
Bien commenter ne signifit pas trop commenter
Script sympatique et utile, merci.
Hors ligne