사용자:티첼/CPList.py
< 사용자:티첼
# -*- coding: utf-8 -*-
# 출처: [[사용자:Klutzy:bot/script]]
import random
import wikipedia, catlib
def list_shuffle(list, N):
if len(list)<=N: return list
return random.sample(list, N)
def cat_list_rec(top_cat, ignore_cats=None):
if ignore_cats==None: ignore_cats = []
articlelist = [] # assume that top_cat has no article
cat = catlib.Category(wikipedia.getSite(), top_cat)
for subcat in cat.subcategories():
if not subcat.title() in ignore_cats:
for page in subcat.articles():
if not ":" in page.title():
articlelist.append(page.title())
return articlelist
def cat_list(top_cat):
cat = catlib.Category(wikipedia.getSite(), top_cat)
return [i.title() for i in cat.articles() if not ":" in i.title()]
def main():
count = 10
stub_ignore_cats = [
u'분류:숫자에 관한 토막글',
#u'분류:대학교에 관한 토막글',
#u'분류:학교에 관한 토막글',
u'분류:토막글 분류가 잘못된 문서',
]
other_cats = [
(u'정리 필요', u'분류:정리가 필요한 문서'),
(u'POV', u'분류:중립적 시각 분쟁'),
(u'합병', u'분류:합쳐야 할 문서'),
]
stub_list = cat_list_rec(u'분류:토막글 분류', stub_ignore_cats)
data = []
for title, catname in other_cats:
data.append((title, catname, cat_list(catname)))
result = u""
result += u"<!-- 이 문서의 목록은 봇을 통해 자동으로 변경됩니다. -->\n"
result += u"""* '''[[위키백과:토막글|토막글]]''': """
result += u", ".join([u"[[%s]]"%i for i in list_shuffle(stub_list, count)]) + u"\n"
for title, catname, lis in data:
result += u"""* '''[[:%s|%s]]''': """%(catname, title)
result += u", ".join([u"[[%s]]"%i for i in list_shuffle(lis, count)]) + u"\n"
page = wikipedia.Page(wikipedia.getSite(), u'위키백과:사용자 모임/자동목록')
page.put(result, u"robot: 자동목록 갱신")
print result
print
print "# of stubs:", len(stub_list)
for i, m, j in data:
print "# of %s"%i, len(j)
if __name__ == "__main__":
try:
main()
finally:
wikipedia.stopme()