Дольник:YaroslavZolotaryov/sandbox

С Сибирска Википеддя
< Дольник:YaroslavZolotaryov
Revision as of 12:18, 3 Грязника 2006 by *>Edward Chernenko (small fixes)
Айдать на коробушку Айдать на сыскальник

Исходный текст бота, создававшего болванки для статей о доменах.

# -*- coding: utf-8 -*-

# Создаьот болванки статей с названнями национальных доменов верхнего уровня

#
#

really = True

import sys, os
import time, datetime
import codecs
import socket
import re

import wikipedia, config

site=None

#

cctldDomains = \
    [
        u'ac',
        u'ad',
        u'ae',
        u'af',
        u'ag',
        u'ai',
        u'al',
        u'am',
        u'an',
        u'ao',
        u'aq',
        u'ar',
        u'as',
        u'at',
        u'au',
        u'aw',
        u'az',
        u'ax',
        u'ba',
        u'bb',
        u'bd',
        u'be',
        u'bf',
        u'bg',
        u'bh',
        u'bi',
        u'bj',
        u'bm',
        u'bn',
        u'bo',
        u'br',
        u'bs',
        u'bt',
        u'bu',
        u'bv',
        u'bw',
        u'by',
        u'bz',
        u'ca',
        u'cc',
        u'cd',
        u'cf',
        u'cg',
        u'ch',
        u'ci',
        u'ck',
        u'cl',
        u'cm',
        u'cn',
        u'co',
        u'cr',
        u'cs',
        u'cu',
        u'cv',
        u'cx',
        u'cy',
        u'cz',
        u'dd',
        u'de',
        u'dj',
        u'dk',
        u'dm',
        u'do',
        u'dz',
        u'ec',
        u'ee',
        u'eg',
        u'eh',
        u'er',
        u'es',
        u'et',
        u'eu',
        u'fi',
        u'fj',
        u'fk',
        u'fm',
        u'fo',
        u'fr',
        u'ga',
        u'gb',
        u'gd',
        u'ge',
        u'gf',
        u'gg',
        u'gh',
        u'gi',
        u'gl',
        u'gm',
        u'gn',
        u'gp',
        u'gq',
        u'gr',
        u'gs',
        u'gt',
        u'gu',
        u'gw',
        u'gy',
        u'hk',
        u'hm',
        u'hn',
        u'hr',
        u'ht',
        u'hu',
        u'id',
        u'ie',
        u'il',
        u'im',
        u'in',
        u'io',
        u'iq',
        u'ir',
        u'is',
        u'it',
        u'je',
        u'jm',
        u'jo',
        u'jp',
        u'ke',
        u'kg',
        u'kh',
        u'ki',
        u'km',
        u'kn',
        u'kp',
        u'kr',
        u'kw',
        u'ky',
        u'kz',
        u'la',
        u'lb',
        u'lc',
        u'li',
        u'lk',
        u'lr',
        u'ls',
        u'lt',
        u'lu',
        u'lv',
        u'ly',
        u'ma',
        u'mc',
        u'md',
        u'mg',
        u'mh',
        u'mk',
        u'ml',
        u'mm',
        u'mn',
        u'mo',
        u'mp',
        u'mq',
        u'mr',
        u'ms',
        u'mt',
        u'mu',
        u'mv',
        u'mw',
        u'mx',
        u'my',
        u'mz',
        u'na',
        u'nc',
        u'ne',
        u'nf',
        u'ng',
        u'ni',
        u'nl',
        u'no',
        u'np',
        u'nr',
        u'nu',
        u'nz',
        u'om',
        u'pa',
        u'pe',
        u'pf',
        u'pg',
        u'ph',
        u'pk',
        u'pl',
        u'pm',
        u'pn',
        u'pr',
        u'ps',
        u'pt',
        u'pw',
        u'py',
        u'qa',
        u're',
        u'ro',
        u'ru',
        u'rw',
        u'sa',
        u'sb',
        u'sc',
        u'sd',
        u'se',
        u'sg',
        u'sh',
        u'si',
        u'sj',
        u'sk',
        u'sl',
        u'sm',
        u'sn',
        u'so',
        u'sr',
        u'st',
        u'sv',
        u'sy',
        u'sz',
        u'tc',
        u'td',
        u'tf',
        u'tg',
        u'th',
        u'tj',
        u'tk',
        u'tl',
        u'tm',
        u'tn',
        u'to',
        u'tp',
        u'tr',
        u'tt',
        u'tv',
        u'tw',
        u'tz',
        u'ua',
        u'ug',
        u'uk',
        u'um',
        u'us',
        u'uy',
        u'uz',
        u'va',
        u'vc',
        u've',
        u'vg',
        u'vi',
        u'vn',
        u'vu',
        u'wf',
        u'ws',
        u'ye',
        u'yt',
        u'yu',
        u'za',
        u'zm',
        u'zr',
        u'zw'
    ]

cctldCountriesSiberian = \
    [
        u'сердыш Вознесення',
        u'Андорра',
        u'Соспаренны Арабски Емираты',
        u'Афганистан',
        u'Антигуа и Барбуда',
        u'Ангила',
        u'Албання',
        u'Армення',
        u'Антильски сердышы',
        u'Ангола',
        u'Антарктида',
        u'Аргентина',
        u'Возходно Самоа',
        u'Австрия',
        u'Австралия',
        u'Аруба',
        u'Азербайджан',
        u'Аландски сердышы',
        u'Босння и Герцеговина',
        u'Барбадос',
        u'Бангладеш',
        u'Бельгия',
        u'Буркина-Фасо',
        u'Болгария',
        u'Бахрейн',
        u'Бурунди',
        u'Бенин',
        u'Бермудски сердышы',
        u'Бруней',
        u'Боливия',
        u'Бразилия',
        u'Багамски сердышы',
        u'Бутан',
        u'Бирма',
        u'сердыш Буве',
        u'Ботсвана',
        u'Беларусь',
        u'Белиз',
        u'Канада',
        u'Кокосовы сердышы',
        u'Демократическа Республика Конго',
        u'Серьодне-Африканска Республика',
        u'Республика Конго',
        u'Швейцария',
        u'Кот-д\'Ивуар',
        u'сердышы Кука',
        u'Чили',
        u'Камерун',
        u'Китай',
        u'Колунбия',
        u'Коста-Рика',
        u'Сербия и Чернокаммя',
        u'Куба',
        u'Кабо-Верде',
        u'сердыш Рожесва',
        u'Кипр',
        u'Чехия',
        u'ГДР',
        u'Германня',
        u'Джыбути',
        u'Дання',
        u'Доминика',
        u'Доминиканска Республика',
        u'Алжыр',
        u'Еквадор',
        u'Естоння',
        u'Египет',
        u'Глубнична Сахара',
        u'Еритрея',
        u'Испання',
        u'Ефиопия',
        u'Европейской Яклан',
        u'Финляндия',
        u'Фиджы',
        u'Фолклендски (Мальвински) сердышы',
        u'Микронезия',
        u'Фарерски сердышы',
        u'Франция',
        u'Габон',
        u'Великобритання',
        u'Гренада',
        u'Грузия',
        u'Гвиана',
        u'Гернси',
        u'Гана',
        u'Гибралтар',
        u'Гренландия',
        u'Ганбия',
        u'Гвинея',
        u'Гваделупа',
        u'Екваториальна Гвинея',
        u'Греция',
        u'Полуденна Георгия и Полуденны Сандвичевы сердышы',
        u'Гватемала',
        u'Гуам',
        u'Гвинея-Биссау',
        u'Гайана',
        u'Гонконг',
        u'сердышы Херд и Макдоналд',
        u'Гондурас',
        u'Хорватия',
        u'Гаити',
        u'Венгрия',
        u'Индонезия',
        u'Ирландия',
        u'Израиль',
        u'Мен',
        u'Индия',
        u'Британски землицы в Индийском окияне',
        u'Ирак',
        u'Иран',
        u'Исландия',
        u'Италия',
        u'Джерси',
        u'Ямайка',
        u'Иордан',
        u'Японня',
        u'Кення',
        u'Киргизия',
        u'Канбоджа',
        u'Кирибати',
        u'Коморски сердышы',
        u'Сент-Киттс и Невис',
        u'КНДР',
        u'Республика Корея',
        u'Кувейт',
        u'Каймановы сердышы',
        u'Казахстан',
        u'Лаос',
        u'Ливан',
        u'Санта-Лючия',
        u'Лихтенштейн',
        u'Шри-Ланка',
        u'Либерия',
        u'Лесото',
        u'Литва',
        u'Люксенбург',
        u'Латвия',
        u'Ливия',
        u'Морокко',
        u'Монако',
        u'Молдавия',
        u'Мадагаскар',
        u'Маршалловы сердышы',
        u'Македоння',
        u'Мали',
        u'Мьянма',
        u'Монголия',
        u'Макао',
        u'Северные Мариански сердышы',
        u'Мартиника',
        u'Мавритання',
        u'Монтсеррат',
        u'Мальта',
        u'Маврикий',
        u'Мальдивски сердышы',
        u'Малави',
        u'Мексика',
        u'Малайзия',
        u'Мозанбик',
        u'Намибия',
        u'Нова Каледоння',
        u'Нигер',
        u'Норфолк',
        u'Нигерия',
        u'Никарагуа',
        u'Нидерланды',
        u'Норвегия',
        u'Непал',
        u'Науру',
        u'НиуЕ',
        u'Нова Зеландия',
        u'Оман',
        u'Панама',
        u'Перу',
        u'Французска Полинезия',
        u'Папуа-Нова Гвинея',
        u'Филиппины',
        u'Пакистан',
        u'Польша',
        u'Сен-Пьер и Микелон',
        u'ПиткЕрн',
        u'ПуЕрто-Рико',
        u'Палестински землицы',
        u'Португалия',
        u'Палау',
        u'Парагвай',
        u'Катар',
        u'Реюньон',
        u'Румыння',
        u'Россия',
        u'Руанда',
        u'Саудовска Аравия',
        u'Соломоновы сердышы',
        u'Сейшельски сердышы',
        u'Судан',
        u'Швеция',
        u'Сингапур',
        u'сердыш Святой Елены',
        u'Словення',
        u'сердышы Шпицберген и Ян-Майен',
        u'Словакия',
        u'Сьерра-Леоне',
        u'Сан-Марино',
        u'Сенегал',
        u'Сомали',
        u'Суринам',
        u'Сан-Томе и Принсипи',
        u'Сальвадор',
        u'Сирия',
        u'Свазиленд',
        u'сердышы Тьоркс и Кайкос',
        u'Чад',
        u'Полудены Французски Землицы',
        u'Того',
        u'Таиланд',
        u'Таджыкистан',
        u'Токелау',
        u'Возходной Тимор',
        u'Туркмення',
        u'Тунис',
        u'Тонга',
        u'Возходной Тимор',
        u'Турция',
        u'Тринидад и Тобаго',
        u'Тувалу',
        u'Тайвань',
        u'Танзання',
        u'Украина',
        u'Уганда',
        u'Великобритання',
        u'Американски Малы Нешни сердышы',
        u'США',
        u'Уругвай',
        u'Узбекистан',
        u'Ватикан',
        u'Сент-Винсент и Гренадины',
        u'ВенесуЕла',
        u'Британски Виргински сердышы',
        u'Американски Виргински сердышы',
        u'Вьетнам',
        u'Вануату',
        u'сердышы Уоллис и Футуна',
        u'Западно Самоа',
        u'Йемен',
        u'Майотта',
        u'Югославия',
        u'ЮАР',
        u'Занбия',
        u'Заир',
        u'Зинбабве'
    ]

cctldCountriesSiberianGen = \
    [
        u'сердышы Вознесення',
        u'Андорры',
        u'Сопаренных Арабских Емиратов',
        u'Афганистана',
        u'Антигуа и Барбуды',
        u'Ангилы',
        u'Албании',
        u'Армении',
        u'Антильских сердышов',
        u'Анголы',
        u'Антарктиды',
        u'Аргентины',
        u'Восточново Самоа',
        u'Австрии',
        u'Австралии',
        u'Арубы',
        u'Азербайджана',
        u'Аландских сердышов',
        u'Боснии и Герцеговины',
        u'Барбадоса',
        u'Бангладеша',
        u'Бельгии',
        u'Буркина-Фасо',
        u'Болгарии',
        u'Бахрейна',
        u'Бурунди',
        u'Бенина',
        u'Бермудских сердышов',
        u'Брунея',
        u'Боливии',
        u'Бразилии',
        u'Багамских сердышов',
        u'Бутана',
        u'Бирмы',
        u'сердышы Буве',
        u'Ботсваны',
        u'Белоруссии',
        u'Белиза',
        u'Канады',
        u'Кокосовых сердышов',
        u'Демократической Республики Конго',
        u'Серьодне-Африканской Республики',
        u'Республики Конго',
        u'Швейцарии',
        u'Кот-д\'Ивуара',
        u'сердышов Кука',
        u'Чили',
        u'Камеруна',
        u'Кита',
        u'Колунбии',
        u'Коста-Рики',
        u'Сербии и Чернокамми',
        u'Кубы',
        u'Кабо-Верде',
        u'сердышы Рождества',
        u'Кипра',
        u'Чехии',
        u'ГДР',
        u'Германии',
        u'Джыбути',
        u'Дании',
        u'Доминики',
        u'Доминиканской Республики',
        u'Алжыра',
        u'Еквадора',
        u'Естонии',
        u'Египта',
        u'Западной Сахары',
        u'Еритреи',
        u'Испании',
        u'Ефиопии',
        u'Европейсково Яклана',
        u'Финляндии',
        u'Фиджы',
        u'Фолклендских (Мальвинских) сердышов',
        u'Микронезии',
        u'Фарерских сердышов',
        u'Франции',
        u'Габона',
        u'Великобритании',
        u'Гренады',
        u'Грузии',
        u'Гвианы',
        u'Гернси',
        u'Ганы',
        u'Гибралтара',
        u'Гренландии',
        u'Ганбии',
        u'Гвинеи',
        u'Гваделупы',
        u'Екваториальной Гвинеи',
        u'Греции',
        u'Полуденной Георгии и Полуденных Сандвичевых сердышов',
        u'Гватемалы',
        u'Гуама',
        u'Гвинеи-Биссау',
        u'Гайаны',
        u'Гонконга',
        u'сердышов Херд и Макдоналд',
        u'Гондураса',
        u'Хорватии',
        u'Гаити',
        u'Венгрии',
        u'Индонезии',
        u'Ирландии',
        u'Израиля',
        u'сердыша Мен',
        u'Индии',
        u'Британских землицов в Индийском окияне',
        u'Ирака',
        u'Ирана',
        u'Исландии',
        u'Италии',
        u'сердыша Джерси',
        u'Ямайки',
        u'Иордана',
        u'Японии',
        u'Кении',
        u'Киргизии',
        u'Канбоджы',
        u'Кирибати',
        u'Коморских сердышов',
        u'сердышов Сент-Киттс и Невис',
        u'КНДР',
        u'Республики Кореи',
        u'Кувейта',
        u'Каймановых сердышов',
        u'Казахстана',
        u'Лаоса',
        u'Ливана',
        u'Санта-Лючии',
        u'Лихтенштейна',
        u'Шри-Ланки',
        u'Либерии',
        u'Лесото',
        u'Литвы',
        u'Люксенбурга',
        u'Латвии',
        u'Ливии',
        u'Морокко',
        u'Монако',
        u'Молдавии',
        u'Мадагаскара',
        u'Маршалловых сердышов',
        u'Македонии',
        u'Мали',
        u'Мьянмы',
        u'Монголии',
        u'Макао',
        u'Полношных Мариянских сердышов',
        u'Мартиники',
        u'Мавритании',
        u'Монтсеррата',
        u'Мальты',
        u'Маврикия',
        u'Мальдивских сердышов',
        u'Малави',
        u'Мексики',
        u'Малайзии',
        u'Мозанбика',
        u'Намибии',
        u'Новой Каледонии',
        u'Нигера',
        u'Норфолка',
        u'Нигерии',
        u'Никарагуа',
        u'Нидерландов',
        u'Норвегии',
        u'Непала',
        u'Науру',
        u'сердыша НиуЕ',
        u'Новой Зеландии',
        u'Омана',
        u'Панамы',
        u'Перу',
        u'Французской Полинезии',
        u'Папуа-Новой Гвинеи',
        u'Филиппин',
        u'Пакистана',
        u'Польшы',
        u'сердышов Сен-Пьер и Микелон',
        u'сердыша ПиткЕрн',
        u'ПуЕрто-Рико',
        u'Палестинских землицов',
        u'Португалии',
        u'Палау',
        u'Парагваю',
        u'Катара',
        u'Реюньона',
        u'Румынии',
        u'России',
        u'Руанды',
        u'Саудовской Аравии',
        u'Соломоновых сердышов',
        u'Сейшельских сердышов',
        u'Судана',
        u'Швеции',
        u'Сингапура',
        u'сердышы Святой Елены',
        u'Словении',
        u'сердышов Шпицберген и Ян-Майен',
        u'Словакии',
        u'Сьерра-Леоне',
        u'Сан-Марино',
        u'Сенегала',
        u'Сомали',
        u'Суринама',
        u'Сан-Томе и Принсипи',
        u'Сальвадора',
        u'Сирии',
        u'Свазиленда',
        u'сердышов Тьоркс и Кайкос',
        u'Чада',
        u'Полношных Французских Землицов',
        u'Того',
        u'Таиланда',
        u'Таджыкистана',
        u'Токелау',
        u'Возходново Тимора',
        u'Туркмении',
        u'Туниса',
        u'Тонги',
        u'Возходново Тимора',
        u'Турции',
        u'Тринидада и Тобаго',
        u'Тувалу',
        u'Тайваня',
        u'Танзании',
        u'Украины',
        u'Уганды',
        u'Великобритании',
        u'Американских Малых Внешних сердышов',
        u'США',
        u'Уругва',
        u'Узбекистана',
        u'Ватикана',
        u'Сент-Винсента и Гренадин',
        u'ВенесуЕлы',
        u'Британских Виргинских сердышов',
        u'Американских Виргинских сердышов',
        u'Вьетнама',
        u'Вануату',
        u'сердышов Уоллис и Футуна',
        u'Глубничново Самоа',
        u'Йемена',
        u'Майотты',
        u'Югославии',
        u'ЮАР',
        u'Занбии',
        u'Заира',
        u'Зинбабве'
    ]

def report(text = ""):
    wikipedia.output(text)


def main():
#    wikipedia.output(u"utf-8")
#    wikipedia.output(u"Starting: " + str(datetime.datetime.now()))

    for arg in sys.argv[1:]:
        arg = wikipedia.argHandler(arg, 'JaroslavleffBot-domains-ru')
        if arg:
            if False:
                pass
            else:
                report(u"Unknown argument: " + arg)
                wikipedia.stopme()
                sys.exit(1)

    if not config.never_log:
        wikipedia.activateLog('dates-ru.log')

    site=wikipedia.getSite()

#    if site.loggedin():
#        report(u"Logged in (%s)" % repr(site))
#    else:
#        report(u"Not logged in (%s)" % repr(site))
#        os.exit(2)

    global tempfile
    tempfile = None

    global page
    page = None

    for cc, country, gen in zip(cctldDomains, cctldCountriesSiberian, cctldCountriesSiberianGen):
        page = wikipedia.Page(site, title = (u"." + cc))
        if page.exists:
            if not page.isEmpty:
                temptext = page.get()
                regexp = u"^.xx$"
                if re.compile(regexp, re.M).search(temptext):
                    wikipedia.output(u"page exists, but contains garbage; replacing it...")
                else:
                    wikipedia.output(u"page exists, but not empty; skipping...")
                    continue
            else:
                wikipedia.output(u"page exists, but it's empty; replacing it...")
        else:
            wikipedia.output(u"page not exists; let's make one...")

        text = u"{{Домен верхнего уровня|\n" + \
               u"name=." + cc + u"|\n" + \
               u"background=#ccccff|\n" + \
               u"image=| <!-- здесь - изображени (Енблему) домена -->\n" + \
               u"introduced=| <!-- здесь проставьте год введення домена -->\n" + \
               u"type=[[национальный домен верхнего уровня]]|\n" + \
               u"status=действующий| <!-- или недействующий/неиспользуемые/резервные/удальонный -->\n" + \
               u"registry=| <!-- здесь - ссылка на статью о регистраторе -->\n" + \
               u"sponsor=| <!-- здесь - ссылка на статью об иницаторе введення домена, sponsor != спонсор -->\n" + \
               u"intendeduse=| <!-- здесь опишыте основно (формально) предназначени домена -->\n" + \
               u"actualuse=| <!-- здесь опишыте, как домен используется фактически -->\n" + \
               u"restrictions=| <!-- существующи ограничення на регистрацию доменов -->\n" + \
               u"structure=| <!-- структура данново доменново имени -->\n" + \
               u"document=| <!-- документы, регламентирующи управлени доменом -->\n" + \
               u"disputepolicy=| <!-- документы, регламентирующи разрешени споров по доменным именам -->\n" + \
               u"website=| <!-- ссылка на сайт основново регистратора доменов -->\n" + \
               u"}}\n" + \
               u"\n" + \
               u"'''." + cc + u"''' — [[нацыональной домен вершнево колбика|нацыональной]] [[домен вершнево колбика]] для [[" + country + "|" + gen + u"]].\n" + \
               u"\n" + \
               u"== Ссылки ==\n" + \
               u"* [http://www.iana.org/root-whois/" + cc + u".htm Весси whois гля домена ." + cc + u" на сторонке IANA]\n" + \
               u"\n" + \
               u"{{Нацыональны домены вершнево колбика}}\n" + \
               u"\n" + \
               u"{{Compu-domain-stub}}\n" + \
               u"\n" + \
               u"[[Category:Нацыональны домены вершнево колбика|" + cc +"]]\n" + \
               u"\n" + \
               u"[[en:." + cc + u"]]\n" + \
	       u"[[ru:." + cc + u"]]\n"

        try:
            tempfile = codecs.open('JaroslavleffBot-domains/%s' % cc, 'w', 'utf-8')
        except IOError:
            pass

        tempfile.write(text)
        tempfile.flush()

        if really:
            try:
                status, reason, data = page.put(newtext = text, comment = u"Бот: болванка для ."+cc)
            except wikipedia.EditConflict, error:
                wikipedia.output(u'ERROR putting page: %s. Giving up.' % error)
            except (socket.error, IOError, wikipedia.PageNotSaved), error:
                wikipedia.output(u'ERROR putting page: %s. Giving up.' % error)
            else:
                print status, reason
                continue


# end of main

# running:

if __name__ == "__main__":
    try:
        main()
    except:
        wikipedia.stopme()
        raise
    else:
        wikipedia.stopme()

    wikipedia.stopme()