#!/bin/bash
# Listaval megadott file-ok feltöltése wikibe.

read FELH JELSZO	# stdin-rol olvassuk, hogy ne lehessen latni ps-sel sem
if [ -z "$FELH" -o -z "$JELSZO" ]
then	echo A felhasznaloi nev es jelszo nem lehet ures >&2
	exit 1
fi

if [ ! -r "$1" ]
then	echo Nincs ilyen file: "$1" >&2
	exit 1
fi

if [ -z "$2" ]
then	echo Hivas: `basename $0` szocikklista_file api-URL >&2
	echo szocikklista_file sorai: feltoltendo_file szocikkcim szerk_osszefoglalo >&2
	echo api-URL pl. 'https://hu.wikipedia.org/w' >&2
	echo A bot felhasznaloi neve es jelszava stdin-rol >&2
	exit 1
fi
URL="$2"
WGET='wget -t3 -T20'
FORMAT=xml
KUKI=cookies.txt
MUNKA=ins.ins

	# login
LGTOKEN=$($WGET --save-cookies $MUNKA --keep-session-cookies  -O - \
	"$URL/api.php?action=query&meta=tokens&type=login&format=$FORMAT" | logcut -f /logintoken=/ | logcut -d \" -f 2)
if [ -z "$LGTOKEN" ]
then	echo Nem sikerult tokent szerezni '(rossz api-URL?)' >&2
	exit 1
fi
EREDM=$($WGET --load-cookies $MUNKA --save-cookies $KUKI --keep-session-cookies  -O - \
		--post-data "lgname=$FELH&lgpassword=$JELSZO&lgtoken=$(urlek $LGTOKEN)" \
	"$URL/api.php?action=login&format=$FORMAT" | logcut -f /result=/ | logcut -d \" -f 2)

if [ $EREDM != Success ]
then	echo Sikertelen login: $EREDM '(rossz felhasznaloi nev vagy jelszo? nincs bot-jog?)' >&2
 	exit 1
fi
rm $MUNKA

	# a $1-ben kapott szocikkek feltoltese
# 1. oszlop: a wiki-szoveget tartalmazo file neve (nem lehet a neveben helykoz)
# 2. oszlop: a szocikk cime (helykoz helyett _)
# 3. oszlop: szerkesztesi osszefoglalo
cat $1 | while read FNEV CIM MEGJ
do	if [ -z "$FNEV" ] ; then continue ; fi
	if [ -z "$CIM" ] ;  then CIM=`basename $FNEV` ; fi
	sleep 5
 	ETOKEN=$($WGET --load-cookies $KUKI -O - \
			"$URL/api.php?action=query&prop=info|revisions&meta=tokens&rvprop=timestamp&titles=$CIM&format=xml" |
		logcut -f /csrftoken=/ | logcut -d \" -f 2)
	if [ -z "$ETOKEN" ]
	then    echo Nem sikerult tokent szerezni $CIM-hez >&2
	        continue;
	fi
	#echo $FNEV $CIM $ETOKEN $(urlek $ETOKEN)

	EREDM=$(curl -S \
		--location \
		--cookie $KUKI \
		--user-agent "Curl shell script" \
		--keepalive-time 60 \
		--header "Accept-Language: en-us" \
		--header "Connection: keep-alive" \
		--header "Expect:" \
		--form "text=<$FNEV" \
		--form "token=${ETOKEN}" \
		--form "summary=$MEGJ" \
		--request "POST" "$URL/api.php?action=edit&format=xml&title=$CIM&bot")
	echo $CIM `logcut -f /result=/ <<< $EREDM | logcut -d \" -f 2`
done

	# kijelentkezes
$WGET --load-cookies $KUKI -O /dev/null \
	"$URL/api.php?action=logout&format=$FORMAT"
rm $KUKI
