mirror of
https://github.com/rembo10/headphones.git
synced 2026-03-21 20:29:27 +00:00
- Delete from Releases when deleting artist/album - Searcher - Size limits not quite working - Searcher - 1st newznab used even if disabled - Rutracker search stopped working for me, fixed by updating Beautiful Soup. Moved bs4 and html5lib to lib and ensured (I think) it’s imported from the right place
45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
from __future__ import absolute_import, division, unicode_literals
|
|
|
|
from xml.sax.xmlreader import AttributesNSImpl
|
|
|
|
from ..constants import adjustForeignAttributes, unadjustForeignAttributes
|
|
|
|
prefix_mapping = {}
|
|
for prefix, localName, namespace in adjustForeignAttributes.values():
|
|
if prefix is not None:
|
|
prefix_mapping[prefix] = namespace
|
|
|
|
|
|
def to_sax(walker, handler):
|
|
"""Call SAX-like content handler based on treewalker walker"""
|
|
handler.startDocument()
|
|
for prefix, namespace in prefix_mapping.items():
|
|
handler.startPrefixMapping(prefix, namespace)
|
|
|
|
for token in walker:
|
|
type = token["type"]
|
|
if type == "Doctype":
|
|
continue
|
|
elif type in ("StartTag", "EmptyTag"):
|
|
attrs = AttributesNSImpl(token["data"],
|
|
unadjustForeignAttributes)
|
|
handler.startElementNS((token["namespace"], token["name"]),
|
|
token["name"],
|
|
attrs)
|
|
if type == "EmptyTag":
|
|
handler.endElementNS((token["namespace"], token["name"]),
|
|
token["name"])
|
|
elif type == "EndTag":
|
|
handler.endElementNS((token["namespace"], token["name"]),
|
|
token["name"])
|
|
elif type in ("Characters", "SpaceCharacters"):
|
|
handler.characters(token["data"])
|
|
elif type == "Comment":
|
|
pass
|
|
else:
|
|
assert False, "Unknown token type"
|
|
|
|
for prefix, namespace in prefix_mapping.items():
|
|
handler.endPrefixMapping(prefix)
|
|
handler.endDocument()
|