Wiki script - Dump sorgenti delle guide: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
S3v (discussione | contributi) |
S3v (discussione | contributi) (funzione _esci spostata prima del primo check) |
||
(17 versioni intermedie di 2 utenti non mostrate) | |||
Riga 3: | Riga 3: | ||
Questo [[script]] si occupa di creare un file di testo contenente la pagina sorgente di tutte le guide del Wiki.<br> | Questo [[script]] si occupa di creare un file di testo contenente la pagina sorgente di tutte le guide del [[Aiuto:Varie#I_namespace|namespace]] principale del Wiki.<br> | ||
Lo script si basa sul file "listaguide_source_url" creato con [[Wiki script - Lista delle guide|quest'altro script]]. | Lo script si basa sul file "listaguide_source_url" creato con [[Wiki script - Lista delle guide|quest'altro script]]. | ||
Il dump si troverà nel file "wiki_source". | Il dump si troverà nel file "wiki_source". | ||
{{Box|Nota|Una versione ''leggermente'' più veloce e scritta in Python 3 è visibile [[Wiki script - Dump sorgenti delle guide (Python 3)| qui]].}} | |||
<pre> | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
# Questo file deve essere creato con lo script che si trova | # Questo file deve essere creato con lo script che si trova | ||
# in "http://guide.debianizzati.org/index.php/Wiki script - Lista delle guide" | # in "http://guide.debianizzati.org/index.php/Wiki script - Lista delle guide" | ||
file="listaguide_source_url" | file="listaguide_source_url" | ||
# Il nome del file che contiene il dump delle guide | # Il nome del file che contiene il dump delle guide | ||
df="wiki_source" | df="wiki_source" | ||
# Funzione di uscita | |||
_esci () { | |||
echo | |||
echo "Script terminato" | |||
exit 0 | |||
} | |||
# Controlla se esiste il file listaguide_source_url | # Controlla se esiste il file listaguide_source_url | ||
if [ ! -f "$file" ]; then | if [ ! -f "$file" ]; then | ||
echo "Il file "$file" non esiste. Uscita." | |||
_esci | |||
fi | fi | ||
# Se wget non è installato, lo script termina. | # Se wget non è installato, lo script termina. | ||
if [ | if [ -z "$(which wget)" ]; then | ||
echo "wget non è presente. Uscita." | |||
_esci | |||
fi | |||
# Cattura Ctrl+c | |||
trap _esci INT | |||
# -------------------------------------------------- | |||
# Funzione che aggiorna il dump scaricando una guida | |||
# -------------------------------------------------- | |||
insertguide () { | |||
local guida guida2 | |||
# Se il file di dump non esiste, lo script termina | |||
[ ! -f "$df" ] && echo "$df non esiste" && _esci | |||
echo -n "Inserire il titolo della guida (es. Installare Debian): " | |||
read "guida" | |||
# Crea l'URL | |||
guida="guide.debianizzati.org/index.php?title="$guida"&action=edit" | |||
# Salva l'URL originale | |||
guida2=$guida | |||
if [ -z "`grep "$guida" "$df"`" ]; then | |||
echo "Guida non trovata" && exit | |||
else | |||
# Sostituisce . con \. | |||
guida="${guida//"."/"\."}" | |||
# Sostituisce & con \& | |||
guida="${guida//"&"/"\&"}" | |||
# Sostituisce / con \/ | |||
guida="${guida//"/"/"\/"}" | |||
# Sostituisce [spazio] con \[spazio] | |||
#guida="${guida//" "/"\ "}" | |||
# Rimuove da wiki_source la guida con il titolo inserito | |||
sed -i "/þþþþ/{N; /$guida/ {:a N; /øøøø/! ba;d}}" "$df" | |||
# File temporaneo | |||
local temp=`mktemp` | |||
# Scarica la guida | |||
wget -q -O "$temp" "http://$guida2" | |||
echo "þþþþ" >> "$df" | |||
echo "$guida2" >> "$df" | |||
sed -n "/<textarea.*>/{s/^.*\">//;p; :a n; /.*textarea>/!{p;ba}; s/<\/textarea.*//;p}" "$temp" >> "$df" | |||
echo "øøøø" >> "$df" | |||
# Chiama la funzione _lt | |||
_lt | |||
# Rimuove il file temporaneo | |||
rm $temp | |||
fi | fi | ||
} | |||
# ----------------------------------------------- | |||
# Funzione che effettua il dump di tutte le guide | |||
# ----------------------------------------------- | |||
totaldump () { | |||
local linea | |||
# Crea un file temporaneo | |||
local temp=`mktemp` | |||
# Previene l'accidentale sovrascrittura del dump | # Previene l'accidentale sovrascrittura del dump | ||
if [ -f "$df" ]; then | if [ -f "$df" ]; then | ||
echo -n "Esiste già il file "$df". Sovrascrivere [S/n]? " | |||
read risp | |||
case $risp in | |||
"") rm "$df" ;; | |||
[Ss]) rm "$df" ;; | |||
*) _esci;; | |||
esac | |||
fi | fi | ||
# Legge gli indirizzi delle pagine dal file listaguide_source_url | # Legge gli indirizzi delle pagine dal file listaguide_source_url | ||
# e invia le pagine sorgente al file "wiki_source" con | # e invia le pagine sorgente al file "wiki_source" con due righe di separazione: | ||
# iniziale (þ=AltGr+p) e finale (ø=AltGr+o) | |||
#numero righe del file | |||
local numerolinee=`cat $file | wc -l` | |||
# Ultima conferma prima di partire con il download | |||
echo -n "Avviare il download di "$numerolinee" guide [S/n]? " | |||
read risp | |||
if [ "$risp" != "S" ] && [ "$risp" != "s" ] && [ "$risp" != "" ]; then | |||
_esci | |||
fi | |||
local count=1 | |||
while read linea; do | while read linea; do | ||
echo "Download della guida $count su un totale di $numerolinee" | |||
tput cuu1 | |||
((count++)) | |||
wget -q -O "$temp" "$linea" | |||
echo "þþþþ" >> "$df" | |||
echo "$linea" >> "$df" | |||
sed -n "/<textarea.*>/{s/^.*\">//;p; :a n; /.*textarea>/!{p;ba}; s/<\/textarea.*//;p}" "$temp" >> "$df" | |||
echo "øøøø" >> "$df" | |||
done < "$file" | done < "$file" | ||
_lt | |||
# Rimuove il file temporaneo | # Rimuove il file temporaneo | ||
rm "$temp" | rm "$temp" | ||
} | |||
# Sostituisce "&lt;" con "<" nel file di dump | |||
_lt () { | |||
sed -i 's/&lt;/</g' "$df" | |||
} | |||
clear | |||
echo -n " | |||
######################################################################## | |||
## Script che permette di effettuare il dump dei sorgenti delle guide ## | |||
## oppure di effettuare il dump di una sola guida. Questa verrà ## | |||
## cancellata da wiki_source, scaricata nuovamente e aggiunta in coda ## | |||
## a wiki_source ## | |||
######################################################################## | |||
[1] Dump di tutte le guide | |||
[2] Download di una guida | |||
[3] Esci | |||
Numero: " | |||
read num | |||
case $num in | |||
1) totaldump ;; | |||
2) insertguide ;; | |||
*) _esci ;; | |||
esac | |||
echo "" | |||
</pre> | </pre> | ||
{{Autori | {{Autori | ||
|Autore=[[Utente:S3v|S3v]] 22:36, 22 mar 2013 (CET) | |Autore=[[Utente:S3v|S3v]] 22:36, 22 mar 2013 (CET) | ||
|Verificata_da= | |||
: [[Utente:HAL 9000|HAL 9000]] 18:36, 3 mag 2015 (CEST) | |||
|Estesa_da= | |||
|Numero_revisori=1 | |||
}} | }} | ||
[[Categoria:Bash Scripting]][[Categoria:Wiki]] | [[Categoria:Bash Scripting]][[Categoria:Wiki]] |
Versione attuale delle 10:40, 1 mag 2016
Versioni Compatibili Tutte le versioni supportate di Debian |
Questo script si occupa di creare un file di testo contenente la pagina sorgente di tutte le guide del namespace principale del Wiki.
Lo script si basa sul file "listaguide_source_url" creato con quest'altro script.
Il dump si troverà nel file "wiki_source".
Nota Una versione leggermente più veloce e scritta in Python 3 è visibile qui. |
#!/bin/bash # Questo file deve essere creato con lo script che si trova # in "http://guide.debianizzati.org/index.php/Wiki script - Lista delle guide" file="listaguide_source_url" # Il nome del file che contiene il dump delle guide df="wiki_source" # Funzione di uscita _esci () { echo echo "Script terminato" exit 0 } # Controlla se esiste il file listaguide_source_url if [ ! -f "$file" ]; then echo "Il file "$file" non esiste. Uscita." _esci fi # Se wget non è installato, lo script termina. if [ -z "$(which wget)" ]; then echo "wget non è presente. Uscita." _esci fi # Cattura Ctrl+c trap _esci INT # -------------------------------------------------- # Funzione che aggiorna il dump scaricando una guida # -------------------------------------------------- insertguide () { local guida guida2 # Se il file di dump non esiste, lo script termina [ ! -f "$df" ] && echo "$df non esiste" && _esci echo -n "Inserire il titolo della guida (es. Installare Debian): " read "guida" # Crea l'URL guida="guide.debianizzati.org/index.php?title="$guida"&action=edit" # Salva l'URL originale guida2=$guida if [ -z "`grep "$guida" "$df"`" ]; then echo "Guida non trovata" && exit else # Sostituisce . con \. guida="${guida//"."/"\."}" # Sostituisce & con \& guida="${guida//"&"/"\&"}" # Sostituisce / con \/ guida="${guida//"/"/"\/"}" # Sostituisce [spazio] con \[spazio] #guida="${guida//" "/"\ "}" # Rimuove da wiki_source la guida con il titolo inserito sed -i "/þþþþ/{N; /$guida/ {:a N; /øøøø/! ba;d}}" "$df" # File temporaneo local temp=`mktemp` # Scarica la guida wget -q -O "$temp" "http://$guida2" echo "þþþþ" >> "$df" echo "$guida2" >> "$df" sed -n "/<textarea.*>/{s/^.*\">//;p; :a n; /.*textarea>/!{p;ba}; s/<\/textarea.*//;p}" "$temp" >> "$df" echo "øøøø" >> "$df" # Chiama la funzione _lt _lt # Rimuove il file temporaneo rm $temp fi } # ----------------------------------------------- # Funzione che effettua il dump di tutte le guide # ----------------------------------------------- totaldump () { local linea # Crea un file temporaneo local temp=`mktemp` # Previene l'accidentale sovrascrittura del dump if [ -f "$df" ]; then echo -n "Esiste già il file "$df". Sovrascrivere [S/n]? " read risp case $risp in "") rm "$df" ;; [Ss]) rm "$df" ;; *) _esci;; esac fi # Legge gli indirizzi delle pagine dal file listaguide_source_url # e invia le pagine sorgente al file "wiki_source" con due righe di separazione: # iniziale (þ=AltGr+p) e finale (ø=AltGr+o) #numero righe del file local numerolinee=`cat $file | wc -l` # Ultima conferma prima di partire con il download echo -n "Avviare il download di "$numerolinee" guide [S/n]? " read risp if [ "$risp" != "S" ] && [ "$risp" != "s" ] && [ "$risp" != "" ]; then _esci fi local count=1 while read linea; do echo "Download della guida $count su un totale di $numerolinee" tput cuu1 ((count++)) wget -q -O "$temp" "$linea" echo "þþþþ" >> "$df" echo "$linea" >> "$df" sed -n "/<textarea.*>/{s/^.*\">//;p; :a n; /.*textarea>/!{p;ba}; s/<\/textarea.*//;p}" "$temp" >> "$df" echo "øøøø" >> "$df" done < "$file" _lt # Rimuove il file temporaneo rm "$temp" } # Sostituisce "<" con "<" nel file di dump _lt () { sed -i 's/</</g' "$df" } clear echo -n " ######################################################################## ## Script che permette di effettuare il dump dei sorgenti delle guide ## ## oppure di effettuare il dump di una sola guida. Questa verrà ## ## cancellata da wiki_source, scaricata nuovamente e aggiunta in coda ## ## a wiki_source ## ######################################################################## [1] Dump di tutte le guide [2] Download di una guida [3] Esci Numero: " read num case $num in 1) totaldump ;; 2) insertguide ;; *) _esci ;; esac echo ""
Guida scritta da: S3v 22:36, 22 mar 2013 (CET) | Debianized 40% |
Estesa da: | |
Verificata da:
| |
Verificare ed estendere la guida | Cos'è una guida Debianized |