Χρήστης:AtouBot/getcat.sh
Μετάβαση στην πλοήγηση
Πήδηση στην αναζήτηση
Όνομα εργαλείου: getcat.sh
Περιγραφή:
Αυτό το εργαλείο καταγράφει τους τίτλους σελίδων που ανήκουν σε μια ορισμένη κατηγορία. Το αρχείο τίτλων αποθηκεύεται στο "cat_tmp/titles.<ημερομηνία>.txt", και οι τίτλοι περιέχονται σε τετράγωνες αγκύλες ( [[ ... ]] ). Αν ξανατρέξετε το ίδιο εργαλείο την ίδια μέρα, θα διαγραφεί το αρχείο τίτλων και θα δημιουργηθεί καινούριο. Αρχεία που δημιουργήθηκαν άλλες μέρες δεν θα διαγραφούν.
Παράμετροι:
- όνομα της κατηγορίας από την οποία ο χρήστης θέλει να πάρει τους τίτλους σελίδων
Προϋποθέσεις:
- περιβάλλον unix/linux ή περιβάλλον με τις εντολές date, sed, awk, cat, grep
- η εντολή curl
Σημειώσεις χρήσης:
- Η παράμετρος πρέπει να μπει μέσα σε αποστρόφους στην περίπτωση που το όνομα της κατηγορίας περιέχει κενό
→ Πίσω στα Εργαλεία |
getcat.sh[επεξεργασία]
#!/bin/bash usage() { echo "Usage: $0 cat" echo "where category is the name of the category for which to retrieve titles" echo echo "For example:" echo "$0 'Πρότυπα για τα μέρη του λόγου'\n"; exit 1 } if [ -z "$1" ]; then usage fi cat=`echo "$1" | sed -e 's/ /_/g;'` cat="Κατηγορία:$cat" tmp="./cat_tmp" today=`date +"%B-%e-%Y"` ext="$today" mkdir -p $tmp titles="$tmp/titles.$ext" cmcontinue="" rm -f $titles.* count=1 while [ 1 ]; do echo getting category titles $count to $count+500 # επόμενοι 500 if [ -z "$cmcontinue" ]; then curl --retry 10 -f "http://el.wiktionary.org/w/api.php?action=query&list=categorymembers&cmtitle=$cat&cmprop=title&cmlimit=500&format=xml" | sed -e 's/>/>\n/g;' > $titles.xml.temp else curl --retry 10 -f "http://el.wiktionary.org/w/api.php?action=query&list=categorymembers&cmtitle=$cat&cmprop=title&cmcontinue=$cmcontinue&cmlimit=500&format=xml" | sed -e 's/>/>\n/g;' > $titles.xml.temp fi if [ $? -ne 0 ]; then echo "Error $? from curl, unable to get xml pages, bailing" exit 1 fi cat $titles.xml.temp >> $titles.xml # get continue param # format: <categorymembers cmcontinue="Εσθονία|" /> cmcontinue=`grep cmcontinue $titles.xml.temp` if [ -z "$cmcontinue" ]; then break; else cmcontinue=`echo $cmcontinue | awk -F'"' '{ print $2 }'` fi sleep 6 count=$(( $count+500 )) done # format <cm ns="10" title="Πρότυπο:-ακρ-" /> cat $titles.xml | grep '<cm ' | awk -F'"' '{ print $4 }' | sed -e 's/^/[[/g; s/$/]]/g;' > $titles.txt # done! echo "done!" exit 0