Proiect:Cod Wikipedia/WinBatch/Wget download

Să presupunem că avem o listă de articole pe care vrem să le downloadăm cu o unealtă de gen Wget sau CURL:

Vrem să generăm din această listă, o listă cu legături http pe care le înțelege wget:

Pentru aceasta este nevoie să transformăm diacriticele:

  • î = C3 AE
  • Î = C3 8E
  • â = C3 A2
  • Â = C3 82
  • ă = C4 83
  • Ă = C4 82
  • ș cu virgulă: C8 99
  • Ș cu virgulă: C8 98
  • ț cu virgulă: C8 9B
  • Ț cu virgulă: C8 9A
  • ş cu sedilă = C5 9F
  • Ş cu sedilă = C5 9E
  • ţ cu sedilă = C5 A3
  • Ţ cu sedilă = C5 A2

Rezultă scriptul:

cat links-in.txt | sed -e "s/ /_/g" | sed -e "s/\xc3\xae/\x25c3\x25ae/g" | sed -e "s/\xc3\x8e/\x25c3\x258e/g" | sed -e "s/\xc3\xa2/\x25c3\x25a2/g" | sed -e "s/\xc3\x82/\x25c3\x2582/g" | sed -e "s/\xc4\x83/\x25c4\x2583/g" | sed -e "s/\xc4\x82/\x25c4\x2582/g" | sed -e "s/\xc8\x99/\x25c8\x2599/g" | sed -e "s/\xc8\x98/\x25c8\x2598/g" | sed -e "s/\xc8\x9b/\x25c8\x259b/g" | sed -e "s/\xc8\x9a/\x25c8\x259a/g" | sed -e "s/^/http:\/\/ro.wikipedia.org\/wiki\//" > links-out.txt

Sau mai bine, vrem să generăm URL-uri care trimit la editarea articolelor, ca să downloadăm codul wikipedia al acelor articole:

Rezultă scriptul:

cat links-in.txt | sed -e "s/ /_/g" ^
 | sed -e "s/\xc3\xae/\x25c3\x25ae/g" ^
 | sed -e "s/\xc3\x8e/\x25c3\x258e/g" ^
 | sed -e "s/\xc3\xa2/\x25c3\x25a2/g" ^
 | sed -e "s/\xc3\x82/\x25c3\x2582/g" ^
 | sed -e "s/\xc4\x83/\x25c4\x2583/g" ^
 | sed -e "s/\xc4\x82/\x25c4\x2582/g" ^
 | sed -e "s/\xc8\x99/\x25c8\x2599/g" ^
 | sed -e "s/\xc8\x98/\x25c8\x2598/g" ^
 | sed -e "s/\xc8\x9b/\x25c8\x259b/g" ^
 | sed -e "s/\xc8\x9a/\x25c8\x259a/g" ^
 | sed -e "s/\xc5\x9f/\x25c5\x259f/g" ^
 | sed -e "s/\xc5\x9e/\x25c5\x259e/g" ^
 | sed -e "s/\xc5\xa3/\x25c5\x25a3/g" ^
 | sed -e "s/\xc5\xa2/\x25c5\x25a2/g" ^
 | sed -e "s/\(.*\)/http:\/\/ro.wikipedia.org\/w\/index.php?title=\1\&action=edit/" > links-out.txt

wget -i links-out.txt

Downloadăm respectivele legături. Acum vrem să căutăm un anumit pattern (string) în aceste articole downloadate și vrem să vedem care articole conțin acel string.

set PATTERN="sate *= *"
grep -i %PATTERN% index*.* > 000-grep-result.txt

cat 000-grep-result.txt | sed -e "s/:.*//" | sed -e "s/_/ /g" | sed -e "s/\&action=edit//" | sed -e "s/index.php@title=//" | sort | uniq | grep -v "000-pattern" > 000-grep-result-clean.txt 

echo1 -ne \xEF\xBB\xBF > 000-grep-result-in.txt
cat 000-grep-result-clean.txt >> 000-grep-result-in.txt

cat 000-grep-result-in.txt ^
 | sed -e "s/\xc3\x25AE/\xc3\xAE/g" ^
 | sed -e "s/\xc3\x258E/\xc3\x8E/g" ^
 | sed -e "s/\xc3\x25A2/\xc3\xA2/g" ^
 | sed -e "s/\xc3\x2582/\xc3\x82/g" ^
 | sed -e "s/\xc4\x2583/\xc4\x83/g" ^
 | sed -e "s/\xc4\x2582/\xc4\x82/g" ^
 | sed -e "s/\xc8\x2599/\xc8\x99/g" ^
 | sed -e "s/\xc8\x2598/\xc8\x98/g" ^
 | sed -e "s/\xc8\x259B/\xc8\x9B/g" ^
 | sed -e "s/\xc8\x259A/\xc8\x9A/g" ^
 | sed -e "s/\xc5\x259F/\xc5\x9f/g" ^
 | sed -e "s/\xc5\x259E/\xc5\x9e/g" ^
 | sed -e "s/\xc5\x25A3/\xc5\xa3/g" ^
 | sed -e "s/\xc5\x25A2/\xc5\xa2/g" ^
 > 000-grep-result-clean-diacritics.txt