Difference between revisions of "Talk:List of XEPs"

From JaWiki (Jabber/XMPP wiki)
Jump to: navigation, search
(20150602yuanyuan: new section)
m (Reverted edits by 72.52.116.237 (talk) to last revision by Cblp.su)
Line 115: Line 115:
 
     #initXepList()
 
     #initXepList()
 
     main()</nowiki>
 
     main()</nowiki>
 
== 20150602yuanyuan ==
 
 
http://www.guccishoes.us.com
 
http://www.outlet-celine.com
 
http://www.soccer-jerseys.us.com
 
http://www.oakleysunglasses.us.com
 
http://www.hollisteroutlet.name
 
http://www.kobeshoes.org
 
http://www.adidasshoes.name
 
http://www.jordan4.net
 
http://coachoutlet.officialinc.net
 
http://www.prada-outlet.us
 
http://www.oakleysunglasses-wholesale.name
 
http://www.michaelkorsoutlet-mk.eu.com
 
http://timberland.officialfree.net
 
http://www.dior-handbags.us
 
http://www.michaelkors-outlet.com.co
 
http://www.chanelbags.com.co
 
http://truereligion.onlineinc.net.co
 
http://www.poloralphlaurenhome.net
 
http://www.oakley-sunglasses.com.co
 
http://www.katespadeoutlet.net.co
 
http://www.ralphlaurensale.eu.com
 
http://www.coachoutlet-storeonline.in.net
 
http://www.michaelkors.com.so
 
http://www.cheaptoms.us
 
http://www.coach-factoryoutlet.com.co
 
http://www.tory-burch-outlet.name
 
http://www.p90xworkouts.us
 
http://www.rolexwatchesoutlet.us
 
http://timberlandboots.dealsinc.net
 
http://www.montblanc.com.co
 
http://www.lebronjames-shoes.name
 
http://www.celine-outlet.us
 
http://www.toms--shoes.com
 
http://burberry.bidinc.org
 
http://www.ghdhairstraighteners.com.co
 
http://www.abercrombieandfitch.cc
 
http://www.abercrombieoutlet.us.com
 
http://www.hollisterkids.net
 
http://www.ralph-lauren-outlet.co
 
http://www.michael-korsuk.org.uk
 
http://michaelkorsoutlet.new-letter.com
 
http://www.poloralph-lauren.net.co
 
http://www.abercrombiekids.name
 
http://www.abercrombieoutlet.name
 
http://www.louisvuitton-lvoutlet.me
 
http://www.redchristianlouboutin.com
 
http://www.concords11.com
 
http://www.ray-ban-sunglasses.org.uk
 
http://www.kobebryantshoes.name
 
http://www.raybanwayfarer.biz
 
http://www.airmax-nike.me.uk
 
http://www.abercrombie-fitch.cc
 
http://www.adidaswings.name
 
http://www.katespade-outlet.us.com
 
http://www.retrojordans.name
 
http://www.mkorsoutlet.com.co
 
http://www.coachoutlet.net.so
 
http://www.raybansunglass.net.co
 
http://www.louisvuittonuk.me.uk
 
http://www.oakleysunglassessale.in.net
 
http://www.chiflatiron.com.co
 
http://beatsbydrdre.outletoff.net
 
http://www.michaelkorshandbags.eu.com
 
http://www.abercrombie.in.net
 
http://www.oakley-sunglasses.net.co
 
http://www.raybans.name
 
http://www.todsoutlet.name
 
http://www.katespade-handbags.eu.com
 
http://burberry.officialstore.com.co
 
http://www.louis-vuitton.us.org
 
http://www.marc--jacobs.com
 
http://www.michaelkorsoutletus.eu.com
 
http://www.fitflops.org
 
http://www.jordan6.net
 
http://www.toms-shoes.cc
 
http://www.abercrombie.net.co
 
http://www.gucci-outlet.org
 
http://www.ray-banoutlet.name
 
http://www.pandorajewelry.name
 
http://www.christianlouboutinsale.name
 
http://www.louisvuittonoutlet.net.co
 
http://www.michaelkors-mkoutlet.in.net
 
http://www.juicy-couture.us
 
http://www.toms-outlet.com.co
 
http://chanelhandbags.authenticinc.net
 
http://www.louisvuittonoutlets.name
 
http://www.coachoutletstoreonline.eu.com
 
http://www.abercrombie-fitch.com.co
 
http://www.louis-vuittonhandbags.name
 
http://www.true-religion-outlet.us.com
 
http://burberry.stores.net.co
 
http://www.guccioutlet.net.co
 
http://www.gucci-outlet.net.co
 
http://www.gucci.net.co
 
http://www.rayban-sunglasses.eu.com
 
http://www.pandoracharms.org.uk
 
http://www.oakleysunglasses-outlet.name
 
http://www.montblancpens.com.co
 
http://www.christianlouboutinoutlet.com.co
 
http://www.jordanretro.name
 
http://www.christianlouboutin.name
 
http://www.jordan11.name
 
http://www.coachfactoryoutlet.com.so
 
http://www.nike-airmax.me.uk
 
http://michaelkors.officialstore.com.co
 
http://www.christian-louboutinoutlet.org
 
http://www.coachfactoryoutletonline.eu.com
 
http://www.michaelkorshandbags.com.so
 
http://www.coachoutletstoreonline.us.org
 
http://www.hogan-shoes.us
 
http://www.abercrombieandfitch.net.co
 
http://www.insanityworkout.com.co
 
http://www.cheapjordansshoes.in.net
 
http://toryburch.onlineinc.net.co
 
http://www.cocochaneluk.co.uk
 
http://www.louis-vuittonoutlet.us.org
 
http://www.cheap-jordans.us.com
 
http://www.christianlouboutinsale.biz
 
http://www.jordan8.net
 
http://www.hermes-birkin.us
 
http://www.michaelkorsbag.org.uk
 
http://www.fitflop-shoes.us
 
http://www.gucci-outlet.name
 
http://www.louis--vuitton.us
 
http://www.hollister-clothing.net
 
http://toryburchoutlet.stores.net.co
 
http://www.hollisterclothing.us
 
http://timberlandboots.hugeoff.net
 
http://truereligion.officialbid.net
 
http://www.jordan11s.name
 
http://www.michaelkorsukpurse.co.uk
 
http://www.louisvuitton.us.com
 
http://www.fendi.us.com
 
http://www.coachoutlet-factory.com.co
 
http://www.louis-vuitton.net.co
 
http://burberryoutlet.newestsite.net
 
http://www.ray-bansunglasses.name
 
http://www.louisvuittonhandbags.net.co
 
http://www.oakleysunglasses-sale.in.net
 
http://www.hollister-co.net
 
http://www.hollisterclothing.info
 
http://www.michael-korsoutletonline.eu.com
 
http://www.jordan11concord.org
 
http://www.todsshoes.us
 
http://chanelhandbags.cocous.org
 
http://www.oakleysunglassescheap.name
 
http://www.pandorajewelry.net.co
 
http://www.chanelhandbags.in.net
 
http://www.michaelkorsonlineoutlet.in.net
 
http://www.coach-outlet.us.org
 
http://www.kevindurantshoes.name
 
http://lululemon.suleymanaltun.com
 
http://www.jordan3.net
 
http://www.raybanglasses.me.uk
 
http://www.pradauk.co.uk
 
http://www.truereligion.eu.com
 
http://www.christianlouboutin-shoes.info
 
http://www.louisvuittonoutlet-inc.us
 
http://www.holisterclothingstore.com
 
http://www.louisvuitton-outlet.us.com
 
http://www.jordan13.org
 
http://www.hollisterinc.name
 
http://www.abercrombiestore.org
 
http://www.cheap--nfljerseys.us.com
 
http://www.coachcanadaoutlet.ca
 
http://www.ralph-lauren.net.co
 
http://www.louisvuitton-handbags.com.co
 
http://www.lebronjames-shoes.net
 
http://www.cheaprolexwatches.name
 
http://www.michaelkors--outlet.com.co
 
http://www.jordanconcords.net
 
http://www.holister.name
 
http://oakley.hugeoff.net
 
http://www.raybansunglassesoutlet.name
 
http://www.michaelkorsoutlet.net.so
 
http://www.christianlouboutinoutlet.org
 
http://www.cheapjerseys-wholesale.us.com
 
http://www.michael-kors.org.uk
 
http://www.michaelkorsoutlet.com.so
 
http://michaelkors.aphidsymposium.org
 
http://www.abercrombiestores.net
 
http://www.coach-outlet.us.com
 
http://www.rayban-sunglasses.com.co
 
<math><math>Insert formula here</math></math>
 

Revision as of 11:58, 2 June 2015

Скрипт для генерации и проверки списка

Требуется 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()