Support XML namespaces in json2xml for thumbnails in danish feeds

This commit is contained in:
Lucidiot 2019-12-15 13:17:56 +01:00
parent f614eb9afa
commit d6eab32bb6
Signed by: lucidiot
GPG Key ID: 3358C1CA6906FB8D
3 changed files with 60 additions and 7 deletions

View File

@ -1,6 +1,60 @@
#!/usr/bin/env python3
import fileinput
import argparse
import json
import xmltodict
import sys
print(xmltodict.unparse(json.loads('\n'.join(fileinput.input()))))
def main():
parser = argparse.ArgumentParser()
parser.add_argument(
'infile',
type=argparse.FileType('r'),
nargs='?',
default=sys.stdin,
)
parser.add_argument(
'outfile',
type=argparse.FileType('w'),
nargs='?',
default=sys.stdout,
)
parser.add_argument(
'-s',
'--short-empty',
help='Shorten empty elements to <a/> instead of <a></a>',
action='store_true',
default=False,
)
parser.add_argument(
'-p',
'--pretty',
help='Indent XML with tabs and newlines.',
action='store_true',
default=False,
)
parser.add_argument(
'-ns',
'--namespace',
help='Add a namespace abbreviation.\n'
'Use the empty string as a name to set a default namespace.\n'
'xmltodict will expect the URL in your JSON objects:\n'
'{"http://my/ns:tag": "something"}',
action='append',
nargs=2,
default=[],
metavar=('URL', 'NAME'),
)
args = parser.parse_args()
args.outfile.write(xmltodict.unparse(
json.load(args.infile),
pretty=args.pretty,
namespaces=dict(args.namespace),
short_empty_elements=args.short_empty,
))
if __name__ == '__main__':
main()

View File

@ -74,7 +74,7 @@ curl -s 'https://en.havarikommissionen.dk/aviation-archive/' \
--arg title 'AIBD Aviation' \
--arg description 'Accident Investigation Board Denmark aviation accident reports' \
--arg link 'https://en.havarikommissionen.dk/aviation-archive/' \
| json2xml > $DIR/feeds/aibd/aviation.xml.new \
| json2xml -s -ns 'http://search.yahoo.com/mrss/' media > $DIR/feeds/aibd/aviation.xml.new \
&& mv $DIR/feeds/aibd/aviation.xml.new $DIR/feeds/aibd/aviation.xml
echo Building AIBD Rail feed to $DIR/feeds/aibd/rail.xml
@ -84,7 +84,7 @@ curl -s 'https://en.havarikommissionen.dk/railway-archive/' \
--arg title 'AIBD Rail' \
--arg description 'Accident Investigation Board Denmark railroad accident reports' \
--arg link 'https://en.havarikommissionen.dk/railway-archive/' \
| json2xml > $DIR/feeds/aibd/rail.xml.new \
| json2xml -s -ns 'http://search.yahoo.com/mrss/' media > $DIR/feeds/aibd/rail.xml.new \
&& mv $DIR/feeds/aibd/rail.xml.new $DIR/feeds/aibd/rail.xml
echo Building DMAIB feed to $DIR/feeds/dmaib.xml
@ -94,5 +94,5 @@ curl -s 'https://dmaib.com/reports/?categorizations=9510' \
--arg title 'DMAIB' \
--arg description 'Danish Maritime Accident Investigation Board accident reports' \
--arg link 'https://dmaib.com/reports/?categorizations=9510' \
| json2xml > $DIR/feeds/dmaib.xml.new \
| json2xml -s -ns 'http://search.yahoo.com/mrss/' media > $DIR/feeds/dmaib.xml.new \
&& mv $DIR/feeds/dmaib.xml.new $DIR/feeds/dmaib.xml

View File

@ -12,7 +12,6 @@
{
"rss": {
"@version": "2.0",
"@xmlns:media": "http://search.yahoo.com/mrss/",
"channel": {
"title": $title,
"description": $description,
@ -28,7 +27,7 @@
"link": .["data-url"],
"pubDate": (first(.children[-1].children[] | select(.class == "date")).text[-10:] | strptime("%d-%m-%Y") | mktime | strftime("%a, %d %b %Y %T %z")),
"category": [.children[-1].children[] | select(.class == "labels") | .children[].text],
"media:thumbnail": (
"http://search.yahoo.com/mrss/:thumbnail": (
if .children[0].class == "media-left" then {
"@url": .children[0].children[0].src
} else empty end