Talk:List of XEPs
Скрипт для генерации и проверки списка
Требуется Python 3
#! /usr/bin/env python3 # -*- coding: utf-8 -*- # input XEPS_ORIG_URL = 'http://xmpp.org/extensions/xeps.xml' XEPS_WIKI_URL_T = 'http://jawiki.ru/index.php?title={}&action=raw' XEPS_WIKI_URL_PAGES = ( 'Список_расширений/0001—0049', 'Список_расширений/0050—0099', 'Список_расширений/0100—0149', 'Список_расширений/0150—0199', 'Список_расширений/0200—0249', 'Список_расширений/0250—0299' ) import itertools import re import sys import urllib.request import xml.etree.ElementTree as xml def fetchUrl(url): return urllib.request.urlopen(url).read().decode('UTF-8') def initXepList(): print('... Получение оригинального списка расширений... ', end='', file=sys.stderr) sys.stderr.flush() xeps_orig_xml = xml.XML(fetchUrl(XEPS_ORIG_URL)) print('Готово.', file=sys.stderr) xeps_orig = {} for xep in xeps_orig_xml: number = xep.find('number').text xeps_orig[number] = { 'name': xep.find('name').text, 'abstract': xep.find('abstract').text, 'type': xep.find('type').text.replace(' ', '_'), 'status': xep.find('status').text } for number in sorted(xeps_orig): print( '{{{{XepListItem|{number}|{name}|{abstract}|||{type}|{status}}}}}' .format(number=number, **xeps_orig[number]) ) def main(): print('... Получение списка расширений из ЯВики... ', end='') xeps_wiki = itertools.chain(*( fetchUrl(XEPS_WIKI_URL_T.format(urllib.parse.quote(page))).splitlines() for page in XEPS_WIKI_URL_PAGES )) print('Готово.') xeps = {} for line in xeps_wiki: line = line[2:-2] # убираем двойные фигурные скобки по краям, если есть line = re.sub(r'\{\{.*?\}\}', '', line) # вырезаем вызовы викишаблонов, в них могут быть палки line = re.sub(r'\[\[.*?\]\]', '', line) # вырезаем викиссылки, в них могут быть палки parts = line.split('|') if parts[0] == 'XepListItem': xeps[parts[1]] = { 'name': parts[2], 'type': parts[6].replace('_', ' '), 'status': parts[7] } print('... Прочитано %d расширений.' % len(xeps)) print('... Получение оригинального списка расширений... ', end='') xeps_orig_xml = xml.XML(fetchUrl(XEPS_ORIG_URL)) print('Готово.') xeps_orig = {} for xep in xeps_orig_xml: number = xep.find('number').text xeps_orig[number] = { 'name': xep.find('name').text, 'type': xep.find('type').text, 'status': xep.find('status').text } differ = False for number in sorted(xeps_orig): if number not in xeps: differ = True print('[*] Новое расширение: XEP-' + number) print('\tНазвание: ' + xeps_orig[number]['name']) print('\tТип: ' + xeps_orig[number]['type']) print('\tСтатус: ' + xeps_orig[number]['status']) elif xeps[number] != xeps_orig[number]: differ = True print('[*] Различается XEP-' + number) if xeps[number]['name'] != xeps_orig[number]['name']: print('\tНазвание изменено с "{0}" на "{1}"'.format(xeps[number]['name'], xeps_orig[number]['name'])) if xeps[number]['type'] != xeps_orig[number]['type']: print('\tТип изменён с "{0}" на "{1}"'.format(xeps[number]['type'], xeps_orig[number]['type'])) if xeps[number]['status'] != xeps_orig[number]['status']: print('\tСтатус изменён с "{0}" на "{1}"'.format(xeps[number]['status'], xeps_orig[number]['status'])) if not differ: print('[=] Различия не найдены.') if __name__ == '__main__': #initXepList() main()
fury outlet ought complexity
<a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Black Friday</a> <a href=http://www.boot-uggs.us.com/>Ugg Boots</a> <a href=http://www.boots-uggs.us.org/>Cheap Uggs</a> <a href=http://www.coachonline-outlet.us.com/>Coach Outlet Store Online</a> <a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Black Friday</a> <a href=http://www.onlineoutlets-coach.us.com/>Coach Black Friday</a> <a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a> <a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet</a> <a href=http://www.outlets-coach.us.org/>Coach Outlet</a> <a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet</a> <a href=http://www.cheapbootsuggs.us.com/>Cheap Ugg Boots</a> <a href=http://www.jackets-canadagoose.us.org/>Canada Goose Jackets</a> <a href=http://www.boots-uggs.us.org/>Ugg Boots</a> <a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Outlet Online</a> <a href=http://www.cheapbootsuggs.us.com/>Uggs</a> <a href=http://www.cheapbootsuggs.us.com/>Ugg Black Friday</a> <a href=http://www.coachonline-outlet.us.org/>Coach Black Friday</a> <a href=http://www.cheapbootsuggs.us.com/>Cheap Ugg Boots</a> <a href=http://www.boots-uggs.us.org/>Ugg Boots</a> <a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Black Friday</a> <a href=http://www.outlets-coach.us.org/>Coach Outlet Store Online</a> 锘?a href=http://www.coachonline-outlet.us.com/>Coach Outlet</a> <a href=http://www.outlets-coach.us.org/>Coach Outlet</a> <a href=http://www.coachonline-outlet.us.org/>Coach Outlet Online</a> <a href=http://www.coachonline-outlet.us.org/>Coach Outlet Online</a> <a href=http://www.coachonline-outlet.us.com/>Coach Outlet</a> <a href=http://www.boot-uggs.us.org/>Uggs Black Friday</a> <a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a> <a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Outlet</a> <a href=http://www.boots-uggs.us.org/>Cheap Ugg Boots</a> <a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Bags</a> <a href=http://www.coachonline-outlet.us.org/>Coach Outlet Online</a> <a href=http://www.jackets-canadagoose.us.org/>Canada Goose Jackets</a> <a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a> <a href=http://www.outlet-coach.us.org/>Coach Outlet</a> <a href=http://www.uggblackfriday.us.org/>Ugg Boots</a> <a href=http://www.outlets-coach.us.org/>Coach Outlet</a> <a href=http://www.boot-uggs.us.com/>Ugg Black Friday</a> <a href=http://www.coachonline-outlet.us.com/>Coach Black Friday</a> <a href=http://www.boot-uggs.us.org/>Ugg Boots</a> <a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a> <a href=http://www.boot-uggs.us.com/>Ugg Boots Black Friday</a> <a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Outlet Online</a> <a href=http://www.coachonline-outlet.us.com/>Coach Outlet Online</a> <a href=http://www.outlets-coach.us.org/>Coach Outlet</a> <a href=http://www.outlet-coach.us.org/>Coach Outlet</a> <a href=http://www.uggblackfriday.us.org/>Uggs Black Friday</a> <a href=http://www.uggblackfriday.us.org/>Uggs Black Friday</a> <a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a> <a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Black Friday</a> <a href=http://www.boot-uggs.us.org/>Ugg Black Friday</a> <a href=http://www.coachonline-outlet.us.org/>Coach Outlet Online</a> <a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Outlet Online</a> <a href=http://www.coachonline-outlet.us.com/>Coach Outlet</a> <a href=http://www.outlets-coach.us.org/>Coach Outlet</a> <a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet Online</a> <a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a> <a href=http://www.outlet-canadagoose.us.com/>Canada Goose Black Friday</a> <a href=http://www.uggblackfriday.us.org/>Uggs Black Friday</a> <a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet</a> <a href=http://www.uggblackfriday.us.org/>Ugg Boots Black Friday</a> <a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet</a> <a href=http://www.coachonline-outlet.us.com/>Coach Outlet Store Online</a> <a href=http://www.outlet-coach.us.org/>Coach Outlet</a> <a href=http://www.coachonline-outlet.us.org/>Coach Outlet Store Online</a> <a href=http://www.boots-uggs.us.org/>Uggs Black Friday</a> <a href=http://www.boot-uggs.us.org/>Ugg Boots</a> <a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Outlet</a> <a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet</a> <a href=http://www.cheapbootsuggs.us.com/>Uggs Black Friday</a> <a href=http://www.outlet-coach.us.org/>Coach Black Friday</a> <a href=http://www.outlets-coach.us.org/>Coach Outlet</a> <a href=http://www.boots-uggs.us.org/>Uggs</a> <a href=http://www.boot-uggs.us.org/>Ugg Black Friday</a> <a href=http://www.boot-uggs.us.com/>Ugg Boots</a>
industrial outlet scarcely sheriff
<a href=http://www.boot-uggs.us.org/>Ugg Black Friday</a> <a href=http://www.uggblackfriday.us.org/>Ugg Black Friday</a> <a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Black Friday</a> <a href=http://www.coachonline-outlet.us.com/>Coach Outlet</a> <a href=http://www.cheapbootsuggs.us.com/>Cheap Ugg Boots</a> <a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Outlet</a> <a href=http://www.outlet-canadagoose.us.com/>Canada Goose Outlet</a> <a href=http://www.boot-uggs.us.com/>Ugg Boots</a> <a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Outlet</a> <a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a> <a href=http://www.jackets-canadagoose.us.org/>Canada Goose Jacket</a> <a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet</a> <a href=http://www.coachonline-outlet.us.com/>Coach Outlet</a> <a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Black Friday</a> <a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet Online</a> <a href=http://www.boots-uggs.us.org/>Ugg Boots Black Friday</a> <a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Black Friday</a> <a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Bags</a> <a href=http://www.outlet-coach.us.org/>Coach Outlet Online</a> <a href=http://www.coachonline-outlet.us.org/>Coach Outlet Store Online</a> <a href=http://www.boot-uggs.us.com/>Ugg Boots</a> <a href=http://www.boot-uggs.us.org/>Ugg Boots</a> <a href=http://www.outlet-canadagoose.us.com/>Canada Goose Outlet</a> <a href=http://www.coachonline-outlet.us.org/>Coach Outlet Online</a> <a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet</a> <a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet Online</a> <a href=http://www.outlets-coach.us.org/>Coach Outlet</a> <a href=http://www.boot-uggs.us.com/>Uggs</a> <a href=http://www.boot-uggs.us.org/>Ugg Boots</a> <a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Bags</a> <a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet Store Online</a> <a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet</a> <a href=http://www.outlet-coach.us.org/>Coach Outlet</a> <a href=http://www.jackets-canadagoose.us.org/>Canada Goose Jackets</a> <a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet</a> <a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Outlet</a> <a href=http://www.onlineoutlets-coach.us.com/>Coach Black Friday</a> <a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet</a> <a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Black Friday</a> <a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Outlet Online</a> <a href=http://www.cheapbootsuggs.us.com/>Cheap Ugg Boots</a> <a href=http://www.coachonline-outlet.us.org/>Coach Black Friday</a> <a href=http://www.uggblackfriday.us.org/>Uggs Black Friday</a> <a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Black Friday</a> <a href=http://www.boot-uggs.us.org/>Ugg Boots</a> <a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Black Friday</a> <a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a> <a href=http://www.coachonline-outlet.us.org/>Coach Outlet</a> <a href=http://www.uggblackfriday.us.org/>Ugg Black Friday</a> <a href=http://www.uggblackfriday.us.org/>Ugg Black Friday</a> <a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet</a> <a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet Online</a> <a href=http://www.outlets-coach.us.org/>Coach Outlet</a> <a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Bags</a> <a href=http://www.outlet-canadagoose.us.com/>Canada Goose Outlet</a> <a href=http://www.uggblackfriday.us.org/>Ugg Boots Black Friday</a> <a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet</a> <a href=http://www.onlineoutletmichael-kors.us.org/>Michael Kors Outlet Online</a> <a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Black Friday</a> <a href=http://www.onlineoutlets-coach.us.com/>Coach Outlet</a> <a href=http://www.onlineoutletmichael-kors.us.com/>Michael Kors Outlet Online</a> <a href=http://www.michael-korsonlineoutlet.us.com/>Michael Kors Outlet Online</a> <a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Outlet</a> <a href=http://www.boot-uggs.us.org/>Ugg Boots</a> <a href=http://www.uggblackfriday.us.org/>Ugg Boots</a> <a href=http://www.cheapbootsuggs.us.com/>Ugg Black Friday</a> <a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Outlet</a> <a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Outlet Online</a> <a href=http://www.uggblackfriday.us.org/>Ugg Black Friday</a> <a href=http://www.boots-uggs.us.org/>Ugg Boots</a> <a href=http://www.outlet-canadagoose.us.com/>Canada Goose Outlet</a> <a href=http://www.michaelkorsblackfriday.us.org/>Michael Kors Outlet</a> <a href=http://www.outlet-canadagoose.us.com/>Canada Goose Outlet</a> <a href=http://www.boot-uggs.us.com/>Ugg Boots Black Friday</a> <a href=http://www.michael-korsonlineoutlet.us.org/>Michael Kors Bags</a>