Χρήστης: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