Classe2photos.sh

De OpenWikiBSD
Aller à : navigation, rechercher

Usage

Après avoir pris la série complète de photos individuelles de vos élèves, en tant que Prof principal, Soit vous envoyez à la main en renommant, redimensionnant les photos pour le trombinoscope élèves de Gepi, soit...

vous lancez Classe2photos.sh en lui indiquant le nom de la classe et le répertoire contenant les photos. et c'est parti!

Syntaxe

./Classe2photos.sh IdentifiantDeLaClasseAuSensGepi /chemin/du/rep/contenant/les/photos

  • Deux paramètres sont modifiables en interne:
    • REDIM pour choisir de redimensionner les photos
    • BORD pour ajouter un mignon petit bord bleu pour les garçons et rose pour les filles ;-)

Prérequis

  • Facultatif : {ImageMagick} Pour redimensionner les photos
  • gepi
  • params.txt Contient les paramètres MySQL et LDAP de mes différents scripts.
  • uid2eleonet.sh Renvoie l'identifiant Eleonet d'un uid LDAP
  • genre.sh Renvoie le sexe d'un uid
  • Un annuaire LDAP (se3 au hasard) pour les utilisateurs.

Vérifications préalables

  • La classe existe dans Gepi
  • Les élèves existent dans Gepi, leur eleonet aussi
  • Il y a autant d'élèves que de photos

Précautions à prendre

  • La série de photos doit être prise sans interruption, dans l'ordre alphabétique. Ce qui signifie qu'une photo de chaise vide doit être prise pour les absents.
  • L'extension des photos est forcément .JPG et pas .jpg!
  • Ne lancez pas deux scripts simultanés depuis le même répertoire. Aucune gestion concurrente pour le moment.

Script

#!/usr/local/bin/bash
#GPL
# Fait par polyp
#14/10/08 Maj du 10/11/09
USAGE="Usage : ./Classes2Photos.sh NomCLasse RepContenantLesPhotos avec l'extension .JPG
ATTENTION:Il doit y avoir autant de photos que d'élèves. Elles seront utilisées dans l'ordre"

# CHOIX
REDIM=1	# Mettre à 0 pour ne pas redimensionner les photos
BORD=1 # Mettre à 0 pour ne pas  ajouter  de bordure en fonction du sexe

# Récupération des paramètres depuis le fichier eponyme
FICPARAMS=/usr/script/params.txt
IPLDAP=`cat $FICPARAMS |grep IPLDAP|cut -d":" -f2`
BASEDN=`cat $FICPARAMS |grep BASEDN|cut -d":" -f2-99`
LDAPPASS=`cat $FICPARAMS |grep LDAPPASS|cut -d":" -f2`
ADMINLDAP=`cat $FICPARAMS |grep ADMINLDAP|cut -d":" -f2`
SQLUSER=`cat $FICPARAMS |grep SQLUSER |cut -d":" -f2`
SQLPASS=`cat $FICPARAMS |grep SQLPASS|cut -d":" -f2`
BDD=`cat $FICPARAMS |grep BDD|cut -d":" -f2`
REPDST=/var/www/htdocs/photos/eleves
APACHE=`ps axu |grep httpd|cut -d" " -f1|head -1`
UID2ELEO=/usr/script/uid2eleonet.sh
GENRE=/usr/script/genre.sh

#Lock
#PRNG=`/usr/script/prng.sh`
#PID=/var/run/Classe2Photo.$PRNG.pid
#touch $PID

if [ "$2" == "" ]
then echo $USAGE
exit
else
REP=$2
fi

#ImageMagick installé ?
CONV=`whereis convert`
if  [ "$CONV" != "" ]
then
IM=1
else
echo" Avec le paquet ImageMagick, les images auraient ete redimensionnees.."
IM=0
fi

#Trouver la classe :
CLASS=`mysql --skip-column-names -h localhost -u $SQLUSER -p$SQLPASS -e "use $BDD; SELECT classe FROM classes where classe=\"$1\""`
IDCLASS=`mysql --skip-column-names -h localhost -u $SQLUSER -p$SQLPASS -e "use $BDD; SELECT id FROM classes where classe=\"$1\""`
if [ "$CLASS" == "" ]
then 
echo $USAGE
echo  "Classe introuvable sur le serveur Gepi. Vérifiez la syntaxe"
exit
fi

# Bon nombre de photos ?
CNTELEV=`mysql --skip-column-names -h localhost -u $SQLUSER -p$SQLPASS -e "use $BDD; SELECT COUNT(DISTINCT login) FROM j_eleves_classes WHERE id_classe=\"$IDCLASS\""`
CNTPHOT=`ls $REP/*.JPG|wc -l `
if [ $CNTELEV != $CNTPHOT ]
then
echo "Il y a $CNTELEV  eleves en $1 pour $CNTPHOT photos.."
exit
fi

# Trouver les élèves
ELEVES=`mysql --skip-column-names -h localhost -u $SQLUSER -p$SQLPASS -e "use $BDD; SELECT DISTINCT login FROM j_eleves_classes WHERE id_classe=\"$IDCLASS\""`

for  ELV in $ELEVES
	do
 	ELEO=`$UID2ELEO $ELV`
if [ "$ELEO" == "" ]
then
echo "Souci LDAP"
exit
fi
	echo "Traitement de $ELV"	
	PHOT=`ls $REP/*.JPG |head -1`
	NEWPHOT=$REPDST/$ELEO.jpg
	mv $PHOT $NEWPHOT
	
	if ( [ "$IM" == "1" ] && [ "$REDIM" == "1" ] )
	then
	# On réduit les photos a une centaine de ko
 	$CONV $NEWPHOT -interlace line -resize 1500x -quality 50 $NEWPHOT
	fi
	
	if ( [ "$IM" == "1" ] && [ "$BORD" == "1" ] )
	then
	# On ajoute une bordure bleue pour les garcons, rose pour les filles ;-)
 	if [ "`$GENRE $ELV`" == "M" ] 
		then COL=blue
		 fi
 	if [ "`$GENRE $ELV`" == "F" ] 
		then COL=pink 
		fi
	$CONV $NEWPHOT  -bordercolor $COL -border 10 $NEWPHOT
	fi
	
	chown	$APACHE.$APACHE $NEWPHOT
	done

#Lock
#rm $PID

Sortie