def test_metadata_language(): meta_fin = fetch_metadata('https://areena.yle.fi/1-403848', meta_language='fin') title_fin = meta_fin[0].get('title') assert title_fin.startswith('Suomen tie jatkosotaan') meta_swe = fetch_metadata('https://areena.yle.fi/1-403848', meta_language='swe') title_swe = meta_swe[0].get('title') assert title_swe.startswith('Finlands väg till fortsättningskriget')
def test_areena_episodes_sort_order(): metadata = fetch_metadata('https://areena.yle.fi/1-4655342') # Should be sorted from oldest to newest timestamps = [x['publish_timestamp'] for x in metadata] assert len(timestamps) > 1 assert timestamps == sorted(timestamps)
def test_areena_live_metadata(): metadata = fetch_metadata('https://areena.yle.fi/tv/suorat/yle-tv1') assert len(metadata) == 1 assert len(metadata[0]['flavors']) >= 1 assert all(f.get('media_type') == 'video' for f in metadata[0]['flavors']) assert metadata[0]['region'] == 'Finland'
def test_areena_ohjelmat_embedded_live_metadata(): metadata = fetch_metadata('https://areena.yle.fi/tv/ohjelmat/30-595?play=yle-tv2') assert len(metadata) == 1 assert len(metadata[0]['flavors']) >= 1 assert all(f.get('media_type') == 'video' for f in metadata[0]['flavors']) assert metadata[0]['region'] == 'Finland'
def test_radio_live_metadata(): metadata = fetch_metadata('https://areena.yle.fi/radio/ohjelmat/yle-puhe') assert len(metadata) == 1 assert len(metadata[0]['flavors']) >= 1 assert all(f.get('media_type') == 'audio' for f in metadata[0]['flavors']) assert metadata[0]['title'].startswith('Yle Puhe')
def test_radio_metadata_hls(): metadata = fetch_metadata('https://areena.yle.fi/1-4551633') assert len(metadata) == 1 assert len(metadata[0]['flavors']) == 1 assert metadata[0]['flavors'][0]['media_type'] == 'audio' assert metadata[0]['duration_seconds'] == 2954
def test_arkivet_audio_metadata(): metadata = fetch_metadata('https://svenska.yle.fi/artikel/2014/01/28' '/tove-jansson-laser-noveller-ur-dockskapet') assert len(metadata) == 11 assert metadata[0].get('title') == 'Apan ur Dockskåpet' for m in metadata: assert all(f.get('media_type') == 'audio' for f in m.get('flavors'))
def test_areena_ohjelmat_embedded_live_metadata(): metadata = fetch_metadata( 'https://areena.yle.fi/tv/ohjelmat/30-595?play=yle-tv2') assert len(metadata) == 1 assert len(metadata[0]['flavors']) >= 1 assert all(f.get('media_type') == 'video' for f in metadata[0]['flavors']) assert metadata[0]['region'] == 'Finland'
def test_radio_metadata(): metadata = fetch_metadata('https://areena.yle.fi/1-3361013') assert len(metadata) == 1 assert len(metadata[0]['flavors']) == 1 assert metadata[0]['flavors'][0]['media_type'] == 'audio' assert metadata[0]['flavors'][0]['bitrate'] == 192 assert metadata[0]['duration_seconds'] == 2884
def test_radio_metadata_2020(): metadata = fetch_metadata('https://areena.yle.fi/audio/1-50198110') assert len(metadata) == 1 assert len(metadata[0]['flavors']) == 1 assert metadata[0]['flavors'][0]['media_type'] == 'audio' assert metadata[0]['duration_seconds'] == 1451 assert len(metadata[0]['description']) > 150
def test_arkivet_audio_metadata(): metadata = fetch_metadata('https://svenska.yle.fi/artikel/2014/04/03' '/tove-jansson-laser-smatrollen-och-' 'den-stora-oversvamningen') assert len(metadata) == 2 for m in metadata: assert m.get('title').startswith('Småtrollen') assert all(f.get('media_type') == 'audio' for f in m.get('flavors'))
def test_arkivet_a_metadata(): metadata = fetch_metadata('https://svenska.yle.fi/a/7-884297') assert len(metadata) >= 4 assert metadata[1].get('title').startswith('Valborg på Borgbacken') flavors = metadata[1]['flavors'] assert all(f.get('media_type') == 'video' for f in flavors) assert all('bitrate' in f for f in flavors) assert all('height' in f for f in flavors) assert all('width' in f for f in flavors)
def test_radio_latest(): # Test fetching the latest radio episode and also implicitly that # getting the latest episode is fast even though there are # hundreds of news episodes. filters = StreamFilters(latest_only=True) metadata = fetch_metadata('https://areena.yle.fi/audio/1-1440981', filters) assert len(metadata) == 1 publish_date = datetime.strptime(metadata[0]['publish_timestamp'][:10], '%Y-%m-%d') assert publish_date >= datetime(2021, 1, 1)
def test_arkivet_metadata(): metadata = fetch_metadata('https://svenska.yle.fi/artikel/2014/06/13' '/halla-det-ar-naturvaktarna') assert len(metadata) == 1 assert metadata[0].get('title') == 'Seportage om Naturväktarna' flavors = metadata[0]['flavors'] assert all(f.get('media_type') == 'video' for f in flavors) assert all('bitrate' in f for f in flavors) assert all('height' in f for f in flavors) assert all('width' in f for f in flavors)
def test_areena_latest_episode(): filters = StreamFilters(latest_only=True) metadata = fetch_metadata('https://areena.yle.fi/1-4655342', filters) assert len(metadata) == 1 # The latest episode at the time of writing this test was # published on 2021-01-27 publish_date = datetime.strptime(metadata[0]['publish_timestamp'][:10], '%Y-%m-%d') assert publish_date >= datetime(2021, 1, 27)
def test_areena_awsmpodamdipv4_metadata(): metadata = fetch_metadata('https://areena.yle.fi/1-50875269') assert len(metadata) == 1 flavors = metadata[0]['flavors'] assert len(flavors) >= 1 assert all(f.get('media_type') == 'video' for f in flavors) assert metadata[0]['duration_seconds'] == 257 assert metadata[0]['region'] == 'World' assert metadata[0]['publish_timestamp'] == '2021-06-11T08:40:00+03:00' assert 'expired_timestamp' not in metadata[0] assert len(metadata[0]['description']) > 150
def test_areena_iphone_metadata(): metadata = fetch_metadata('https://areena.yle.fi/1-4247408') assert len(metadata) == 1 flavors = metadata[0]['flavors'] assert len(flavors) == 1 assert all(f.get('media_type') == 'video' for f in flavors) assert all('bitrate' in f and 'height' in f and 'width' in f for f in flavors) assert metadata[0]['duration_seconds'] == 234 assert metadata[0]['region'] == 'Finland' assert metadata[0]['publish_timestamp'] == '2017-11-08T01:15:00+02:00'
def test_areena_html5_metadata(): metadata = fetch_metadata('https://areena.yle.fi/1-403848') assert len(metadata) == 1 flavors = metadata[0]['flavors'] assert len(flavors) == 4 assert all(f.get('media_type') == 'video' for f in flavors) assert all('bitrate' in f and 'height' in f and 'width' in f for f in flavors) assert metadata[0]['duration_seconds'] == 3196 assert metadata[0]['region'] == 'World' assert metadata[0]['publish_timestamp'] == '2017-07-16T14:00:00+03:00' assert 'expired_timestamp' not in metadata[0] assert len(metadata[0]['subtitles']) == 1
def test_areena_akamai_metadata(): metadata = fetch_metadata('https://areena.yle.fi/1-1765055') assert len(metadata) == 1 flavors = metadata[0]['flavors'] assert len(flavors) == 5 assert all(f.get('media_type') == 'video' for f in flavors) assert all('bitrate' in f and 'height' in f and 'width' in f for f in flavors) assert metadata[0]['duration_seconds'] == 1624 assert metadata[0]['region'] == 'World' assert metadata[0]['publish_timestamp'] == '2015-11-27T10:00:00+02:00' assert 'expired_timestamp' not in metadata[0] assert len(metadata[0]['subtitles']) == 3
def test_areena_akamai_hds_metadata(): metadata = fetch_metadata('https://areena.yle.fi/1-1418526') assert len(metadata) == 1 flavors = metadata[0]['flavors'] assert len(flavors) == 1 assert all(f.get('media_type') == 'video' for f in flavors) assert all('bitrate' in f and 'height' in f and 'width' in f for f in flavors) assert metadata[0]['duration_seconds'] == 1601 assert metadata[0]['region'] == 'World' assert metadata[0]['publish_timestamp'] == '2012-01-19T12:00:00+02:00' assert 'expired_timestamp' not in metadata[0] assert len(metadata[0]['embedded_subtitles']) == 0
def test_areena_html5_metadata(): metadata = fetch_metadata('https://areena.yle.fi/1-787136') assert len(metadata) == 1 flavors = metadata[0]['flavors'] assert len(flavors) >= 5 assert all(f.get('media_type') == 'video' for f in flavors) assert all('bitrate' in f and 'height' in f and 'width' in f for f in flavors) assert metadata[0]['duration_seconds'] == 907 assert metadata[0]['region'] == 'World' assert metadata[0]['publish_timestamp'] == '2021-04-01T00:01:00+03:00' assert 'expired_timestamp' not in metadata[0] assert len(metadata[0]['description']) > 150
def test_areena_html5_metadata(): metadata = fetch_metadata('https://areena.yle.fi/1-403848') assert len(metadata) == 1 flavors = metadata[0]['flavors'] assert len(flavors) == 2 assert all(f.get('media_type') == 'video' for f in flavors) assert all('bitrate' in f and 'height' in f and 'width' in f for f in flavors) assert metadata[0]['duration_seconds'] == 3196 assert metadata[0]['region'] == 'World' assert metadata[0]['publish_timestamp'] == '2017-07-16T14:00:00+03:00' assert 'expired_timestamp' not in metadata[0] assert metadata[0]['embedded_subtitles'] == [ {'language': 'fin', 'category': 'ohjelmatekstitys'} ]
def test_areena_html5_metadata(): metadata = fetch_metadata('https://areena.yle.fi/1-403848') assert len(metadata) == 1 flavors = metadata[0]['flavors'] assert len(flavors) == 5 assert all(f.get('media_type') == 'video' for f in flavors) assert all('bitrate' in f and 'height' in f and 'width' in f for f in flavors) assert metadata[0]['duration_seconds'] == 3196 assert metadata[0]['region'] == 'World' assert metadata[0]['publish_timestamp'] == '2017-07-16T14:00:00+03:00' assert 'expired_timestamp' not in metadata[0] assert len(metadata[0]['description']) > 150 assert metadata[0]['embedded_subtitles'] == [{ 'language': 'fin', 'category': 'ohjelmatekstitys' }]
def test_uutiset_inline_audio_block_metadata(): # This page has an inline AudioBlock metadata = fetch_metadata('https://yle.fi/uutiset/3-11843834') assert len(metadata) == 1 assert metadata[0]['webpage'] == 'https://areena.yle.fi/1-50762351' assert metadata[0]['title'].startswith( 'Ykkösaamun kolumni: Janne Saarikivi: On kriisi') assert metadata[0]['duration_seconds'] == 333 assert metadata[0]['region'] == 'World' assert metadata[0]['publish_timestamp'] == '2021-03-23T07:00:00+02:00' assert 'expired_timestamp' not in metadata[0] assert len(metadata[0]['description']) > 150 flavors = metadata[0]['flavors'] assert len(flavors) >= 1 assert all(f.get('media_type') == 'audio' for f in flavors) assert all('bitrate' in f for f in flavors)
def test_uutiset_headline_metadata(): # This page has a video embedded as "headline.video" metadata = fetch_metadata('https://yle.fi/uutiset/3-11796748') assert len(metadata) == 1 assert metadata[0]['webpage'] == 'https://areena.yle.fi/1-50765436' assert metadata[0]['title'].startswith( 'Yle Uutiset suora: Missä mennään rokotehankkeessa') assert metadata[0]['duration_seconds'] == 3547 assert metadata[0]['region'] == 'World' assert metadata[0]['publish_timestamp'] == '2021-02-18T10:58:40+02:00' assert 'expired_timestamp' not in metadata[0] assert len(metadata[0]['description']) > 150 flavors = metadata[0]['flavors'] assert len(flavors) >= 3 assert all(f.get('media_type') == 'video' for f in flavors) assert all('bitrate' in f and 'height' in f and 'width' in f for f in flavors)
def test_uutiset_main_media_metadata(): # This page has a video embedded as "mainMedia" metadata = fetch_metadata('https://yle.fi/uutiset/3-11822823') assert len(metadata) == 1 assert metadata[0]['webpage'] == 'https://areena.yle.fi/1-50653021' assert metadata[0]['title'].startswith( 'Perjantai-dokkari: Tuomas, vaatimaton maailmantähti') assert metadata[0]['duration_seconds'] == 690 assert metadata[0]['region'] == 'World' assert metadata[0]['publish_timestamp'] == '2021-03-05T21:30:00+02:00' assert 'expired_timestamp' not in metadata[0] assert len(metadata[0]['description']) > 150 flavors = metadata[0]['flavors'] assert len(flavors) >= 3 assert all(f.get('media_type') == 'video' for f in flavors) assert all('bitrate' in f and 'height' in f and 'width' in f for f in flavors)
def test_radio_live_metadata(): metadata = fetch_metadata('https://yle.fi/radio/ylepuhe/suora/') assert len(metadata) == 1 assert len(metadata[0]['flavors']) >= 1 assert all(f.get('media_type') == 'audio' for f in metadata[0]['flavors'])
def test_arkisto_regression(): # There was a regression (#168) related to invalid downloadUrl meta = fetch_metadata('https://yle.fi/aihe/artikkeli/2013/04/11' '/aanien-illoissa-kuunnellaan-kadonneitakin-aania') assert len(meta) == 12
def test_arkisto_regression(): # There was a regression (#168) related to an invalid downloadUrl meta = fetch_metadata('https://yle.fi/aihe/artikkeli/2013/04/11' '/aanien-illoissa-kuunnellaan-kadonneitakin-aania') # 12 streams in the article body, possibly more in the footer assert len(meta) >= 12