Χρήστης:AtouBot/getembeddedinallns.sh

Από Βικιλεξικό
Μετάβαση στην πλοήγηση Πήδηση στην αναζήτηση

Όνομα εργαλείου: getembeddedinallns.sh


Περιγραφή:

Αυτό το εργαλείο καταγράφει τους τίτλους σελίδων που περιέχουν μια ορισμένη σελίδα (είτε πρότυπο που καλείται, είτε άλλη σελίδα μέσω «transclusion». Το αρχείο τίτλων αποθηκεύεται στο "embed_tmp/titles.<ημερομηνία>.txt", και οι τίτλοι περιέχονται σε τετράγωνες αγκύλες ( [[ ... ]] ). Αν ξανατρέξετε το ίδιο εργαλείο την ίδια μέρα, θα διαγραφεί το αρχείο τίτλων και θα δημιουργηθεί καινούριο. Αρχεία που δημιουργήθηκαν άλλες μέρες δεν θα διαγραφούν.

Βασικά, αυτό το εργαλείο είναι εντελώς ίδιο με το getembeddedin.sh εκτός του ότι αυτό εδώ κάνει αναζήτηση σε όλες τις περιοχές (namespaces) μαζί ενώ το άλλο μόνο στην κύρια (ns 0). Θα έπρεπε να γράψω ένα script για τις δύο λειτουργίες αλλά είμαι τεμπέλης και είχα 30 δευτερόλεπτα να φτιάξω δεύτερο αλλά όχι 5 λεπτά να προσθέσω λειτουργίες στο πρώτο.

Παράμετροι:

  • τίτλος της σελίδας (ή του προτύπου) που θα πρέπει να περιέχουν οι άλλες σελίδες

Προϋποθέσεις:

  • περιβάλλον unix/linux ή περιβάλλον με τις εντολές date, sed, awk, cat, grep
  • η εντολή curl

Σημειώσεις χρήσης:

  • Η παράμετρος πρέπει να μπει μέσα σε αποστρόφους στην περίπτωση που ο τίτλος της σελίδες περιέχει κενό
  • Παράδειγμα χρήσης: bash ./getembeddedin.sh 'Πρότυπο:σύνθετα'


→ Πίσω στα Εργαλεία

getembeddedinallns.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&einamespace=0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|100|101" | 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&einamespace=0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|100|101" | 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