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

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
(+ è possibile scaricare solo una guida anziché l'intero dump)
(funzione _esci spostata prima del primo check)
 
(9 versioni intermedie di 2 utenti non mostrate)
Riga 6: Riga 6:
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


Riga 17: Riga 17:
# 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
fi
# Cattura Ctrl+c
trap _esci INT




Riga 36: Riga 46:


insertguide () {
insertguide () {
local guida guida2
# Se il file di dump non esiste, lo script termina
# Se il file di dump non esiste, lo script termina
[ ! -f "$df" ] && exit
[ ! -f "$df" ] && echo "$df non esiste" && _esci


echo -n "Inserire il titolo della guida (es. Installare Debian): "
echo -n "Inserire il titolo della guida (es. Installare Debian): "
Riga 43: Riga 56:


# Crea l'URL
# Crea l'URL
guida="guide.debianizzati.org/index.php?title=""$guida""&action=edit"
guida="guide.debianizzati.org/index.php?title="$guida"&action=edit"


# Salva l'URL originale
# Salva l'URL originale
Riga 49: Riga 62:


if [ -z "`grep "$guida" "$df"`" ]; then
if [ -z "`grep "$guida" "$df"`" ]; then
echo "Guida non trovata" && exit
  echo "Guida non trovata" && exit
else
else
# Sostituisce . con \.
  # Sostituisce . con \.
guida="${guida//"."/"\."}"
  guida="${guida//"."/"\."}"


# Sostituisce & con \&
  # Sostituisce & con \&
guida="${guida//"&"/"\&"}"
  guida="${guida//"&"/"\&"}"


# Sostituisce / con \/
  # Sostituisce / con \/
guida="${guida//"/"/"\/"}"
  guida="${guida//"/"/"\/"}"


# Sostituisce [spazio] con \[spazio]
  # Sostituisce [spazio] con \[spazio]
#guida="${guida//" "/"\ "}"
  #guida="${guida//" "/"\ "}"


# Rimuove da wiki_source la guida con il titolo inserito
  # Rimuove da wiki_source la guida con il titolo inserito
sed -i "/þþþþ/{N; /$guida/ {:a N; /øøøø/! ba;d}}" "$df"
  sed -i "/þþþþ/{N; /$guida/ {:a N; /øøøø/! ba;d}}" "$df"


# File temporaneo
  # File temporaneo
local temp=`mktemp`
  local temp=`mktemp`


# Scarica la guida
  # Scarica la guida
wget -q -O "$temp" "http://$guida2"
  wget -q -O "$temp" "http://$guida2"


echo "þþþþ" >> "$df"
  echo "þþþþ" >> "$df"
echo "$guida2" >> "$df"
  echo "$guida2" >> "$df"
sed -n "/<textarea.*>/{s/^.*\">//;p; :a n; /.*textarea>/!{p;ba}; s/<\/textarea.*//;p}" "$temp" >> "$df"
  sed -n "/<textarea.*>/{s/^.*\">//;p; :a n; /.*textarea>/!{p;ba}; s/<\/textarea.*//;p}" "$temp" >> "$df"
echo "øøøø" >> "$df"
  echo "øøøø" >> "$df"


_lt
  # Chiama la funzione _lt
  _lt


# Rimuove il file temporaneo
  # Rimuove il file temporaneo
rm $temp
  rm $temp


fi
fi
Riga 86: Riga 100:




# ----------------------------------------------
# -----------------------------------------------
# Funzione che effettua il dump di tutte le guide
# Funzione che effettua il dump di tutte le guide
# ----------------------------------------------
# -----------------------------------------------


totaldump () {
totaldump () {
local linea


# Crea un file temporaneo
# Crea un file temporaneo
Riga 97: Riga 113:
# 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


Riga 111: Riga 127:


#numero righe del file
#numero righe del file
numerolinee=`cat $file | wc -l`
local numerolinee=`cat $file | wc -l`
count=1
 
# 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 "[$count/$numerolinee]"
  echo "Download della guida $count su un totale di $numerolinee"
tput cuu1
  tput cuu1
((count++))
  ((count++))
wget -q -O "$temp" "$linea"
  wget -q -O "$temp" "$linea"
echo "þþþþ" >> "$df"
  echo "þþþþ" >> "$df"
echo "$linea" >> "$df"
  echo "$linea" >> "$df"
sed -n "/<textarea.*>/{s/^.*\">//;p; :a n; /.*textarea>/!{p;ba}; s/<\/textarea.*//;p}" "$temp" >> "$df"
  sed -n "/<textarea.*>/{s/^.*\">//;p; :a n; /.*textarea>/!{p;ba}; s/<\/textarea.*//;p}" "$temp" >> "$df"
echo "øøøø" >> "$df"
  echo "øøøø" >> "$df"
done < "$file"
done < "$file"


Riga 131: Riga 156:




# Sostituisce "&lt;" con "<" nel file di dump
# Sostituisce "&amp;lt;" con "<" nel file di dump
_lt () {
_lt () {
sed -i 's/&lt;/</g' "$df"
  sed -i 's/&amp;lt;/</g' "$df"
}
}


Riga 148: Riga 173:
[1] Dump di tutte le guide
[1] Dump di tutte le guide
[2] Download di una guida
[2] Download di una guida
[3] Esci
Numero: "
Numero: "
read num
read num
case $num in
case $num in
1) totaldump ;;
  1) totaldump ;;
2) insertguide ;;
  2) insertguide ;;
  *) _esci ;;
esac
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

Debian-swirl.png 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".

Info.png 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 "&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 ""




Guida scritta da: S3v 22:36, 22 mar 2013 (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