Support XML namespaces in json2xml for thumbnails in danish feeds
This commit is contained in:
parent
f614eb9afa
commit
d6eab32bb6
58
bin/json2xml
58
bin/json2xml
|
@ -1,6 +1,60 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
import fileinput
|
import argparse
|
||||||
import json
|
import json
|
||||||
import xmltodict
|
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()
|
||||||
|
|
|
@ -74,7 +74,7 @@ curl -s 'https://en.havarikommissionen.dk/aviation-archive/' \
|
||||||
--arg title 'AIBD Aviation' \
|
--arg title 'AIBD Aviation' \
|
||||||
--arg description 'Accident Investigation Board Denmark aviation accident reports' \
|
--arg description 'Accident Investigation Board Denmark aviation accident reports' \
|
||||||
--arg link 'https://en.havarikommissionen.dk/aviation-archive/' \
|
--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
|
&& mv $DIR/feeds/aibd/aviation.xml.new $DIR/feeds/aibd/aviation.xml
|
||||||
|
|
||||||
echo Building AIBD Rail feed to $DIR/feeds/aibd/rail.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 title 'AIBD Rail' \
|
||||||
--arg description 'Accident Investigation Board Denmark railroad accident reports' \
|
--arg description 'Accident Investigation Board Denmark railroad accident reports' \
|
||||||
--arg link 'https://en.havarikommissionen.dk/railway-archive/' \
|
--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
|
&& mv $DIR/feeds/aibd/rail.xml.new $DIR/feeds/aibd/rail.xml
|
||||||
|
|
||||||
echo Building DMAIB feed to $DIR/feeds/dmaib.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 title 'DMAIB' \
|
||||||
--arg description 'Danish Maritime Accident Investigation Board accident reports' \
|
--arg description 'Danish Maritime Accident Investigation Board accident reports' \
|
||||||
--arg link 'https://dmaib.com/reports/?categorizations=9510' \
|
--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
|
&& mv $DIR/feeds/dmaib.xml.new $DIR/feeds/dmaib.xml
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
{
|
{
|
||||||
"rss": {
|
"rss": {
|
||||||
"@version": "2.0",
|
"@version": "2.0",
|
||||||
"@xmlns:media": "http://search.yahoo.com/mrss/",
|
|
||||||
"channel": {
|
"channel": {
|
||||||
"title": $title,
|
"title": $title,
|
||||||
"description": $description,
|
"description": $description,
|
||||||
|
@ -28,7 +27,7 @@
|
||||||
"link": .["data-url"],
|
"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")),
|
"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],
|
"category": [.children[-1].children[] | select(.class == "labels") | .children[].text],
|
||||||
"media:thumbnail": (
|
"http://search.yahoo.com/mrss/:thumbnail": (
|
||||||
if .children[0].class == "media-left" then {
|
if .children[0].class == "media-left" then {
|
||||||
"@url": .children[0].children[0].src
|
"@url": .children[0].children[0].src
|
||||||
} else empty end
|
} else empty end
|
||||||
|
|
Loading…
Reference in New Issue