Wiki script - Lista delle guide: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
m (verificata)
 
(5 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 49: Riga 58:


# Cancella, se presente, il file listaguide_titoli
# Cancella, se presente, il file listaguide_titoli
if [ -f "$file1" ]; then
rm -f "$file1"
  rm "$file1"
fi


x=true
x=true
Riga 57: Riga 64:
  # 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="`awk -F '[()]' ' NR==1 { print $2 }' "$tempfile2"`"
  ext="`awk -F '[()]' ' NR==1 { print $2 }' "$tempfile2"`"
Riga 73: Riga 82:
  cat "$tempfile2" >> "$file1"
  cat "$tempfile2" >> "$file1"
done
done
# Sostituisce alcuni caratteri nel file listaguide_titoli
# &amp;quot; -> "
# &amp;amp; -> &
sed -i -e "s/\&amp;quot;/\"/g" -e "s/\&amp;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
Riga 79: Riga 99:
# 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 e %22)
# URL encoding per i caratteri '&' , '+' e '' (%26 %2B e %22)
sed -i -e "s#&amp;#%26#g" -e "s#&quot;#%22#g" "$file3"
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 89: 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

Debian-swirl.png 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
# &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
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) Swirl-auth40.png Debianized 40%
Estesa da:
Verificata da:
HAL 9000 18:36, 3 mag 2015 (CEST)

Verificare ed estendere la guida | Cos'è una guida Debianized