Wikipedia:Projekt DotNetWikiBot Framework/Lsjbot/CreateFromTagalog

Från Wikipedia
//Originally from [[Wikipedia:Projekt DotNetWikiBot Framework/Innocent bot/Ny parameter i Mall Ishockeyspelare]]
//Extensively modified by Lsj

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 DotNetWikiBot;

class MyBot : Bot
{
	private string CleanLink(string origlink)
	{
        string sbrack = "[]'† ?";
        char[] brackets = sbrack.ToCharArray();
        string s = origlink.Trim(brackets);
        if (s.Contains("|"))
            s = s.Remove(s.IndexOf("|"));
        return s;
	}
        
	public static void Main()
	{
        Console.Write("Password: ");
        string password = Console.ReadLine();
        Site svsite = new Site("http://sv.wikipedia.org", "Lsjbot", password);
        Site tlsite = new Site("http://tl.wikipedia.org", "Lsjbot", password);
        Site cmsite = new Site("http://commons.wikimedia.org", "Lsjbot", password);
        PageList pl = new PageList(tlsite);

        

        //Select how to get pages. Uncomment as needed.

        //Find articles from a category
        pl.FillFromCategoryTree("Mga bayan at lungsod sa Pilipinas");

        //Find articles from all the links to a template, mostly useful on very small wikis
        //        pl.FillFromLinksToPage("Mall:Taxobox");

        //Set specific article:
        //Page pp = new Page(tlsite, "Agdangan, Quezon");pl.Add(pp);

        //Skip all namespaces except regular articles:
        pl.RemoveNamespaces(new int[] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,100,101});
        

        Dictionary<string, string> provinsdict = new Dictionary<string, string>(); 
        Dictionary<string, string> paramdict = new Dictionary<string, string>();
        Dictionary<string, string> regiondict = new Dictionary<string, string>();
        Dictionary<string, string> islanddict = new Dictionary<string, string>();

        string sr1 = "Abra (provins)"; string er1 = "Kordiljärernas administrativa region"; regiondict.Add(sr1, er1);
        string sr2 = "Agusan del Norte"; string er2 = "Caraga"; regiondict.Add(sr2, er2);
        string sr3 = "Agusan del Sur"; string er3 = "Caraga"; regiondict.Add(sr3, er3);
        string sr4 = "Aklan"; string er4 = "Västra Visayas"; regiondict.Add(sr4, er4);
        string sr5 = "Albay"; string er5 = "Bikolregionen"; regiondict.Add(sr5, er5);
        string sr6 = "Antique (provins)"; string er6 = "Västra Visayas"; regiondict.Add(sr6, er6);
        string sr7 = "Apayao"; string er7 = "Kordiljärernas administrativa region"; regiondict.Add(sr7, er7);
        string sr8 = "Aurora (provins)"; string er8 = "Centrala Luzon"; regiondict.Add(sr8, er8);
        string sr9 = "Basilan (provins)"; string er9 = "Muslimska Mindanao"; regiondict.Add(sr9, er9);
        string sr10 = "Bataan"; string er10 = "Centrala Luzon"; regiondict.Add(sr10, er10);
        string sr11 = "Batanes"; string er11 = "Cagayandalen"; regiondict.Add(sr11, er11);
        string sr12 = "Batangas"; string er12 = "CALABARZON"; regiondict.Add(sr12, er12);
        string sr13 = "Benguet"; string er13 = "Kordiljärernas administrativa region"; regiondict.Add(sr13, er13);
        string sr14 = "Bergsprovinsen"; string er14 = "Kordiljärernas administrativa region"; regiondict.Add(sr14, er14);
        string sr15 = "Biliran (provins)"; string er15 = "Östra Visayas"; regiondict.Add(sr15, er15);
        string sr16 = "Bohol"; string er16 = "Centrala Visayas"; regiondict.Add(sr16, er16);
        string sr17 = "Bukidnon"; string er17 = "Norra Mindanao"; regiondict.Add(sr17, er17);
        string sr18 = "Bulacan"; string er18 = "Centrala Luzon"; regiondict.Add(sr18, er18);
        string sr19 = "Cagayan"; string er19 = "Cagayandalen"; regiondict.Add(sr19, er19);
        string sr20 = "Camarines Norte"; string er20 = "Bikolregionen"; regiondict.Add(sr20, er20);
        string sr21 = "Camarines Sur"; string er21 = "Bikolregionen"; regiondict.Add(sr21, er21);
        string sr22 = "Camiguin"; string er22 = "Norra Mindanao"; regiondict.Add(sr22, er22);
        string sr23 = "Capiz"; string er23 = "Västra Visayas"; regiondict.Add(sr23, er23);
        string sr24 = "Catanduanes"; string er24 = "Bikolregionen"; regiondict.Add(sr24, er24);
        string sr25 = "Cavite"; string er25 = "CALABARZON"; regiondict.Add(sr25, er25);
        string sr26 = "Cebu"; string er26 = "Centrala Visayas"; regiondict.Add(sr26, er26);
        string sr27 = "Composteladalen"; string er27 = "Davaoregionen"; regiondict.Add(sr27, er27);
        string sr28 = "Cotabato"; string er28 = "SOCCSKSARGEN"; regiondict.Add(sr28, er28);
        string sr29 = "Davao del Norte"; string er29 = "Davaoregionen"; regiondict.Add(sr29, er29);
        string sr30 = "Davao del Sur"; string er30 = "Davaoregionen"; regiondict.Add(sr30, er30);
        string sr31 = "Davao Oriental"; string er31 = "Davaoregionen"; regiondict.Add(sr31, er31);
        string sr32 = "Dinagatöarna (provins)"; string er32 = "Caraga"; regiondict.Add(sr32, er32);
        string sr33 = "Guimaras"; string er33 = "Västra Visayas"; regiondict.Add(sr33, er33);
        string sr34 = "Ifugao"; string er34 = "Kordiljärernas administrativa region"; regiondict.Add(sr34, er34);
        string sr35 = "Iloilo (provins)"; string er35 = "Västra Visayas"; regiondict.Add(sr35, er35);
        string sr36 = "Isabela (provins)"; string er36 = "Cagayandalen"; regiondict.Add(sr36, er36);
        string sr37 = "Kalinga"; string er37 = "Kordiljärernas administrativa region"; regiondict.Add(sr37, er37);
        string sr38 = "La Union (provins)"; string er38 = "Ilocosregionen"; regiondict.Add(sr38, er38);
        string sr39 = "Laguna (provins)"; string er39 = "CALABARZON"; regiondict.Add(sr39, er39);
        string sr40 = "Lanao del Norte"; string er40 = "Norra Mindanao"; regiondict.Add(sr40, er40);
        string sr41 = "Lanao del Sur"; string er41 = "Muslimska Mindanao"; regiondict.Add(sr41, er41);
        string sr42 = "Leyte (provins)"; string er42 = "Östra Visayas"; regiondict.Add(sr42, er42);
        string sr43 = "Maguindanao"; string er43 = "Muslimska Mindanao"; regiondict.Add(sr43, er43);
        string sr44 = "Marinduque"; string er44 = "MIMAROPA"; regiondict.Add(sr44, er44);
        string sr45 = "Masbate (provins)"; string er45 = "Bikolregionen"; regiondict.Add(sr45, er45);
        string sr46 = "Misamis Occidental"; string er46 = "Norra Mindanao"; regiondict.Add(sr46, er46);
        string sr47 = "Misamis Oriental"; string er47 = "Norra Mindanao"; regiondict.Add(sr47, er47);
        string sr48 = "Negros Occidental"; string er48 = "Västra Visayas"; regiondict.Add(sr48, er48);
        string sr49 = "Negros Oriental"; string er49 = "Centrala Visayas"; regiondict.Add(sr49, er49);
        string sr50 = "Norra Ilocos"; string er50 = "Ilocosregionen"; regiondict.Add(sr50, er50);
        string sr51 = "Norra Samar"; string er51 = "Östra Visayas"; regiondict.Add(sr51, er51);
        string sr52 = "Nueva Ecija"; string er52 = "Centrala Luzon"; regiondict.Add(sr52, er52);
        string sr53 = "Nueva Vizcaya"; string er53 = "Cagayandalen"; regiondict.Add(sr53, er53);
        string sr54 = "Occidental Mindoro"; string er54 = "MIMAROPA"; regiondict.Add(sr54, er54);
        string sr55 = "Oriental Mindoro"; string er55 = "MIMAROPA"; regiondict.Add(sr55, er55);
        string sr56 = "Palawan"; string er56 = "MIMAROPA"; regiondict.Add(sr56, er56);
        string sr57 = "Pampanga"; string er57 = "Centrala Luzon"; regiondict.Add(sr57, er57);
        string sr58 = "Pangasinan (provins)"; string er58 = "Ilocosregionen"; regiondict.Add(sr58, er58);
        string sr59 = "Quezon"; string er59 = "CALABARZON"; regiondict.Add(sr59, er59);
        string sr60 = "Quirino"; string er60 = "Cagayandalen"; regiondict.Add(sr60, er60);
        string sr61 = "Rizal"; string er61 = "CALABARZON"; regiondict.Add(sr61, er61);
        string sr62 = "Romblon"; string er62 = "MIMAROPA"; regiondict.Add(sr62, er62);
        string sr63 = "Samar (provins)"; string er63 = "Östra Visayas"; regiondict.Add(sr63, er63);
        string sr64 = "Sarangani (provins)"; string er64 = "SOCCSKSARGEN"; regiondict.Add(sr64, er64);
        string sr65 = "Siquijor (provins)"; string er65 = "Centrala Visayas"; regiondict.Add(sr65, er65);
        string sr66 = "Sorsogon (provins)"; string er66 = "Bikolregionen"; regiondict.Add(sr66, er66);
        string sr67 = "Sultan Kudarat"; string er67 = "SOCCSKSARGEN"; regiondict.Add(sr67, er67);
        string sr68 = "Sulu (provins)"; string er68 = "Muslimska Mindanao"; regiondict.Add(sr68, er68);
        string sr69 = "Surigao del Norte"; string er69 = "Caraga"; regiondict.Add(sr69, er69);
        string sr70 = "Surigao del Sur"; string er70 = "Caraga"; regiondict.Add(sr70, er70);
        string sr71 = "Södra Cotabato"; string er71 = "SOCCSKSARGEN"; regiondict.Add(sr71, er71);
        string sr72 = "Södra Ilocos"; string er72 = "Ilocosregionen"; regiondict.Add(sr72, er72);
        string sr73 = "Södra Leyte"; string er73 = "Östra Visayas"; regiondict.Add(sr73, er73);
        string sr74 = "Tarlac"; string er74 = "Centrala Luzon"; regiondict.Add(sr74, er74);
        string sr75 = "Tawi-Tawi"; string er75 = "Muslimska Mindanao"; regiondict.Add(sr75, er75);
        string sr76 = "Zambales"; string er76 = "Centrala Luzon"; regiondict.Add(sr76, er76);
        string sr77 = "Zamboanga del Norte"; string er77 = "Zamboangahalvön"; regiondict.Add(sr77, er77);
        string sr78 = "Zamboanga del Sur"; string er78 = "Zamboangahalvön"; regiondict.Add(sr78, er78);
        string sr79 = "Zamboanga Sibugay"; string er79 = "Zamboangahalvön"; regiondict.Add(sr79, er79);
        string sr80 = "Östra Samar"; string er80 = "Östra Visayas"; regiondict.Add(sr80, er80);

        string sp1 = "Abra (provins)"; string ep1 = "Abra"; provinsdict.Add(ep1, sp1);
        string sp2 = "Agusan del Norte"; string ep2 = "Agusan del Norte"; provinsdict.Add(ep2, sp2);
        string sp3 = "Agusan del Sur"; string ep3 = "Agusan del Sur"; provinsdict.Add(ep3, sp3);
        string sp4 = "Aklan"; string ep4 = "Aklan (lalawigan)"; provinsdict.Add(ep4, sp4);
        string sp5 = "Albay"; string ep5 = "Albay"; provinsdict.Add(ep5, sp5);
        string sp6 = "Antique (provins)"; string ep6 = "Antique"; provinsdict.Add(ep6, sp6);
        string sp7 = "Apayao"; string ep7 = "Apayao"; provinsdict.Add(ep7, sp7);
        string sp8 = "Aurora (provins)"; string ep8 = "Aurora"; provinsdict.Add(ep8, sp8);
        string sp9 = "Basilan (provins)"; string ep9 = "Basilan"; provinsdict.Add(ep9, sp9);
        string sp10 = "Bataan"; string ep10 = "Bataan"; provinsdict.Add(ep10, sp10);
        string sp11 = "Batanes"; string ep11 = "Batanes"; provinsdict.Add(ep11, sp11);
        string sp12 = "Batangas"; string ep12 = "Batangas"; provinsdict.Add(ep12, sp12);
        string sp13 = "Benguet"; string ep13 = "Benguet"; provinsdict.Add(ep13, sp13);
        string sp14 = "Bergsprovinsen"; string ep14 = "Lalawigang Bulubundukin"; provinsdict.Add(ep14, sp14);
        string sp15 = "Biliran (provins)"; string ep15 = "Biliran"; provinsdict.Add(ep15, sp15);
        string sp16 = "Bohol"; string ep16 = "Bohol"; provinsdict.Add(ep16, sp16);
        string sp17 = "Bukidnon"; string ep17 = "Bukidnon"; provinsdict.Add(ep17, sp17);
        string sp18 = "Bulacan"; string ep18 = "Bulacan"; provinsdict.Add(ep18, sp18);
        string sp19 = "Cagayan"; string ep19 = "Cagayan (lalawigan)"; provinsdict.Add(ep19, sp19);
        string sp20 = "Camarines Norte"; string ep20 = "Camarines Norte"; provinsdict.Add(ep20, sp20);
        string sp21 = "Camarines Sur"; string ep21 = "Camarines Sur"; provinsdict.Add(ep21, sp21);
        string sp22 = "Camiguin"; string ep22 = "Camiguin"; provinsdict.Add(ep22, sp22);
        string sp23 = "Capiz"; string ep23 = "Capiz"; provinsdict.Add(ep23, sp23);
        string sp24 = "Catanduanes"; string ep24 = "Catanduanes"; provinsdict.Add(ep24, sp24);
        string sp25 = "Cavite"; string ep25 = "Kabite"; provinsdict.Add(ep25, sp25);
        string sp26 = "Cebu"; string ep26 = "Cebu (lalawigan)"; provinsdict.Add(ep26, sp26);
        string sp27 = "Composteladalen"; string ep27 = "Lambak ng Compostela"; provinsdict.Add(ep27, sp27);
        string sp28 = "Cotabato"; string ep28 = "Cotabato (lalawigan)"; provinsdict.Add(ep28, sp28);
        string sp29 = "Davao del Norte"; string ep29 = "Davao del Norte"; provinsdict.Add(ep29, sp29);
        string sp30 = "Davao del Sur"; string ep30 = "Davao del Sur"; provinsdict.Add(ep30, sp30);
        string sp31 = "Davao Oriental"; string ep31 = "Davao Oriental"; provinsdict.Add(ep31, sp31);
        string sp32 = "Dinagatöarna (provins)"; string ep32 = "Kapuluang Dinagat"; provinsdict.Add(ep32, sp32);
        string sp33 = "Guimaras"; string ep33 = "Guimaras"; provinsdict.Add(ep33, sp33);
        string sp34 = "Ifugao"; string ep34 = "Ifugao"; provinsdict.Add(ep34, sp34);
        string sp35 = "Iloilo (provins)"; string ep35 = "Iloilo (lalawigan)"; provinsdict.Add(ep35, sp35);
        string sp36 = "Isabela (provins)"; string ep36 = "Isabela (lalawigan)"; provinsdict.Add(ep36, sp36);
        string sp37 = "Kalinga"; string ep37 = "Kalinga"; provinsdict.Add(ep37, sp37);
        string sp38 = "La Union (provins)"; string ep38 = "La Union"; provinsdict.Add(ep38, sp38);
        string sp39 = "Laguna (provins)"; string ep39 = "Laguna"; provinsdict.Add(ep39, sp39);
        string sp40 = "Lanao del Norte"; string ep40 = "Lanao del Norte"; provinsdict.Add(ep40, sp40);
        string sp41 = "Lanao del Sur"; string ep41 = "Lanao del Sur"; provinsdict.Add(ep41, sp41);
        string sp42 = "Leyte (provins)"; string ep42 = "Leyte"; provinsdict.Add(ep42, sp42);
        string sp43 = "Maguindanao"; string ep43 = "Maguindanao"; provinsdict.Add(ep43, sp43);
        string sp44 = "Marinduque"; string ep44 = "Marinduque"; provinsdict.Add(ep44, sp44);
        string sp45 = "Masbate (provins)"; string ep45 = "Masbate"; provinsdict.Add(ep45, sp45);
        string sp46 = "Misamis Occidental"; string ep46 = "Misamis Occidental"; provinsdict.Add(ep46, sp46);
        string sp47 = "Misamis Oriental"; string ep47 = "Misamis Oriental"; provinsdict.Add(ep47, sp47);
        string sp48 = "Negros Occidental"; string ep48 = "Negros Occidental"; provinsdict.Add(ep48, sp48);
        string sp49 = "Negros Oriental"; string ep49 = "Negros Oriental"; provinsdict.Add(ep49, sp49);
        string sp50 = "Norra Ilocos"; string ep50 = "Ilocos Norte"; provinsdict.Add(ep50, sp50);
        string sp51 = "Norra Samar"; string ep51 = "Hilagang Samar"; provinsdict.Add(ep51, sp51);
        string sp52 = "Nueva Ecija"; string ep52 = "Nueva Ecija"; provinsdict.Add(ep52, sp52);
        string sp53 = "Nueva Vizcaya"; string ep53 = "Nueva Vizcaya"; provinsdict.Add(ep53, sp53);
        string sp54 = "Occidental Mindoro"; string ep54 = "Occidental Mindoro"; provinsdict.Add(ep54, sp54);
        string sp55 = "Oriental Mindoro"; string ep55 = "Oriental Mindoro"; provinsdict.Add(ep55, sp55);
        string sp56 = "Palawan"; string ep56 = "Palawan"; provinsdict.Add(ep56, sp56);
        string sp57 = "Pampanga"; string ep57 = "Pampanga"; provinsdict.Add(ep57, sp57);
        string sp58 = "Pangasinan (provins)"; string ep58 = "Pangasinan"; provinsdict.Add(ep58, sp58);
        string sp59 = "Quezon"; string ep59 = "Quezon"; provinsdict.Add(ep59, sp59);
        string sp60 = "Quirino"; string ep60 = "Quirino"; provinsdict.Add(ep60, sp60);
        string sp61 = "Rizal"; string ep61 = "Rizal (lalawigan)"; provinsdict.Add(ep61, sp61);
        string sp62 = "Romblon"; string ep62 = "Romblon"; provinsdict.Add(ep62, sp62);
        string sp63 = "Samar (provins)"; string ep63 = "Samar (lalawigan)"; provinsdict.Add(ep63, sp63);
        string sp64 = "Sarangani (provins)"; string ep64 = "Sarangani"; provinsdict.Add(ep64, sp64);
        string sp65 = "Siquijor (provins)"; string ep65 = "Siquijor"; provinsdict.Add(ep65, sp65);
        string sp66 = "Sorsogon (provins)"; string ep66 = "Sorsogon"; provinsdict.Add(ep66, sp66);
        string sp67 = "Sultan Kudarat"; string ep67 = "Sultan Kudarat"; provinsdict.Add(ep67, sp67);
        string sp68 = "Sulu (provins)"; string ep68 = "Sulu"; provinsdict.Add(ep68, sp68);
        string sp69 = "Surigao del Norte"; string ep69 = "Surigao del Norte"; provinsdict.Add(ep69, sp69);
        string sp70 = "Surigao del Sur"; string ep70 = "Surigao del Sur"; provinsdict.Add(ep70, sp70);
        string sp71 = "Södra Cotabato"; string ep71 = "Timog Cotabato"; provinsdict.Add(ep71, sp71);
        string sp72 = "Södra Ilocos"; string ep72 = "Ilocos Sur"; provinsdict.Add(ep72, sp72);
        string sp73 = "Södra Leyte"; string ep73 = "Katimugang Leyte"; provinsdict.Add(ep73, sp73);
        string sp74 = "Tarlac"; string ep74 = "Tarlac"; provinsdict.Add(ep74, sp74);
        string sp75 = "Tawi-Tawi"; string ep75 = "Tawi-Tawi"; provinsdict.Add(ep75, sp75);
        string sp76 = "Zambales"; string ep76 = "Zambales"; provinsdict.Add(ep76, sp76);
        string sp77 = "Zamboanga del Norte"; string ep77 = "Zamboanga del Norte"; provinsdict.Add(ep77, sp77);
        string sp78 = "Zamboanga del Sur"; string ep78 = "Zamboanga del Sur"; provinsdict.Add(ep78, sp78);
        string sp79 = "Zamboanga Sibugay"; string ep79 = "Zamboanga Sibugay"; provinsdict.Add(ep79, sp79);
        string sp80 = "Östra Samar"; string ep80 = "Silangang Samar"; provinsdict.Add(ep80, sp80);

string si1 = "area_water_km2"; string sg1 = "yta_vatten"; paramdict.Add(si1, sg1);
string si2 = "area_land_km2"; string sg2 = "yta_land"; paramdict.Add(si2, sg2);
string si3 = "areakm2"; string sg3 = "yta"; paramdict.Add(si3, sg3);
string si4 = "website"; string sg4 = "url"; paramdict.Add(si4, sg4);
string si5 = "timezone_DST"; string sg5 = "tidszon_DST"; paramdict.Add(si5, sg5);
string si6 = "timezone"; string sg6 = "tidszon"; paramdict.Add(si6, sg6);
string si7 = "province"; string sg7 = "indelning"; paramdict.Add(si7, sg7);
string si8 = "mayor"; string sg8 = "styre"; paramdict.Add(si8, sg8);
string si9 = "sealfile"; string sg9 = "sigill"; paramdict.Add(si9, sg9);
string si11 = "longs"; string sg11 = "long_s"; paramdict.Add(si11, sg11);
string si12 = "longm"; string sg12 = "long_m"; paramdict.Add(si12, sg12);
string si13 = "longd"; string sg13 = "long_g"; paramdict.Add(si13, sg13);
string si14 = "longEW"; string sg14 = "long_EW"; paramdict.Add(si14, sg14);
string si15 = "lats"; string sg15 = "lat_s"; paramdict.Add(si15, sg15);
string si16 = "latNS"; string sg16 = "lat_NS"; paramdict.Add(si16, sg16);
string si17 = "latm"; string sg17 = "lat_m"; paramdict.Add(si17, sg17);
string si18 = "latd"; string sg18 = "lat_g"; paramdict.Add(si18, sg18);
string si19 = "locatormapfile"; string sg19 = "bild"; paramdict.Add(si19, sg19);
string si20 = "infoboxtitle"; string sg20 = "annat_namn"; paramdict.Add(si20, sg20);
string si21 = "population_as_of"; string sg21 = "folkmängd_år"; paramdict.Add(si21, sg21);
string si22 = "population_footnotes"; string sg22 = "folkmängd_not"; paramdict.Add(si22, sg22);
string si23 = "population_total"; string sg23 = "folkmängd"; paramdict.Add(si23, sg23);
string si24 = "image_flag"; string sg24 = "fana"; paramdict.Add(si24, sg24);
string si26 = "image_caption"; string sg26 = "bildtext"; paramdict.Add(si26, sg26);

string is1 = "Abra (provins)"; string ii1 = "Luzon"; islanddict.Add(is1, ii1);
string is2 = "Agusan del Norte"; string ii2 = "Mindanao"; islanddict.Add(is2, ii2);
string is3 = "Agusan del Sur"; string ii3 = "Mindanao"; islanddict.Add(is3, ii3);
string is4 = "Aklan"; string ii4 = "Panay"; islanddict.Add(is4, ii4);
string is5 = "Albay"; string ii5 = "Luzon"; islanddict.Add(is5, ii5);
string is6 = "Antique (provins)"; string ii6 = "Panay"; islanddict.Add(is6, ii6);
string is7 = "Apayao"; string ii7 = "Luzon"; islanddict.Add(is7, ii7);
string is8 = "Aurora (provins)"; string ii8 = "Luzon"; islanddict.Add(is8, ii8);
string is9 = "Basilan (provins)"; string ii9 = "Basilan"; islanddict.Add(is9, ii9);
string is10 = "Bataan"; string ii10 = "Luzon"; islanddict.Add(is10, ii10);
string is11 = "Batanes"; string ii11 = "Luzon"; islanddict.Add(is11, ii11);
string is12 = "Batangas"; string ii12 = "Luzon"; islanddict.Add(is12, ii12);
string is13 = "Benguet"; string ii13 = "Luzon"; islanddict.Add(is13, ii13);
string is14 = "Bergsprovinsen"; string ii14 = "Luzon"; islanddict.Add(is14, ii14);
string is15 = "Biliran (provins)"; string ii15 = "Biliran"; islanddict.Add(is15, ii15);
string is16 = "Bohol"; string ii16 = ""; islanddict.Add(is16, ii16);
string is17 = "Bukidnon"; string ii17 = "Mindanao"; islanddict.Add(is17, ii17);
string is18 = "Bulacan"; string ii18 = "Luzon"; islanddict.Add(is18, ii18);
string is19 = "Cagayan"; string ii19 = "Luzon"; islanddict.Add(is19, ii19);
string is20 = "Camarines Norte"; string ii20 = "Luzon"; islanddict.Add(is20, ii20);
string is21 = "Camarines Sur"; string ii21 = "Luzon"; islanddict.Add(is21, ii21);
string is22 = "Camiguin"; string ii22 = "Mindanao"; islanddict.Add(is22, ii22);
string is23 = "Capiz"; string ii23 = "Panay"; islanddict.Add(is23, ii23);
string is24 = "Catanduanes"; string ii24 = "Luzon"; islanddict.Add(is24, ii24);
string is25 = "Cavite"; string ii25 = "Luzon"; islanddict.Add(is25, ii25);
string is26 = "Cebu"; string ii26 = ""; islanddict.Add(is26, ii26);
string is27 = "Composteladalen"; string ii27 = "Mindanao"; islanddict.Add(is27, ii27);
string is28 = "Cotabato"; string ii28 = "Mindanao"; islanddict.Add(is28, ii28);
string is29 = "Davao del Norte"; string ii29 = "Mindanao"; islanddict.Add(is29, ii29);
string is30 = "Davao del Sur"; string ii30 = "Mindanao"; islanddict.Add(is30, ii30);
string is31 = "Davao Oriental"; string ii31 = "Mindanao"; islanddict.Add(is31, ii31);
string is32 = "Dinagatöarna (provins)"; string ii32 = ""; islanddict.Add(is32, ii32);
string is33 = "Guimaras"; string ii33 = ""; islanddict.Add(is33, ii33);
string is34 = "Ifugao"; string ii34 = "Luzon"; islanddict.Add(is34, ii34);
string is35 = "Iloilo (provins)"; string ii35 = "Panay"; islanddict.Add(is35, ii35);
string is36 = "Isabela (provins)"; string ii36 = "Luzon"; islanddict.Add(is36, ii36);
string is37 = "Kalinga"; string ii37 = "Luzon"; islanddict.Add(is37, ii37);
string is38 = "La Union (provins)"; string ii38 = "Luzon"; islanddict.Add(is38, ii38);
string is39 = "Laguna (provins)"; string ii39 = "Luzon"; islanddict.Add(is39, ii39);
string is40 = "Lanao del Norte"; string ii40 = "Mindanao"; islanddict.Add(is40, ii40);
string is41 = "Lanao del Sur"; string ii41 = "Mindanao"; islanddict.Add(is41, ii41);
string is42 = "Leyte (provins)"; string ii42 = "Leyte"; islanddict.Add(is42, ii42);
string is43 = "Maguindanao"; string ii43 = "Mindanao"; islanddict.Add(is43, ii43);
string is44 = "Marinduque"; string ii44 = ""; islanddict.Add(is44, ii44);
string is45 = "Masbate (provins)"; string ii45 = ""; islanddict.Add(is45, ii45);
string is46 = "Misamis Occidental"; string ii46 = "Mindanao"; islanddict.Add(is46, ii46);
string is47 = "Misamis Oriental"; string ii47 = "Mindanao"; islanddict.Add(is47, ii47);
string is48 = "Negros Occidental"; string ii48 = "Negros"; islanddict.Add(is48, ii48);
string is49 = "Negros Oriental"; string ii49 = "Negros"; islanddict.Add(is49, ii49);
string is50 = "Norra Ilocos"; string ii50 = "Luzon"; islanddict.Add(is50, ii50);
string is51 = "Norra Samar"; string ii51 = "Samar"; islanddict.Add(is51, ii51);
string is52 = "Nueva Ecija"; string ii52 = "Luzon"; islanddict.Add(is52, ii52);
string is53 = "Nueva Vizcaya"; string ii53 = "Luzon"; islanddict.Add(is53, ii53);
string is54 = "Occidental Mindoro"; string ii54 = "Mindoro"; islanddict.Add(is54, ii54);
string is55 = "Oriental Mindoro"; string ii55 = "Mindoro"; islanddict.Add(is55, ii55);
string is56 = "Palawan"; string ii56 = ""; islanddict.Add(is56, ii56);
string is57 = "Pampanga"; string ii57 = "Luzon"; islanddict.Add(is57, ii57);
string is58 = "Pangasinan (provins)"; string ii58 = "Luzon"; islanddict.Add(is58, ii58);
string is59 = "Quezon"; string ii59 = "Luzon"; islanddict.Add(is59, ii59);
string is60 = "Quirino"; string ii60 = "Luzon"; islanddict.Add(is60, ii60);
string is61 = "Rizal"; string ii61 = "Luzon"; islanddict.Add(is61, ii61);
string is62 = "Romblon"; string ii62 = ""; islanddict.Add(is62, ii62);
string is63 = "Samar (provins)"; string ii63 = ""; islanddict.Add(is63, ii63);
string is64 = "Sarangani (provins)"; string ii64 = "Mindanao"; islanddict.Add(is64, ii64);
string is65 = "Siquijor (provins)"; string ii65 = ""; islanddict.Add(is65, ii65);
string is66 = "Sorsogon (provins)"; string ii66 = "Luzon"; islanddict.Add(is66, ii66);
string is67 = "Sultan Kudarat"; string ii67 = "Mindanao"; islanddict.Add(is67, ii67);
string is68 = "Sulu (provins)"; string ii68 = "Suluöarna"; islanddict.Add(is68, ii68);
string is69 = "Surigao del Norte"; string ii69 = "Mindanao"; islanddict.Add(is69, ii69);
string is70 = "Surigao del Sur"; string ii70 = "Mindanao"; islanddict.Add(is70, ii70);
string is71 = "Södra Cotabato"; string ii71 = "Mindanao"; islanddict.Add(is71, ii71);
string is72 = "Södra Ilocos"; string ii72 = "Luzon"; islanddict.Add(is72, ii72);
string is73 = "Södra Leyte"; string ii73 = "Leyte"; islanddict.Add(is73, ii73);
string is74 = "Tarlac"; string ii74 = "Luzon"; islanddict.Add(is74, ii74);
string is75 = "Tawi-Tawi"; string ii75 = "Suluöarna"; islanddict.Add(is75, ii75);
string is76 = "Zambales"; string ii76 = "Luzon"; islanddict.Add(is76, ii76);
string is77 = "Zamboanga del Norte"; string ii77 = "Mindanao"; islanddict.Add(is77, ii77);
string is78 = "Zamboanga del Sur"; string ii78 = "Mindanao"; islanddict.Add(is78, ii78);
string is79 = "Zamboanga Sibugay"; string ii79 = "Mindanao"; islanddict.Add(is79, ii79);
string is80 = "Östra Samar"; string ii80 = "Samar"; islanddict.Add(is80, ii80);

string sbrack = "[]'† ?";
char[] brackets = sbrack.ToCharArray();
                                    

int nfound = 0;

		foreach(Page p in pl)
		{
			p.Load();
        
            //Remove comments and leading blanks, otherwise the template finding doesn't work properly:

            string str = p.text;
            int startPos, endPos, len = 0;
            while ((startPos = str.LastIndexOf("<!")) != -1)
            {
                endPos = str.IndexOf("->", startPos);
                len = (endPos != -1) ? endPos - startPos + 2 : 2;
                //Console.WriteLine("Removing " + str.Substring(startPos, len));
                str = str.Remove(startPos, len);
                //str = str.Insert(startPos, new String('_', len));
            }
            while (str.Contains("{{ "))
            {
                str = str.Replace("{{ ", "{{");
            }
            p.text = str;

            Dictionary<string, string> newparamdict = new Dictionary<string, string>(); 
            Dictionary<string, string> oldparameters;

            string templateTitle = "Infobox Philippine municipality 2";
            Regex templateTitleRegex = new Regex("^\\s*(" +
                Bot.Capitalize(Regex.Escape(templateTitle)) + "|" +
                Bot.Uncapitalize(Regex.Escape(templateTitle)) +
                ")\\s*\\|");
            string coorTitle = "coor title dm";
            Regex coorTitleRegex = new Regex("^\\s*(" +
                Bot.Capitalize(Regex.Escape(coorTitle)) + "|" +
                Bot.Uncapitalize(Regex.Escape(coorTitle)) +
                ")\\s*\\|");

            bool foundtemplate = false;
            string island = "";
            string nbgy = "";
                
            foreach (string template in p.GetTemplatesWithParams())
            {
                if (template.Length > 40)
                    Console.WriteLine(template.Substring(0, 40));
                else
                    Console.WriteLine(template);

                if (templateTitleRegex.IsMatch(template))
                {
                    //Ok, found the right template. Now get params:
                    oldparameters = tlsite.ParseTemplate(template);
                    Console.WriteLine("op:");
                    foundtemplate = true;
                    nfound++;
                    foreach (string op in oldparameters.Keys)
                    {
                        if (paramdict.ContainsKey(op))
                        {
                            //Console.WriteLine(op);
                            switch (paramdict[op])
                            {
                                case "region_type":
                                    newparamdict.Add(paramdict[op], "[[Filippinernas regioner|Region]]");
                                    break;
                                case "district_type":
                                    newparamdict.Add(paramdict[op], "[[Filippinernas provinser|Provins]]");
                                    break;
                                case "indelning":
                                    string cp = oldparameters[op].Trim(brackets);
                                    if (cp.Contains("]"))
                                        cp = cp.Remove(cp.IndexOf("]"));
                                    if (cp.Contains("|"))
                                        cp = cp.Remove(cp.IndexOf("|"));
                                    if (cp.Contains("("))
                                        cp = cp.Remove(cp.IndexOf("("));
                                    //string cp = CleanLink(oldparameters[op]);
                                    string spp = cp;
                                    if (provinsdict.ContainsKey(cp))
                                        spp = provinsdict[cp];
                                    else if (provinsdict.ContainsKey(cp+" (lalawigan)"))
                                        spp = provinsdict[cp + " (lalawigan)"];
                                    newparamdict.Add(paramdict[op], "[["+spp+"]]");
                                    if (regiondict.ContainsKey(spp))
                                    {
                                        newparamdict.Add("delstat", "[[" + regiondict[spp] + "]]");
                                        island = islanddict[spp];
                                    }
                                    break;
                                case "form":
                                    if (oldparameters[op].Contains("city"))
                                        newparamdict.Add(paramdict[op], "[[Stad]]");
                                    else if (oldparameters[op].Contains("City"))
                                        newparamdict.Add(paramdict[op], "[[Stad]]");
                                    else
                                        newparamdict.Add(paramdict[op], oldparameters[op]);
                                    break;
                                case "url":
                                    if (oldparameters[op].Contains("{{URL"))
                                    {
                                        string ccp = oldparameters[op].Replace("{{URL|", "[http:////").Replace("}}", "]");
                                        newparamdict.Add(paramdict[op], ccp);
                                    }
                                    else
                                        newparamdict.Add(paramdict[op], oldparameters[op]);
                                    break;
                                case "sigill":
                                case "bild":
                                    Page pcm = new Page(cmsite,"File:"+oldparameters[op]);
                                    //pcm.Load();
                                    //Console.WriteLine("LastUser: "+pcm.LastUser);
                                    //if ( pcm.Exists())
                                    //    newparamdict.Add(paramdict[op], oldparameters[op]);
                                    //else
                                    //    Console.WriteLine("Image not found " + oldparameters[op]);        
                                    string res = cmsite.site + cmsite.indexPath + "index.php?title=" +
				                    HttpUtility.UrlEncode("File:"+oldparameters[op]);
			                        string src = "";
			                        try 
                                    {
				                        src = cmsite.GetPageHTM(res);
			                        }
			                        catch (WebException e) {
				                        string message = e.Message;
                                        if (message.Contains(": (404) "))
                                        {		// Not Found
                                            Console.Error.WriteLine(Bot.Msg("Page \"{0}\" doesn't exist."), oldparameters[op]);
                                            Console.WriteLine("Image not found " + oldparameters[op]);
                                            break;
                                        }
                                        else
                                        {
                                            Console.Error.WriteLine(message);
                                            break;
                                        }
			                        }
			                        newparamdict.Add(paramdict[op], oldparameters[op]);
                                    break;
                                case "folkmängd_år":
                                    if (oldparameters[op].Contains("{{asof"))
                                        newparamdict.Add(paramdict[op], oldparameters[op].Replace("{{asof|", "").Replace("}}", ""));
                                    break;
                                default:
                                    newparamdict.Add(paramdict[op], oldparameters[op]);
                                    break;
                            }
                        }
                    }
                        //Console.WriteLine("np:");
                        //foreach (string np in newparamdict.Keys)
                        //    Console.WriteLine(np + " = " + newparamdict[np]);
                    
                    newparamdict.Add("land","Filippinerna");
                    newparamdict.Add("tidszon","[[UTC+8]]");
                    newparamdict.Add("styre_titel", "[[Borgmästare]]");
                    newparamdict.Add("form", "[[Kommun]]");

                    if (oldparameters.ContainsKey("barangays"))
                        nbgy = oldparameters["barangays"];
                    
                }
                else if (coorTitleRegex.IsMatch(template))
                {
                    oldparameters = tlsite.ParseTemplate(template);
                    //Console.WriteLine("op:");
                    nfound++;
                    foreach (string op in oldparameters.Keys)
                    {
                        //Console.WriteLine(op + ": " + oldparameters[op]);
                        switch (op)
                        {
                            case "0": if (newparamdict.ContainsKey("lat_g"))
                                         newparamdict["lat_g"] = oldparameters[op];
                                      else
                                        newparamdict.Add("lat_g", oldparameters[op]); 
                                      break;
                            case "1": if (newparamdict.ContainsKey("lat_m"))
                                          newparamdict["lat_m"] = oldparameters[op];
                                      else
                                          newparamdict.Add("lat_m", oldparameters[op]);
                                      break;
                            case "2": if (newparamdict.ContainsKey("lat_NS"))
                                          newparamdict["lat_NS"] = oldparameters[op];
                                      else
                                          newparamdict.Add("lat_NS", oldparameters[op]);
                                      break;
                            case "3": if (newparamdict.ContainsKey("long_g"))
                                          newparamdict["long_g"] = oldparameters[op];
                                      else
                                          newparamdict.Add("long_g", oldparameters[op]);
                                      break;
                            case "4": if (newparamdict.ContainsKey("long_m"))
                                          newparamdict["long_m"] = oldparameters[op];
                                      else
                                          newparamdict.Add("long_m", oldparameters[op]);
                                      break;
                            case "5": if (newparamdict.ContainsKey("long_EW"))
                                          newparamdict["long_EW"] = oldparameters[op];
                                      else
                                          newparamdict.Add("long_EW", oldparameters[op]);
                                      break;
                            default: break;

                        }
                    }
                    
                }
            }

            if (!foundtemplate)
            {
                Console.WriteLine("Template not found");
                continue;
            }
            //find swedish match:
            string geobox = "{{Stadsfakta|}}\n";
            string[] iw = p.GetInterWikiLinks();
            bool svexists = false; 
            
            foreach (string iws in iw)
            {
               if (iws.Contains("sv:"))
                {
                    string svtit = iws.Replace("sv:","");
                    Page psv = new Page(svsite,svtit);
                    psv.Load();
                    if (!psv.Exists())
                        break;
                    svexists = true;
                    string origtext = psv.text;
                    if (!psv.text.Contains("eobox") && !psv.text.Contains("tadsfakta"))
                    {

                        //Console.WriteLine("Filling params");
                        psv.text = geobox + psv.text;
                        foreach (string np in newparamdict.Keys)
                        {
                            //Console.WriteLine(np);
                            psv.SetTemplateParameter("Stadsfakta", np, newparamdict[np], true);
                        }
                    }
                    else
                        Console.WriteLine("Has box already");
                    //DONE!  Now save if needed.

                    Bot.editComment = "Fixar faktamall";
                    isMinorEdit = false;
                    if (psv.text != origtext)
                        psv.Save();
                    Thread.Sleep(4000);//milliseconds
        
                }

            }

            if (!svexists) //No Swedish article found; create one!
            {
                string provname = "";
                if (newparamdict.ContainsKey("indelning"))
                    provname = newparamdict["indelning"].Trim(brackets);
                if (provname.Contains(" ("))
                    provname = provname.Remove(provname.IndexOf(" ("));
                
                string svtit = p.title;
                if ( svtit.Contains(", "))
                    svtit = svtit.Remove(svtit.IndexOf(", "));
                newparamdict.Add("namn", svtit);

                Page psv = new Page(svsite, svtit);
                psv.Load();
                if (psv.Exists())
                {
                    //Försöker skapa särskiljningsled: '''Kommun (provins)'''
                    string svtit2 = svtit + " (" + provname + ")";
                    psv.title = svtit2;
                    psv.text = null;
                    psv.Load();
                    if (psv.Exists()) 
                        continue; //Om det inte ens funkar med särskiljning; skippa!
                }

                //Make stadsfakta-box:
                psv.text = geobox;
                foreach (string np in newparamdict.Keys)
                {
                    //Console.WriteLine(np);
                    psv.SetTemplateParameter("Stadsfakta", np, newparamdict[np], true);
                }
                
                //Make article text:

                psv.text = psv.text + "'''"+svtit+"''' (''"+newparamdict["annat_namn"]+"'') är en [[kommun]] i [[Filippinerna]]. ";
                string provlink = newparamdict["indelning"];
                if (provlink.Contains("("))
                    provlink = provlink.Replace("]]","|"+provname+"]]");
                if (island != "")
                    psv.text = psv.text + "Kommunen ligger på ön [[" + island + "]], och tillhör provinsen " + provlink + ". ";
                else
                    psv.text = psv.text + "Kommunen tillhör provinsen " + provlink + " och ligger på ön med samma namn. ";
                if ( newparamdict.ContainsKey("folkmängd_år"))
                   psv.text = psv.text + "Befolkningen uppgick år " + newparamdict["folkmängd_år"] + " till " + newparamdict["folkmängd"] + " personer. ";
                else if (newparamdict.ContainsKey("folkmängd"))
                    psv.text = psv.text + "Befolkningen uppgår till " + newparamdict["folkmängd"] + " personer.";
                psv.text = psv.text + "\n\n";
                
                //Barangays:

                bool bgytable = false;
                Regex bgyRegEx = new Regex("arangay *==");
                if ( bgyRegEx.IsMatch(p.text))
                //if ((p.text.Contains("==Mga Barangay=="))||(p.text.Contains("==Barangay=="))||(p.text.Contains("== Mga Barangay ==")))
                {
                    Console.WriteLine("Found bgy-match");
                    int nmb = p.text.IndexOf("arangay");
                    int nts = -1;
                    int nte = -1;
                    int extra = 0;
                    if (p.text.Contains("{|") && p.text.Contains("|}"))
                    {
                        nts = p.text.IndexOf("{|");
                        nte = p.text.IndexOf("|}");
                        extra = 2;
                    }
                    else if (p.text.Contains("<table") && p.text.Contains("/table>"))
                    {
                        nts = p.text.IndexOf("<table");
                        nte = p.text.IndexOf("/table>");
                        extra = 7;
                        
                    }
                    
                    if ((nts > nmb) && (nte > nts))
                        {
                            //Copy barangay-table
                            psv.text = psv.text + "== Barangayer ==\n";
                            if ( nbgy != "" )
                              psv.text = psv.text + svtit + " delas in i " + nbgy + " [[barangay]]er. \n\n";
                            psv.text = psv.text + p.text.Substring(nts, nte - nts + extra)+"\n\n";
                            bgytable = true;
                        }
                    
                }
                if (!bgytable && (nbgy!=""))
                    psv.text = psv.text + svtit + " delas in i " + nbgy + " [[barangay]]er. \n\n";

                //Categories:

                psv.text = psv.text + "[[Kategori:Orter i " + provname + "]]\n";

                //Interwiki:

                foreach (string iws in iw)
                {
                    if (!iws.Contains("sv:"))
                        psv.text = psv.text + "[[" + iws + "]]\n";
                }
                psv.text = psv.text + "[[tl:" + p.title + "]]\n";

                //botmall:

                psv.text = "{{robotskapad|Lsjbot|filippinska kommun|datum=2012-08}}\n" + psv.text;

                //DONE!  Now save the new article.

                Bot.editComment = "Skapar kommunartikel med bot";
                isMinorEdit = false;
                //Console.WriteLine("-----------");
                //Console.WriteLine(psv.text);
                psv.Save();
                Thread.Sleep(4000);//milliseconds
            }
            
              
        }
	}
}