Користувач:Дядько Ігор/Скрипти/Австрія 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''' — [[Адміністративний поділ Австрії| містечко та громада]] в австрійській землі [[$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))