Όνομα εργαλείου: 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