User:Flubot/What links here

This script is yet incomplete but it will work sufficiently in most cases.

It takes as input a list of entries and creates a file for each one, named title-entry.temp with the xml result of list=blinks API command, i.e. with all entries in mainspace that link back to the specific entry. Well, not exactly all of them, just the first 500.

An example of such a xml output (what links to ace) in the namespace 0: http://en.wiktionary.org/w/api.php?action=query&format=xml&list=backlinks&blnamespace=0&bllimit=500&bltitle=ace

The xml text for all entries will be in log.xml and all titles found in log.txt.

getbacklinks.sh

 * 1) !/bin/bash

wiki="en.wiktionary.org"

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

function getblfromtitle { xmltext=`curl $curlargs -d "list=backlinks" -d "format=xml" -d "blnamespace=0" -d "bllimit=500" --data-urlencode "bltitle=$title" "${curlurl}query"` xmltext1=`echo $xmltext | sed -e 's/>/>\n/g;' > $title-enwikt.temp` cat $title-enwikt.temp >> log.xml

}

function checkusage { if [ "$1" -eq "0" ]; then echo "Use: $0 1st_word 2nd_word 3rd..." echo "Attention: Every headword including spaces must be written between quotes" echo "For example:" echo "$0 'Main page'  'playing card'" echo "Alternatively, you can call this script with" echo "cat file-with-words | $0 -" echo "and it will read the headwords' list from stdin." exit 1 fi }


 * 1) MAIN

checkusage $#

if [ "$1" == "-" ]; then while read title0; do	title=`echo "$title0" | sed -e 's/ /_/g;'` getblfromtitle done else for title0 in "$@"; do	title=`echo "$title0" | sed -e 's/ /_/g;'` getblfromtitle done fi

cat log.xml | grep ' log.txt