Open garyvdm opened 1 year ago
It's a JS application so there's no easy win. The site script and/or network traffic would have to be analysed to determine if an extractor is possible.
The site script and/or network traffic would have to be analysed
The link in OP doesn't work for me, but this one below does:
https://watch.evod.co.za/player/36728/stream?assetType=movies&playlist_id=8
BTW, I didn't have to log-in for playback to commence... 😜
Basically, they're using the Brightcove framework to deliver their streams; at this time, it appears "in the clear" (i.e. without DRM):
https://beacon.playback.api.brightcove.com/etv/api/assets/36728
("device_type, device_layout are required" if tried on its own)
Their Brightcove account id is: "bc_account_id": "6195169123001"
POST: https://beacon.playback.api.brightcove.com/etv/api/assets/36728/streams/11567
GET: https://beacon.playback.api.brightcove.com/etv/api/assets/36728/streams/11567/related
("device_type, device_layout, layout_id are required" if tried on its own))
GET: https://edge.api.brightcove.com/playback/v1/accounts/6195169123001/videos/6290129032001
(requires request header below:
Accept application/json;pk=BCpkADawqM1IM5wmrZIO6d3tl4Md7LUkg7QegiZZDkWTtHbcugAhH5ArMphQ033ih5XsXS4aYAJxUB53UxkQIIyyaOKPxlnUgGko5H9VPFd238g6NW9bbBW5KF7o_DveKsjI1MyjRGEJEibN
); streams (+subtitles+thumbnails) are then returned in the BODY of the response (prettified):
{
"poster": "https://cf-images.eu-west-1.prod.boltdns.net/v1/static/6195169123001/b0c13c02-270a-4fd0-893b-09ca60025aeb/778e410c-951b-4673-8a60-559055696cb4/3840x2160/match/image.jpg",
"thumbnail": "https://cf-images.eu-west-1.prod.boltdns.net/v1/static/6195169123001/b0c13c02-270a-4fd0-893b-09ca60025aeb/0ae1edef-9104-41ae-bf8a-b955763ebe36/800x450/match/image.jpg",
"poster_sources": [
{
"src": "https://cf-images.eu-west-1.prod.boltdns.net/v1/static/6195169123001/b0c13c02-270a-4fd0-893b-09ca60025aeb/778e410c-951b-4673-8a60-559055696cb4/3840x2160/match/image.jpg"
}
],
"thumbnail_sources": [
{
"src": "https://cf-images.eu-west-1.prod.boltdns.net/v1/static/6195169123001/b0c13c02-270a-4fd0-893b-09ca60025aeb/0ae1edef-9104-41ae-bf8a-b955763ebe36/800x450/match/image.jpg"
}
],
"description": null,
"tags": [
"comedy",
"highschool",
"love",
"raunchy",
"romance",
"seduction",
"teen"
],
"cue_points": [
{
"id": "6309495847001",
"name": "AD 1",
"type": "AD",
"time": 900,
"metadata": null,
"force_stop": false
},
{
"id": "6309495848001",
"name": "AD 2",
"type": "AD",
"time": 1800,
"metadata": null,
"force_stop": false
},
{
"id": "6309495849001",
"name": "AD 3",
"type": "AD",
"time": 2700,
"metadata": null,
"force_stop": false
},
{
"id": "6309495850001",
"name": "AD 4",
"type": "AD",
"time": 3600,
"metadata": null,
"force_stop": false
},
{
"id": "6309495851001",
"name": "AD 5",
"type": "AD",
"time": 4500,
"metadata": null,
"force_stop": false
},
{
"id": "6309495852001",
"name": "AD 6",
"type": "AD",
"time": 5400,
"metadata": null,
"force_stop": false
}
],
"custom_fields": {
"beacon_agerating": "za=18",
"beacon_cast_actor": "Cary Elwes, Dylan McDermont",
"beacon_cast_director": "Tim Garrick",
"beacon_genre": "Comedy",
"beacon_ingest": "Yes",
"beacon_longdescription": "In this racy teen comedy, Rick Stevens (Nat Wolff) is willing to do whatever it takes to try to win the heart of beautiful Nina Pennington (Selena Gomez). Even if this means dealing with a mobster's son, a group of strippers, his best friend's mother, his drug abusing boss, a perverted principal, a priest with a secret, his suicidal mother, and a patron saint who dispenses cryptic advice. No one ever said love was easy.",
"beacon_productionyear": "2013",
"beacon_rights_0_adconfiguration": "d952c254-37fc-45cb-b837-40cbfd370fc9",
"beacon_rights_0_devices": "iOS, Android, web, appletv, androidtv",
"beacon_rights_0_enddate": "2025-11-30",
"beacon_rights_0_locationspermit": "South Africa",
"beacon_rights_0_packagename": "eVOD Free, Daily, eVOD Weekly, eVOD Monthly, eVOD Monthly APP",
"beacon_rights_0_startdate": "2022-02-03",
"beacon_rights_0_type": "SVOD",
"beacon_shortdescription": "18L - In his quest to win the heart of the most beautiful girl in school (Selena Gomez), lovestruck teenager Rick (Nat Wolff) suffers uncomfortable racy experiences and must deal with his bestie's mom, a drug-abusing boss, a taciturn priest and the mob.",
"beacon_video_type": "movie"
},
"account_id": "6195169123001",
"sources": [
{
"codecs": "avc1,mp4a",
"ext_x_version": "4",
"src": "http://manifest.prod.boltdns.net/manifest/v1/hls/v4/clear/6195169123001/b0c13c02-270a-4fd0-893b-09ca60025aeb/10s/master.m3u8?fastly_token=NjNmODY2YzRfMWZlNGY0OTFlNzM5M2YzNGJlZjE4ZTlhOTIzNTM0YzQxMGMwNmFlNWRkOGFjODM1ZjQ3ZGZlZjViYzU3NjM2OQ%3D%3D",
"type": "application/x-mpegURL"
},
{
"codecs": "avc1,mp4a",
"ext_x_version": "4",
"src": "https://manifest.prod.boltdns.net/manifest/v1/hls/v4/clear/6195169123001/b0c13c02-270a-4fd0-893b-09ca60025aeb/10s/master.m3u8?fastly_token=NjNmODY2YzRfMWZlNGY0OTFlNzM5M2YzNGJlZjE4ZTlhOTIzNTM0YzQxMGMwNmFlNWRkOGFjODM1ZjQ3ZGZlZjViYzU3NjM2OQ%3D%3D",
"type": "application/x-mpegURL"
},
{
"codecs": "avc1,mp4a",
"profiles": "urn:mpeg:dash:profile:isoff-live:2011",
"src": "http://manifest.prod.boltdns.net/manifest/v1/dash/live-baseurl/clear/6195169123001/b0c13c02-270a-4fd0-893b-09ca60025aeb/6s/manifest.mpd?fastly_token=NjNmODY2YzRfODViZmMwZWY1Mzc1ZDg0ZjNiMmE2MWQ5MTg3OWFiOTA1NWIxN2E5MjkwNDU0MjA2YWE4Mjc4YmMxNDU4OTFhZg%3D%3D",
"type": "application/dash+xml"
},
{
"codecs": "avc1,mp4a",
"profiles": "urn:mpeg:dash:profile:isoff-live:2011",
"src": "https://manifest.prod.boltdns.net/manifest/v1/dash/live-baseurl/clear/6195169123001/b0c13c02-270a-4fd0-893b-09ca60025aeb/6s/manifest.mpd?fastly_token=NjNmODY2YzRfODViZmMwZWY1Mzc1ZDg0ZjNiMmE2MWQ5MTg3OWFiOTA1NWIxN2E5MjkwNDU0MjA2YWE4Mjc4YmMxNDU4OTFhZg%3D%3D",
"type": "application/dash+xml"
},
{
"avg_bitrate": 2098000,
"codec": "H264",
"container": "MP4",
"duration": 5562432,
"height": 720,
"size": 1462306598,
"src": "http://bc-evod.akamaized.net/media/v1/pmp4/static/clear/6195169123001/b0c13c02-270a-4fd0-893b-09ca60025aeb/ef2afbfa-be9e-49d6-9a8f-03c98cde90f6/main.mp4",
"width": 1280
},
{
"avg_bitrate": 2098000,
"codec": "H264",
"container": "MP4",
"duration": 5562432,
"height": 720,
"size": 1462306598,
"src": "https://bc-evod.akamaized.net/media/v1/pmp4/static/clear/6195169123001/b0c13c02-270a-4fd0-893b-09ca60025aeb/ef2afbfa-be9e-49d6-9a8f-03c98cde90f6/main.mp4",
"width": 1280
}
],
"name": "Behaving Badly",
"reference_id": null,
"long_description": null,
"duration": 5562432,
"economics": "AD_SUPPORTED",
"text_tracks": [
{
"id": null,
"account_id": "6195169123001",
"src": "http://manifest.prod.boltdns.net/thumbnail/v1/6195169123001/b0c13c02-270a-4fd0-893b-09ca60025aeb/f09950ff-7de5-4cc5-b77f-e059d96652c5/thumbnail.webvtt?fastly_token=NjNmODY2YzRfMGUxZWM2ZTA1ZWIzODI2MzY2ZjZjY2EwODA5ZWI5OTk4NDU5MDFlNzdlMGZmMTc2NWRlZWU3ZmQwZjExMDMzYg%3D%3D",
"srclang": null,
"label": "thumbnails",
"kind": "metadata",
"mime_type": "text/webvtt",
"asset_id": null,
"sources": null,
"default": false,
"width": 480,
"height": 270,
"bandwidth": 442
},
{
"id": null,
"account_id": "6195169123001",
"src": "https://manifest.prod.boltdns.net/thumbnail/v1/6195169123001/b0c13c02-270a-4fd0-893b-09ca60025aeb/f09950ff-7de5-4cc5-b77f-e059d96652c5/thumbnail.webvtt?fastly_token=NjNmODY2YzRfMGUxZWM2ZTA1ZWIzODI2MzY2ZjZjY2EwODA5ZWI5OTk4NDU5MDFlNzdlMGZmMTc2NWRlZWU3ZmQwZjExMDMzYg%3D%3D",
"srclang": null,
"label": "thumbnails",
"kind": "metadata",
"mime_type": "text/webvtt",
"asset_id": null,
"sources": null,
"default": false,
"width": 480,
"height": 270,
"bandwidth": 442
}
],
"published_at": "2022-01-05T13:15:29.329Z",
"created_at": "2022-01-05T13:15:29.318Z",
"updated_at": "2022-06-08T07:33:16.753Z",
"offline_enabled": false,
"link": null,
"id": "6290129032001",
"ad_keys": null
}
Standalone MP4 containers, as well as stream fragments, are served from an Akamai bc-evod.akamaized.net
hostname/CDN...
I wouldn't rule out some content being geo-fenced for non-ZA IPs...
Should be doable 😄 ...
Checklist
Example URLs
Description
eVOD is a online version of a South African TV Channel. It requires an account to be created, but is free of charge.