Χρήστης:Flyax/Εντολές API
Σύνδεση
επεξεργασίαΕϊμαστε σε έναν καθαρό φάκελο, πχ apibot. Εκεί θα δημιουργηθεί το cookie μας που το ονομάζω τώρα 'myselfblah'. Δίνουμε
curl -f -c myselfblah -d 'action=login' -d 'lgname=Flyax' -d 'lgpassword=topasswordpouexw' -d 'format=xml' 'http://el.wiktionary.org/w/api.php'
Στην απάντηση από το διακομιστή θα βρούμε ένα token (κουπόνι, που λέει και ο Αριελ :P). Πχ. 13459i9 κλπ κλπ. Αυτό το χρησιμοποιούμε στην επόμενη εντολή:
curl -f -c myselfblah -b myselfblah -d 'action=login' -d 'lgname=Flyax' -d 'lgpassword=topasswordpouexw' -d 'format=xml' -d 'lgtoken=13459i9' 'http://el.wiktionary.org/w/api.php'
Διαγραφή σελίδας
επεξεργασίαΠρέπει πάλι να πάρουμε ένα deletetoken. Γι' αυτό πρώτα δίνουμε, αν η σελίδα προς διαγραφή είναι η Infirme,
curl -f -c myselfblah -b myselfblah -d 'action=query' -d 'prop=info' -d 'intoken=delete' -d 'titles=Infirme' -d 'format=xml' 'http://el.wiktionary.org/w/api.php'
Μας δίνει ένα delete token, πχ 12345i9+\. Επειδή οι 2 τελευταίοι χαρακτήρες πρέπει να μετατραπούν σε 16αδικό, αντί για -d χρησιμοποιούμε το --data-urlencode
curl -f -c myselfblah -b myselfblah -d 'action=delete' --data-urlencode 'token=12345i9+\' -d 'title=Infirme' -d 'reason=old redirect from conversion script' -d 'format=xml' 'http://el.wiktionary.org/w/api.php'
Και οι δύο ενέργειες μαζί (script)
επεξεργασίαTo script που ακολουθεί είναι εξ ολοκλήρου κλεμμένο από τον Ariel Glenn (βλέπε εδώ. Η σύνοψη της επεξεργασίας δίνεται με τη μεταβλητή reason, η οποία καλό είναι να μην περιέχει κενά αλλά παύλες (_) για να μην έχουμε προβλήματα.
Αν το όνομα του αρχείου είναι delete.sh, το τρέχουμε με την εντολή:
./delete.sh λέξη1 λέξη2
(κλπ)
Αν κάποια από τις "λέξεις" περιέχει κενά, πρέπει να την κλείσουμε σε αποστρόφους:
./delete.sh λέξη1 'λέξη2 λέξη' λέξη3
(κλπ)
#!/bin/bash cookiesfile="elwikt-login-cookies.txt" wiki="el.wiktionary.org" #όνομα χρήστη, κωδικός πρόσβασης στο wiki lgname="Flyax" lgpassword="ΧΧΧΧΧΧΧ" reason1="άχρηστη_ανακατεύθυνση" curlargs="-s -S --retry 10 -H 'Expect:' -c $cookiesfile -b $cookiesfile -f" curlurl="http://$wiki/w/api.php?action=" if [ ! -z "$reason1" ]; then reason_arg="--data-urlencode reason=$reason1" #summary_arg="--data-urlencode 'summary=$reason1'" else reason_arg="" #summary_arg="" fi function getxmlitem() { xmlitemval=`echo $xmltext | tr '>' '\n' | grep ${tokenname}= | awk -F${tokenname}= '{ print $2 }' | awk -F'"' '{ print $2 }'` } function loginerrcheck() { if [ $loginresult -ne "0" ]; then echo "Η σύνδεση απέτυχε, μάλλον λάθος κώδικας πρόσβασης" if [ -e "$cookiesfile" ]; then rm -f $cookiesfile fi exit 1 fi loginerr=`echo $login | grep Illegal` if [ ! -z "$loginerr" ]; then echo "Η σύνδεση απέτυχε, μάλλον λάθος κώδικας πρόσβασης" echo " Περισσότερες πληροφορίες:" echo " $loginerr" | sed -e "s/'/'/g;" if [ -e "$cookiesfile" ]; then rm -f $cookiesfile fi exit 1 fi return } function login() { if [ -z "$lgname" -o -z "$lgpassword" ]; then echo "Πρέπει να επεξεργαστείτε το αρχείο αυτό και να ελέγξετε τις ρυθμίσεις" echo "lgname και lgpassword." exit 1 fi login=`curl -s -S --retry 10 -H 'Expect:' -c $cookiesfile -f --data-urlencode "lgname=$lgname" --data-urlencode "lgpassword=$lgpassword" --data-urlencode "format=xml" "${curlurl}login"` loginresult=$? loginerrcheck loginneedtoken=`echo $login | grep NeedToken` if [ ! -z "$loginneedtoken" ]; then tokenname=token xmltext="$login" getxmlitem lgtoken="$xmlitemval" login=`curl -s -S --retry 10 -H 'Expect:' -c $cookiesfile -b $cookiesfile -f --data-urlencode "lgname=$lgname" --data-urlencode "lgpassword=$lgpassword" --data-urlencode "lgtoken=$lgtoken" --data-urlencode "format=xml" "${curlurl}login"` loginresult=$? loginerrcheck loginneedtoken=`echo $login | grep NeedToken` if [ ! -z "$loginneedtoken" ]; then echo "Η σύνδεση απέτυχε (NeedToken μετά από δεύτερη προσπάθεια)" if [ -e "$cookiesfile" ]; then rm -f $cookiesfile fi exit 1 fi fi echo "Συνδεθήκατε ως $lgname" } function deletepagefromtitle() { xmltext=`curl $curlargs -d "prop=info" -d "format=xml" --data-urlencode "titles=$title" "${curlurl}query"` redir=`echo $xmltext | grep 'redirect' -c` if [ "$redir" -ne "0" ]; then xmltext=`curl $curlargs --data-urlencode "prop=info" --data-urlencode "intoken=delete" --data-urlencode "format=xml" --data-urlencode "titles=$title" "${curlurl}query"` tokenname=deletetoken getxmlitem deltoken="$xmlitemval" if [ -z "$deltoken" ]; then echo "Η αίτηση για deltoken απέτυχε, μάλλον δεν έχετε το σχετικό δικαίωμα" echo " Περισσότερες πληροφορίες:" echo " $xmltext" | sed -e "s/'/'/g;" return 1 fi result=`curl $curlargs --data-urlencode "format=xml" --data-urlencode "token=$deltoken" --data-urlencode "title=$title" $reason_arg "${curlurl}delete" ` if [ "$?" -ne "0" ]; then echo "Η διαγραφή απέτυχε" return 1 fi err=`echo $result | grep -i error` if [ ! -z "$err" ]; then echo "Η διαγραφή απέτυχε... ή μας πρόλαβε άλλος" echo " Περισσότερες πληροφορίες:" echo "$err" | sed -e "s/'/'/g;" | awk -F 'error' '{ print $2 }' | awk -F '/>' '{ print $1 }' fi else echo "$title" " : δεν είναι ανακατεύθυνση, δεν διαγράφτηκε" return 1 fi } function checkusage() { if [ "$1" -eq "0" ]; then echo "Χρήση: $0 1η-λέξη 2η-λέξη 3η..." echo "Ο λογαριασμός σας πρέπει να έχει τα σχετικά δικαιώματα." echo "Προσοχή: κάθε λέξη πρέπει να περικλείεται σε αποστρόφους αν περιέχει κενό." echo "Για παράδειγμα:" echo "$0 'mean vandal' 'super mean vandal' 'boring editwar type'" echo "Εναλλακτικά, μπορείτε να καλέσετε το πρόγραμμα με" echo "cat αρχείο-με-λέξεις | $0 -" echo "και θα διαβάσει τον κατάλογο λέξεων από το stdin." exit 1 fi } ## MAIN ## checkusage $# if [ ! -e "$cookiesfile" ]; then login fi if [ "$1" == "-" ]; then while read title; do deletepagefromtitle done else for title in "$@"; do deletepagefromtitle done fi
Οι τελευταίες 500 νέες σελίδες
επεξεργασίαΕντολή
- ./newpages.sh > new.pages.500
#!/bin/bash curl --retry 10 -f "http://el.wiktionary.org/w/api.php?action=query&format=xml&list=recentchanges&rclimit=500&rcnamespace=0&rctype=new" | sed -e 's/>/>\n/g' > new.temp1 if [ $? -ne 0 ]; then echo "Error $? from curl, bailing" exit 1 fi grep title new.temp1 > info1 cat info1| while read tt; do echo $tt | awk -F 'title="' '{ print $2 }' | awk -F '"' '{ print $1 }' done
Συνεισφορές χρήστη
επεξεργασία- Οι 500 πρώτες συνεισφορές του Flubot μετά τις 2011-08-15T07:38:05Z (προχωρώντας από τις παλαιότερες προς τις νεότερες)
Jobs (queu)
επεξεργασίαhttps://el.wiktionary.org/w/api.php?action=query&meta=siteinfo&siprop=statistics