Користувач:Дядько Ігор/Скрипти/Австрія Pywikibot

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Всі з pywikipedia можуть використовувати.

# -*- coding: utf-8 -*-
import re, codecs
import wikipedia as pywikibot
import config

def get_wappen(text):
  pattern = re.compile(u'(?<=\|Wappen)(.*)\n+')
  m = pattern.search(text)
  if m:
    fir = m.group(0) 
    pattern = re.compile(u'(?<=\=)(.*)')
    m = pattern.search(fir)
    return m.group(0)
  else:
    return u'НЕ ЗНАЙДЕНО'


def get_site(text):
  pattern = re.compile(u'(?<=\|Website)(.*)\n+')
  m = pattern.search(text)
  if m:
    fir = m.group(0) 
    fir
    pattern = re.compile(u'(?<=\=)(.*)')
    m = pattern.search(fir)
    return m.group(0)
  else:
    return u'НЕ ЗНАЙДЕНО'

def get_latitude(text):
  pattern = re.compile(u'(?<=\|lat_deg)(.*)\n+')
  m = pattern.search(text)
  if m:
    fir = m.group(0) 
    fir
    pattern = re.compile(u'(?<=\=)(.*)')
    m = pattern.search(fir)
    return m.group(0)
  else:
    return u'НЕ ЗНАЙДЕНО'

def get_longitude(text):
  pattern = re.compile(u'(?<=\|lon_deg)(.*)\n+')
  m = pattern.search(text)
  if m:
    fir = m.group(0) 
    fir
    pattern = re.compile(u'(?<=\=)(.*)')
    m = pattern.search(fir)
    return m.group(0)
  else:
    return u'НЕ ЗНАЙДЕНО'

def get_altitude(text):
  pattern = re.compile(u'(?<=\|Höhe)(.*)\n+')
  m = pattern.search(text)
  if m:
    fir = m.group(0) 
    fir
    pattern = re.compile(u'(?<=\=)(.*)')
    m = pattern.search(fir)
    return m.group(0)
  else:
    return u'НЕ ЗНАЙДЕНО'

def get_area(text):
  pattern = re.compile(u'(?<=\|Fläche)(.*)\n+')
  m = pattern.search(text)
  if m:
    fir = m.group(0) 
    fir
    pattern = re.compile(u'(?<=\=)(.*)')
    m = pattern.search(fir)
    return m.group(0)
  else:
    return u'НЕ ЗНАЙДЕНО'

def get_templ_item(templ, text):
  t = u'(?<=' + templ + u')(.*)\n+'
  pattern = re.compile(t)
  m = pattern.search(text)
  if m:
    fir = m.group(0) 
    pattern = re.compile(u'(?<=\=)(.*)')
    m = pattern.search(fir)
    return m.group(0).strip()
  else:
    return u'НЕ ЗНАЙДЕНО'

def get_galery(text):
  pattern = re.compile(u'(?s)(?<=gallery>)(.*)(?=</gallery)')
  m = pattern.search(text)
  if m is not None: 
     galery=u'Галерея'
     galery = u'== Галерея == \n<gallery>' + m.group(0) + u'</gallery>'
     galery = galery.replace(u'Datei', u'File')
     return galery 
  else:
    return u''

def get_literature(text):
  pattern = re.compile(u'(?s)(?<=Literatur \=\=)(.*?)(?=\=)')
  m = pattern.search(text)
  if m is not None: 
     galery = u'== Література == \n' + m.group(0)      
     return galery 
  else:
    return u''



def get_placement(text):
  pattern = re.compile(u'(?s)(?<={{Nachbargemeinden)(.*?)(?=}})')
  m = pattern.search(text)
  if m is not None: 
     body = m.group(0)
     body = body.replace(u'NORDWEST', u'пн_зх')
     body = body.replace(u'NORDOST', u'пн_сх')
     body = body.replace(u'NORD', u'пн')
     body = body.replace(u'SUEDWEST', u'пд_зх')
     body = body.replace(u'SUEDOST', u'пд_сх')
     body = body.replace(u'SUED', u'пд')
     body = body.replace(u'OST', u'сх')
     body = body.replace(u'WEST', u'зх')
     galery = u'== Навколишні громади == \n{{Розташування\n' + body +u'\n}}'     
     return galery 
  else:
    return u''


def get_german_page(ttl):
    name = u'Bischofshofen' 
    deTitle = u'de:$name'
    deTitle = deTitle.replace(u'$name', ttl)
    de_page = pywikibot.Page(pywikibot.getSite(), deTitle)
    return  de_page.get()

contents = u"""
{{НП
 |країна                  = [[Австрія]]
 |статус                  = 
 |українська назва        = $name
 |оригінальна назва       = $ger_name
 |підпорядкування         = 
 |герб                    = $wappen
 |прапор                  = 
 |опис герба              = 
 |опис прапора            =
 |ширина герба            = 
 |ширина прапора          = 
 |зображення              = <!-- Example.jpg -->
 |зображення_розмір       = 
 |зображення_підпис       = 
|lat_deg            = $lat_deg
|lon_deg            = $lon_deg
  |CoordAddon             = 
  |CoordScale             = 
 |ЯндексКарта             = 
 |розмір карти країни     = 
 |розмір карти регіону    = 
 |розмір карти району     = 
 |position                = <!-- right, left, top або bottom (положення підпису маркера на мапі) -->
 |вид регіону             = Земля
 |регіон                  = $land
 |регіон у таблиці        = 
 |вид району              = Округ
 |район                   = $bezirk
 |район в таблиці         = 
 |вид общини              = 
 |община                  = 
 |община в таблиці        = 
 |карта країни            = 
 |карта регіону           = $ger_name im Bezirk SL.png
 |карта району            = 
 |внутрішній поділ        = 
 |вид голови              = 
 |голова                  = 
 |дата заснування         = 
 |рік заснування          =
 |перша згадка            = 
 |попередні назви         = 
 |статус з                = 
 |площа                   = $area
 |вид висоти              = 
 |висота центру НП        = $altitude
 |клімат                  = 
 |офіційна мова           = 
 |офіційна мова-ref       = 
  |населення              =  {{Метадані населення AT-5|$Gemeindekennzahl}} 
  |рік перепису           =  
  |густота населення      = 
  |агломерація            = 
  |національний склад     = 
  |конфесійний склад      = 
  |катойконім             = 
 |часовий пояс            = 
 |DST                     = +1 <!--Якщо є [[літній час]] -->
 |телефонний код          =  
 |поштовий індекс         = $Postleitzahl
 |поштові індекси        = 
 |автомобільний код       = 
 |вид ідентифікатора      = <!--назва або скороч., наприклад, для НП Росії-ЗКАТУ, України-КОАТУУ -->
 |цифровий ідентифікатор  = $Gemeindekennzahl
 |категорія в Commons     = 
 |сайт                    = $website
 |мова сайту              = 
 |мова сайту 2            = 
 |мова сайту 3            = 
 |мова сайту 4            = 
 |мова сайту 5            = 
 |add1n                   = 
 |add1                    = 
 |add2n                   = 
 |add2                    = 
 |add3n                   = 
 |add3                    = 
}}

'''$name'''&nbsp;— [[Адміністративний поділ Австрії| містечко та громада]] в австрійській землі [[$land]]. Містечко належить округу $bezirk<ref name="website">$website</ref>. 

[[file:$ger_name im Bezirk SL.png|300px]]

$name на мапі округу та землі. 

$Placement
$demography
$galery
$literature
== Виноски == 
{{reflist}}
{{commonscat}}
{{Громади округу $bezirk_short}}
[[Категорія:Громади $g_land]]
"""



comment= u'Місто Австрії'

title = u'Галльванг'
name = u'Галльванг'
ger_name = u'Hallwang'
land = u'Зальцбург (земля){{!}}Зальцбург'
g_land = u'Зальцбургу'
bezirk = u'[[Зальцбург-Умгебунг]]'
bezirk_short = u'Зальцбург-Умгебунг'
ger_content = get_german_page(ger_name)

area = ''
population = ''
site = u''
pop_dens = ''

demography = u"""
== Демографія ==
Історична динаміка населення міста за даними сайту Statistik Austria<ref>[http://www.statistik.at/blickgem/gemDetail.do?gemnr=$Gemeindekennzahl Gemeindedaten von $ger_name]</ref>
{{Шаблон:Демографія/AUT/$ger_name}}
"""
demography = u''
contents = contents.replace(u'$demography', demography)

contents = contents.replace(u'$land', land) 
contents = contents.replace(u'$name', name) 
contents = contents.replace(u'$ger_name', ger_name)
contents = contents.replace(u'$bezirk_short', bezirk_short)
contents = contents.replace(u'$bezirk', bezirk)
contents = contents.replace(u'$population', population)
contents = contents.replace(u'$pop_dens', pop_dens)
contents = contents.replace(u'$g_land', g_land) 
contents = contents.replace(u'$wappen', get_wappen(ger_content))
website = get_site(ger_content)
contents = contents.replace(u'$website', website)
contents = contents.replace(u'$lat_deg', get_latitude(ger_content))
contents = contents.replace(u'$lon_deg', get_longitude(ger_content))
contents = contents.replace(u'$altitude', get_altitude(ger_content))
contents = contents.replace(u'$area', get_area(ger_content))
contents = contents.replace(u'$Gemeindekennzahl', get_templ_item(u'Gemeindekennzahl', ger_content))
contents = contents.replace(u'$Postleitzahl', get_templ_item(u'PLZ', ger_content))
contents = contents.replace(u'$galery', get_galery(ger_content))
contents = contents.replace(u'$literature', get_literature(ger_content))
contents = contents.replace(u'$Placement', get_placement(ger_content))

mysite = pywikibot.getSite()
page = pywikibot.Page(mysite, title)

pywikibot.output(contents)


if page.exists():
  pywikibot.output(u'Вже є')
else:
  pywikibot.output(u'сторінки нема')  
  try:
    page.put(contents, comment = comment, minorEdit = False)
  except pywikibot.LockedPage:
    pywikibot.output(u"Page %s is locked; skipping." % title)
  except pywikibot.EditConflict:
    pywikibot.output(u'Skipping %s because of edit conflict' % title)
  except pywikibot.SpamfilterError, error:
    pywikibot.output(
                 u'Cannot change %s because of spam blacklist entry %s'
                 % (title, error.url))