User:Chieftain Alex/API javascripts
From Guild Wars Wiki
Jump to navigationJump to search
<div id="apidata">[[File:Mediawiki loading animation.gif]]</div>
Other snippets[edit]
Wiki - API - Pages in namespace[edit]
/* GWW API query tool for all pages */ // Setup var redirectfilter = 'all'; // all, redirects, nonredirects var languagelinkfilter = 'all'; // withlanglinks, withoutlanglinks var nsfilter = 102; // Game_link var baseurl = 'https://wiki.guildwars.com/api.php?action=query&format=json&list=allpages&aplimit=500&apfilterredir='+redirectfilter+'&apnamespace='+nsfilter+'&apfilterlanglinks='+languagelinkfilter; var datadrop = []; // Function to concatenate all data function processdata (datadrop) { var contribs = []; $.each(datadrop, function(k,v){ $.each(v, function(kk,vv){ contribs.push(vv); }); }); $('#mw-content-text').html(makeTableHTML(contribs)); } // Function to convert an object variable into a table function makeTableHTML( data ) { var result = '<table class="table mech1"><tbody>' +'<tr><th>Pageid</th><th>Name</th></tr>'; $.each(data, function(k, v) { result += '<tr id="'+v['revid']+'">' +'<td>'+v['pageid']+'</td><td>'+v['title']+'</td>' +'</tr>'; }); result += "</tbody></table>"; return result; } // Fetch all the pages function apiQuery (token,startkey) { var url = baseurl; if (startkey) { url += '&apfrom=' + startkey; } if (token) { url += '&apcontinue=' + token; } // console.log(url); $.getJSON(url).done(function(data){ datadrop.push(data['query']['allpages']); if (data['continue']) { apiQuery(data['continue']['apcontinue']); } else { console.log('Query complete.'); processdata(datadrop); } }); } console.log('User pressed run. Starting queries for Special:AllPages'); //apiQuery(null,'Z'); apiQuery();
Wiki - API - External links[edit]
/* GWW API query tool for external links */ // Based on: // https://wiki.guildwars.com/api.php?action=help&modules=query%2Bexturlusage // Setup var searchterm = 'www.gw-memorial.net'; var baseurl = 'https://wiki.guildwars.com/api.php?action=query&format=json&list=exturlusage&euquery=' + searchterm + '&eulimit=500'; var datadrop = []; // Function to concatenate all data function processdata (datadrop) { var contribs = []; $.each(datadrop, function(k,v){ $.each(v, function(kk,vv){ contribs.push(vv); }); }); $('#apidata').html(makeTableHTML(contribs)); } // Function to convert an object variable into a table function makeTableHTML( data ) { var result = '<table class="wikitable"><tbody>' +'<tr><th>Pageid</th><th>Name</th><th>NS</th><th>Web address</th></tr>'; $.each(data, function(k, v) { result += '<tr id="'+v['revid']+'">' +'<td>'+v['pageid']+'</td><td>'+v['title']+'</td><td>'+v['ns']+'</td><td>'+v['url']+'</td>' +'</tr>'; }); result += "</tbody></table>"; return result; } // Fetch all the pages function apiQuery (token) { var url = baseurl; if (token) { url += '&euoffset=' + token; } // console.log(url); $.getJSON(url).done(function(data){ datadrop.push(data['query']['exturlusage']); if (data['continue']) { apiQuery(data['continue']['euoffset']); } else { console.log('Query complete.'); processdata(datadrop); } }); } console.log('User pressed run. Starting queries for Special:LinkSearch'); apiQuery();
Wiki - API - Namespaces[edit]
/* GW2W API query tool for Mediawiki namespaces statistics */ // Function to convert an object variable into a table function makeTableHTML( data ) { var result = '<table class="wikitable"><tbody>'+'<tr><th>Namespace ID</th><th>Name</th></tr>'; $.each(data, function(k, v) { result += '<tr>'+'<td>'+v['id']+'</td><td>'+v['canonical']+'</td>'+'</tr>'; }); result += "</tbody></table>"; return result; } // Fetch all the namespaces function apiQuery () { // console.log(url); $.getJSON('https://wiki.guildwars.com/api.php?action=query&format=json&meta=siteinfo&siprop=namespaces').done(function(data){ $('#mw-content-text').html(makeTableHTML(data['query']['namespaces'])); }); } apiQuery();
Wiki - API - Template parameter check[edit]
/* GWW API query tool for Template parameters */ function apiQuery () { mw.loader.using('mediawiki.api', function () { var template = 'Achievement table row'; var parameters = 'name:page'; var firstquery = '{{User:Chieftain Alex/Templates/Parameter check|mode=1|template='+template+'}}'; var api = new mw.Api(); api.parse(firstquery).done(function (resulttext) { // Find the output token var pattern = /\<div class\="apiresults"\>(\d+)\<\/div\>/; var m = resulttext.match(pattern); console.log('regexp', m); // Check something matched if (!m) { console.log('No regular expression matched, quitting.') return; } // Convert match from text into a number. var n = Number(m[1]); if (n == 0) { console.log('Zero results found, quitting.'); } else { console.log(n, ' results found, querying...'); // Repeat query n/500 times until done var promises = []; for (var i=0; i<n; i+=500) { var furtherquery = '{{User:Chieftain Alex/Templates/Parameter check|mode=2|template='+template+'|parameters='+parameters+'|offset='+i+'}}'; promises.push(api.parse(furtherquery)); } // Wait until all the GET requests have finished $.when.apply($,promises).done(function() { // Concatenate the api results var table = $.map(arguments, function(v) { return v; }).join('\n'); // Write to document $('#apidata').html(table); // Now copy the output to excel, then remove duplicates including table headings. console.log('Batch query complete.'); }); } }); }); } apiQuery();