Χρήστης:AtouBot/getembeddedin.sh
Όνομα εργαλείου: getembeddedin.sh
Περιγραφή:
Αυτό το εργαλείο καταγράφει τους τίτλους σελίδων που περιέχουν μια ορισμένη σελίδα (είτε πρότυπο που καλείται, είτε άλλη σελίδα μέσω «transclusion». Το αρχείο τίτλων αποθηκεύεται στο "embed_tmp/titles.<ημερομηνία>.txt", και οι τίτλοι περιέχονται σε τετράγωνες αγκύλες ( [[ ... ]] ). Αν ξανατρέξετε το ίδιο εργαλείο την ίδια μέρα, θα διαγραφεί το αρχείο τίτλων και θα δημιουργηθεί καινούριο. Αρχεία που δημιουργήθηκαν άλλες μέρες δεν θα διαγραφούν.
Παράμετροι:
- τίτλος της σελίδας (ή του προτύπου) που θα πρέπει να περιέχουν οι άλλες σελίδες
Προϋποθέσεις:
- περιβάλλον unix/linux ή περιβάλλον με τις εντολές date, sed, awk, cat, grep
- η εντολή curl
Σημειώσεις χρήσης:
- Η παράμετρος πρέπει να μπει μέσα σε αποστρόφους στην περίπτωση που ο τίτλος της σελίδες περιέχει κενό
- Παράδειγμα χρήσης:
bash ./getembeddedin.sh 'Πρότυπο:σύνθετα'
→ Πίσω στα Εργαλεία |
getembeddedin.sh
επεξεργασία#!/bin/bash usage() { echo "Usage: $0 title" echo "where title is the title of the page for which to find transclusions" echo echo "For example:" echo "$0 'Πρότυπο:ξεν-'"; exit 1 } if [ -z "$1" ]; then usage fi eititle=`echo "$1" | sed -e 's/ /_/g;'` tmp="./embed_tmp" today=`date +"%B-%d-%Y"` ext="$today" mkdir -p $tmp titles="$tmp/titles.$ext" eicontinue="" rm -f $titles.* count=1 while [ 1 ]; do echo getting embedded titles $count to $count+500 # επόμενοι 500 if [ -z "$eicontinue" ]; then curl --retry 10 -H 'Expect:' -f "http://el.wiktionary.org/w/api.php?action=query&list=embeddedin&eititle=$eititle&eilimit=500&format=xml" | sed -e 's/>/>\n/g;' > $titles.xml.temp else curl --retry 10 -H 'Expect:' -f "http://el.wiktionary.org/w/api.php?action=query&list=embeddedin&eititle=$eititle&eicontinue=$eicontinue&eilimit=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: <embeddedin eicontinue="500" /> eicontinue=`grep eicontinue $titles.xml.temp` if [ -z "$eicontinue" ]; then break; else eicontinue=`echo $eicontinue | awk -F'"' '{ print $2 }'` fi sleep 6 count=$(( $count+500 )) done # format <embeddedin ns="0" title="μερικοί" /> cat $titles.xml | grep '<ei page' | awk -F'"' '{ print $6 }' | sed -e 's/^/[[/g; s/$/]]/g;' > $titles.txt # done! echo "done!" exit 0