Χρήστης:Flyax/Θεώρηση

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

Με αυτόν τον κώδικα μπορώ να θεωρήσω αυτόματα τις τελευταίες έξι νέες σελίδες που δημιούργησε ο Χρήστης: Xoristzatziki.

#!/bin/bash

cookiesfile="elwikt-login-cookies.txt"
wiki="el.wiktionary.org"
#όνομα χρήστη, κωδικός πρόσβασης στο wiki
lgname="Flyax"
lgpassword="ΧΧΧΧΧ"

curlargs="-s -S --retry 10 -H 'Expect:' -c $cookiesfile -b $cookiesfile -f"
curlurl="http://$wiki/w/api.php?action="


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 patrolpage() {

        xmltext=`curl $curlargs --data-urlencode "list=recentchanges" --data-urlencode "rctype=new"  --data-urlencode "rcshow=!patrolled" --data-urlencode "rcuser=Xoristzatziki" --data-urlencode "rctoken=patrol" --data-urlencode "rclimit=1" --data-urlencode "format=xml"  "${curlurl}query"`
   	tokenname=patroltoken
    	getxmlitem
    	patrtoken="$xmlitemval"

    	if [ -z "$patrtoken" ]; then 
		echo "Η αίτηση για patrol token απέτυχε, μάλλον δεν έχετε το σχετικό δικαίωμα"
		echo "   Περισσότερες πληροφορίες:"
		echo "   $xmltext" | sed -e "s/'/'/g;"
		return 1
    	fi
	tokenname=rcid
    	getxmlitem
    	patrolID="$xmlitemval"

    	result=`curl $curlargs --data-urlencode "format=xml" --data-urlencode "token=$patrtoken" --data-urlencode "rcid=$patrolID" "${curlurl}patrol"`
	echo $result
    	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
}

## MAIN
##
if [ ! -e "$cookiesfile" ]; then
    login
fi
for i in `seq 0 5`; do
	patrolpage
done