public Prepend ( string title, string text, string summary ) : string | ||
title | string | |
text | string | |
summary | string | |
return | string |
internal void AddNavigationTemplate(Wiki wiki) { ParameterCollection parameters = new ParameterCollection(); parameters.Add("list", "embeddedin"); parameters.Add("eititle", "Template:" + _l10i.NavigationTemplate); parameters.Add("eilimit", "max"); parameters.Add("einamespace", "4"); parameters.Add("eifilterredir", "nonredirects"); XmlDocument doc = wiki.Enumerate(parameters, true); List<string> titles = new List<string>(); DateTime end = DateTime.Today; DateTime start = end.AddDays(-7); while (start <= end) { string pageDate = start.ToString("d MMMM yyyy", _l10i.Culture); string prefix = _l10i.MainPage + "/"; string pageName = prefix + pageDate; if (doc.SelectSingleNode("//ei[@title='" + pageName + "']") == null) { titles.Add(pageName); } start = start.AddDays(1); } parameters.Clear(); parameters.Add("prop", "info"); XmlDocument xml = wiki.Query(QueryBy.Titles, parameters, titles); foreach (XmlNode node in xml.SelectNodes("//page")) { if (node.Attributes["missing"] == null) { Console.Out.WriteLine("Updating " + node.Attributes["title"].Value + "..."); wiki.Prepend(node.Attributes["title"].Value, "{{" + _l10i.NavigationTemplate + "}}\n", _l10i.MainPageUpdateComment); } } }
internal void AddNavigationTemplate(Wiki wiki) { ParameterCollection parameters = new ParameterCollection(); parameters.Add("list", "embeddedin"); parameters.Add("eititle", "Template:ВПКОБ-Навигация"); parameters.Add("eilimit", "max"); parameters.Add("einamespace", "4"); parameters.Add("eifilterredir", "nonredirects"); XmlDocument doc = wiki.Enumerate(parameters, true); List<string> titles = new List<string>(); DateTime end = DateTime.Today; DateTime start = end.AddDays(-7); while (start <= end) { string pageDate = start.ToString("d MMMM yyyy", CultureInfo.CreateSpecificCulture("ru-RU")); string prefix = "Википедия:К объединению/"; string pageName = prefix + pageDate; if (doc.SelectSingleNode("//ei[@title='" + pageName + "']") == null) { titles.Add(pageName); } start = start.AddDays(1); } parameters.Clear(); parameters.Add("prop", "info"); XmlDocument xml = wiki.Query(QueryBy.Titles, parameters, titles); foreach (XmlNode node in xml.SelectNodes("//page")) { if (node.Attributes["missing"] == null) { Console.Out.WriteLine("Updating " + node.Attributes["title"].Value + "..."); wiki.Prepend(node.Attributes["title"].Value, "{{ВПКОБ-Навигация}}\n", "добавление навигационного шаблона"); } } }
public override void Update(Wiki wiki) { string text = GetData(wiki); string newText = ""; if (Categories.Count == 1) { newText = ProcessCategory(wiki, text); } else if (Categories.Count > 1) { newText = ProcessData(wiki, text); } if (!string.IsNullOrEmpty(newText) && newText != text) { Console.Out.WriteLine("Updating " + Page); wiki.Save(Page, newText, Module.UpdateComment, !MarkEdits ? MinorFlags.NotMinor : MinorFlags.None, MarkEdits); } string oldText = text; if (!string.IsNullOrEmpty(Header)) { if (oldText.StartsWith(Header)) { oldText = oldText.Substring(Header.Length); } if (newText.StartsWith(Header)) { newText = newText.Substring(Header.Length); } } if (!string.IsNullOrEmpty(Footer)) { if (oldText.EndsWith(Footer)) { oldText = oldText.Substring(0, oldText.Length - Footer.Length); } if (oldText.EndsWith(Footer)) { newText = newText.Substring(0, oldText.Length - Footer.Length); } } string[] items = oldText.Split(new string[] { Delimeter }, StringSplitOptions.RemoveEmptyEntries); var newItems = new HashSet<string>(newText.Split(new string[] { Delimeter }, StringSplitOptions.RemoveEmptyEntries)); var archiveItems = new List<string>(); for (int i = 0; i < items.Length; ++i) { if (!newItems.Contains(items[i])) { archiveItems.Add(items[i]); } } if (archiveItems.Count != 0) { Console.Out.WriteLine("Updating " + ArchivePage); string archiveText = string.Join(Delimeter, archiveItems.ToArray()) + "\n"; wiki.Prepend(ArchivePage, archiveText, Module.UpdateComment); } }