#!/usr/bin/python
# -*- coding: utf-8 -*-
# Reza(User:reza1615), 2013
#
# Distributed under the terms of MIT License (MIT)
version=u'2.0'
import re,codecs
import pywikibot
faSite = pywikibot.Site('fa')
page_lists=[u"ویکیپدیا:فهرست_یادمانهای_ملی_ایران/فارس"]
def check_page(page_title):
fa_text=u''
try:
mypage=pywikibot.Page(faSite,page_title)
fa_text = mypage.get()
page_title=mypage.title()
except pywikibot.IsRedirectPage:
mypage=mypage.getRedirectTarget()
try:
fa_text=mypage.get()
page_title=mypage.title()
except:
pywikibot.output(u"The page %s doesn't exist, skip!" % mypage.title())
except:
pywikibot.output(u'\03{lightred}Could not open page\03{default}'+page_title)
return page_title,fa_text
def get_image(fa_text):
fa_text=fa_text.replace(u'[[تصویر:',u'[[پرونده:').replace(u'[[file:',u'[[پرونده:').replace(u'[[File:',u'[[پرونده:')
myimage2=u''
myimage=re.findall(ur'\| *تصویر *\=(.*?)[\|\n]',fa_text)
if myimage:
myimage2=myimage[0].split(u'|')[0].strip()
if not myimage2 and (u'[[پرونده:' in fa_text):
myimage2=fa_text.split(u'[[پرونده:')[1].split(u'|')[0].split(u']]')[0].strip()
myimage2=myimage2.replace(u'[[پرونده:',u'').split(u'|')[0].strip()
return myimage2
def get_coord(fa_text):
my_coord1,my_coord2,my_coord=u'',u'',u''
fa_text2=fa_text.replace(u' =',u'=').replace(u' =',u'=').replace(u' =',u'=').replace(u' =',u'=').replace(u' =',u'=').replace(u' =',u'=').replace(u'{{Coord',u'{{coord')
fa_text2=fa_text2.replace(u'عرض جغرافیایی=',u'عرضجغرافیایی=').replace(u'طول جغرافیایی=',u'طولجغرافیایی=')
if u'عرضجغرافیایی=' in fa_text2:
my_coord1=fa_text2.split(u'عرضجغرافیایی=')[1].split(u'\n')[0].split(u'|')[0].split(u'}')[0].strip()
if u'طولجغرافیایی=' in fa_text2:
my_coord2=fa_text2.split(u'طولجغرافیایی=')[1].split(u'\n')[0].split(u'|')[0].split(u'}')[0].strip()
if not my_coord1 and u'{{coord' in fa_text2:
my_coord=u'{{coord'+fa_text2.split(u'{{coord')[1].split(u'}}')[0].strip()+u'}}'
return my_coord1,my_coord2,my_coord
def get_page(mypage):
mypage=pywikibot.Page(faSite,mypage)
mypage_text=mypage.get()
mypage_text=mypage_text.replace(u'\r',u'').replace(u'عکس= }}',u'عکس=}}').replace(u'عکس= }}',u'عکس=}}')
mypage_text=mypage_text.replace(u'\r',u'').replace(u'طول جغرافیایی= |',u'طول جغرافیایی= |').replace(u'طول جغرافیایی=|',u'طول جغرافیایی= |')
mypage_text=mypage_text.replace(u'\r',u'').replace(u'عرض جغرافیایی= |',u'عرض جغرافیایی= |').replace(u'عرض جغرافیایی=|',u'عرض جغرافیایی= |')
mypage_text_old=mypage_text
mylist=re.findall(ur'(\{\{ردیف_یادمان_ایران\|شناسه\=(.*?)\|توضیح\=(.*?)\|)',mypage_text)
for item in mylist:
pywikibot.output(u"+++++++++++++++++")
total_text=item[0]
id=item[1].strip()
page_name=item[2].strip()
page_title,fa_text=check_page(page_name)
checkbot=False
if total_text in mypage_text and fa_text:
line_text=total_text+mypage_text.split(total_text)[1].split(u'}}')[0].strip()+u'}}'
line_text_old=line_text
my_image=get_image(fa_text)
if my_image and u'عکس=}}' in line_text:
line_text=line_text.replace(u'عکس=}}',u'عکس='+my_image+u'}}')
checkbot=True
my_coord1,my_coord2,my_coord=get_coord(fa_text)
pywikibot.output(my_coord)
pywikibot.output(my_coord1)
pywikibot.output(my_coord2)
if my_coord1 and my_coord2 and u'عرض جغرافیایی= |' in line_text:
line_text=line_text.replace(u'عرض جغرافیایی= |',u'عرض جغرافیایی='+my_coord1+u'|')
line_text=line_text.replace(u'طول جغرافیایی= |',u'طول جغرافیایی='+my_coord2+u'|')
checkbot=True
if my_coord and u'عرض جغرافیایی= |' in line_text and not u'مختصات=' in line_text:
my_coord=my_coord.replace(u'display=title',u'display=inline').replace(u'display=inline,title',u'display=inline').replace(u'display=title,inline',u'display=inline')
line_text=line_text.replace(u'طول جغرافیایی= |',u'مختصات='+my_coord.replace(u'display=title',u'display=inline')+u'|طول جغرافیایی= |')
checkbot=True
line_text=line_text.replace(page_name,page_title)
if line_text_old!=line_text:
pywikibot.output(u"line_text=" +line_text)
if checkbot:
mypage_text=mypage_text.replace(line_text_old,line_text[:-2]+u'|ربات=بله}}')
else:
mypage_text=mypage_text.replace(line_text_old,line_text)
mypage_text=re.sub(u'\<ref\>.*?\<\/ref\>',u'',mypage_text)
try:
if mypage_text_old!=mypage_text:
mypage.put(mypage_text,u'ربات: جایگزین تغییرمسیر+ افزودن پرونده از مقاله + افزودن مختصات از مقاله')
except:
wikipedia.output(u"error on save")
with codecs.open('zz_yadkard.txt' ,mode = 'a',encoding = 'utf8' ) as f:
f.write(u'\n--------------------'+mypage.title()+u'----------\n'+mypage_text)
for mypage in page_lists:
get_page(mypage)