Wiki script - Lista delle guide: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
S3v (discussione | contributi) mNessun oggetto della modifica |
m (verificata) |
||
(8 versioni intermedie di un altro utente non mostrate) | |||
Riga 5: | Riga 5: | ||
* '''listaguide_url''': contiene gli indirizzi di tutte le guide del Wiki | * '''listaguide_url''': contiene gli indirizzi di tutte le guide del Wiki | ||
* '''listaguide_source_url''': contiene gli indirizzi delle pagine sorgente di tutte le guide del Wiki | * '''listaguide_source_url''': contiene gli indirizzi delle pagine sorgente di tutte le guide del Wiki | ||
Le guide elencate appartengono solo al [[Aiuto:Varie#I namespace|namespace]] principale. | |||
Script basato sull'output di [http://guide.debianizzati.org/index.php?title=Speciale%3APrefissi&from=&namespace=0 queste pagine]. | Script basato sull'output di [http://guide.debianizzati.org/index.php?title=Speciale%3APrefissi&from=&namespace=0 queste pagine]. | ||
Riga 10: | Riga 11: | ||
<pre> | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
# Questo script preleva i titoli delle pagine del Wiki di Debianizzati | |||
# I titoli delle guide sono salvati nel file "file1" | |||
# A partire da questo file vengono creati i file "file2" e "file3" che | |||
# contengono, rispettivamente, l'elenco degli URL delle guide e l'elenco | |||
# degli URL delle pagine sorgente delle guide. | |||
# | |||
# Il nome dei file "file1", "file2" e "file3" è specificato in basso. | |||
# variabili | # variabili | ||
Riga 24: | Riga 33: | ||
# messaggi | # messaggi | ||
message1 () { | message1 () { | ||
echo -n "Esiste già un file $file1 o $file2 o $file3. Sovrascrivere [S/n]? " | echo -n "Esiste già un file "$file1" o "$file2" o "$file3". Sovrascrivere [S/n]? " | ||
} | } | ||
Riga 32: | Riga 41: | ||
# previene la cancellazione accidentale dei file | # previene la cancellazione accidentale dei file | ||
if [ -f $file1 -o -f $file2 -o -f $file3 ]; then | if [ -f "$file1" -o -f "$file2" -o -f "$file3" ]; then | ||
message1 | message1 | ||
read risp | read risp | ||
Riga 47: | Riga 56: | ||
exit 1 | exit 1 | ||
fi | fi | ||
# Cancella, se presente, il file listaguide_titoli | |||
rm -f "$file1" | |||
x=true | x=true | ||
while $x; do | while $x; do | ||
# scarica la prima pagina e ne filtra solo la riga con le guide. Il risultato va in tempfile1 | # scarica la prima pagina e ne filtra solo la riga con le guide. Il risultato va in tempfile1 | ||
wget -q -O - "$url_pagina""$ext" | sed -n '/.*<td id/,1p' > $tempfile1 | wget -q -O - "$url_pagina""$ext" | sed -n '/.*<td id/,1p' > "$tempfile1" | ||
# Estrae i nomi delle guide dalla riga, cancella le righe che contengono <a o </a tranne la prima. Il risultato è in tempfile2 | # Estrae i nomi delle guide dalla riga, cancella le righe che contengono <a o </a tranne la prima. Il risultato è in tempfile2 | ||
awk -F 'title=\"|\">' '{ for (i=6; i<=NF; i++) print $i }' $tempfile1 | sed '1b;/<\/\?a/d'> $tempfile2 | awk -F 'title=\"|\">' '{ for (i=6; i<=NF; i++) print $i }' "$tempfile1" | sed '1b;/<\/\?a/d'> "$tempfile2" | ||
# Nome della pagina successiva | # Nome della pagina successiva | ||
ext="` | ext="`awk -F '[()]' ' NR==1 { print $2 }' "$tempfile2"`" | ||
if [ "$ext" = "" ]; then | if [ "$ext" = "" ]; then | ||
# se non c'è nessuna pagina successiva, vengono cancellate eventuali righe vuote | # se non c'è nessuna pagina successiva, vengono cancellate eventuali righe vuote | ||
sed -i '/^$/d' $tempfile2 | sed -i '/^$/d' "$tempfile2" | ||
x=false | x=false | ||
else | else | ||
# se esiste una pagina successiva, viene cancellata la prima riga e eventuali righe vuote | # se esiste una pagina successiva, viene cancellata la prima riga e eventuali righe vuote | ||
sed -i '1d' $tempfile2 | sed -i '1d' "$tempfile2" | ||
sed -i '/^$/d' $tempfile2 | sed -i '/^$/d' "$tempfile2" | ||
fi | fi | ||
# viene creato il file listaguide_titoli | |||
cat "$tempfile2" >> "$file1" | |||
done | done | ||
# Sostituisce alcuni caratteri nel file listaguide_titoli | |||
# &quot; -> " | |||
# &amp; -> & | |||
sed -i -e "s/\&quot;/\"/g" -e "s/\&amp;/\&/g" "$file1" | |||
# Rimuove dall'elenco sia "Wiki script - Lista delle guide" che | |||
# la guida "Wiki script - Dump sorgenti delle guide" | |||
# Ciò previene molti molti molti problemi. | |||
sed -i "/^Wiki script - Dump sorgenti/d" "$file1" | |||
sed -i "/^Wiki script - Lista delle guide/d" "$file1" | |||
# viene creato il file listaguide_url | # viene creato il file listaguide_url | ||
sed "s#^#$pref/#" "$file1" > "$file2" | sed "s#^#$pref/#" "$file1" > "$file2" | ||
# viene creato il file listaguide_source_url | # viene creato il file listaguide_source_url | ||
sed "s#.*#$pref?title=&\&action=edit#" "$file1" > "$file3" | sed "s#.*#$pref?title=&\&action=edit#" "$file1" > "$file3" | ||
# URL encoding per i caratteri '&' , '+' e '' (%26 %2B e %22) | |||
sed -i -e "s#& #%26 #g" -e "s#+#%2B#g" -e "s#\"#%22#g" "$file3" | |||
# rimozione file temporanei | # rimozione file temporanei | ||
rm $tempfile1 $tempfile2 | rm "$tempfile1" "$tempfile2" | ||
</pre> | </pre> | ||
Riga 81: | Riga 109: | ||
{{Autori | {{Autori | ||
|Autore=[[Utente:S3v|S3v]] 16:05, 23 dic 2012 (CET) | |Autore=[[Utente:S3v|S3v]] 16:05, 23 dic 2012 (CET) | ||
|Estesa_da= | |||
|Verificata_da= | |||
: [[Utente:HAL 9000|HAL 9000]] 18:36, 3 mag 2015 (CEST) | |||
|Numero_revisori=1 | |||
}} | }} | ||
[[Categoria:Bash Scripting]][[Categoria:Wiki]] | [[Categoria:Bash Scripting]][[Categoria:Wiki]] |
Versione attuale delle 16:36, 3 mag 2015
Versioni Compatibili Tutte le versioni supportate di Debian |
Introduzione
Questo script crea tre file:
- listaguide_titoli: contiene i titoli di tutte le guide del Wiki
- listaguide_url: contiene gli indirizzi di tutte le guide del Wiki
- listaguide_source_url: contiene gli indirizzi delle pagine sorgente di tutte le guide del Wiki
Le guide elencate appartengono solo al namespace principale.
Script basato sull'output di queste pagine.
#!/bin/bash # Questo script preleva i titoli delle pagine del Wiki di Debianizzati # I titoli delle guide sono salvati nel file "file1" # A partire da questo file vengono creati i file "file2" e "file3" che # contengono, rispettivamente, l'elenco degli URL delle guide e l'elenco # degli URL delle pagine sorgente delle guide. # # Il nome dei file "file1", "file2" e "file3" è specificato in basso. # variabili file1=listaguide_titoli file2=listaguide_url file3=listaguide_source_url url_pagina="http://guide.debianizzati.org/index.php?title=Speciale:Prefissi&from=" ext="&namespace=0" pref="guide.debianizzati.org/index.php" # crea due file temporanei tempfile1=`mktemp` tempfile2=`mktemp` # messaggi message1 () { echo -n "Esiste già un file "$file1" o "$file2" o "$file3". Sovrascrivere [S/n]? " } message2 () { echo "wget non è installato. Uscita." } # previene la cancellazione accidentale dei file if [ -f "$file1" -o -f "$file2" -o -f "$file3" ]; then message1 read risp case $risp in "") ;; [Ss]) ;; *) exit 1;; esac fi # Verifica se wget è presente if [ ! -f /usr/bin/wget ]; then message2 exit 1 fi # Cancella, se presente, il file listaguide_titoli rm -f "$file1" x=true while $x; do # scarica la prima pagina e ne filtra solo la riga con le guide. Il risultato va in tempfile1 wget -q -O - "$url_pagina""$ext" | sed -n '/.*<td id/,1p' > "$tempfile1" # Estrae i nomi delle guide dalla riga, cancella le righe che contengono <a o </a tranne la prima. Il risultato è in tempfile2 awk -F 'title=\"|\">' '{ for (i=6; i<=NF; i++) print $i }' "$tempfile1" | sed '1b;/<\/\?a/d'> "$tempfile2" # Nome della pagina successiva ext="`awk -F '[()]' ' NR==1 { print $2 }' "$tempfile2"`" if [ "$ext" = "" ]; then # se non c'è nessuna pagina successiva, vengono cancellate eventuali righe vuote sed -i '/^$/d' "$tempfile2" x=false else # se esiste una pagina successiva, viene cancellata la prima riga e eventuali righe vuote sed -i '1d' "$tempfile2" sed -i '/^$/d' "$tempfile2" fi # viene creato il file listaguide_titoli cat "$tempfile2" >> "$file1" done # Sostituisce alcuni caratteri nel file listaguide_titoli # " -> " # & -> & sed -i -e "s/\"/\"/g" -e "s/\&/\&/g" "$file1" # Rimuove dall'elenco sia "Wiki script - Lista delle guide" che # la guida "Wiki script - Dump sorgenti delle guide" # Ciò previene molti molti molti problemi. sed -i "/^Wiki script - Dump sorgenti/d" "$file1" sed -i "/^Wiki script - Lista delle guide/d" "$file1" # viene creato il file listaguide_url sed "s#^#$pref/#" "$file1" > "$file2" # viene creato il file listaguide_source_url sed "s#.*#$pref?title=&\&action=edit#" "$file1" > "$file3" # URL encoding per i caratteri '&' , '+' e '' (%26 %2B e %22) sed -i -e "s#& #%26 #g" -e "s#+#%2B#g" -e "s#\"#%22#g" "$file3" # rimozione file temporanei rm "$tempfile1" "$tempfile2"
Guida scritta da: S3v 16:05, 23 dic 2012 (CET) | Debianized 40% |
Estesa da: | |
Verificata da:
| |
Verificare ed estendere la guida | Cos'è una guida Debianized |