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:
- Comuna Avrămeni, Botoșani
- Comuna Cândești, Botoșani
- Comuna Adășeni, Botoșani
- Comuna Albești, Botoșani
- Comuna Bălușeni, Botoșani
- Comuna Blândești, Botoșani
- Comuna Brăești, Botoșani
- Comuna Broscăuți, Botoșani
Vrem să generăm din această listă, o listă cu legături http pe care le înțelege wget:
- http://ro.wiki.x.io/wiki/Comuna_Avr%c4%83meni,_Boto%c8%99ani
- http://ro.wiki.x.io/wiki/Comuna_C%c3%a2nde%c8%99ti,_Boto%c8%99ani
- http://ro.wiki.x.io/wiki/Comuna_Ad%c4%83%c8%99eni,_Boto%c8%99ani
- http://ro.wiki.x.io/wiki/Comuna_Albe%c8%99ti,_Boto%c8%99ani
- http://ro.wiki.x.io/wiki/Comuna_B%c4%83lu%c8%99eni,_Boto%c8%99ani
- http://ro.wiki.x.io/wiki/Comuna_Bl%c3%a2nde%c8%99ti,_Boto%c8%99ani
- http://ro.wiki.x.io/wiki/Comuna_Br%c4%83e%c8%99ti,_Boto%c8%99ani
- http://ro.wiki.x.io/wiki/Comuna_Brosc%c4%83u%c8%9bi,_Boto%c8%99ani
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.wiki.x.io\/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:
- http://ro.wiki.x.io/w/index.php?title=Comuna_Avr%c4%83meni,_Boto%c8%99ani&action=edit
- http://ro.wiki.x.io/w/index.php?title=Comuna_C%c3%a2nde%c8%99ti,_Boto%c8%99ani&action=edit
- http://ro.wiki.x.io/w/index.php?title=Comuna_Ad%c4%83%c8%99eni,_Boto%c8%99ani&action=edit
- http://ro.wiki.x.io/w/index.php?title=Comuna_Albe%c8%99ti,_Boto%c8%99ani&action=edit
- http://ro.wiki.x.io/w/index.php?title=Comuna_B%c4%83lu%c8%99eni,_Boto%c8%99ani&action=edit
- http://ro.wiki.x.io/w/index.php?title=Comuna_Bl%c3%a2nde%c8%99ti,_Boto%c8%99ani&action=edit
- http://ro.wiki.x.io/w/index.php?title=Comuna_Br%c4%83e%c8%99ti,_Boto%c8%99ani&action=edit
- http://ro.wiki.x.io/w/index.php?title=Comuna_Brosc%c4%83u%c8%9bi,_Boto%c8%99ani&action=edit
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.wiki.x.io\/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