ویکی‌پدیا:درخواست‌های ربات/اصلاح میان‌ویکی در ویکی‌داده

#!/usr/bin/python
# -*- coding: utf-8  -*-
# Reza (User:reza1615)
# Distributed under the terms of the CC-BY-SA 3.0 .
# -*- coding: utf-8 -*-
import wikipedia,pagegenerators,sys
import category,query,login,config
resultdata=u'\n'
wikipedia.config.put_throttle = 0
wikipedia.put_throttle.setDelay()
faSite=wikipedia.getSite('fa')
enSite=wikipedia.getSite('en')
def englishdictionry( enlink ):
    try:
        enlink=unicode(str(enlink),'UTF-8').replace(u'[[',u'').replace(u']]',u'').replace(u'en:',u'').replace(u'fa:',u'')
    except:
        enlink=enlink.replace(u'[[',u'').replace(u']]',u'').replace(u'en:',u'').replace(u'fa:',u'')
    if enlink.find('#')!=-1:
        return False
    if enlink==u'':
        return False    
    enlink=enlink.replace(u' ',u'_')
    site = wikipedia.getSite('en')
    sitesecond= wikipedia.getSite('fa')
    params = {
        'action': 'query',
        'prop': 'langlinks',
        'titles': enlink,
        'redirects': 1,
        'lllimit':500,
    }
    try:
        categoryname = query.GetData(params,site)  
        for item in categoryname[u'query'][u'pages']:
            case=categoryname[u'query'][u'pages'][item][u'langlinks']
        for item in case:
            if item[u'lang']=='fa':
                intersec=item[u'*']
                break
        result=intersec
        if result.find('#')!=-1:
            return False
        return True
    except: 
        return False
def login_wiki(mode):    
    if mode==1:
        dataSite=wikipedia.getSite('wikidata','wikidata')
    if mode==2:
        dataSite=wikipedia.getSite('fa','wikipedia')
    passwords='pass'
    usernames='YourBot'
    botlog=login.LoginManager(password=passwords,username=usernames,site=dataSite)
    botlog.login()
lines={u"en:Category:2003 natural disasters":u"رده:بلایای_طبیعی_۲۰۰۳_(میلادی) ",
u"en:Category:2006 natural disasters":u"رده:بلایای_طبیعی_۲۰۰۶_(میلادی) ",
u"en:Category:2009 natural disasters":u"رده:بلایای_طبیعی_۲۰۰۹_(میلادی) ",
u"en:Category:2012 natural disasters":u"رده:بلایای_طبیعی_۲۰۱۲_(میلادی) ",
u"en:Category:1900 natural disasters":u"رده:بلایای_طبیعی_۱۹۰۰_(میلادی) "}
#login_wiki(1)
for line in lines:
                    if englishdictionry( line ):
                        continue
                    firstsec_page=wikipedia.Page(enSite,line)
                    wdata=wikipedia.DataPage(firstsec_page)
                    wikipedia.output(lines[line])
                    wdata_sec=wikipedia.DataPage(wikipedia.Page(faSite,lines[line]))   
                    if wdata.exists():
                        if wdata_sec.exists():
                            wikipedia.output(u"Something is wrong, you need to merge "+wdata_sec.title()+u" with "+wdata.title())
                        else:
                            #try:
                                items=wdata.get()
                                wdata.setitem(summary=u"update item",items={'type': u'sitelink', 'site': 'fa', 'title': lines[line].replace(u'_',u' ')}) 
                                wdata.setitem(summary=u"update label",items={'type': u'item', 'label': 'fa', 'value': lines[line].replace(u'_',u' ')})
                                wikipedia.output(u"\03{lightblue}Wikidata is updated!\03{default}")
                            #except:
                                #wikipedia.output(u"\03{lightred}Category in wikidata had error or it dosen't have any item!\03{default}")
                                #pass