using System;
using DotNetWikiBot;
class DvtBot : Bot
{
static Site site;
/// <summary>
/// 분류를 옮깁니다.
/// </summary>
/// <param name="oldcat">옮길 분류("분류:" 포함)</param>
/// <param name="newcat">새 분류("분류:" 포함)</param>
/// <param name="request">요청 (예:"2010-01-24 관인생략의 요청") </param>
public static void MoveCat(string oldcat, string newcat, string request)
{
Bot.EnableLogging(String.Format("./Logs/{0}.log", request));
string comment =
String.Format(
"[[위키백과:봇/편집_요청#{0}|{1} 요청]]에 따라 [[{2}]]를 [[{3}]]로 옮김",
request, request.Split(' ')[1], oldcat, newcat)
;
Console.Write("\"{0}\"를 \"{1}\"로 이동하시겠습니까? (y/N)", oldcat, newcat);
if (Console.ReadKey().Key != ConsoleKey.Y)
{
Console.WriteLine();
Console.WriteLine();
Console.Write("이동 작업이 취소되었습니다.");
Console.ReadLine();
return;
}
Console.WriteLine();
Console.WriteLine();
Page cat_old = new Page(site, oldcat);
Page cat_new = new Page(site, newcat);
PageList pl = new PageList(site);
pl.FillFromCategory(oldcat);
pl.FillSubsFromCategory(oldcat);
Console.Write("{0} 개 문서를 수정해야 합니다. 그래도 이동하시겠습니까? (y/N)", pl.Count());
if (Console.ReadKey().Key != ConsoleKey.Y)
{
Console.WriteLine();
Console.WriteLine();
Console.Write("이동 작업이 취소되었습니다.");
Console.ReadLine();
return;
}
Console.WriteLine();
cat_old.LoadEx();
cat_new.text = cat_old.text;
cat_new.Save(comment, true);
cat_old.text = "{{삭제 신청|" + comment + "}}";
cat_old.Save(comment, true);
pl.LoadEx();
pl.RemoveFromCategory(oldcat);
pl.AddToCategory(newcat);
pl.SaveSmoothly(5, comment, true);
Console.WriteLine("작업이 완료됨");
}
/// <summary>
/// {{분류 필요}} 가 붙은 문서들 중 분류가 있는 문서에서 틀을 제거합니다.
/// </summary>
public static void CheckNeedCat()
{
string comment = "분류가 존재하므로 {{[[틀:분류 필요|분류 필요]]}} 제거";
PageList pl = new PageList(site);
PageList pl_nc = new PageList(site);
pl.FillFromLinksToPage("틀:분류 필요");
pl.LoadEx();
foreach (Page p in pl)
{
if (p.text.IndexOf("{{분류 필요}}") != -1 || p.text.IndexOf("{{분류 없음}}") != -1)
pl_nc.Add(p);
}
pl_nc.LoadEx();
foreach (Page p in pl_nc)
{
string[] cats = p.GetCategories();
if (cats.Length != 0)
{
p.RemoveTemplate("분류 필요");
p.RemoveTemplate("분류 없음");
p.Save(comment, true);
}
}
Console.WriteLine("작업이 완료됨");
}
public static void Main()
{
site = new Site("http://ko.wikipedia.org", "DvtBot", "---비밀번호---");
// MoveCat();
// CheckNeedCat();
}
}