« Auto-éditer un wikilivre/Auto-référencer/ajouter sclic.sh » : différence entre les versions
Contenu supprimé Contenu ajouté
WL:RD : ! mise en page, Initialisation de la page |
(Aucune différence)
|
Version du 25 mai 2020 à 14:53
- ! /bin/bash
#! /bin/bash #P Nom du fichier de commandes : ajouter_sclic #P Syntaxe : "ajouter_sclic <nom du livre>" #P Exemple : "./ajouter_sclic LivreTest" à la console. #P Date de création : 30 mars 2020 #P Modifié le : 7 mai 2020 par GC #P Version sur WikiLivres le : 7 mai 2020 #P #P LES FICHIERS DE COMMANDES #P #P## header.sh ############## #P header.sh, a crée le répertoire des commandes si celui-ci ne préexistait pas #P il a vérifié la validité ou invalidé de ligne de commande, initialisé #P les variables $Projet, $Site, $SitePrefix, vérifié l'existence des #P fichiers de liste "$Projet/$1".list et "$Projet/$1".prj, puis affiché le #P contenu du répertoire de travail. #P #P## lister ################# #P lister a créé le fichier de liste $Projet/$1.list par l'extraction du #P fichier $Projet/$1.contenu, copie de la page "Contenus" de la version #P imprimable du livre, ou du fichier $Projet/$1.compilé issu d'une #P compilation destinée à la publication par PediaPress. #P il crée aussi le fichier $Projet/$1.prj qui conserve l'ordre d'affichage #P de la publication. #P #P## télécharger ############ #P la commande aura téléchargé toutes les page du livre et aura copié les pages #P html dans des répertoires qui leurs sont dédiés pour y extraire toute la #P documentation nécessaire à la création de la page "Annexe" du livre. #w à ce stade, pour les tests; on dispose des répertoires de travail : #w LivreTest, ArticleUn, ArticleDeux, ArticleTrois #P qui contiennent chacun le fichier html de la page ou de l'article qui le #P concerne. #P L'ensemble des commandes aura créé les fichiers de listes : #P $Projet/$1.dirs, $Projet/$1.list, $Projet/$1.mainPage, $Projet/$1.prj #P #P## ajouter_sclt ########### #P La commande ./ajouter-sclt <wikilivre> commence par créer la page #P $Projet/$1.sclt comme elle apparaîtra dans la première partie de la page #P "Annexe" du livre avec les titre en wikitexte et les sections : #P Références: toutes celles qui n'ont pas été affichées dans les pages. #P Contenus: liens établis vers la page du livre et les articles (sous-pages) #P Source de l'édition: lien vers la page qui a permis de créer l' "Annexe". #P Sources licences et contributeurs des articles: ne concerne que les #P articles, les sous-pages. #P #D## ajouter_sclic ########## #D Remarques : #D à ce stade, Les fichiers $1.list, $1.prj, $1.pj, $1.sclt, $.mainPage sont #D cencés préexister dans le répertoire racine du projet $1. #D De même, les fichiers <Article>.str sont sensés préexister dans les #D répertoires <Article> correspondants. #D seront créés : #D dans le répertoire de travail racine ~/Annexe/$1/. : le fichier $1.sclic qui #D vient compléter le fichier $1.sclt afin de créerle fichier "Annexe", #D dans le sous-répertoire de travail ~/Annexe/$1/$1/. : #D $1.files, $1.pict, $1.illustrations, $1.links, html.list et #D les fichiers d'images .str .title, .source, .license, .auteur. #D #O inclure le fichier d'entête header.sh source header.sh #O## ajouter_scli_classique ########### #0 initialisation de la variables $PageScliC, avec le premier paramètre de la #O ligne de commande "ajouter_sclic <livre>" où "livre" = variable $1 #O PageScliC sera la variable d'identifiation du fichier "livre.sclic" placé #O dans le répertoire" de travail du projet : $Projet = ~/Annexe/$1/. PageScliC=$Projet/$1.sclic echo "Page .scli classique .sclic = " $PageScliC echo "------" #O se placer dans le sous-répertoire de travail "$Projet/$1/" #P rappel : $Projet = ~/Annexer/$1 d'où ss-rep = ~/Annexer/$1/$1/. cd $Projet/$1/ echo -n "Répertoire de travail pour l'annexion classique des illustrations : " pwd #O créer la section 'Image', 'Source', 'licence', 'Contributeur(?)' echo "== Sources des images licences et contributeurs ==" > $PageScliC #O ajouter le texte : style PediaPress ou personnalisé. #O style PediaPress : #O Les ''sources'' listées pour chaque article fournissent des informations #O de licence plus détaillées, y compris le statut des droits d'auteurs, les #O détenteurs de ces droits et les conditions de licence. echo "<small>Les ''sources'' listées pour chaque illustration fournissent des informations de licence plus détaillées, y compris le statut des droits d'auteurs, les détenteurs de ces droits et les conditions de licence.</small>" >> $PageScliC #O ou: (imprimer l'un ou l'autre de ces textes) #O style personnalisé : #O Les textes sont disponibles avec leurs licences respectives, cependant #O d’autres termes peuvent s’appliquer.<br /> #O Voyez les termes d’utilisation pour plus de détails :<br /> #O https://wikimediafoundation.org/wiki/Conditions_d'utilisation # echo "<small>Les textes sont disponibles avec leurs licences respectives, cependant d’autres termes peuvent s’appliquer.<br />Voyez les termes d’utilisation pour plus de détails :<br />https://wikimediafoundation.org/wiki/Conditions_d'utilisation.</mall>" >> $PageScliC echo " " >> $PageScliC echo "<small><small>" >> $PageScliC #T exit #O créer les fichiers de documentation des images de la page principale. #O ouvrir le flux $Projet/$1/$1.str de la page principale et sélectionner les #O chaînes de caractères contenant fichier:, file:, image:, dans le nouveau #O fichier $Projet/$1/$1.files cat $Projet/$1/$1.str | grep -n -i -e fichier: -e file: -e image: > $Projet/$1/$1.files cat $Projet/$1/$1.str | grep -n -i -e fichier: -e .jpg -e .png -e .gif > $Projet/$1/$1.picts cat $Projet/$1/$1.files | grep title |sed "s/<\/div>//g" | awk -F">" '{print $NF}' > $Projet/$1/$1.illustrations #T ls $Projet/$1/. #T exit # O ouvrir le flux $Projet/$1/$1.files, et remplacer à la volée le caractère # O '=' par un double retour-chariot, # O sélectionner les lignes contenant https # T #T avec les deux lignes suivantes option -A 2, # O couper les lignes au caractère " et conserver le deuxième champ, # O #T conserver les lignes qui contennent le champ "image" # O remplacer à la volée le caractère " par le caractère '!', et # O concaténer les chaînes contenant le caractère ! dans le nouveau fichier # O Projet/$1/$1/.lnk # #T cat $Projet/$1/$1.files | awk -F"=" '{for (i=1;i<=NF;i++) print $i "\n"}' |grep -A 2 https|cut -d '"' -f2 # #T |grep -B 2 image|tr '\n' !|cut -d ! -f1-3 cat $Projet/$1/$1.files | awk -F"=" '{for (i=1;i<=NF;i++) print $i "\n"}' | grep https | sed "s/\"/!/g" | cut -d '!' -f3 \ | grep https | tr '>' ! | sed "s/<\/a//g" |sed "s/!//g" > $Projet/$1/$1.links #O télécharger les fichiers d'images depuis le serveur wikimedia. # #T wget -P $Projet/$1 -i $Projet/$1/$1.links wget -P $Projet/$1 -r -linf -k -p -E -i $Projet/$1/$1.links cp ./commons.wikimedia.org/wiki/*.html . #T créer un fichier de liste html.list #T ls *.html | grep -i -e fichier: -e file: -e image: > html.list #T echo html.list #O initialiser le fichier de liste html.list avec un texte vide. echo -n "" > html.list #O lister les fichiers d'images dans l'ordre d'impression ou de l'affichage, #O à laide de la liste $1.links. while read line do echo $line | awk -F"/" '{print $NF}' | cut -d '%' -f1 | cut -d '.' -f1 > tmp #echo $line | tr ' ' '_' > tmp read Image < tmp ls $Image*.html >> html.list echo "Image : "$Image.html done < $Projet/$1/$1.links #T exit #T compter le nombre de lignes (nb d'images) du fichier $Projet/$1/$1.links #T cat $Projet/$1/$1.links | wc -l > $Projet/$1/links.nblignes #T read nbl < $Projet/$1/links.nblignes #T echo -n "Nombre de lignes de links = " #T echo $nbl #T initialiser la variable entière de comptage de boucle #T declare -i n=1 #T cd $Projet/$1 #T echo -n "pwd = " #T pwd #O créer les fichiers de documentation des pages : echo "*** Références : image, src, lic, contrib. " #O tant qu'il y a des liens (locaux) dans le fichier d'images html.list while read line do #O afficher la ligne lue, echo "" echo "" echo "---- ligne lue = $line ---" echo "" #O sélectionner les chaînes du fichier d'image et les transférer dans mkd -pw '**' $line $line.tmp cat $line.tmp | tr ',' '\n' > $line.str #O images, echo -n "'''Illustration : '''" > $line.title cat $line.str |grep wgTitle | cut -d '"' -f4 >> $line.title cat $line.title >> $PageScliC cat $line.title #O source, echo -n ", ''source : ''https://"$Site"/w/index.php?title=" > $line.source echo $line | sed "s/.html//g" >> $line.source cat $line.source >> $PageScliC cat $line.source #O license, echo -n ", ''licence : ''" > $line.license cat $line.str | grep licensetpl_short | sed "s/<td>//g" | sed "s/<span class//g" | sed "s/<\/span>//g" | sed "s/style=\"display:none;\"//g" | tr '=' '\n' | grep licensetpl_short | awk -F">" '{print $NF}' >> $line.license cat $line.license >> $PageScliC cat $line.license #O auteur(s). echo -n ", ''auteur(s) : ''" > $line.auteur cat $line.str | grep -i -n -m1 -A 1 -e Author | grep -i -e user -e utilisteur -e auteur | tr '/' '\n' | grep -i -e user -e utilisteur -e auteur | cut -d '"' -f1 > tmp if test -s tmp then echo "Nom d'auteur non vide" else echo "-" > tmp fi cat tmp >> $line.auteur cat $line.auteur >> $PageScliC cat $line.auteur #O terminer la page $PageScliC echo "" >> $PageScliC #O fin du tant qu'il y a des lignes done < html.list #O terminer la page $PageScliC echo "</small></small>" >> $PageScliC echo "{{Nouvelle page imprimée}}" >> $PageScliC exit 0 # Fin de ajouter_sclic