vrtnu-app/devdocs/vrt_layout

75 lines
12 KiB
Plaintext

VRT nu website
================
get a list of all available 'programmes/series'
`set(re.findall('/a-z/(.*).relevant', requests.get('https://www.vrt.be/vrtnu/a-z/').text))`
returns
```
{'black-out', 'de-week-van-karrewiet-met-vgt', 'kapot-gaan', 'de-val--10-jaar-na-de-crisis', 'sisters', 'tomtesterom', 'vandaag-over-een-jaar', 'het-voordeel-van-de-twijfel', 'canvas-curiosa', 'informer', 'nouky-en-zijn-vrienden', 'de-president-van-brazilie-versus-de-amazone', 'de-repressie', 'en-daarmee-basta', 'tussen-eupen-en-oostende', 'i--sniper', 'vranckx', 'lars-is-te-laat', 'the-tycoon--the-rise-of-aristotle-onassis', 'rick-stein-s-road-to-mexico', 'de-inzichten-van-geert-hoste', 'heldentoeren', 'the-pier', 'terug-naar-rwanda', 'karrewiet', 'facebook-en-ik', 'w817', 'waffie--de-wonderhond', 'sportweekend-met-vgt', 'wanderlust', 'vier-en-1-2-vriend', 'zeven-en-ik', 'kinderen-van-de-kolonie', 'blokken', 'thuis', 'sporza--tennis', 'tomorrowland', 'wauters-vs--waes', 'filip-van-belgie--de-lange-weg-naar-de-troon', 'oma-en-oma', 'hun-verhaal-over-down', 'fc-de-kampioenen', 'yetili-vertelt', 'publiek-geheim', 'provence', 'winteruur', 'vandaag-showcase', 'california-love', 'go-jetters', 'whitney', 'professor-t-met-audiodescriptie', '20-jaar-s-m-a-k-', 'de-tomeloze-loire', 'inside-taronga-zoo', 'mijn-superheld', 'sporza--ronde-van-frankrijk', 'great--britain', 'de-jeugdkollaboratie', 'uki', 'beweeg-in-uw-kot-', 'knofje', 'ziggy-en-de-zootram', 'de-inzichten-van-rudi-vranckx', 'peperbollen', 'weduwen-na-de-val', 'een-italiaanse-reis', 'down-the-sea', 'pano', 'zero-zero-zero', 'helden', 'de-week-van-karrewiet', 'make-us-dream--steven-gerrard', 'tura-80', 'ghost-rockers', 'vera', 'arno-live-in-de-ancienne-belgique', 'het-journaal', 'het-jaaroverzicht', 'lucas-etc-', 'wissel-van-de-macht', 'escape-to-the-chateau', 'd5r', 'dagelijkse-kunst', 'paf-de-hond', 'into-darkness--met-audiodescriptie-', 'primates', 'tijd-voor-een-verhaal-', 'le-bureau-des-legendes', 'girls-talk', 'breaking-europe', 'spik-splinter', 'pompidou-presenteert', 'robin-hood', 'kulderzipken', 'who-killed-birgitte', 'friends--meiden-met-een-missie', 'kleine-helden', 'de-markt', 'down-the-road', 'the-diary-of-a-teenage-girl', 'de-nieuwe-avonturen-van-peter-pan', 'de-wereld-rond-met-kaatje', 'de-eenzame-prinses--fabiola-de-mora-y-aragon', 'politie-24-7', 'albatros', 'bonjour-congo', 'endeavour', 'help', 'bedreigde-soorten', 'oggy-en-de-kakkerlakken', 'ten-oorlog--de-bevrijding-van-vlaanderen', 'een-gat-in-de-lucht', 'liefde-in-tijden-van-jongdementie', 'kleine-roy', 'strafpleiters', 'de-avonturen-van-bibi---tina', 'dorianne-in-bad-met', 'vive-le-velo', 'het-peulengaleis', 'vranckx---de-nomaden', 'media-culture-fast-forward', 'nachtwacht1', 'ten-oorlog-special-onder-vlaamse-velden', 'schipper-naast-mathilde', 'switch', 'dieren-in-nesten', 'concertcafe-radio-2', 'belle---sebastian', 'de-steenweg', 'reizen-waes', 'emmy---gooroo', 'eva-ontmoet', 'een-zomer-als-geen-andere', 'mr-magoo', 'een-voor-allen', 'de-oostfronters', 'de-inzichten-van-caroline-pauwels', 'sporza--atletiek', 'linde', 'voor-de-mannen', 'de-afspraak-op-vrijdag', 'durf-te-vragen', 'hoodie-tutorials', 'de-eregalerij', 'simon', 'van-a-tot-z--luc-tuymans', 'de-canvas-popnacht', 'marathonradio', 'extra-time', 'flikken-maastricht', 'dierendokters-24-7', 'faqda', 'dox', 'twirlywoos', 'de-opvolger', 'big-five-of-asia--elephants---the-grey-giants-of-asia', 'le-jardin-extraordinaire', 'de-verkeersweken', 'buck', 'once-upon-a-time-in-iraq', 'de-cel-vermiste-personen', 'de-playlist', 'dwars-door-belgie', 'rintje', 'wetenschap-redt-de-wereld', 'the-ollie---moon-show', 'fanny-and-alexander', 'jimi-hendrix--hear-my-train-a-comin-', 'lassie', 'het-gezin', 'murdoch-mysteries', 'the-journey', 'dubbelleven', 'de-kollaboratie', 'tik-tak', 'de-inzichten-van-marleen-temmerman', 'shaun-het-schaap', 'biba---loeba', 'wissper', 'een-wereld-van-gebaren', 'de-columbus', 'wild-british-columbia', 'belgie-scherpgesteld', 'iets-met-boeken', 'de-legendariers', 'kinderen-van-het-verzet', 'koppen', 'live-op-kies19', 'seasons-in-the-wild', 'state-of-the-union', 'a-man-returned', 'wat-zegt-de-wetenschap', 'andermans-zaken', 'zomerschool', 'belfilm', 'florida---the-sunshine-state', 'vandaag', 'iedereen-klassiek', 'no-no', 'corona-talks', 'de-stad-van-morgen', 'in-de-greep-van-het-virus', 'tib---tumtum', 'croatia-s-wetlands-of-the-sava', 'wij--heren-van-zichem', 'chateau-planckaert', 'de-zevende-dag', 'sportweekend', 'diepzee', 'het-huis', 'een-prinsenleven', 'van-a-tot-z--piet-hoebeke', 'de-regels-van-floor', 'boudewijn--naar-het-hart-van-de-koning', 'achterflap', 'deadwind', 'dobus', 'van-a-tot-z', 'grizzy---the-lemmings', 'equator-from-the-air', 'terril', 'kratts-in-het-wild', 'dead-man-missing', 'angry-birds-blues', 'radio-1-sessies', 'klara-on-tour', 'labels', 'de-afspraak', 'poezie-met-pat', 'wereldbeeld', 'angry-birds-piggy-tales', 'suske---wiske-junior', 'awkward-talk', 'ollie', 'down-the-snow', 'kosmoo', 'where-the-wild-men-are', 'team-kwistenbiebel', 'cafe-sport', 'kijk-uit', 'expedition-with-steve-backshall', 'hoodie-met-audiodescriptie', 'weg-zijn-wij', 'nachtwacht', 'witse', 'de-eeuwige-oorlog', 'george---paul', 'wolf', 'bronnen-en-hun-geheimen', 'piet-piraat', 'koningin-elisabethwedstrijd', 'sporza--rally', 'de-inzichten-van-petra-de-sutter', 'ridder-muis', 'europa-league-preview-magazine', 'ancient-cathedral-rescue--the-race-to-save-notre-dame', 'into-darkness', 'death-at-a-funeral', 'doe-ik-het-goed-', 'drowning-in-plastic', 'het-koninkrijk-van-rene-heyvaert', 'de-warmste-makerspace', 'l-ecole-de-la-derniere-chance', 'op-de-man-af', '-ikluisterbelgisch-live', 'kinderen-van-de-collaboratie', 'beer-bo', '22-3-1-jaar-later---het-onderzoek', 'dimitri', 'super-4', 'kaatjes-tralalaatjes', 'animal-airport', 'welkom-in-de-wilton', 'amika', 'stacey-dooley-investigates', 'click-id', 'olly-wannabe', 'universiteit-van-vlaanderen', 'op-weg-met-jan', 'monty-don-s-japanese-gardens', 'gogogo', 'dagelijkse-kost', 'de-verdachten', 'singles-for-singles-met-average-rob', 'het-pleintje', 'craith', 'sing-song', 'van-a-tot-z-johan-braeckman', 'van-a-tot-z--connie-palmen', 'belpop-classics', 'bol-en-smik', 'kinderwens', 'piraten-in-de-straat', 'clangers', 'molang', 'kingsize-live', 'the-secret-life-of-the-zoo', 'kapitein-zeppos', 'team-scheire', 'de-humorklas--compilatie', 'tussen-oorlog-en-leven', 'hoodie', 'the-secret-of-the-animal-mummies', 'panorama', 'als-je-eens-wist', 'une-soeur', 'van-a-tot-z--philippe-herreweghe', 'hollywood-aan-de-schelde', 'andy-s-baby-dieren', 'olly-wannabe-s-comedy-club', 'iedereen-beroemd', 'apollo-s-grote-avonturen', 'eurovisiesongfestival', 'inside-the-ss', 'samson---gert-zomerpret', 'the-orderud-case', 'de-hoppers', 'als-je-eens-wist--extra-s', 'blue-planet-revisited', '60-jaar-sportweekend', 'het-weer', 'de-ideale-wereld', 'studio-ibiza', 'kinderen-van-de-holocaust', 'dierendetectives', 'bumba', 'undercover--met-audiodescriptie-', 'poetin---het-verhaal-van-een-russische-spion', 'flikken-rotterdam', 'ten-oorlog', 'babylon-berlin', 'first-dates-uk', 'big-little-lies', 'm-v-x', 'zig-sharko', 'karrewiet-met-vgt', 'competitiebeesten', 'ancient-superstructures', 'rox', 'grote-vragen', 'cuddly---wild--adorable-animal-babies', 'the-vietnam-war', 'mighty-mike', 'michel--acteur-verliest-de-woorden', 'mega-mindy', 'america-to-me', 'hillary', 'terzake', 'jean-michel-super-kariboe', 'vaderdag', 'burning-man', 'buren', 'de-inzichten-van-wim-distelmans', 'de-nieuwe-orde', 'rock--n--roll-high-school', 'de--klimaatraad', 'kamikaze', 'days-of-summer', 'nachtraven', 'wild-slovakia', 'van-der-valk', 'amerikaanse-overdosis', 'gino-s-italian-escape', 'hey-duggee', 'boris-en-binti', 'weg-van-het-meesterwerk', 'erediensten', 'pompidou-xl', 'professor-t', 'looper', 'the-circumciser', 'van-a-tot-z--dirk-de-wachter', 'tussen-oorlog-en-belgie', '-likeme', 'liegebeest', 'andy-s-prehistorische-avonturen', 'masha-en-de-beer', 'de-week-van-bruzz', 'de-smurfen', 'zelfde-deur--20-jaar-later', 'ketnet-sing-a-long', 'de-inzichten', 'moederdag', 'philippe-van-snick---de-poezie-van-het-systeem', 'villa-politica', 'het-journaal-met-vgt', 'nadia-comaneci-the-girl-who-wanted-to-fly', 'sporza--varia', 'vos-en-haas', 'monchhichi', 'trauma', 'big-five-of-asia--the-amur-tiger---lord-of-the-taiga', 'kunst-op-de-kaart', 'ket---doc', 'de-zoo', 'stoppeltje', 'culture-club-cultuurmarkt', 'paola--een-beeld-van-een-vrouw', 'van-a-tot-z--edel-maex', 'de-stoel', 'klimaatbetoog', '-likeme-mini-concert', 'reptiles-rule', 'de-collega-s', 'undercover', 'sporza--jumping', 'het-abc-van-marcel-broodthaers', 'the-ritchie-blackmore-story', 'kaatjes-kameraadjes', 'prinsessia', 'ket---doc--met-audiodescriptie-', 'first-dates', 'de-revolutieroute', 'game-over', 'de-modernisten', 'blood', 'flikken-maastricht--de-overloper', 'campus-12', 'de-tijd-der-vergelding', 'man-over-woord', 'andy-s-dino-avonturen', 'jan-balliauw-blikt-terug', 'loslippig', 'arthur-en-de-kinderen-van-de-ronde-tafel', 'demolition', 'meisjes', 'postbus-x', 'sporza--wielrennen', 'isolation-stories', 'the-chefs--brigade'}
```
get a list of all seasons in a series
`re.findall('value="#parsys_container_banner_%s_(.*)">' % show, requests.get('https://www.vrt.be/vrtnu/a-z/%s/' % show).text)`
returns
```
['select', '2005-hm', '3', '4', '5']
```
get a list of all episodes in a series
`set(re.findall('vrtnu/a-z/%s/%s/([^"]*)/' %(show, season),requests.get('https://www.vrt.be/vrtnu/a-z/%s/%s.lists.all-episodes/' % (show, season)).text))`
returns
```
{'het-peulengaleis-s2005-hma10', 'het-peulengaleis-s2005-hma9', 'het-peulengaleis-s2005-hma3', 'het-peulengaleis-s2005-hma6', 'het-peulengaleis-s2005-hma8', 'het-peulengaleis-s2005-hma18', 'het-peulengaleis-s2005-hma11', 'het-peulengaleis-s2005-hma13', 'het-peulengaleis-s2005-hma15', 'het-peulengaleis-s2005-hma16', 'het-peulengaleis-s2005-hma7', 'het-peulengaleis-s2005-hma14', 'het-peulengaleis-s2005-hma17', 'het-peulengaleis-s2005-hma2', 'het-peulengaleis-s2005-hma4', 'het-peulengaleis-s2005-hma12', 'het-peulengaleis-s2005-hma5', 'het-peulengaleis-s2005-hma1'}
```
get the video id (and site_id) from an episode
`requests.get('https://www.vrt.be/vrtnu/a-z/%s/%s/%s.mssecurevideo.json' % (show, season, episode)).json()`
get login token
```
session = requests.session()
username = urllib.parse.quote('<vrtnu username here>', safe='')
password = urllib.parse.quote('<vrtnu password here>', safe='')
auth_data = {
'APIKey': '3_0Z2HujMtiWq_pkAjgnS2Md2E11a1AwZjYiBETtwNE-EoEHDINgtnvcAOpNgmrVGy',
'targetEnv': 'jssdk',
'loginID': username,
'password': password,
'authMode': 'cookie',
}
auth_info = requests.post('https://accounts.eu1.gigya.com/accounts.login', data=auth_data).json()
# When requesting a token, no actual token is returned, but the
# necessary cookies are set.
session.post('https://token.vrt.be',
headers={
'Content-Type': 'application/json',
'Referer': 'https://www.vrt.be/vrtnu/',
},
data=json.dumps({
'uid': auth_info['UID'],
'uidsig': auth_info['UIDSignature'],
'ts': auth_info['signatureTimestamp'],
'email': auth_info['profile']['email'],
}).encode('utf-8'))
token = session.post('https://media-services-public.vrt.be/vualto-video-aggregator-web/rest/external/v1/tokens', headers={'Content-Type': 'application/json'}, data=b'').json()['vrtPlayerToken']
```
get video data
session.get('https://media-services-public.vrt.be/vualto-video-aggregator-web/rest/external/v1/videos/%s?vrtPlayerToken=%s&client=%s@PROD' %(video_id, token, clientid)).json()
{'duration': 1691000, 'skinType': 'vod', 'title': 'Best of: aflevering 3', 'shortDescription': 'Best of: aflevering 3', 'drm': None, 'drmExpired': None, 'aspectRatio': '16:9', 'targetUrls': [{'type': 'hls', 'url': 'https://remix-cf.lwc.vrtcdn.be/remix/ecd69313-4a39-4297-95b1-aede167725b7/remix.ism/.m3u8'}, {'type': 'mpeg_dash', 'url': 'https://remix-cf.lwc.vrtcdn.be/remix/ecd69313-4a39-4297-95b1-aede167725b7/remix.ism/.mpd'}], 'posterImageUrl': 'https://images.vrt.be/orig/2020/04/24/9bfb9a4e-8629-11ea-aae0-02b7b76bf47f.jpg', 'channelId': None, 'playlist': {'content': [{'eventType': 'ONBOARDING', 'duration': 2000, 'skippable': False}, {'eventType': 'STANDARD', 'duration': 1691000, 'skippable': True}]}, 'chaptering': {'content': []}}
go on from here with
https://developer.apple.com/streaming/