User:Yobot/CatsCheck
Appearance
public string ProcessArticle(string ArticleText, string ArticleTitle, int wikiNamespace, out string Summary, out bool Skip)
{
Skip = false;
Summary = "test";
List<Article> cats = CatList(ArticleTitle);
ArticleText = ("\r\n" + "Current cats" + "\r\n");
foreach(Article x in cats)
ArticleText += (x.Name + "\r\n");
List<Article> catsAfter = CatListAfter(ArticleTitle, @"{{dn}}");
ArticleText += "\r\n" + "After cats" + "\r\n";
foreach(Article x in catsAfter)
ArticleText += (x.Name + "\r\n");
return ArticleText;
}
// report categories currently on given page
public static List<Article> CatList(string articleTitle)
{
WikiFunctions.Lists.Providers.CategoriesOnPageListProvider x = new WikiFunctions.Lists.Providers.CategoriesOnPageListProvider();
List<Article> cats = x.MakeList(new[] {articleTitle});
return cats;
}
// report categories that would be on given page with given input article text
public static List<Article> CatListAfter(string ArticleTitle, string ArticleText)
{
WikiFunctions.Controls.Lists.ListMaker lm = new WikiFunctions.Controls.Lists.ListMaker();
// https://wiki.riteme.site/w/api.php?format=xml&action=parse&prop=categories&title=a&text=a{{dn}}
string url = @"https://wiki.riteme.site/w/api.php?format=xml&action=parse&prop=categories&title=" +
System.Web.HttpUtility.UrlEncode(ArticleTitle) + "&text=" + System.Web.HttpUtility.UrlEncode(ArticleText);
string res = Tools.GetHTML(url);
Regex r = new Regex(@">([^<>]+)</cl>");
List<Article> cats = new List<Article>();
foreach(Match m in r.Matches(res))
cats.Add(new Article(lm.NormalizeTitle("Category:" + m.Groups[1].Value.Replace("_", " "))));
return cats;
}