using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Threading;
using System.Web;
using System.Net;
using System.Drawing;
using System.Windows.Forms;
using DotNetWikiBot;
class MyBot : Bot
{
public static void Vitlistan()
{
Site site = new Site("http://sv.wikipedia.org", "********", "********");
Page p = new Page(site, "Användare:Innocent bot/Patrulleringar");
p.Load();
List<string> vitalistan = new List<string> ();
string whiteanvändare = "";
string user = "";
string rcid = "";
string patroltoken = "";
string title = "";
XmlTextReader reader;
List<int> namespaces = new List<int>{0, 1, 2, 3, 4, 5, 9, 10, 11, 14, 15, 100, 101, 828, 829};
string whitelist = site.GetPageHTM("http://sv.wikipedia.org/wiki/Användare:Patrullroboten/Whitelist");
int i;
int i2;
string tmpStr;
whitelist = whitelist.Substring(whitelist.IndexOf("<!-- bodycontent -->") + 20);
File.WriteAllText("whitelist.txt", whitelist);
while(whitelist.IndexOf("title=\"Användare:") != -1)
{
whitelist = whitelist.Substring(whitelist.IndexOf("title=\"Användare:")+7);
whiteanvändare = whitelist.Substring(0, whitelist.IndexOf("\""));
whiteanvändare = whiteanvändare.Replace(" [inte skriven än]", "");
whiteanvändare = whiteanvändare.Replace("Användare:", "");
vitalistan.Add(whiteanvändare.Trim());
}
string aaa = "";
for(i2 = 0; i2 < namespaces.Count; i2++)
{
tmpStr = site.PostDataAndGetResultHTM("http://sv.wikipedia.org/w/api.php", "action=query&list=recentchanges&format=xml&rcprop=user|title|ids&rcshow=!patrolled&rctoken=patrol&rctype=new&rclimit=5000&rcnamespace=" + namespaces[i2].ToString());
System.IO.File.WriteAllText("rc" + namespaces[i2].ToString() + ".xml", tmpStr);
for(i = 0; i < vitalistan.Count; i++)
{
if(vitalistan[i].Length > 0)
{
reader = new XmlTextReader ("rc" + namespaces[i2].ToString() + ".xml");
while(reader.Read())
{
switch(reader.NodeType)
{
case XmlNodeType.Element :
if(reader.Name == "rc")
{
user = reader.GetAttribute("user");
if(user == vitalistan[i])
{
rcid = reader.GetAttribute("rcid");
//Behövs bara en gång, jämför med rad 88-89 i api\includes\ApiQueryRecentChanges för 1.18, dock måste den omkodas lite (i enlighet med mediawiki:API)
if(patroltoken == "")
patroltoken = reader.GetAttribute("patroltoken").Replace("+", "%2B");
title = reader.GetAttribute("title");
site.PostDataAndGetResultHTM("http://sv.wikipedia.org/w/api.php", "action=patrol&token=" + patroltoken + "&rcid=" + rcid+"&format=xml");
Console.WriteLine(user);
if(p.text.IndexOf(user) != -1)
{
int a = p.text.IndexOf(user);
a = p.text.IndexOf("||", a)+2;
int b = p.text.IndexOf("\n", a);
int c = int.Parse(p.text.Substring(a, b-a).Trim());
c += 1;
p.text = p.text.Substring(0,a)+" "+c.ToString()+p.text.Substring(b);
}
else
{
p.text = p.text.Replace("<!-- $$$ -->", "|-\n| "+user+" || 1\n<!-- $$$ -->");
}
}
}
else if(reader.Name == "recentchanges")
{
aaa = reader.GetAttribute("rcstart");
}
break;
}
}
reader.Close();
}
}
}
Bot.editComment = "Statistik för patrulleringar";
isMinorEdit = true;
p.Save();
}
public static void Andra()
{
Site site = new Site("http://sv.wikipedia.org", "*********", "********");
List<int> namespaces = new List<int>{2, 3};
string aaa = "";
XmlTextReader reader;
string rcid = "";
string user = "";
string patroltoken = "";
string title = "";
for(int i2 = 0; i2 < namespaces.Count; i2++)
{
string tmpStr = site.PostDataAndGetResultHTM("http://sv.wikipedia.org/w/api.php", "action=query&list=recentchanges&format=xml&rcprop=user|title|ids&rcshow=!patrolled&rctoken=patrol&rctype=new&rclimit=5000&rcnamespace=" + namespaces[i2].ToString());
System.IO.File.WriteAllText("rc" + namespaces[i2].ToString() + ".xml", tmpStr);
reader = new XmlTextReader ("rc" + namespaces[i2].ToString() + ".xml");
while(reader.Read())
{
switch(reader.NodeType)
{
case XmlNodeType.Element :
if(reader.Name == "rc")
{
user = reader.GetAttribute("user");
if(char.IsLetter(user[0]))
{
rcid = reader.GetAttribute("rcid");
//Behövs bara en gång, jämför med rad 88-89 i api\includes\ApiQueryRecentChanges för 1.18, dock måste den omkodas lite (i enlighet med mediawiki:API)
if(patroltoken == "")
patroltoken = reader.GetAttribute("patroltoken").Replace("+", "%2B");
title = reader.GetAttribute("title");
site.PostDataAndGetResultHTM("http://sv.wikipedia.org/w/api.php", "action=patrol&token=" + patroltoken + "&rcid=" + rcid);
Console.WriteLine(user);
Bot.Wait(10);
}
}
else if(reader.Name == "recentchanges")
{
aaa = reader.GetAttribute("rcstart");
}
break;
}
}
reader.Close();
}
}
public static void Main()
{
Vitlistan();
Andra();
}
}