Χρήστης:AtouBot/getfromtitles.sh
Μετάβαση στην πλοήγηση
Πήδηση στην αναζήτηση
Όνομα εργαλείου: getfromtitles.sh
Περιγραφή:
Αυτό το εργαλείο κατεβάζει σελίδες των οποίων οι τίτλοι βρίσκονται σε αρχείο που έχει ετοιμάσει ο χρήστης. Οι τίτλοι στον κατάλογο μπορούν να έχουν τετράγωνες αγκύλες ( [[ ... ]] ) ή να είναι σκέτο κείμενο. Το αρχείο σελίδων αποθηκεύεται στο "titles_tmp/pages.<ημερομηνία>.xml". Αν ξανατρέξετε το ίδιο εργαλείο την ίδια μέρα, θα διαγραφεί το αρχείο σελίδων και θα δημιουργηθεί καινούριο. Αρχεία που δημιουργήθηκαν άλλες μέρες δεν θα διαγραφούν.
Παράμετροι:
- το όνομα του αρχείου από την οποία το εργαλείο θα διαβάσει τους τίτλους σελίδων
Προϋποθέσεις:
- περιβάλλον unix/linux ή περιβάλλον με τις εντολές date, sed, cat
- η εντολή curl
Σημειώσεις χρήσης:
- Η παράμετρος πρέπει να μπει μέσα σε αποστρόφους στην περίπτωση που το όνομα του αρχείου περιέχει κενό
- Παράδειγμα χρήσης:
bash ./getfromtitles.sh etym_embedded.txt
→ Πίσω στα Εργαλεία |
getfromtitles.sh[επεξεργασία]
#!/bin/bash usage() { echo "Usage: $0 listoftitles" echo "where listoftitles is a file containing the titles of" echo "the pages you want to retrieve, either with [[ ]] or without." echo echo "For example:" echo "$0 bot-titles.txt" exit 1 } if [ -z "$1" ]; then usage fi titlefile="$1" ext=`date +%m-%d-%Y` me=`basename $0` tmp="./titles_tmp" mkdir -p $tmp pages="$tmp/pages.$ext" titles="$tmp/titles.$ext" updated="$tmp/updated.$ext" rm -f $titles.* $pages.* # σελίδες με τους ορισμένους τίτλους cat $titlefile | sed -e 's/\[\[//g; s/\]\]//g;' > $titles.txt count=1 while [ 1 ]; do echo getting pages $count to $count+500 # επόμενες 500 tail -n +$count $titles.txt | head -n 500 > $titles.500.txt left=`cat $titles.500.txt | wc -l` if [ $left == "0" ]; then break; fi count=$(( $count+500 )) curl --retry 10 -H 'Expect:' -f -F "curonly=1" -F "wpDownload=1" -F "pages=<$titles.500.txt" "http://el.wiktionary.org/w/index.php?title=Special:Export&action=submit" > $pages.xml-temp if [ $? -ne 0 ]; then echo "Error $? from curl, unable to get xml pages, bailing" exit 1 fi if [ -e "$pages.xml" ]; then mv $pages.xml $pages.xml-old fi # put it in front of the older batch, and back into the same filename # (so most recent revs are at the beginning) if [ -e "$pages.xml-old" ]; then cat $pages.xml-temp $pages.xml-old > $pages.xml else cat $pages.xml-temp > $pages.xml fi sleep 6 done echo "new pages are in $pages.xml" echo "done" exit 0