Wikipedia:Projekt DotNetWikiBot Framework/HangsnaBot/Loop för löpande kontroll av standardsortering

using DotNetWikiBot;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Web;
using System.Xml;

class MyBot : Bot
{
    public static List<string> HämtaKategori(Site site, string katt)
    {
        List<string> r = new List<string>();

        string url = "action=query&list=categorymembers&cmtitle=" + katt + "&cmprop=title|timestamp|sortkeyprefix&cmsort=timestamp&cmdir=older&cmlimit=5000&format=xml";
        XmlDocument doc = new XmlDocument();

        string tmpStr = site.PostDataAndGetResultHTM(site.site + "/w/api.php", url);
        doc.LoadXml(tmpStr);
        for (int i = 0; i < doc.GetElementsByTagName("cm").Count; i++)
        {
            string title = doc.GetElementsByTagName("cm")[i].Attributes.GetNamedItem("title").Value;
            string sortkeyprefix = doc.GetElementsByTagName("cm")[i].Attributes.GetNamedItem("sortkeyprefix").Value;
            if (sortkeyprefix == "")
                r.Add(title);
        }
        return r;
    }

    public static void Hangsnaskod() //Definierar en rutin som heter "Hangsnakod"
    {
        {
            string password = File.ReadAllText("koden.txt").Trim();    //Hämtar koden från en textfil lokalt på datorn
            string botkonto = "HangsnaBot2";
            Site site = new Site("http://sv.wikipedia.org", botkonto, password);

            List<string> qvinns = new List<string>();

            int räknare = 0;
            qvinns = HämtaKategori(site, "Kategori:Kvinnor");

            Page pwork = new Page(site, "Användare:HangsnaBot/UtanStandardsortering");
            pwork.Load();
            pwork.text = "\n\n==Senast körd 2013-03-22==\n";

            foreach (string q in qvinns)
            {
                pwork.text += "\n* [[" + q + "]]";
                räknare++;
            }
            qvinns = HämtaKategori(site, "Kategori:M%C3%A4n");

            foreach (string q in qvinns)
            {
                pwork.text += "\n* [[" + q + "]]";
                räknare++;
            }

            bool saved = false;
            while (!saved)
            {
                try
                {
                    if (räknare == 1)  //Kontroll för att få rätt böjning av ordet "artikel/artiklar"
                    {
                        pwork.Save(pwork.text, räknare.ToString() + " artikel som saknar standardsortering", false);
                        saved = true;
                        Console.Write("Antal funna och sparade artiklar: " + räknare.ToString() + "\n \n");
                    }
                    else
                    {
                        pwork.Save(pwork.text, räknare.ToString() + " artiklar som saknar standardsortering", false);
                        saved = true;
                        Console.Write("Antal funna och sparade artiklar: " + räknare.ToString() + "\n \n");
                    }
                }
                catch (WebException e)
                {
                    Console.WriteLine(e.Message);
                }
            }
        }
    }

    public static void Main()
    {
        while (true) //Ger oändlig loop
        {
            Hangsnaskod(); //I "Hangsnaskod" finns hela det arbete som roboten har att utföra
            Bot.Wait(900); //En paus i sekunder, innan det börjar igen...
        }
    }
}