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"); }
/// 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(); /**/ }
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; } }
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); }
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); }
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); }
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(); }
public void schreibDiskussion(string _text) { Page p = new Page(site, "Benutzer Diskussion:" + name); p.LoadEx(); p.text+="\n"+_text; p.Save(); }
private static void SavePage(Page page, string editSummary) { page.Save(editSummary, /*isMinorEdit*/false); Console.WriteLine(editSummary); }
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("/", "/"); 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]); } }