Wiki script - Dump sorgenti delle guide: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
funzione _esci spostata prima del primo check
(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"
# Crea un file temporaneo
temp=`mktemp`


# 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."
  echo "Il file "$file" non esiste. Uscita."
exit 1
  _esci
fi
fi


# Se wget non è installato, lo script termina.
# Se wget non è installato, lo script termina.
if [ ! -f /usr/bin/wget ]; then
if [ -z "$(which wget)" ]; then
echo "wget non è presente. Uscita."
  echo "wget non è presente. Uscita."
exit 1
  _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]? "
  echo -n "Esiste già il file "$df". Sovrascrivere [S/n]? "
read risp
  read risp
case $risp in
  case $risp in
  "") rm "$df" ;;
    "") rm "$df" ;;
  [Ss]) rm "$df" ;;
    [Ss]) rm "$df" ;;
  *) exit 1;;
    *) _esci;;
esac
  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 una breve intestazione.
# 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
wget -q -O "$temp" "$linea"
  echo "Download della guida $count su un totale di $numerolinee"
echo "$linea" >> "$df"
  tput cuu1
echo "***********************************************************************" >> "$df"
  ((count++))
sed -n "/<textarea.*>/{s/^.*>//;p; :a n; /.*textarea>/!{p;ba}; s/<\/textarea.*//;p}" "$temp" >> "$df"
  wget -q -O "$temp" "$linea"
echo "" >> "$df"
  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 "&amp;lt;" con "<" nel file di dump
_lt () {
  sed -i 's/&amp;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]]
6 999

contributi

Menu di navigazione