Revision: 7384 Author: xqt Date: 2009-10-07 16:01:02 +0000 (Wed, 07 Oct 2009)
Log Message: ----------- merged with good.py (#1986308)
Modified Paths: -------------- trunk/pywikipedia/featured.py
Modified: trunk/pywikipedia/featured.py =================================================================== --- trunk/pywikipedia/featured.py 2009-10-07 15:52:40 UTC (rev 7383) +++ trunk/pywikipedia/featured.py 2009-10-07 16:01:02 UTC (rev 7384) @@ -3,25 +3,29 @@ """ This script understands various command-line arguments:
-* -interactive : ask before changing page +-interactive: ask before changing page
-* -nocache : doesn't include /cache/featured file to remember if the - article already was verified. +-nocache doesn't include /cache/featured file to remember if the + article already was verified.
-* -fromlang:xx[,yy[,...]]] : xx,.. are the languages to be verified. Another - possible with range the languages -fromlang:ar--fi +-fromlang:xx,yy xx,yy,zz,.. are the languages to be verified. +-fromlang:ar--fi Another possible with range the languages
-* -fromall : to verify all languages. +-fromall to verify all languages.
-* -after:zzzz : process pages after and including page zzzz +-after:zzzz process pages after and including page zzzz
-* -top : using -top if you want moving {{Link FA|lang}} to top of interwiki. - DEFAULT: placing {{Link FA|lang}} right next to corresponding interwiki. -* -count : Only counts how many featured articles of an languages (using "-fromlang" argument) - or all wikipedias (using "-fromall" argument). (merge /archive/featuredcount.py) like: - featured.py -fromlang:en,he -count - (give counts how many featured articles of en and he wp) +-top using -top if you want moving {{Link FA|lang}} to top of + interwiki. DEFAULT: placing {{Link FA|lang}} right next to + corresponding interwiki. +-count Only counts how many featured articles of an languages + (using "-fromlang" argument) or all wikipedias + (using "-fromall" argument). (merge /archive/featuredcount.py) + like: featured.py -fromlang:en,he -count + (give counts how many featured articles of en and he wp)
+-good use this script for good articles instead od featured articles + usage: featured.py [-interactive] [-nocache] [-top] [-after:zzzz] [-fromlang:xx,yy,zz|-fromall]
""" @@ -91,6 +95,19 @@ 'zh': u'機器人: 連結特色條目 [[%s:%s]]', }
+msg_good = { + 'als': u'Bötli: [[%s:%s]] isch en glungener Artikel', + 'ar': u'بوت: [[%s:%s]] هي مقالة جيدة', + 'cy': u'Robot: Mae [[%s:%s]] yn erthygl dda', + 'de': u'Bot: [[%s:%s]] ist ein lesenswerter Artikel', + 'en': u'Bot: [[%s:%s]] is a good article', + 'eo': u'roboto: [[%s:%s]] estas artikolo leginda', + 'es': u'Bot: Enlace a artículo bueno para: [[%s:%s]]', + 'fr': u'Bot: Lien BA pour [[%s:%s]]', + 'no': u'bot: [[%s:%s]] er en anbefalt artikkel', + 'nn': u'bot: [[%s:%s]] er ein god artikkel', + 'sv': u'Bot: [[%s:%s]] är en läsvärd artikel', +} # ALL wikis use 'Link FA', and sometimes other localized templates. # We use _default AND the localized ones template = { @@ -122,6 +139,21 @@ 'yi': [u'רא'], }
+template_good = { + '_default': ['Link GA'], + 'ar': [u'وصلة مقالة جيدة'], + 'da': ['Link GA', 'Link AA'], + 'eo': ['LigoLeginda'], + 'es': ['Bueno'], + 'fr': ['Lien BA'], + 'is': ['Tengill GG'], + 'nn': ['Link AA'], + 'no': ['Link AA'], + #'tr': ['Link GA', 'Link KM'], + 'vi': [u'Liên kết bài chất lượng tốt'], + 'wo': ['Lien BA'], +} + featured_name = { 'af': (BACK, u"Voorbladster"), 'als': (CAT, u"Wikipedia:Bsunders glungener Artikel"), @@ -223,31 +255,67 @@ 'zh-yue': (BACK, u"正文"), }
+good_name = { + 'ar': (CAT, u"مقالات جيدة"), + 'cs': (CAT, u"Wikipedie:Dobré články"), + 'da': (CAT, u"Gode artikler"), + 'de': (CAT, u"Wikipedia:Lesenswert"), + 'dsb': (CAT, u"Naraźenje za pógódnośenje"), + #'en': (CAT, u"Wikipedia good articles"), + 'eo': (CAT, u"Legindaj artikoloj"), + 'es': (CAT, u"Wikipedia:Artículos buenos"), + 'et': (CAT, u"Head artiklid"), + 'fi': (CAT, u"Hyvät artikkelit"), + 'fr': (CAT, u"Bon article"), + 'hsb': (CAT, u"Namjet za pohódnoćenje"), + 'id': (BACK, u"Artikel bagus"), + #'id': (CAT, u"Artikel bagus"), + 'is': (CAT, u"Wikipedia:Gæðagreinar"), + #'ja': (CAT, u"おすすめ記事"), + 'lt': (CAT, u"Vertingi straipsniai"), + 'no': (CAT, u"Anbefalte artikler"), + 'pl': (CAT, u"Dobre artykuły"), + 'ru': (CAT, u"Википедия:Хорошие статьи"), + 'simple': (CAT, u"Good articles"), + 'sr': (BACK, u"Иконица добар"), + 'sv': (CAT, u"Wikipedia:Läsvärda artiklar"), + 'tr': (BACK, u"Kaliteli madde"), + 'uk': (CAT, u"Вікіпедія:Добрі статті"), + #'yi': (CAT, u"וויקיפעדיע גוטע ארטיקלען"), + 'zh': (CAT, u"優良條目"), +} + # globals interactive=0 nocache=0 afterpage=u"!" +cache={}
-try: - cache=pickle.load(file("cache/featured","rb")) -except: - cache={} - -def featuredArticles(site): +def featuredArticles(site, good): + arts=[] + if good: + feature = u'good' + else: + feature = u'feature' try: - method=featured_name[site.lang][0] - except KeyError, ex: - print 'Error: language %s doesn't have feature category source.' % ex - sys.exit() - name=featured_name[site.lang][1] + if good: + method=good_name[site.lang][0] + else: + method=featured_name[site.lang][0] + except KeyError: + wikipedia.output(u'Error: language %s doesn't has %s category source.' % (site.lang, feature)) + return arts + if good: + name=good_name[site.lang][1] + else: + name=featured_name[site.lang][1] raw=method(site, name) - arts=[] for p in raw: if p.namespace()==0: # Article arts.append(p) elif p.namespace()==1: # Article talk (like in English) arts.append(wikipedia.Page(p.site(), p.titleWithoutNamespace())) - wikipedia.output('\03{lightred}** wikipedia:%s has %i featured articles\03{default}' % (site.lang, len(arts))) + wikipedia.output('\03{lightred}** wikipedia:%s has %i %s articles\03{default}' % (site.lang, len(arts), feature)) return arts
def findTranslated(page, oursite=None): @@ -306,7 +374,7 @@ wikipedia.output(u"%s -> back interwiki ref target is %s" % (page.title(), backpage.title())) return None
-def featuredWithInterwiki(fromsite, tosite, template_on_top): +def featuredWithInterwiki(fromsite, tosite, template_on_top, good): if not fromsite.lang in cache: cache[fromsite.lang]={} if not tosite.lang in cache[fromsite.lang]: @@ -314,18 +382,24 @@ cc=cache[fromsite.lang][tosite.lang] if nocache: cc={} + if good: + try: + templatelist = template_good[tosite.lang] + templatelist += template_good['_default'] + except KeyError: + templatelist = template_good['_default'] + else: + try: + templatelist = template[tosite.lang] + templatelist += template['_default'] + except KeyError: + templatelist = template['_default']
- try: - templatelist = template[tosite.lang] - templatelist += template['_default'] - except KeyError: - templatelist = template['_default'] - findtemplate = '(' + '|'.join(templatelist) + ')' re_Link_FA=re.compile(ur"{{%s|%s}}" % (findtemplate.replace(u' ', u'[ _]'), fromsite.lang), re.IGNORECASE) re_this_iw=re.compile(ur"[[%s:[^]]+]]" % fromsite.lang)
- arts=featuredArticles(fromsite) + arts=featuredArticles(fromsite, good)
pairs=[] for a in arts: @@ -358,7 +432,10 @@ if not m: wikipedia.output(u"no interwiki record, very strange") continue - comment = wikipedia.setAction(wikipedia.translate(wikipedia.getSite(), msg) % (fromsite.lang, a.title())) + if good: + comment = wikipedia.setAction(wikipedia.translate(wikipedia.getSite(), msg_good) % (fromsite.lang, a.title())) + else: + comment = wikipedia.setAction(wikipedia.translate(wikipedia.getSite(), msg) % (fromsite.lang, a.title()))
### Moving {{Link FA|xx}} to top of interwikis ### if template_on_top == True: @@ -383,6 +460,9 @@ template_on_top = False featuredcount = False fromlang=[] + process_good = False + all = False + part = False for arg in wikipedia.handleArgs(): if arg == '-interactive': interactive=1 @@ -390,24 +470,48 @@ nocache=1 elif arg.startswith('-fromlang:'): fromlang=arg[10:].split(",") - try: - # BUG: range with zh-min-nan (3 "-") - if len(fromlang)==1 and fromlang[0].index("-")>=0: - ll1,ll2=fromlang[0].split("--",1) - if not ll1: ll1="" - if not ll2: ll2="zzzzzzz" - fromlang=[ll for ll in featured_name.keys() if ll>=ll1 and ll<=ll2] - except: - pass + part = True elif arg == '-fromall': - fromlang=featured_name.keys() + all = True elif arg.startswith('-after:'): afterpage=arg[7:] elif arg == '-top': template_on_top = True elif arg == '-count': featuredcount = True + elif arg == '-good': + process_good = True
+ if part: + try: + # BUG: range with zh-min-nan (3 "-") + if len(fromlang)==1 and fromlang[0].index("-")>=0: + ll1,ll2=fromlang[0].split("--",1) + if not ll1: ll1="" + if not ll2: ll2="zzzzzzz" + if process_good: + fromlang=[ll for ll in good_name.keys() if ll>=ll1 and ll<=ll2] + else: + fromlang=[ll for ll in featured_name.keys() if ll>=ll1 and ll<=ll2] + except: + pass + + if all: + if process_good: + fromlang=good_name.keys() + else: + fromlang=featured_name.keys() + + if process_good: + filename="cache/good" + else: + filename="cache/featured" + try: + cache=pickle.load(file(filename,"rb")) + except: + cache={} + + if not fromlang: wikipedia.showHelp('featured') sys.exit(1) @@ -417,12 +521,14 @@ for ll in fromlang: fromsite = wikipedia.getSite(ll) if featuredcount: - featuredArticles(fromsite) + featuredArticles(fromsite, process_good) elif fromsite != wikipedia.getSite(): featuredWithInterwiki(fromsite, wikipedia.getSite(), - template_on_top) + template_on_top, process_good) + except KeyboardInterrupt: + wikipedia.output('\nQuitting program...') finally: wikipedia.stopme() if not nocache: - pickle.dump(cache,file("cache/featured","wb")) + pickle.dump(cache,file(filename,"wb"))
pywikipedia-svn@lists.wikimedia.org