diff -r 87c97dcb7136 -r 6318bee856fd tools/getFreeXmppServices.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/getFreeXmppServices.py Sat Sep 29 04:47:42 2012 +0200 @@ -0,0 +1,68 @@ +#!/usr/bin/env python3 + +import urllib.request +import argparse, sys +from xml.dom.minidom import parse, getDOMImplementation + + +def getJidsFromUrl(url): + f = urllib.request.urlopen(url) + indoc = parse(f) + jids = [] + query = indoc.documentElement + if query.localName == "query" : + for item in query.getElementsByTagName("item"): + jid = item.getAttribute("jid") + jids.append(jid) + return jids + +def createDocument(): + impl = getDOMImplementation() + return impl.createDocument(None, "resources", None) + + +def purge(elems): + res = [] + for i in elems: + if i not in res: + res.append(i) + return res + +def appendStringElem(doc, node, jids): + for i in jids: + item = doc.createElement("item") + text = doc.createTextNode(i) + item.appendChild(text) + node.appendChild(item) + + +parser = argparse.ArgumentParser(description='Collect some free xmpp services') +parser.add_argument('url', metavar="url", + default=['http://xmpp.net/services.xml', "https://list.jabber.at/api/?format=services.xml"] , nargs='*', + help='url to get the services') + +parser.add_argument('-o', metavar="FILE", type=argparse.FileType('bw'), + default = sys.stdout.buffer, + help='send output to FILE') + +args = parser.parse_args() + +# collect the servers jid +jids = [] +for url in args.url: + jids += getJidsFromUrl(url) + +jids = purge(jids) + +# create the xml output document +outdoc = createDocument() +res_element = outdoc.documentElement +string_array_elem = outdoc.createElement('string-array') +res_element.appendChild(string_array_elem) +string_array_elem.setAttribute("name", "xmpp_server_list") +appendStringElem(outdoc, string_array_elem, jids) + +# print result +f = args.o +f.write(outdoc.toprettyxml(encoding="utf-8")) +