protected override void ProcessPage(Page p, EditStatus edit) { if (p.GetNamespace() != 0) return; p.Load(); var templates = p.GetAllTemplates().Where(t => t.Title.ToLower() == "infobox gegenstand"); foreach (var template in templates) { if (template.Parameters.ContainsKey("beschreibung") && _regex.IsMatch(template.Parameters["beschreibung"])) { template.Parameters["beschreibung"] = _regex.Replace(template.Parameters["beschreibung"], "[[$1]]"); template.Save(); edit.Save = true; edit.EditComment = "Attribute in Gegenstandsbeschreibung verlinkt"; } } }
protected override void ProcessPage(Page p, Job.EditStatus edit) { if(p.GetNamespace() != 0) return; p.Load(); foreach (var template in p.GetAllTemplates().Where( template => (template.Title.Equals("Ausrüstungswerte", StringComparison.OrdinalIgnoreCase) || template.Title.Equals("Rezept", StringComparison.OrdinalIgnoreCase)) && (template.Parameters.HasValueIgnoreCase("seltenheit", "Aufgestiegen") && !template.Parameters.ContainsKey("aufwertung")))) { template.InsertParameterAfter("aufwertung", "nein", "infusion2", "infusion"); template.Save(); edit.EditComment = "'aufwertung = nein' hinzugefügt"; edit.Save = true; } }
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; } }
protected override void ProcessPage(Page p, EditStatus edit) { if (p.GetNamespace() != 0) return; p.Load(); var before = p.text; foreach (var template in p.GetAllTemplates()) { if (template.Title == "#dpl:" && template.Parameters.ContainsKey("category") && template.Parameters.ContainsKey("linksto") && template.Parameters.ContainsKey("format")) { var linksTo = template.Parameters["linksto"]; linksTo = linksTo == p.title ? "{{PAGENAME}}" : linksTo; if (template.Parameters["category"].ToLower() == "trophäe") p.text = p.text.Replace(template.Text, "Beschaffung|gegenstand=" + linksTo + "|kategorie=Trophäe"); else if (template.Parameters["category"].ToLower() == "behälter") p.text = p.text.Replace(template.Text, "Beschaffung|gegenstand=" + linksTo + "|kategorie=Behälter"); } } if (p.text.Contains("#dpl:") && p.text.Contains("Behälter")) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("{0} still contains dpl", p.title); Console.ResetColor(); } if (p.text != before) { edit.Save = true; edit.EditComment = "DPL durch {{Beschaffung}} ersetzt"; } }
protected override void ProcessPage(Page p, EditStatus edit) { if (p.GetNamespace() != 0) return; p.Load(); var allChanges = new List<string>(); var before = p.text; foreach (var template in p.GetAllTemplates()) { var templateChanges = new List<string>(); if (Replacements.ContainsKey(template.Title)) { foreach (var parameter in template.Parameters) { if (Replacements[template.Title].ContainsKey(parameter.Key)) { template.ChangeParametername(parameter.Key, Replacements[template.Title][parameter.Key]); templateChanges.Add(parameter.Key + " → " + Replacements[template.Title][parameter.Key]); } } } if (templateChanges.Count > 0) { template.Save(); allChanges.Add(template.Title + ": " + string.Join(", ", templateChanges)); } } if (allChanges.Count > 0) { edit.Save = true; edit.EditComment = "Parameter umbenannt: " + string.Join("; ", allChanges); } }
protected override void ProcessPage(Page p, EditStatus edit) { if (p.GetNamespace() != 0) return; p.Load(); var changes = new List<string>(); var templates = p.GetAllTemplates(); foreach (var template in templates) { if (template.Title == "Rezept") { if (template.Parameters.ContainsKey("seltenheit") && new[] {"meisterwerk", "selten", "exotisch", "legendär"}.Contains( template.Parameters["seltenheit"].ToLower()) && template.Parameters.ContainsKey("gebunden") && template.Parameters["gebunden"].ToLower() == "benutzung") { template.Parameters.Remove("gebunden"); template.Save(); changes.Add("Rezept: 'gebunden = benutzung' entfernt"); } } else if (template.Title == "Eventbelohnung") { string[] parametersToRemove = { "ep-gold", "ep-silber", "ep-bronze", "ep-gold-niederlage", "ep-silber-niederlage", "ep-bronze-niederlage", "ep-niederlage", "karma-gold", "karma-silber", "karma-bronze", "karma-gold-niederlage", "karma-silber-niederlage", "karma-bronze-niederlage", "karma-niederlage", "münzen-gold", "münzen-silber", "münzen-bronze", "münzen-gold-niederlage", "münzen-silber-niederlage", "münzen-bronze-niederlage", "münzen-niederlage" }; var removed = new List<string>(); foreach (var parameter in parametersToRemove) { if (template.Parameters.ContainsKey(parameter)) { template.Parameters.Remove(parameter); removed.Add(parameter); } } if (removed.Any()) { template.Save(); changes.Add("Eventbelohnung: '" + string.Join("', '", removed) + "' entfernt"); } } else if (template.Title == "Infobox Aufgabe") { string[] parametersToRemove = { "erfahrung", "münzen" }; var removed = new List<string>(); foreach (var parameter in parametersToRemove) { if (template.Parameters.ContainsKey(parameter)) { template.Parameters.Remove(parameter); removed.Add(parameter); } } if (removed.Any()) { template.Save(); changes.Add("Infobox Aufgabe: '" + string.Join("', '", removed) + "' entfernt"); } } else if (template.Title == "Infobox Farbstoff") { string[] parametersToRemove = { "seltenheit" }; var removed = new List<string>(); foreach (var parameter in parametersToRemove) { if (template.Parameters.ContainsKey(parameter)) { template.Parameters.Remove(parameter); removed.Add(parameter); } } if (removed.Any()) { template.Save(); changes.Add("Infobox Farbstoff: '" + string.Join("', '", removed) + "' entfernt"); } } } if (changes.Count == 0) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("\tUnbekannt..."); Console.ResetColor(); } else { Console.ForegroundColor = ConsoleColor.White; var comment = "Überflüssige Parameter entfernt: " + string.Join("; ", changes); Console.WriteLine("\t" + comment); Console.ResetColor(); edit.EditComment = comment; edit.Save = true; } }
protected override void ProcessPage(Page p, EditStatus edit) { var changes = new List<string>(); if (p.GetNamespace() != 0) return; p.Load(); var templates = p.GetAllTemplates(); foreach (var template in templates) { var changeCountBeforeTemplate = changes.Count; #region [G] Infobox Gegenstand if (template.Title.Equals("Infobox Gegenstand", StringComparison.OrdinalIgnoreCase)) { //stapelbar = ja/###/... if (template.Parameters.HasNotValueIgnoreCase("stapelbar", "nein")) { changes.Add(string.Format("'stapelbar = {0}' entfernt", template.Parameters["stapelbar"])); template.Parameters.Remove("stapelbar"); } //wert -> händlerwert if (template.Parameters.ContainsKey("wert")) { //wenn händlerwert schon existiert löschen if (template.Parameters.ContainsKey("händlerwert")) { template.Parameters.Remove("wert"); changes.Add("'wert' entfernt"); } else { template.ChangeParametername("wert", "händlerwert"); changes.Add("'wert' zu 'händlerwert' geändert"); } } //seelengebunden = ja -> gebunden = seele if (template.Parameters.HasValueIgnoreCase("seelengebunden", "ja")) { //wenn gebunden schon existiert löschen if (template.Parameters.ContainsKey("gebunden")) { changes.Add(string.Format("'seelengebunden = {0}' entfernt", template.Parameters["seelengebunden"])); template.Parameters.Remove("seelengebunden"); } else { changes.Add(string.Format("'seelengebunden = {0}' zu 'gebunden = seele' geändert", template.Parameters["seelengebunden"])); template.ChangeParametername("seelengebunden", "gebunden"); template.Parameters["gebunden"] = "seele"; } } //seltenheit = ramsch -> seltenheit = scrhott if (template.Parameters.HasValueIgnoreCase("seltenheit", "ramsch")) { changes.Add(string.Format("'seltenheit = {0}' zu 'seltenheit = Schrott' geändert", template.Parameters["seltenheit"])); template.Parameters["seltenheit"] = "Schrott"; } //benutzungen = 1 if (template.Parameters.HasValue("benutzungen","1")) { changes.Add("'benutzungen = 1' entfernt"); template.Parameters.Remove("benutzungen"); } } #endregion #region [J] Angebot if (template.Title.Equals("angebot", StringComparison.OrdinalIgnoreCase)) { //seltenheit = ja entfernen if (template.Parameters.HasValueIgnoreCase("seltenheit", "ja")) { changes.Add("'seltenheit = ja' entfernt"); template.Parameters.Remove("seltenheit"); } //stufe = ja entfernen if (template.Parameters.HasValueIgnoreCase("stufe", "ja")) { changes.Add("'stufe = ja' entfernt"); template.Parameters.Remove("stufe"); } //typ = ja entfernen if (template.Parameters.HasValueIgnoreCase("typ", "ja")) { changes.Add("'typ = ja' entfernt"); template.Parameters.Remove("typ"); } //werte = ja entfernen if (template.Parameters.HasValueIgnoreCase("werte", "ja")) { changes.Add("'werte = ja' entfernt"); template.Parameters.Remove("werte"); } } #endregion #region [R] Rezept if (template.Title.Equals("Rezept", StringComparison.OrdinalIgnoreCase)) { var changedSomething = false; for (var i = 1; i <= 4; i++) { var key = "attribut" + i + "-wert"; if (template.Parameters.ContainsKey(key) && template.Parameters[key].StartsWith("+")) { template.Parameters[key] = template.Parameters[key].TrimStart('+'); changedSomething = true; } } if (changedSomething) changes.Add("Überflüssiges + aus dem [[Vorlage:Rezept|Rezept]] " + (template.Parameters.ContainsKey("name") ? template.Parameters["name"] : p.title) + " entfernt"); //anzahl = 1 if (template.Parameters.ContainsKey("anzahl") && template.Parameters["anzahl"] == "1") { changes.Add("'anzahl = 1' entfernt"); template.Parameters.Remove("anzahl"); } //gebunden = benutzung bei seltenheit meisterwerk/selten/exotisch/legendär entfernen if (template.Parameters.HasValueIgnoreCase("gebunden", "benutzung") && template.Parameters.HasValueIgnoreCase("seltenheit", "meisterwerk", "selten", "exotisch", "legendär")) { changes.Add(string.Format("'gebunden = {0}' entfernt, da 'seltenheit = {1}'", template.Parameters["gebunden"], template.Parameters["seltenheit"])); template.Parameters.Remove("gebunden"); } } #endregion if (changeCountBeforeTemplate != changes.Count) template.Save(); } if (changes.Count == 0) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("\tUnbekannt..."); Console.ResetColor(); } else { Console.ForegroundColor = ConsoleColor.White; var comment = "Parameterfehler behoben: " + string.Join("; ", changes); Console.WriteLine("\t" + comment); Console.ResetColor(); edit.EditComment = comment; edit.Save = true; } }
protected override void ProcessPage(Page p, EditStatus edit) { if (p.GetNamespace() != 0) return; p.Load(); //ignore pages which already have {{standort}} if (p.GetAllTemplates().Any(t => t.Title == "Standort")) return; var section = p.GetSectionByName("Standort", false); if (section == null) return; var standorte = new List<string>(); Match lastMatch = null; var prependText = ""; var remainingText = ""; var foundNonSchauplatz = false; var compactTemplate = true; var lines = section.Content.GetLines().Skip(1).ToList(); var addAdditionalStar = !lines.First().Contains('*') && lines.First().Length > 2 && PageIsSchauplatz(lines.First().Trim('[', ']', '\'', ';')); foreach (var line in lines) { //just add the line to the remaining text as soon as we found a non schauplatz if (foundNonSchauplatz) remainingText += "\r\n" + line; if (string.IsNullOrWhiteSpace(line)) continue; var match = StandortItemRegex.Match((addAdditionalStar ? "*" : "") + line); //if the line is no listitem and no schauplatz, we are done with the standort list //all remaining text will be added to remainingText if (!match.Success || !PageIsSchauplatz(match.Groups[2].Value)) { if (standorte.Count == 0 && lastMatch == null) { prependText += line + "\r\n"; } else { foundNonSchauplatz = true; remainingText = line; } continue; } var added = false; //has a descripting text if (match.Groups[3].Length > 0) { standorte.Add(match.Groups[2].Value + " = " + match.Groups[4].Value); compactTemplate = false; added = true; } if (lastMatch != null && match.Groups[1].Length <= lastMatch.Groups[1].Length) { //add last standorte.Add(lastMatch.Groups[2].Value + (lastMatch.Groups[4].Length > 0 ? " = " + lastMatch.Groups[4].Value : "")); lastMatch = null; } lastMatch = !added ? match : null; } if (lastMatch != null) { standorte.Add(lastMatch.Groups[2].Value + (lastMatch.Groups[4].Length > 0 ? " = " + lastMatch.Groups[4].Value : "")); } if (standorte.Count == 0) return; if (!foundNonSchauplatz) remainingText += "\r\n"; if (standorte.Count > 3) compactTemplate = false; //build the new section content section.Content = section.Content.GetLines().First() + "\r\n" + prependText + (compactTemplate ? "{{Standort|" + string.Join("|", standorte) + "}}" : "{{Standort\r\n | " + string.Join("\r\n | ", standorte) + "\r\n}}") + "\r\n" + remainingText; section.Save(); edit.Save = true; edit.EditComment = "/* "+section.Title+" */ [[Benutzer: Darthmaim Bot/Projekte#Standort|Standortvorlage eingebaut]] ("+standorte.Count+")"; }
protected override void ProcessPage(Page p, EditStatus edit) { if (p.GetNamespace() != 0) return; p.Load(); var before = p.text; var templates = p.GetAllTemplates().Where(t => t.Title.ToLower() == "fehlende informationen"); foreach (var template in templates) { var fehlendeInformation = template.Parameters["0"].Trim(); if(fehlendeInformation.ToLower() == "interwiki" || fehlendeInformation.ToLower() == "fr" || fehlendeInformation.ToLower() == "en" || fehlendeInformation.ToLower() == "es") { RemoveTemplate(p, template); edit.Save = true; edit.EditComment = "[[Vorlage:Fehlende Informationen]] entfernt (nur interwiki)"; } else if (fehlendeInformation == "") { RemoveTemplate(p, template); edit.Save = true; edit.EditComment = "[[Vorlage:Fehlende Informationen]] entfernt (leer)"; } else { var modifiedFehlendeInformationen = fehlendeInformation; while(true) { var match = _regex.Match(modifiedFehlendeInformationen); if (!match.Success) break; modifiedFehlendeInformationen = _regex.Replace(modifiedFehlendeInformationen, "", 1); } if (modifiedFehlendeInformationen == fehlendeInformation) continue; var removed = fehlendeInformation.FindRemovedPart(modifiedFehlendeInformationen); modifiedFehlendeInformationen = modifiedFehlendeInformationen.RemoveTrailingPunctuation(); if (string.IsNullOrWhiteSpace(modifiedFehlendeInformationen)) { RemoveTemplate(p, template); edit.Save = true; edit.EditComment = string.Format("[[Vorlage:Fehlende Informationen]] entfernt (Inhalt war: „{0}“)", fehlendeInformation); } else { p.text = p.text.Replace(fehlendeInformation, modifiedFehlendeInformationen); edit.Save = true; edit.EditComment = string.Format("Aus fehlenden Informationen entfernt: „{0}“", removed); } } } }