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 string oversatt(string ord, Site siteut)
{
if(ord.IndexOf("[[") != -1)
{
int cursor = 0;
while(ord.IndexOf("[[", cursor) != -1)
{
string s2 = ord.Substring(ord.IndexOf("[[", cursor)+2);
s2 = s2.Substring(0,s2.IndexOf("]]"));
if(s2.IndexOf("|") != -1)
s2 = s2.Substring(0,s2.IndexOf("|"));
Page pen2 = new Page(siteut, s2);
pen2.Load();
if(pen2.text.ToLower().IndexOf("#redirect") != -1)
{
string s3 = pen2.text.Substring(pen2.text.IndexOf("[[")+2);
s3 = s3.Substring(0,s3.IndexOf("]]"));
pen2.title = s3;
pen2.Load();
}
if(pen2.Exists())
{
if(pen2.text.IndexOf("[[sv:") != -1)
{
string s3 = pen2.text.Substring(pen2.text.IndexOf("[[sv:")+5);
s3 = s3.Substring(0,s3.IndexOf("]]"));
string s4 = "";
if(s3.IndexOf(",") != -1)
{
if(ord.IndexOf(",", cursor)<ord.IndexOf("]]", cursor))
s4 = "|";
}
if(s3.IndexOf("(") != -1)
{
if(ord.IndexOf("(", cursor)<ord.IndexOf("]]", cursor))
s4 = "|";
}
string s5 = ord.Substring(0,ord.IndexOf("[[", cursor)+2)+s3+s4;
ord = ord.Substring(0,ord.IndexOf("[[", cursor)+2)+s3+s4+ord.Substring(ord.IndexOf("]]", cursor+s2.Length));
cursor = s5.Length;
}
else
{
if(s2.IndexOf(",")!=-1)
s2 = s2.Substring(0,s2.IndexOf(",")).Trim();
if(s2.IndexOf("(")!=-1)
s2 = s2.Substring(0,s2.IndexOf("(")).Trim();
string s5 = ord.Substring(0,ord.IndexOf("[[", cursor))+s2;
ord = ord.Substring(0,ord.IndexOf("[[", cursor))+s2+ord.Substring(ord.IndexOf("]]", cursor)+2);
cursor = s5.Length;
}
}
else
{
if(s2.IndexOf(",")!=-1)
s2 = s2.Substring(0,s2.IndexOf(",")).Trim();
if(s2.IndexOf("(")!=-1)
s2 = s2.Substring(0,s2.IndexOf("(")).Trim();
string s5 = ord.Substring(0,ord.IndexOf("[[", cursor))+s2;
ord = ord.Substring(0,ord.IndexOf("[[", cursor))+s2+ord.Substring(ord.IndexOf("]]", cursor)+2);
cursor = s5.Length;
}
}
}
return ord;
}
public static string relationer(string a)
{
a = a.Replace("children", "barn");
a = a.Replace("child", "barn");
a = a.Replace("his death", "hans död");
a = a.Replace("her death", "hennes död");
a = a.Replace("death", "död");
a = a.Replace("present", "nutid");
a = a.Replace("divorced", "skild");
return a;
}
public static string refrens(string a)
{
if(a.IndexOf("<ref name") != -1)
{
int s = a.IndexOf("<ref name");
int t = a.IndexOf("/>", s);
if(t != -1)
a = a.Substring(0,s)+a.Substring(t+2);
}
return a;
}
public static void Main()
{
Site site = new Site("http://sv.wikipedia.org", "Innocent bot", "********");
Site site2 = new Site("http://en.wikipedia.org", "Innocent bot", "********");
Site site3 = new Site("http://commons.wikimedia.org", "Innocent bot", "********");
PageList pl = new PageList(site);
pl.FillFromPageLinks("Användare:Jopparn/Biografier utan infobox");
pl.RemoveNamespaces(new int[] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,100,101});
pl.Sort();
foreach (Page myPage in pl)
{
myPage.Load();
string orginal = myPage.text;
string en = myPage.text.Substring(myPage.text.IndexOf("[[en:")+5);
en = en.Substring(0,en.IndexOf("]]"));
Page pen = new Page(site2, en);
if(myPage.text.IndexOf("[[en:") != -1)
{
pen.Load();
}
if(Mallhantering.finnsmallen(pen.text, "Template:Infobox person") && !Mallhantering.finnsmallen(myPage.text, "Mall:Infobox Skådespelare") && myPage.text.IndexOf("[[en:") != -1)
{
string fil = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "image");
if(fil != "")
{
Page pcom = new Page(site3, "File:"+fil);
pcom.Load();
if(!pcom.Exists())
fil = "";
}
string död = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "death_date");
if(död != "")
{
if(Mallhantering.finnsmallen(död, "Template:Death date and age"))
{
string s = "{{Död datum och ålder|";
s = s + Mallhantering.Värdeavparameter(död, "Death date and age", 0, "1")+"|";
s = s + Mallhantering.Värdeavparameter(död, "Death date and age", 0, "2")+"|";
s = s + Mallhantering.Värdeavparameter(död, "Death date and age", 0, "3")+"|";
s = s + Mallhantering.Värdeavparameter(död, "Death date and age", 0, "4")+"|";
s = s + Mallhantering.Värdeavparameter(död, "Death date and age", 0, "5")+"|";
s = s + Mallhantering.Värdeavparameter(död, "Death date and age", 0, "6")+"}}";
död = s;
}
if(Mallhantering.finnsmallen(död, "Template:Dda"))
{
string s = "{{Död datum och ålder|";
s = s + Mallhantering.Värdeavparameter(död, "Dda", 0, "1")+"|";
s = s + Mallhantering.Värdeavparameter(död, "Dda", 0, "2")+"|";
s = s + Mallhantering.Värdeavparameter(död, "Dda", 0, "3")+"|";
s = s + Mallhantering.Värdeavparameter(död, "Dda", 0, "4")+"|";
s = s + Mallhantering.Värdeavparameter(död, "Dda", 0, "5")+"|";
s = s + Mallhantering.Värdeavparameter(död, "Dda", 0, "6")+"}}";
död = s;
}
}
död = refrens(död);
string född = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "birth_date");
if(född != "")
{
if(Mallhantering.finnsmallen(född, "Template:Birth date and age"))
{
född = född.Replace("Birthdate and age", "Birth date and age");
född = född.Replace("birthdate and age", "Birth date and age");
if(död == "")
{
string s = "{{Ålder|";
s = s + Mallhantering.Värdeavparameter(född, "Birth date and age", 0, "1")+"|";
s = s + Mallhantering.Värdeavparameter(född, "Birth date and age", 0, "2")+"|";
s = s + Mallhantering.Värdeavparameter(född, "Birth date and age", 0, "3")+"}}";
född = s;
}
else
{
string s = "";
s = s + Mallhantering.Värdeavparameter(född, "Birth date and age", 0, "3")+" ";
s = s + "{{byt:Användare:Lavallen/Month|"+Mallhantering.Värdeavparameter(född, "Birth date and age", 0, "2")+"}} ";
s = s + Mallhantering.Värdeavparameter(född, "Birth date and age", 0, "1");
född = s;
}
}
if(Mallhantering.finnsmallen(född, "Template:Birth date"))
{
if(död == "")
{
string s = "{{Ålder|";
s = s + Mallhantering.Värdeavparameter(född, "Birth date", 0, "1")+"|";
s = s + Mallhantering.Värdeavparameter(född, "Birth date", 0, "2")+"|";
s = s + Mallhantering.Värdeavparameter(född, "Birth date", 0, "3")+"}}";
född = s;
}
else
{
string s = "";
s = s + Mallhantering.Värdeavparameter(född, "Birth date", 0, "3")+" ";
s = s + "{{byt:Användare:Lavallen/Month|"+Mallhantering.Värdeavparameter(född, "Birth date", 0, "2")+"}} ";
s = s + Mallhantering.Värdeavparameter(född, "Birth date", 0, "1");
född = s;
}
}
}
född = refrens(född);
string namn = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "name");
if(namn == "")
{
namn = myPage.title;
if(namn.IndexOf(",") != -1)
namn = namn.Substring(namn.IndexOf(",")).Trim();
if(namn.IndexOf("(") != -1)
namn = namn.Substring(namn.IndexOf("(")).Trim();
}
string födelsenamn = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "birth_name");
if(födelsenamn == "")
födelsenamn = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "birthname");
födelsenamn = refrens(födelsenamn);
string andranamn = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "othername");
if(andranamn == "")
andranamn = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "other names");
if(andranamn == "")
andranamn = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "other_names");
if(andranamn == "")
andranamn = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "alias");
andranamn = refrens(andranamn);
string hemsida = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "website");
if(hemsida == "")
hemsida = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "homepage");
if(hemsida == "")
hemsida = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "URL");
string yearsactive = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "years_active");
if(yearsactive == "")
yearsactive = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "yearsactive");
if(yearsactive == "")
yearsactive = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "years active");
yearsactive = yearsactive.Replace("present", "nutid");
yearsactive = yearsactive.Replace("Present", "nutid");
yearsactive = refrens(yearsactive);
string IMDB = "";
if(Mallhantering.finnsmallen(myPage.text, "Mall:IMDb-namn"))
{
IMDB = Mallhantering.Värdeavparameter(myPage.text, "IMDb-namn", 0, "id");
}
if(IMDB == "" && Mallhantering.finnsmallen(pen.text, "IMDb name"))
{
IMDB = Mallhantering.Värdeavparameter(pen.text, "IMDb name", 0, "id");
if(IMDB == "")
IMDB = Mallhantering.Värdeavparameter(pen.text, "IMDb name", 0, "1");
if(IMDB == "")
IMDB = Mallhantering.Värdeavparameter(pen.text, "Imdb name", 0, "1");
}
if(Mallhantering.finnsmallen(myPage.text, "Mall:Imdb namn"))
{
IMDB = Mallhantering.Värdeavparameter(myPage.text, "imdb namn", 0, "id");
IMDB = Mallhantering.Värdeavparameter(myPage.text, "Imdb namn", 0, "id");
}
if(IMDB == "" && myPage.text.IndexOf("http://www.imdb.com/name/nm") != -1)
{
IMDB = myPage.text.Substring(myPage.text.IndexOf("www.imdb.com/name/nm")+20);
IMDB = IMDB.Substring(0,IMDB.IndexOf(" "));
if(IMDB.IndexOf("/") != -1)
IMDB = IMDB.Substring(0,IMDB.IndexOf("/"));
}
if(IMDB == "" && pen.text.IndexOf("http://www.imdb.com/name/nm") != -1)
{
IMDB = pen.text.Substring(pen.text.IndexOf("www.imdb.com/name/nm")+20);
IMDB = IMDB.Substring(0,IMDB.IndexOf(" "));
if(IMDB.IndexOf("/") != -1)
IMDB = IMDB.Substring(0,IMDB.IndexOf("/"));
}
if(IMDB != "")
{
myPage.RemoveTemplate("IMDb-namn");
myPage.RemoveTemplate("Imdb namn");
myPage.text = myPage.text.Replace("\n* \n", "\n");
myPage.text = myPage.text.Replace("\n*\n", "\n");
}
string SFDB = "";
if(Mallhantering.finnsmallen(myPage.text, "Mall:SFDb"))
{
IMDB = Mallhantering.Värdeavparameter(myPage.text, "SFDb", 0, "person");
}
if(SFDB != "")
{
myPage.RemoveTemplate("SFDb");
myPage.text = myPage.text.Replace("\n* \n", "\n");
myPage.text = myPage.text.Replace("\n*\n", "\n");
}
string make = "";
if(myPage.text.IndexOf("[[Kategori:Kvinnor]]") != -1)
{
make = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "spouse");
if(make != "")
{
make = make.Replace("{{marriage|", "{{byt:Användare:Lavallen/Marriage|");
make = make.Replace("{{Marriage|", "{{byt:Användare:Lavallen/Marriage|");
make = oversatt(make, site2);
}
}
string maka = "";
if(myPage.text.IndexOf("[[Kategori:Män]]") != -1)
{
maka = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "spouse");
if(maka != "")
{
maka = maka.Replace("{{marriage|", "{{byt:Användare:Lavallen/Marriage|");
maka = maka.Replace("{{Marriage|", "{{byt:Användare:Lavallen/Marriage|");
maka = oversatt(maka, site2);
}
}
string partner = "";
partner = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "partner");
if(partner == "")
partner = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "domesticpartner");
if(partner != "")
{
partner = partner.Replace("{{marriage|", "{{byt:Användare:Lavallen/Marriage|");
partner = partner.Replace("{{Marriage|", "{{byt:Användare:Lavallen/Marriage|");
partner = oversatt(partner, site2);
}
make = relationer(make);
make = refrens(make);
maka = relationer(maka);
maka = refrens(maka);
partner = relationer(partner);
partner = refrens(partner);
string födelseplats = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "birth_place");
födelseplats = oversatt(födelseplats, site2);
födelseplats = födelseplats.Replace("U.S.", "USA");
födelseplats = refrens(födelseplats);
string dödsplats = Mallhantering.Värdeavparameter(pen.text, "Infobox person", 0, "death_place");
dödsplats = oversatt(dödsplats, site2);
dödsplats = dödsplats.Replace("U.S.", "USA");
dödsplats = refrens(dödsplats);
myPage.text = "{{Infobox Skådespelare\n| namn = \n| bild = \n| bildstorlek = \n| bildtext = \n| födelsenamn = \n| födelsedatum = \n| plats = \n| dödsdatum = \n| dödsplats = \n| andra namn = \n| år aktiv = \n| make = \n| maka = \n| partner = \n| hemsida = \n| noterbara roller = \n| guldbaggen = \n| kristallen = \n| oscars = \n| emmyawards = \n| tonyawards = \n| goldenglobeawards = \n| baftaawards = \n| imdb = \n| sfdb = \n}}\n\n"+myPage.text;
myPage.text = Mallhantering.sättvärde(myPage.text, "Infobox Skådespelare", 0, "plats", födelseplats);
myPage.text = Mallhantering.sättvärde(myPage.text, "Infobox Skådespelare", 0, "dödsplats", dödsplats);
myPage.text = Mallhantering.sättvärde(myPage.text, "Infobox Skådespelare", 0, "namn", namn);
myPage.text = Mallhantering.sättvärde(myPage.text, "Infobox Skådespelare", 0, "make", make);
myPage.text = Mallhantering.sättvärde(myPage.text, "Infobox Skådespelare", 0, "maka", maka);
if(make != "" && maka == "")
myPage.text = myPage.text.Replace("\n| maka = ", "");
if(maka != "" && make == "")
myPage.text = myPage.text.Replace("\n| make = ", "");
myPage.text = Mallhantering.sättvärde(myPage.text, "Infobox Skådespelare", 0, "partner", partner);
myPage.text = Mallhantering.sättvärde(myPage.text, "Infobox Skådespelare", 0, "bild", fil);
myPage.text = Mallhantering.sättvärde(myPage.text, "Infobox Skådespelare", 0, "födelsedatum", född);
myPage.text = Mallhantering.sättvärde(myPage.text, "Infobox Skådespelare", 0, "dödsdatum", död);
myPage.text = Mallhantering.sättvärde(myPage.text, "Infobox Skådespelare", 0, "födelsenamn", födelsenamn);
myPage.text = Mallhantering.sättvärde(myPage.text, "Infobox Skådespelare", 0, "andra namn", andranamn);
myPage.text = Mallhantering.sättvärde(myPage.text, "Infobox Skådespelare", 0, "hemsida", hemsida);
myPage.text = Mallhantering.sättvärde(myPage.text, "Infobox Skådespelare", 0, "år aktiv", yearsactive);
myPage.text = Mallhantering.sättvärde(myPage.text, "Infobox Skådespelare", 0, "imdb", IMDB);
myPage.text = Mallhantering.sättvärde(myPage.text, "Infobox Skådespelare", 0, "sfdb", SFDB);
string slask = myPage.text;
slask = Regex.Replace(slask, "\n==(?![ =])", "\n== ");
slask = Regex.Replace(slask, "(?<![ =])==\n", " ==\n");
slask = Regex.Replace(slask, "\n===(?![ =])", "\n=== ");
slask = Regex.Replace(slask, "(?<![ =])===\n", " ===\n");
slask = Regex.Replace(slask, "\n====(?![ =])", "\n==== ");
slask = Regex.Replace(slask, "(?<![ =])====\n", " ====\n");
slask = slask.Replace("{{DEFAULTSORT:", "{{STANDARDSORTERING:");
slask = slask.Replace("File:", "Fil:");
slask = slask.Replace("file:", "Fil:");
slask = slask.Replace("Bild:", "Fil:");
slask = slask.Replace("bild:", "Fil:");
slask = slask.Replace("Image:", "Fil:");
slask = slask.Replace("image:", "Fil:");
slask = slask.Replace("\n* ", "\n*"); //Ta bort alla befintliga mellanslag efter *
slask = slask.Replace("\n*", "\n* "); //Lägg till ett mellanslag efter alla *
myPage.text = slask;
myPage.RemoveTemplate("Faktamall saknas");
Bot.editComment = "Lägger in {{[[Mall:Infobox Skådespelare|Infobox Skådespelare]]}} med basinfo från [[:en:"+pen.title+"]]";
Bot.isMinorEdit = false;
myPage.Save();
Console.WriteLine(myPage.text);
myPage.Load();
if(myPage.text != orginal)
{
Bot.Wait(5);
Page myPage2 = new Page(site, "Användare:Jopparn/Biografier utan infobox");
myPage2.Load();
myPage2.text = myPage2.text.Replace("]] ", "]]");
myPage2.text = myPage2.text.Replace("# [[:"+myPage.title+"]]\n", "");
Bot.editComment = "Artikel [["+myPage.title+"]] har redan en mall.";
Bot.isMinorEdit = true;
myPage2.Save();
Page myPage3 = new Page(site, "Användare:Jopparn/Biografier med infobox");
myPage3.Load();
myPage3.text = myPage3.text + "\n# [[:"+myPage.title+"]]";
Bot.editComment = "Artikel [["+myPage.title+"]] har redan en mall.";
Bot.isMinorEdit = true;
myPage3.Save();
Bot.Wait(25);
}
}
else
{
if(Mallhantering.finnsmallen(myPage.text, "Mall:Infobox Skådespelare"))
{
Page myPage2 = new Page(site, "Användare:Jopparn/Biografier utan infobox");
myPage2.Load();
myPage2.text = myPage2.text.Replace("]] ", "]]");
myPage2.text = myPage2.text.Replace("# [[:"+myPage.title+"]]\n", "");
Bot.editComment = "Artikel [["+myPage.title+"]] har redan en mall.";
Bot.isMinorEdit = true;
myPage2.Save();
Page myPage3 = new Page(site, "Användare:Jopparn/Biografier med infobox");
myPage3.Load();
myPage3.text = myPage3.text + "\n# [[:"+myPage.title+"]]";
Bot.editComment = "Artikel [["+myPage.title+"]] har redan en mall.";
Bot.isMinorEdit = true;
myPage3.Save();
Bot.Wait(5);
}
}
}
}
}