gstreamer/subprojects/gst-integration-testsuites/testsuites/dashifutils.py
Akkariin Meiko 27c4ec74a1 Update
2022-03-12 03:16:09 +08:00

72 lines
2.6 KiB
Python

# Pastebin PJeVxRyU
# -*- Mode: Python -*- vi:si:et:sw=4:sts=4:ts=4:syntax=python
#
# Copyright (c) 2014 Thibault Saunier <thibault.saunier@collabora.com>
# Copyright (c) 2017 Sebastian Droege <sebastian@centricular.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the
# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301, USA.
"""
The GstValidate DASH-IF test-vectors testsuite
"""
import json
import requests
import sys
import xml.etree.ElementTree as ET
TESTVECTOR_URL = "http://testassets.dashif.org:3000/v1/testvectors"
def cleanup_entries(data):
# we need to do some minor cleanup of the entries:
# * Replace <a href=..>something</a>
# * Add __ID corresponding to the testvector unique key on the website
d = data["data"]
for entry in d:
# "testvector": "<a href=\"#testvector/details/58a5e0707459f8cb201b8ceb\">W3C Clear Key - audio only variant</a>",
testvector = entry["testvector"]
tmp = ET.XML(testvector)
_id = tmp.attrib["href"].split('/')[-1]
_desc = tmp.text
# use a key that is almost certain to be the first one. Ensures entries are sorted by ID
entry["A__ID"] = _id
entry["testvector_description"] = _desc
# "url": "<a href=https://media.axprod.net/TestVectors/v7-MultiDRM-MultiKey-MultiPeriod/Manifest_1080p_ClearKey.mpd>Link</a>"
# badly formed html, let's just use splitters
url = entry["url"]
_url = url.split("<a href=")[1].split(">Link<")[0]
entry["url"] = _url
def update_testvector_list(outputfile=None):
# download and cleanup testvector json
resp = requests.get(url=TESTVECTOR_URL)
data = json.loads(resp.text)
cleanup_entries(data)
if outputfile is None:
print(json.dumps(data["data"], indent=4, sort_keys=True))
else:
json.dump(data["data"], fp=open(outputfile, "w"), indent=4, sort_keys=True)
if __name__ == "__main__":
if len(sys.argv) > 1:
update_testvector_list(sys.argv[1])
else:
update_testvector_list()