Hoppa till innehållet

Wikipedia:Projekt DotNetWikiBot Framework/Innocent bot/Invånarhistorik

Från Wikipedia
using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;
using System.Xml;
using System.Threading;
using DotNetWikiBot;

class MyBot : Bot
{
	public static void Main()
	{
		string filen = File.ReadAllText("tatorter.txt");
		Site site = new Site("http://sv.wikipedia.org", "Innocent bot", "********");
		PageList pl = new PageList(site);
		pl.FillFromLinksToPage("Mall:Ortsfakta Sverige");
		Console.WriteLine(pl.Count());
		foreach(Page p in pl)
		{
			p.Load();
			string koden = "";
			string namn = p.title;
			foreach(string kod in p.GetTemplateParameter("Ortsfakta Sverige" , "tätortskod"))
			{
				koden = kod;
				//Console.WriteLine(kod);
			}
			foreach(string nom in p.GetTemplateParameter("Ortsfakta Sverige" , "ortnamn"))
			{
				namn = nom;
			}
				
			if(koden != "")
			{
				if(!koden.StartsWith("T"))
					koden = "T"+koden;
				
				
				int position1 = filen.IndexOf(koden);
				//Console.WriteLine(position1);
				
				if(position1 != -1)
				{
					int position2 = filen.IndexOf("\n", position1);
					string nyversion = filen.Substring(position1,position2-position1);
					Console.WriteLine(nyversion);
					int position3 = nyversion.Length;
					string[] antal = {"-","-","-","-","-","-","-","-","-"};
					int i = 0;
					
					for(i=0;i<=8;i++)
					{
						int pos = nyversion.LastIndexOf(",",position3);
						
						if(pos != position3)
							antal[i]=nyversion.Substring(pos+1);
						
						Console.WriteLine(antal[i]);
						nyversion=nyversion.Substring(0,pos);
						position3=pos-1;
					}
					int pos2 = nyversion.LastIndexOf("$");
					int pos3 = nyversion.LastIndexOf("$", pos2-1);
					string fotnot = "";
					if(pos3 != -1)
						fotnot = nyversion.Substring(pos3+1,pos2-pos3-1);

					string referens = "<ref>{{webbref|url=http://www.scb.se/statistik/MI/MI0810/2005A01x/MI0810_2005A01x_SM_MI38SM0703.pdf|titel=Statistiska centralbyrån - Folkmängd i tätorter 1960-2005|hämtdatum=13 december 2010}}</ref>";

					string y1960 = "";
					string y1965 = "";
					string y1970 = "";
					string y1975 = "";
					string y1980 = "";
					string y1990 = "";
					string y1995 = "";
					string y2000 = "";
					string y2005 = "";
					string från = "1960";
					string till = "2005";
					if(antal[8] != "-")
						y1960 = antal[8];
					if(antal[7] != "-")
						y1965 = antal[7];
					if(antal[6] != "-")
						y1970 = antal[6];
					if(antal[5] != "-")
						y1975 = antal[5];
					if(antal[4] != "-")
						y1980 = antal[4];
					if(antal[3] != "-")
						y1990 = antal[3];
					if(antal[2] != "-")
						y1995 = antal[2];
					if(antal[1] != "-")
						y2000 = antal[1];
					if(antal[0] != "-")
						y2005 = antal[0];
					if(antal[0] == "-")
					{
						till = "2000";
						if(antal[1] == "-")
						{
							till = "1995";
							if(antal[2] == "-")
							{
								till = "1990";
								if(antal[3] == "-")
								{
									till = "1980";
									if(antal[4] == "-")
									{
										till = "1975";
										if(antal[5] == "-")
										{
											till = "1970";
											if(antal[6] == "-")
											{
												till = "1965";
												if(antal[7] == "-")
												{
													till = "1960";
												}
											}
										}
									}
								}
							}
						}
					}
					
					if(antal[8] == "-")
					{
						från = "1965";
						if(antal[7] == "-")
						{
							från = "1970";
							if(antal[6] == "-")
							{
								från = "1975";
								if(antal[5] == "-")
								{
									från = "1980";
									if(antal[4] == "-")
									{
										från = "1990";
										if(antal[3] == "-")
										{
											från = "1995";
											if(antal[2] == "-")
											{
												från = "2000";
												if(antal[1] == "-")
												{
													från = "2005";
												}
											}
										}
									}
								}
							}
						}
					}
					//Console.WriteLine(från+"-"+till);
					int maxsif = 0;
					int j = 0;
					for(j=0;j<=8;j++)
					{
						if(antal[j] != "-")
							if(maxsif < int.Parse(antal[j]))
								maxsif = int.Parse(antal[j]);
					}
					if(p.text.IndexOf("{{Befolkningsutveckling") == -1 && p.text.IndexOf("{{befolkningsutveckling") == -1)
					{
						int pos4 = p.text.IndexOf("<references/>");
						if(pos4 == -1)
						{
							int pos5 = p.text.IndexOf("[[Kategori:");
							p.text = p.text.Substring(0,pos5)+"\n== Befolkningsutveckling ==\n{{Befolkningsutveckling\n|från=}}\n\n== Referenser ==\n<references/>\n"+p.text.Substring(pos5);
						}
						else
						{
							int pos5 = p.text.LastIndexOf("\n==", pos4);
							p.text = p.text.Substring(0,pos5)+"\n== Befolkningsutveckling ==\n{{Befolkningsutveckling\n|från=}}\n"+p.text.Substring(pos5);
						}
						Console.WriteLine(p.text);
						string tmpStr = p.text;
						p.Save(p.text, "Förbereder för inlägg av {{[[Mall:Befolkningsutveckling|Befolkningsutveckling]]}}", true);
						p.Load();
						if(tmpStr != p.text)
							Thread.Sleep(7000);
						
					}
					
					if(p.text.IndexOf("{{Befolkningsutveckling") != -1 || p.text.IndexOf("{{befolkningsutveckling") != -1)
					{
						Console.WriteLine("Heja heja!!");
						foreach(string fr in p.GetTemplateParameter("Befolkningsutveckling" , "y1n"))
						{
							från = fr;
						}
						
						p.SetTemplateParameter("Befolkningsutveckling", "namn", namn, true);
						
						p.SetTemplateParameter("Befolkningsutveckling", "från", från, true);
						p.SetTemplateParameter("Befolkningsutveckling", "till", till, true);
						if(fotnot != "")
							p.SetTemplateParameter("Befolkningsutveckling", "fotnot", fotnot, true);
							
						p.SetTemplateParameter("Befolkningsutveckling", "ref", referens, true);
						p.SetTemplateParameter("Befolkningsutveckling", "max", maxsif.ToString(), true);
						if(antal[0] != "-")
							p.SetTemplateParameter("Befolkningsutveckling", "y2005", y2005, true);
						
						if(antal[1] != "-")
							p.SetTemplateParameter("Befolkningsutveckling", "y2000", y2000, true);
							
						if(antal[2] != "-")
							p.SetTemplateParameter("Befolkningsutveckling", "y1995", y1995, true);
						
						if(antal[3] != "-")
							p.SetTemplateParameter("Befolkningsutveckling", "y1990", y1990, true);
							
						if(antal[4] != "-")
							p.SetTemplateParameter("Befolkningsutveckling", "y1980", y1980, true);
							
						if(antal[5] != "-")
							p.SetTemplateParameter("Befolkningsutveckling", "y1975", y1975, true);
							
						if(antal[6] != "-")
							p.SetTemplateParameter("Befolkningsutveckling", "y1970", y1970, true);
						
						if(antal[7] != "-")
							p.SetTemplateParameter("Befolkningsutveckling", "y1965", y1965, true);
						
						if(antal[8] != "-")
							p.SetTemplateParameter("Befolkningsutveckling", "y1960", y1960, true);
						string tmpStr2 = p.text;
						p.Save(p.text, "Fyller i {{[[Mall:Befolkningsutveckling|Befolkningsutveckling]]}}", true);
						Console.WriteLine(p.text);
						p.Load();
						if(tmpStr2 != p.text)
							Thread.Sleep(30000);
					}
				}		
				
			}
		}
		
	}
}