# affiche vers la sortie d'erreur et sort avec code de retour de # la derniere commande executé. error(){ # sauvegarde de $? pour renvoyer l'erreur commise avant l'appel de # cette fonction. err=$? #printf "$@" >&2 echo "$@" exit $err } # affiche le message passé en paramètre vers la sortie d'erreur infouser(){ #printf "$@" >&2 echo "$@" } ## # Cette fonction teste la cohérence de l'arborescence # c'est à dire que le nombre de fichiers téléchargés et # transformé doit être égale dans chaque répertoire de l'arborescence # pour un même usage # # RETOUR : # - 0 Système de fichier cohérent # - 1 Système de fichier incohérent ## test_coherence_corpus(){ # Compter le nombre de page déjà aspiré pour vérifier la cohérence # du système. nbPageAsp=`ls -1 $repPageAsp|wc -l` nbPageLynx=`ls -1 $repPageLynx|wc -l` nbPageContexte=`ls -1 $repPageContexte|wc -l` #echo "nbPage $nbPageAsp $nbPageLynx $nbPageContexte" # On n'a pas le nombre de page dans chaque répertoire : état incohérent. if [ "$nbPageAsp" -ne "$nbPageLynx" ] || [ "$nbPageAsp" -ne "$nbPageContexte" ] then return 1; #echec else return 0; #succes fi } ## Concatenation # # Cette fonction constitue un nouveau fichier d'URL à partir d'un fichier URL # et d'une page html correspondate déjà existante. Les URLs ajoutées sont celles # qui ne sont pas présente dans la page HTML. Aucune URL de la page html n'est # supprimée. Cela permet de relancer le programme avec le même fichier URL mais # où des téléchargements ont échouées. Ou d'ajouter de nouvelles URLs dans un # fichier d'URL # # RETOUR : # - 0 si la préparation de la concatenation a réussi # - 1 Echec # TOUTES LES VARIABLES sont GLOBALES !!! # # Voir http://abs.traduc.org/abs-4.1-fr/ch19.html # Exemple 19.1. Rediriger stdin en utilisant exec ## concatenation(){ # Il faut lire le fichier existant et le recopier, mais ne # pas fermer ni le tableau, ni la page c'est à dire lire tout # sauf la ligne </table></body></html>. # On passe par un fichier intermédiaire. # recherche inversé de grep if grep -v "</table></body></html>" $ficHtml > $ficHtml.grep then # grep a trouvé quelque chose mv $ficHtml.grep $ficHtml || return 1 # Les noms variable des fichiers devront commencer après cela. # on ajoute à la suite. # Toute les variables sont globales, partagé avec le script appelant. nbPageHtml=$nbPageAsp # Il faut enlever les URLs déjà téléchargées et récupérer les # précédents échecs. # Lecture ligne à ligne du fichier, et si l'URL et présente dans # la page html alors on ne la garde pas. #cat < $RfichierUrl | while true exec 25<&0 # Lie le descripteur de fichier #6 avec stdin. # Sauvegarde stdin. #echo "RficUrl : $RfichierUrl.diff" if [ -f $RfichierUrl.diff ] then rm -f $RfichierUrl.diff || return $? fi touch $RfichierUrl.diff || return $? exec < $RfichierUrl # remplace STDIN par ce fichier while true do read line # S'il n'y a plus de ligne. if [ "$line" == "" ]; then break; fi if grep $line $ficHtml then # Il y a une URL en moins a télécharger car elle existe déjà. let nbPageATelecharger=nbPageATelecharger-1 else # Cette ligne sera à télécharger echo $line >> "$RfichierUrl.diff" fi done exec 0<&25 25<&- # Maintenant, restaure stdin à partir de fd #25, où il a été sauvegardé, #+ et ferme fd #25 ( 25<&- ) afin qu'il soit libre pour d'autres processus. # # <&25 25<&- fonctionne aussi. # Les URL à traiter sont celle de .diff RfichierUrl=$RfichierUrl.diff nbUrl=$nbPageATelecharger return 0 else return 1 fi } # Création du début de la page html dont le début du tableau # echo_header(){ titre=$1 files=$2 echo "<head>" >> $files echo "<title>Projet Encadré : $titre réalisé par AB & CJ </title>" >> $files echo "<meta name=\"author\" content=\"Christian Jean et Arianna Bisazza\" />" >> $files; echo "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\" />" >> $files; echo "<meta http-equiv=\"Content-Language\" content=\"fr\" />">> $files; echo "<meta name=\"keywords\" lang=\"fr\" content=\"tal taln barrage INALCO ILPGA\" />" >> $files; echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../DOCUMENTATION/site/styles.css\" />" >> $files; echo "</head>" >> $files; }