1
0
mirror of https://github.com/spaam/svtplay-dl.git synced 2024-12-11 20:34:18 +01:00
svtplay-dl/lib/svtplay_dl/tests/test_dash.py
2023-07-18 23:33:22 +02:00

85 lines
2.8 KiB
Python

import datetime
import os
import pytest
import requests_mock
from svtplay_dl.fetcher.dash import _dashparse
from svtplay_dl.fetcher.dash import parse_dates
from svtplay_dl.fetcher.dash import parse_duration
from svtplay_dl.utils.parser import setup_defaults
def parse(playlist):
with open(os.path.join(os.path.dirname(os.path.realpath(__file__)), "dash-manifests", playlist)) as fd:
manifest = fd.read()
streams = {}
for i in list(_dashparse(setup_defaults(), manifest, "http://localhost", {}, None)):
streams[i.bitrate] = i
return streams
def test_parse_cmore():
data = parse("cmore.mpd")
assert len(data[3261].files) == 410
assert len(data[3261].audio) == 615
assert data[3261].segments
def test_parse_fff():
data = parse("fff.mpd")
assert len(data[3187].files) == 578
assert len(data[3187].audio) == 577
assert data[3187].segments
def test_parse_nya():
data = parse("svtvod.mpd")
assert len(data[2793].files) == 350
assert len(data[2793].audio) == 350
assert data[2793].segments
def test_parse_live():
data = parse("svtplay-live.mpd")
assert len(data[2795].files) == 6
assert len(data[2795].audio) == 6
assert data[2795].segments
def test_parse_live2():
data = parse("svtplay-live2.mpd")
assert len(data[2892.0].files) == 11
assert len(data[2892.0].audio) == 11
assert data[2892.0].segments
def test_parse_live_vod():
with requests_mock.Mocker() as mock_request:
mock_request.get("http://localhost", text="Hello!")
data = parse("direct-live.mpd")
assert len(data[4720.0].files) == 4424
assert len(data[4720.0].audio) == 4424
assert data[4720.0].segments
def test_parse_duration():
assert parse_duration("PT3459.520S") == 3459.52
assert parse_duration("PT2.00S") == 2.0
assert parse_duration("PT1H0M30.000S") == 3630.0
assert parse_duration("P1Y1M1DT1H0M30.000S") == 34218030.0
assert parse_duration("mMWroNG") == 0
def test_parse_date():
assert isinstance(parse_dates("2021-05-10T06:00:11.451554796Z"), datetime.datetime)
assert isinstance(parse_dates("2021-05-10T06:00:11.45155479Z"), datetime.datetime)
assert isinstance(parse_dates("2021-05-10T06:00:11.4515547Z"), datetime.datetime)
assert isinstance(parse_dates("2021-05-10T06:00:11.451554Z"), datetime.datetime)
assert isinstance(parse_dates("2021-05-10T06:00:11.45155Z"), datetime.datetime)
assert isinstance(parse_dates("2021-05-10T06:00:11.4515Z"), datetime.datetime)
assert isinstance(parse_dates("2021-05-10T06:00:11.45Z"), datetime.datetime)
assert isinstance(parse_dates("2021-05-10T06:00:11Z"), datetime.datetime)
assert isinstance(parse_dates("2021-05-10T06:00:11"), datetime.datetime)
with pytest.raises(ValueError):
assert parse_dates("2021-05-10Z06:00:11.45Z")