
#!/usr/bin/env bash
#===============================================================================
# Ce programme prend deux arguments:
# -le nom du fichier d'urls
# -le nom_du_tableau.html
# le mot/l'expression régulière est à modifier dans le script
# exemple d'utilisation du script: bash tableau.sh urls_fr tableau_fr.html
# ceci produira un tableau avec les urls, un dump html, un dump texte, le contexte, le nombre d'occurences et les concordances
#===============================================================================
fichier_urls=$1 # le fichier d'URL en entrée
fichier_tableau=$2 # le fichier HTML en sortie
if [[ $# -ne 2 ]]
then
echo "Ce programme demande exactement deux arguments."
exit
fi
mot="mot" # à modifier espagnol: "[Aa]mas? de casa" | français:"[Ff]emmes? au foyer" | anglais "[Hh]ousewiv?f?es?"| chinois "家庭主妇"
echo $fichier_urls;
basename=$(basename -s .txt $fichier_urls)
echo "<html><body>" > $fichier_tableau
echo "<h2>Tableau $basename :</h2>" >> $fichier_tableau
echo "<br/>" >> $fichier_tableau
echo "<table>" >> $fichier_tableau
echo "<tr><th>ligne</th><th>code</th><th>URL</th><th>encodage</th><th>dump html</th><th>dump text</th><th>occurrences</th><th>contextes</th><th>concordances</th></tr>" >> $fichier_tableau
lineno=1;
while read -r URL; do
echo -e "\tURL : $URL";
# la façon attendue, sans l'option -w de cURL
code=$(curl -ILs $URL | grep -e "^HTTP/" | grep -Eo "[0-9]{3}" | tail -n 1)
charset=$(curl -Ls $URL -D - -o "./aspirations/$basename-$lineno.html" | grep -Eo "charset=(\w|-)+" | cut -d= -f2)
# autre façon, avec l'option -w de cURL
# code=$(curl -Ls -o /dev/null -w "%{http_code}" $URL)
# charset=$(curl -ILs -o /dev/null -w "%{content_type}" $URL | grep -Eo "charset=(\w|-)+" | cut -d= -f2)
echo -e "\tcode : $code";
if [[ ! $charset ]]
then
echo -e "\tencodage non détecté, on prendra UTF-8 par défaut.";
charset="UTF-8";
else
echo -e "\tencodage : $charset";
fi
if [[ $code -eq 200 ]]
then
dump=$(lynx -dump -nolist -assume_charset=$charset -display_charset=$charset $URL)
if [[ $charset -ne "UTF-8" && -n "$dump" ]]
then
dump=$(echo $dump | iconv -f $charset -t UTF-8//IGNORE)
fi
else
echo -e "\tcode différent de 200 utilisation d'un dump vide"
dump=""
charset=""
fi
echo "$dump" > "./dumps-text/$basename-$lineno.txt"
echo "./dumps-text/$basename-$lineno.txt"
# compte du nombre d'occurrences
NB_OCC=$(grep -E -o "[Ff]emmes? au foyer" ./dumps-text/$basename-$lineno.txt | wc -l)
# extraction des contextes
grep -E -A2 -B2 "[Ff]emmes? au foyer" ./dumps-text/$basename-$lineno.txt > ./contextes/$basename-$lineno.txt
# construction des concordance avec une commande externe
bash ./programmes/concordance.sh ./dumps-text/$basename-$lineno.txt "$mot" > ./concordances/$basename-$lineno.html
echo "<tr><td>$lineno</td><td>$code</td><td><a href=\"$URL\">$URL</a></td><td>$charset</td><td><a href="./aspirations/$basename-$lineno.html">html</a></td><td><a href="./dumps-text/$basename-$lineno.txt">text</a></td><td>$NB_OCC</td><td><a href="./contextes/$basename-$lineno.txt">contextes</a></td><td><a href="./concordances/$basename-$lineno.html">concordance</a></td></tr>" >> $fichier_tableau
echo -e "\t--------------------------------"
lineno=$((lineno+1));
done < $fichier_urls
echo "</table>" >> $fichier_tableau
echo "</body></html>" >> $fichier_tableau
#!/usr/bin/bash
fichier_text=$1
motif=$2
if [[ $# -ne 2 ]]
then
echo "Ce programme demande exactement deux arguments."
exit
fi
if [[ ! -f $fichier_text ]]
then
echo "le fichier $fichier_text n'existe pas"
exit
fi
if [[ -z $motif ]]
then
echo "le motif est vide"
exit
fi
echo "
<!DOCTYPE html>
<html lang=\"en\">
<head>
<meta charset=\"UTF-8\">
<title>Concordance</title>
</head>
<body>
<table>
<thead>
<tr>
<th class=\"has-text-right\">Contexte gauche</th>
<th>Cible</th>
<th class=\"has-text-left\">Contexte droit</th>
</tr>
</thead>
<tbody>
"
##sur mac pour utiliser GUN grep il faut préfixer grep avec g
ggrep -P "\p{Han}{0,5}$motif(\p{Han}){0,5}" $fichier_text | sed -E "s/(.*)($motif)(.*)/<tr><td class="has-text-right">\1<\/td><td class="has-text-centre">\2<\/td><td class="has-text-left">\3<\/td><\/tr>/"
echo "
</tbody>
</table>
</body>
</html>
"