-
Notifications
You must be signed in to change notification settings - Fork 1
/
retrieveUsersGender.php
121 lines (72 loc) · 2.19 KB
/
retrieveUsersGender.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<?php
require_once( __DIR__ . '/vendor/autoload.php' );
use \Mediawiki\Api as MwApi;
use \Mediawiki\Api\ApiUser;
// Detect commandline args
$conffile = 'config.json';
$userfile = null;
if ( count( $argv ) > 1 ) {
$conffile = $argv[1];
}
if ( count( $argv ) > 2 ) {
$userfile = $argv[2];
}
// Detect if files
if ( ! file_exists( $conffile ) && ! file_exists( $userfile ) ) {
die( "Config file needed" );
}
$confjson = json_decode( file_get_contents( $conffile ), 1 );
$wikiconfig = null;
if ( array_key_exists( "wikipedia", $confjson ) ) {
$wikiconfig = $confjson["wikipedia"];
}
$wpapi = Mwapi\MediawikiApi::newFromApiEndpoint( $wikiconfig["url"] );
// Login
if ( array_key_exists( "user", $wikiconfig ) && array_key_exists( "password", $wikiconfig ) ) {
$wpapi->login( new ApiUser( $wikiconfig["user"], $wikiconfig["password"] ) );
}
processUserFile( $userfile, $wpapi );
function processUserFile( $userfile, $wpapi ){
echo "User\tGender\tBot\n";
$userfileText = file_get_contents( $userfile );
$lines = explode( "\n", $userfileText );
$users = array();
$count = 0;
foreach ( $lines as $line ) {
$count++;
$user = rtrim( $line );
array_push( $users, $user );
if ( $count >= 50 ) {
getUsersGender( $users, $wpapi );
$count = 0;
$users = array();
}
}
getUsersGender( $users, $wpapi );
}
function getUsersGender( $users, $wpapi ) {
$usersStr = implode( "|", $users );
$params = array();
$params["list"] = "users";
$params["ususers"] = $usersStr;
$params["usprop"] = "gender|groups";
$listPage = new Mwapi\SimpleRequest( 'query', $params );
$outcome = $wpapi->postRequest( $listPage );
if ( array_key_exists( "query", $outcome ) ) {
if ( array_key_exists( "users", $outcome["query"] ) ) {
foreach ( $outcome["query"]["users"] as $user ) {
$output = "";
if ( array_key_exists( "gender", $user ) && array_key_exists( "name", $user ) ) {
$output = $user["name"]."\t".$user["gender"]."\t";
}
$bot = 0;
if ( array_key_exists( "groups", $user ) ) {
if ( in_array( "bot", $user["groups"] ) ) {
$bot = 1;
}
}
echo $output.$bot."\n";
}
}
}
}