User:Lysander/AllPagesBot.php
From BoyWiki
<?php
/* AllPagesBot
* By Leucosticte, https://www.mediawiki.org/wiki/User:Leucosticte
* GNU Public License 2.0
*
* This bot retrieves a list of all files on the wiki and stores that list in two text files,
* one for the File: namespace, and another for all the other namespaces.
*/
/* Setup my classes. */
include( '/home/nathan/Chris-G-botclasses/botclasses.php' );
$wiki = new wikipedia;
#$wiki->url = "http://en.wikipedia.org/w/api.php";
$wiki->url = "https://mediawiki.org/w/api.php";
/* All the login stuff. */
#$user = 'REMOVED';
#$pass = 'REMOVED';
#$wiki->login( $user,$pass );
#$namespaces = range( 0, 15 ); // Default namespaces
$namespaces = range( 8, 8 );
// Extra namespaces
#$namespaces[] = 500;
#$namespaces[] = 501;
$namespaces = array_filter( $namespaces, "notFile" ); // Filter out the File: namespace
$pageTitlesFile = 'PageTitles.txt';
$pageTitlesNs6File = 'PageTitlesNs6.txt';
$pageTitles = fopen ( $pageTitlesFile, 'w' );
#$pageTitlesNs6 = fopen ( $pageTitlesNs6File, 'w' );
iterate ( $wiki, $namespaces, $pageTitles ); // Everything but File: namespace
#iterate ( $wiki, array ( 6), $pageTitlesNs6 ); // Only the File: namespace
// Filter out the File: namespace
function notFile ( $var ) {
return ( $var != 6 );
}
// Retrieve the data and store it in the file
function iterate ( $wiki, $namespaces, $pageTitles ) {
foreach ( $namespaces as $namespace ) {
$spacesBetweenFiveHundredResults = 6;
$done = false;
while ( !$done ) {
$query = "?action=query&format=php&list=allpages&aplimit=500&apnamespace=$namespace"
. "&continue=";
if ( isset( $apcontinue ) ) {
$query .= "&apcontinue=$apcontinue";
}
$ret = $wiki->query ( $query );
if ( !isset ( $ret['continue'] ) ) {
$done = true;
} else {
$apcontinue = $ret['continue']['apcontinue'];
}
foreach ( $ret['query']['allpages'] as $thisPage ) {
fwrite ( $pageTitles, $thisPage['title'] . "\n" );
}
$counter = 0;
while ( $counter < $spacesBetweenFiveHundredResults ) {
fwrite ( $pageTitles, "\n" );
$counter++;
}
}
}
}
fclose ( $pageTitles );
