コード例 #1
0
ファイル: Task1.cs プロジェクト: WPAFC/wikibots
 public static void exec()
 {
     string[] line = System.IO.File.ReadAllLines("list");
     List<string> ignorelist = new List<string>();
     if (System.IO.File.Exists("resultsig"))
     {
         ignorelist.AddRange (System.IO.File.ReadAllLines("resultsig"));
     }
     if (System.IO.File.Exists("results"))
     {
         ignorelist.AddRange (System.IO.File.ReadAllLines("results"));
     }
     int processed = 1;
     foreach (string c in line)
     {
         if (ignorelist.Contains(c))
         {
             continue;
         }
         try
         {
             Page afc = new Page(MainClass.en, "Wikipedia talk:" + c);
             afc.Load();
             if ( afc.text == null ||
                 afc.text.Contains("REDIRECT") ||
                 afc.text.Contains("{{AFC") ||
                 afc.text.Contains("{{WPAFC") ||
                               afc.text == "" ||
                 afc.text.Contains("[[Category:AfC_submissions_with_missing_AfC_template]]")
                              )
             {
                 MainClass.DebugLog("OK:" + c);
                 System.IO.File.AppendAllText("resultsig", c + "\n");
             }
             else
             {
                 MainClass.DebugLog("Category missing:"  + c);
                 afc.text = afc.text + "\n[[Category:AfC_submissions_with_missing_AfC_template]]";
                 afc.Save(afc.text, "Bot: inserting [[Category:AfC_submissions_with_missing_AfC_template]]", false);
                 processed++;
                 System.IO.File.AppendAllText("results", c + "\n");
                 if (processed > 100)
                 {
                     MainClass.DebugLog("Finished for today");
                     return;
                 }
             }
         }
         catch (Exception fail)
         {
             Console.WriteLine(fail.ToString());
             System.IO.File.AppendAllText("errors", c + Environment.NewLine);
         }
     }
     MainClass.Log("end");
 }
コード例 #2
0
	/// The entry point function. Start coding here.
	public static void Main()
	{
		// Compiled documentation is available in Documentation.chm file.

		// A very compehensive DotNetWikiBot usage examples can be found
		// in unit testing file called DebugBot.cs:
		// http://sourceforge.net/p/dotnetwikibot/svn/HEAD/tree/DebugBot.cs

		// Bot scripts repository is being created at
		// https://sourceforge.net/apps/mediawiki/dotnetwikibot/index.php?title=BSR
		// You are welcome to share your scripts.

		// And here you can find some basic usage examples:

		Site site = new Site("https://en.wikipedia.org", "YourBotLogin", "YourBotPassword");
		//Site site = new Site("http://mywikisite.com", "YourBotLogin", "YourBotPassword");
		//Site site = new Site("https://sourceforge.net/apps/mediawiki/YourProjectName/",
								//"YourSourceForgeLogin", "YourSourceForgePassword");

		site.ShowNamespaces();
		Page p = new Page(site, "Wikipedia:Sandbox");
		p.LoadWithMetadata();
		if (p.Exists())
			Console.WriteLine(p.text);
		p.SaveToFile("MyArticles\\file.txt");
		p.LoadFromFile("MyArticles\\file.txt");
		p.ResolveRedirect();
		Console.WriteLine(p.GetNamespace());
		p.text = "new text";
		site.defaultEditComment = "saving test";
		site.minorEditByDefault = true;
		p.Save();

		/**
		string[] arr = {"Art", "Poetry", "Cinematography", "Camera", "Image"};
		PageList pl = new PageList(site, arr);
		pl.LoadWithMetadata();
		pl.FillFromAllPages("Sw", 0, true, 100);
		pl.SaveTitlesToFile("MyArticles\\list.txt");
		pl.FillFromFile("MyArticles\\list.txt");
		pl.FillFromCategory("Category:Cinematography");
		pl.FillFromLinksToPage("Cinematography");
		pl.RemoveEmpty();
		pl.RemoveDisambigs();
		pl.ResolveRedirects();
		Console.WriteLine(pl[2].text);
		pl[1].text = "#REDIRECT [[Some Page]]";
		pl.FilterNamespaces(new int[] {0,3});
		pl.RemoveNamespaces(new int[] {2,4});
		pl.Clear();
		site.defaultEditComment = "my edit comment";
		site.minorEditByDefault = true;
		pl.Save();
		/**/
	}
コード例 #3
0
        protected override void ProcessPage(Page p, EditStatus edit)
        {
            if (p.GetNamespace() != 0)
                return;
            p.Load();

            //Nur Seiten mit Vorlage:Infobox NSC
            if (p.GetAllTemplates().All(t => t.Title.ToLower() != "infobox nsc")) return;

            //Nur Seiten, die eine Unterseite mit Angeboten haben...
            var m = Regex.Match(p.text, "\\{\\{:" + p.title + "/([^}]+)}}");
            if (!m.Success) return;

            var subpageTitle = m.Groups[1].Value;

            var subpage = new Page(p.site, p.title + "/" + subpageTitle);
            subpage.Load();
            if (!subpage.Exists())
            {
                p.text = p.text.Replace(m.Value, "");
                edit.EditComment = "Verweis auf nicht vorhandene Angebots-Unterseite „" + subpage.title + "“ entfernt";
                edit.Save = true;
            }
            else
            {
                var pl2 = new PageList(p.site);
                pl2.FillFromLinksToPage(subpage.title);
                if (pl2.Count() > 1) return;

                var subpageContent = Regex.Replace(subpage.text, "<noinclude>.*?</noinclude>", "").Trim();

                p.text = p.text.Replace(m.Value, subpageContent);

                subpage.text = "{{Löschantrag|[Bot] In den Hauptartikel „[[" + p.title + "]]“ verschoben}}\n" +
                               subpage.text;
                subpage.Save("[Bot] In Hauptartikel „[[" + p.title + "]]“ verschoben", true);

                edit.EditComment = "Angebot von „" + subpage.title + "“ in den Hauptartikel verschoben";
                edit.Save = true;
            }
        }
コード例 #4
0
 public static void ReformatPage(string pageName)
 {
     Page page = new Page(newWiki, pageName);
     page.Load();
     string text = BBCodeToMediaWiki(page.text);
     if (pageName.StartsWith("Mission Editor", true, System.Globalization.CultureInfo.CurrentCulture))
         page.AddToCategory("Mission Editor");
     page.Save(text, "Cleanup by DotNetWikiBot", false);
 }
コード例 #5
0
        public static void ConvertPage(string pageName, string newName, bool overwrite = false)
        {
            var db = new ZkDataContext();
            ForumThread thread = db.ForumThreads.FirstOrDefault(x=> x.WikiKey == pageName);
            if (thread == null)
            {
                Console.WriteLine("No ZK wiki page with name {0} found", pageName);
                return;
            }

            string text = thread.ForumPosts.First().Text;
            text = BBCodeToMediaWiki(text);

            Page page = new Page(newWiki, newName);
            page.Load();

            bool update = false;
            if (!page.IsEmpty())
            {
                if (!overwrite)
                {
                    Console.WriteLine("Page already exists, exiting");
                    return;
                }
                else update = true;
            }
            if (newName.StartsWith("Mission Editor", true, System.Globalization.CultureInfo.CurrentCulture))
                page.AddToCategory("Mission Editor");
            page.Save(text, update ? "" : "Ported from ZK wiki by DotNetWikiBot", update);
        }
コード例 #6
0
 public static void AddNavbox(Page page, string template)
 {
     string text = page.text;
     if (page.GetTemplates(false, false).Contains(template))
     {
         Console.WriteLine("Page {0} already has template {1}", page.title, template);
         return;
     }
     page.AddTemplate("{{" + template + "}}");
     page.Save(text, "Infobox added by DotNetWikiBot", true);
 }
コード例 #7
0
ファイル: WikiClass.cs プロジェクト: jcryer/RPBot
        public async Task AddOCAsync(CommandContext e, [RemainingText] string charName)
        {
            string role = "";

            Wiki.Page page = new Wiki.Page(WikiSite, charName)
            {
                text = ""
            };

            var interactivity = e.Client.GetInteractivity();

            var embed = new DiscordEmbedBuilder()
            {
                Title = "Character Data",
                Color = DiscordColor.Red
            };


            var infoBoxEmbed = new DiscordEmbedBuilder()
            {
                Title = "Infobox",
                Color = DiscordColor.SpringGreen
            };

            DiscordMessage embedMessage = await e.RespondAsync(embed : embed);

            DiscordMessage infoBoxEmbedMessage = await e.RespondAsync(embed : infoBoxEmbed);

            DiscordMessage mainMessage = await e.RespondAsync("Okay, setting up!");


            foreach (var pair in WikiFields)
            {
                bool errored = false;
                await mainMessage.ModifyAsync(pair.Key[1]);

                string content = "";
AnotherMessage:
                var msg = await interactivity.WaitForMessageAsync(x => x.Author == e.Member, TimeSpan.FromSeconds(120));

                if (msg != null)
                {
                    content += msg.Message.Content.Replace("¬", "") + Environment.NewLine;

                    if (msg.Message.Content.Contains("¬"))
                    {
                        await msg.Message.DeleteAsync();

                        goto AnotherMessage;
                    }
                    else if (msg.Message.Content.ToLower() == "stop")
                    {
                        goto End;
                    }
Errored:
                    if (content.Length < 1024)
                    {
                        embed.AddField(pair.Key[0], content);
                    }
                    else
                    {
                        var strings = content.Split(1024);
                        foreach (var s in strings)
                        {
                            embed.AddField(pair.Key[0], new string(s.ToArray()));
                        }
                    }
                    pair.Value(content, page);

                    if (errored)
                    {
                        embedMessage = await e.RespondAsync(embed : embed);

                        await infoBoxEmbedMessage.DeleteAsync();

                        await mainMessage.DeleteAsync();

                        infoBoxEmbedMessage = await e.RespondAsync(embed : infoBoxEmbed);

                        mainMessage = await e.RespondAsync("Okay, setting up!");
                    }
                    else
                    {
                        try
                        {
                            await embedMessage.ModifyAsync(embed : embed.Build());
                        }
                        catch
                        {
                            embed.ClearFields();
                            errored = true;
                            goto Errored;
                        }
                    }
                    await mainMessage.ModifyAsync("Added field!");

                    await msg.Message.DeleteAsync();

                    await Task.Delay(1000);
                }
            }

            foreach (var infoBoxField in InfoBox.Fields)
            {
                await mainMessage.ModifyAsync(infoBoxField.Question + "\nSend `-` if the field should be omitted.");

Failed:
                var msg = await interactivity.WaitForMessageAsync(x => x.Author == e.Member, TimeSpan.FromSeconds(120));

                if (msg != null)
                {
                    if (infoBoxField.FieldId == "affiliation")
                    {
                        string message = msg.Message.Content.ToLower();
                        if (message.Contains("hero"))
                        {
                            role = "Heroes";
                            infoBoxField.FieldValue = "Pro Hero";
                        }
                        else if (message.Contains("rogue") || message.Contains("rouge"))
                        {
                            role = "Rogues";
                            infoBoxField.FieldValue = "Rogue";
                        }
                        else if (message.Contains("villain"))
                        {
                            role = "Villains";
                            infoBoxField.FieldValue = "Villain";
                        }
                        else if (message.Contains("academy student"))
                        {
                            role = "Academy Students";
                            infoBoxField.FieldValue = "Academy Student";
                        }
                        else
                        {
                            await msg.Message.DeleteAsync();

                            goto Failed;
                        }
                        infoBoxEmbed.AddField(infoBoxField.FieldId, infoBoxField.FieldValue);
                    }
                    else
                    {
                        if (msg.Message.Content.ToLower() == "stop")
                        {
                            goto End;
                        }
                        infoBoxField.FieldValue = msg.Message.Content;
                        try
                        {
                            if (infoBoxField.FieldValue.Length < 1024)
                            {
                                infoBoxEmbed.AddField(infoBoxField.FieldId, infoBoxField.FieldValue);
                            }
                            else
                            {
                                var strings = infoBoxField.FieldValue.Split(1024);
                                foreach (var s in strings)
                                {
                                    infoBoxEmbed.AddField(infoBoxField.FieldId, infoBoxField.FieldValue);
                                }
                            }
                        }
                        catch
                        {
                            await msg.Message.DeleteAsync();

                            goto Failed;
                        }
                    }
                    await infoBoxEmbedMessage.ModifyAsync(embed : infoBoxEmbed.Build());

                    await msg.Message.DeleteAsync();

                    await mainMessage.ModifyAsync("Added field!");

                    await Task.Delay(1000);
                }
            }

imageMessage:
            await mainMessage.ModifyAsync("Please link an image for the infobox.");

            var imageMessage = await interactivity.WaitForMessageAsync(x => x.Author == e.Member, TimeSpan.FromSeconds(120));

            if (imageMessage != null)
            {
                string imageName;
                if (imageMessage.Message.Content.ToLower() == "stop")
                {
                    goto End;
                }
                Regex ItemRegex = new Regex(@"\.(png|gif|jpg|jpeg|tiff|webp)");
                if (ItemRegex.IsMatch(imageMessage.Message.Content))
                {
                    imageName = imageMessage.Message.Content.Split('/').Last();

                    Wiki.Page p = new Wiki.Page(WikiSite, "File:" + imageName);
                    p.UploadImageFromWeb(imageMessage.Message.Content, "N/A", "N/A", "N/A");
                    infoBoxEmbed.ImageUrl = imageMessage.Message.Content;
                    await imageMessage.Message.DeleteAsync();

                    await infoBoxEmbedMessage.ModifyAsync(embed : infoBoxEmbed.Build());

                    await mainMessage.ModifyAsync("Added field!");

                    await Task.Delay(1000);
                }
                else
                {
                    await imageMessage.Message.DeleteAsync();

                    await mainMessage.ModifyAsync("That is invalid.");

                    goto imageMessage;
                }
                string infoboxStuff = InfoBox.BuildInfoBox("image = " + imageName + "|");
                page.text  = page.text.Insert(0, infoboxStuff);
                page.text += $"{Environment.NewLine}[[Category:OC]] [[Category:All Characters]] [[Category:OC {role}]] [[Category:{role}]]";

                if (role == "Academy Students")
                {
academyMessage:
                    await mainMessage.ModifyAsync("Please state which year the academy student is in: 1, 2, 3 or 4.");

                    var academyMessage = await interactivity.WaitForMessageAsync(x => x.Author == e.Member, TimeSpan.FromSeconds(120));

                    if (academyMessage != null)
                    {
                        if (academyMessage.Message.Content.ToLower() == "stop")
                        {
                            goto End;
                        }
                        switch (academyMessage.Message.Content)
                        {
                        case "1":
                            page.text += $"[[Category:1st Year Student]]";
                            break;

                        case "2":
                            page.text += $"[[Category:2nd Year Student]]";
                            break;

                        case "3":
                            page.text += $"[[Category:3rd Year Student]]";
                            break;

                        case "4":
                            page.text += $"[[Category:4th Year Student]]";
                            break;

                        default:
                            await mainMessage.ModifyAsync("That is invalid.");

                            goto academyMessage;
                        }
                        await academyMessage.Message.DeleteAsync();
                    }
                }
                page.Save();
                await mainMessage.ModifyAsync("Complete!");

                await e.RespondAsync($"http://roleplay-heroes-and-villains.wikia.com/wiki/{page.title}");

                return;
            }

End:
            await mainMessage.ModifyAsync("Action cancelled.");

            await Task.Delay(2000);

            await mainMessage.DeleteAsync();

            await infoBoxEmbedMessage.DeleteAsync();

            await embedMessage.DeleteAsync();
        }
コード例 #8
0
 public void schreibDiskussion(string _text)
 {
     Page p = new Page(site, "Benutzer Diskussion:" + name);
     p.LoadEx();
     p.text+="\n"+_text;
     p.Save();
 }
コード例 #9
0
ファイル: Program.cs プロジェクト: wikigit/Picasa-Review-Bot
 private static void SavePage(Page page, string editSummary)
 {
     page.Save(editSummary, /*isMinorEdit*/false);
     Console.WriteLine(editSummary);
 }
コード例 #10
0
        public static void DoStuff()
        {
            string username = "";
            string password = "";

            Console.WriteLine("Enter wiki username: "******"Enter wiki password: "******"G:\zkwiki\output\markup"));
            files = files.Shuffle();
            foreach (string path in files)
            {
                string unitname = Path.GetFileNameWithoutExtension(path);
                unitname = unitname.Replace("&#47;", "/");
                var page = new Page(newWiki, unitname);
                page.Load();
                if (page.Exists())
                {
                    // do nothing
                }
                else
                {
                    var text = File.ReadAllText(path);
                    Console.WriteLine("-- Making page {0} --", unitname);
                    page.Save(text, "Created page from unitguide builder export", false);
                    count++;
                    //if (count >= 20) break;
                }
            }

            string[,] toPort = 
            {
                //{"MissionEditorCompatibility", "Mission Editor game compatibility"},
                //{"MissionEditorStartPage", "Mission Editor"},
                //{"MissionEditorWINE", "Mission Editor in WINE"},
                //{"FactoryOrdersTutorial", "Mission Editor Factory Orders Tutorial"},
                //{"MissionEditorTutorial", "Mission Editor Tutorial"},
                //{"MissionEditorCutsceneTutorial", "Mission Editor Cutscenes Tutorial"}
            };
            for (int i=0; i<toPort.GetLength(0); i++)
            {
                ConvertPage(toPort[i, 0], toPort[i, 1], false);
            }

            string[] toReformat =
            {
                //"Mission Editor Cutscenes Tutorial"
            };
            for (int i = 0; i < toReformat.GetLength(0); i++)
            {
                ReformatPage(toReformat[i]);
            }
        }