freevine goes right nice to me on some sites.
Not on tubi.
For example how to insert the right string for this?
https://tubitv.com/tv-shows/200146709/s01-e02-hard-contract
Support our site by donate $5 directly to us Thanks!!!
Try StreamFab Downloader and download streaming video from Netflix, Amazon!
Try StreamFab Downloader and download streaming video from Netflix, Amazon!
+ Reply to Thread
Results 1,591 to 1,611 of 1611
-
-
and more...
there's no way to obtain a better quality than 640x480 for this?
https://therokuchannel.roku.com/watch/7aa9ded2de505080bf1c326c537ac61e
the script for N_m3u8DL-RE say me this is the better available I can choice -
-
I am sorry if it were asked already somewhere up in this thread (did not read all 51 pages)
ITV
Code:C:\freevine-1.1.8>freevine.py get --info --episode https://www.itv.com/watch/buffy-the-vampire-slayer/10a5896/10a5896a0004 ❯_freevine v1.1.8 07:44:47.532 ←[4m←[32mINFO←[0m : ←[1mITVX←[0m 07:44:47.533 ←[4m←[32mINFO←[0m : + Adding service profile 07:44:48.687 ←[4m←[32mINFO←[0m : Buffy the Vampire Slayer S01E04 Teacher's Pet 07:44:48.688 ←[4m←[32mINFO←[0m : Filename: Buffy.the.Vampire.Slayer.S01E04.Teachers.Pet.504p.ITV.WEB-DL.AAC2.0.H.264 07:44:48.688 ←[4m←[32mINFO←[0m : Subtitles: Yes 07:44:48.733 INFO : N_m3u8DL-RE (Beta version) 20241203 07:44:48.749 INFO : Loading URL: tmp\manifest.mpd 07:44:48.786 INFO : Content Matched: Dynamic Adaptive Streaming over HTTP 07:44:48.786 INFO : Parsing streams... 07:44:48.817 INFO : Extracted, there are 6 streams, with 5 basic streams, 1 audio streams, 0 subtitle streams 07:44:48.818 INFO : Vid *CENC 896x504 | 1703 Kbps | video=1703964 | avc1.64001F | 431 Segments | Main | ~43m05s 07:44:48.818 INFO : Vid *CENC 896x504 | 1403 Kbps | video=1403946 | avc1.64001F | 431 Segments | Main | ~43m05s 07:44:48.818 INFO : Vid *CENC 896x504 | 1103 Kbps | video=1103982 | avc1.64001F | 431 Segments | Main | ~43m05s 07:44:48.819 INFO : Vid *CENC 512x288 | 703 Kbps | video=703988 | avc1.64001F | 431 Segments | Main | ~43m05s 07:44:48.819 INFO : Vid *CENC 512x288 | 503 Kbps | video=503987 | avc1.64001F | 431 Segments | Main | ~43m05s 07:44:48.819 INFO : Aud *CENC audio=96000 | 96 Kbps | mp4a.40.2 | 2CH | 431 Segments | Main | ~43m05s 07:44:48.819 INFO : Parsing streams... 07:44:48.821 INFO : Selected streams: 07:44:48.821 INFO : Vid *CENC 896x504 | 1703 Kbps | video=1703964 | avc1.64001F | 431 Segments | Main | ~43m05s 07:44:48.821 INFO : Aud *CENC audio=96000 | 96 Kbps | mp4a.40.2 | 2CH | 431 Segments | Main | ~43m05s
Code:07:42:19.322 INFO : Content Matched: Dynamic Adaptive Streaming over HTTP 07:42:19.323 INFO : Parsing streams... 07:42:22.566 WARN : Writing meta json 07:42:22.653 INFO : Extracted, there are 6 streams, with 5 basic streams, 1 audio streams, 0 subtitle streams 07:42:22.655 INFO : Vid *CENC 1280x720 | 2612 Kbps | video=2612018 | avc1.640028 | 431 Segments | Main | ~43m05s 07:42:22.656 INFO : Vid *CENC 1024x576 | 1383 Kbps | video=1383503 | avc1.64001F | 431 Segments | Main | ~43m05s 07:42:22.657 INFO : Vid *CENC 1024x576 | 959 Kbps | video=959883 | avc1.64001F | 431 Segments | Main | ~43m05s 07:42:22.658 INFO : Vid *CENC 704x396 | 527 Kbps | video=527180 | avc1.64001F | 431 Segments | Main | ~43m05s 07:42:22.659 INFO : Vid *CENC 704x396 | 422 Kbps | video=422967 | avc1.64001F | 431 Segments | Main | ~43m05s 07:42:22.660 INFO : Aud *CENC audio=96000 | 96 Kbps | mp4a.40.2 | 2CH | 431 Segments | Main | ~43m05s 07:42:27.304 INFO : Parsing streams... 07:42:27.306 INFO : Selected streams: 07:42:27.307 INFO : Vid *CENC 1280x720 | 2612 Kbps | video=2612018 | avc1.640028 | 431 Segments | Main | ~43m05s 07:42:27.309 INFO : Aud *CENC audio=96000 | 96 Kbps | mp4a.40.2 | 2CH | 431 Segments | Main | ~43m05s
sebusLast edited by sebus; 6th Apr 2025 at 02:01.
-
Hi Sebus,
Freevine is no longer supported and it can't get 720p from ITV anymore.
If you use devine instead, you can get 1080p from ITV. -
Hi. You can get the files from here https://files.videohelp.com/u/312095/devine-services.zip (phased upload)
The last time I set devine up I used - https://telegra.ph/Devine-On-Win-v003-04-10 which made it a lot easier. There are other guides that people use as well. -
2025-04-07 16:57:24 [I] ROKU : > All Tracks:
2025-04-07 16:57:24 [I] Tracks : 3 Video Tracks:
2025-04-07 16:57:24 [I] Tracks : ├─ VID | [H.264, SDR] | 648x486 @ 807 kb/s, 29.970 FPS
2025-04-07 16:57:24 [I] Tracks : ├─ VID | [H.264, SDR] | 460x346 @ 440 kb/s, 29.970 FPS
2025-04-07 16:57:24 [I] Tracks : ├─ VID | [H.264, SDR] | 345x260 @ 149 kb/s, 29.970 FPS
2025-04-07 16:57:24 [I] Tracks : 1 Audio Track:
2025-04-07 16:57:24 [I] Tracks : ├─ AUD | [AAC] | [mp4a] | 2.0 | 128 kb/s | en-US | [Original]
2025-04-07 16:57:24 [I] Tracks : 1 Text Track:
2025-04-07 16:57:24 [I] Tracks : ├─ SUB | [VTT] | en | SDH [Original]
Doesn't look like Roku has a better quality, which I guess is to be expected from a show from the 60s. -
Roku is being a pain with detecting Windscribe VPN and such but I am trying to stick with it and archive what I can while I can.
-
I know this is now discontinued but has anyone figured out how to get ITV working again to tide me over? I'm going to try getting devine to work but it took me 4 hours to get freevine working (don't laugh :P) so I need to get another system and probably a few days of time to work on it so I don't break freevine for the services that still work. I've had a look through itv.py but don't have a clue.
Any pointers greatly appreciated and a massive thank you to stabbedbybrick and everyone who makes this happen. Honestly you are heroes.
Code:F:\Temp\freevine>freevine.py get --proxy UK --no-cache --episode https://www.itv.com/watch/classic-coronation-street/2a8013/1a0694a6402 ?_freevine v1.1.8 10:59:57.740 ?[4m?[32mINFO?[0m : ?[1mITVX?[0m 10:59:57.750 ?[4m?[32mINFO?[0m : + Adding Windscribe proxy location: UK Traceback (most recent call last): File "C:\Users\PC1\AppData\Local\Programs\Python\Python312\Lib\site-packages\urllib3\connectionpool.py", line 793, in urlopen response = self._make_request( ^^^^^^^^^^^^^^^^^^^ File "C:\Users\PC1\AppData\Local\Programs\Python\Python312\Lib\site-packages\urllib3\connectionpool.py", line 537, in _make_request response = conn.getresponse() ^^^^^^^^^^^^^^^^^^ File "C:\Users\PC1\AppData\Local\Programs\Python\Python312\Lib\site-packages\urllib3\connection.py", line 466, in getresponse httplib_response = super().getresponse() ^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\PC1\AppData\Local\Programs\Python\Python312\Lib\http\client.py", line 1423, in getresponse response.begin() File "C:\Users\PC1\AppData\Local\Programs\Python\Python312\Lib\http\client.py", line 331, in begin version, status, reason = self._read_status() ^^^^^^^^^^^^^^^^^^^ File "C:\Users\PC1\AppData\Local\Programs\Python\Python312\Lib\http\client.py", line 300, in _read_status raise RemoteDisconnected("Remote end closed connection without" http.client.RemoteDisconnected: Remote end closed connection without response The above exception was the direct cause of the following exception: urllib3.exceptions.ProxyError: ('Unable to connect to proxy', RemoteDisconnected('Remote end closed connection without response')) The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:\Users\PC1\AppData\Local\Programs\Python\Python312\Lib\site-packages\requests\adapters.py", line 486, in send resp = conn.urlopen( ^^^^^^^^^^^^^ File "C:\Users\PC1\AppData\Local\Programs\Python\Python312\Lib\site-packages\urllib3\connectionpool.py", line 847, in urlopen retries = retries.increment( ^^^^^^^^^^^^^^^^^^ File "C:\Users\PC1\AppData\Local\Programs\Python\Python312\Lib\site-packages\urllib3\util\retry.py", line 515, in increment raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.itv.com', port=443): Max retries exceeded with url: /watch/classic-coronation-street/2a8013/1a0694a6402 (Caused by ProxyError('Unable to connect to proxy', RemoteDisconnected('Remote end closed connection without response'))) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "F:\Temp\freevine\freevine.py", line 15, in <module> cli() File "C:\Users\PC1\AppData\Local\Programs\Python\Python312\Lib\site-packages\click\core.py", line 1157, in __call__ return self.main(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\PC1\AppData\Local\Programs\Python\Python312\Lib\site-packages\click\core.py", line 1078, in main rv = self.invoke(ctx) ^^^^^^^^^^^^^^^^ File "C:\Users\PC1\AppData\Local\Programs\Python\Python312\Lib\site-packages\click\core.py", line 1688, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\PC1\AppData\Local\Programs\Python\Python312\Lib\site-packages\click\core.py", line 1434, in invoke return ctx.invoke(self.callback, **ctx.params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\PC1\AppData\Local\Programs\Python\Python312\Lib\site-packages\click\core.py", line 783, in invoke return __callback(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\Temp\freevine\utils\commands.py", line 90, in get Service(config, **kwargs) File "F:\Temp\freevine\services\itv\itv.py", line 47, in __init__ self.get_options() File "F:\Temp\freevine\services\itv\itv.py", line 228, in get_options downloads, title = get_downloads(self) ^^^^^^^^^^^^^^^^^^^ File "F:\Temp\freevine\utils\options.py", line 160, in get_downloads downloads, title = stream.get_episode_from_url(stream.episode) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\Temp\freevine\services\itv\itv.py", line 201, in get_episode_from_url data = self.get_data(url) ^^^^^^^^^^^^^^^^^^ File "F:\Temp\freevine\services\itv\itv.py", line 62, in get_data r = self.client.get(url) ^^^^^^^^^^^^^^^^^^^^ File "C:\Users\PC1\AppData\Local\Programs\Python\Python312\Lib\site-packages\requests\sessions.py", line 602, in get return self.request("GET", url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\PC1\AppData\Local\Programs\Python\Python312\Lib\site-packages\requests\sessions.py", line 589, in request resp = self.send(prep, **send_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\PC1\AppData\Local\Programs\Python\Python312\Lib\site-packages\requests\sessions.py", line 703, in send r = adapter.send(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\PC1\AppData\Local\Programs\Python\Python312\Lib\site-packages\requests\adapters.py", line 513, in send raise ProxyError(e, request=request) requests.exceptions.ProxyError: HTTPSConnectionPool(host='www.itv.com', port=443): Max retries exceeded with url: /watch/classic-coronation-street/2a8013/1a0694a6402 (Caused by ProxyError('Unable to connect to proxy', RemoteDisconnected('Remote end closed connection without response'))) F:\Temp\freevine>
Last edited by octo; 3rd Jun 2025 at 07:33.
-
@octo
ITVx seems to be blocking requests from things that it doesn't believe to be a proper browser, thus preventing freevine from working correctly when it tries to scrape the URL that you send to it. This can easily be overcome by sending the correct headers across to ITVx when you make a request from the program. I have opened an incognito chrome browser and examined the headers that it sends when requesting an ITVx URL and narrowed it down to the ones that it expects, added them to my freevine program and it now works again for me.
In the folder services\itv, edit your itv.py with the following changes. Lines 40-47, starting with class ITV(Config): and ending with self.get_options() replace with the following code making sure to keep the correct number of spaces in front of each line, don't let your editor convert to tabs, each line will have either 4, 8 or 12 spaces in front of it.
Code:class ITV(Config): def __init__(self, config, **kwargs): super().__init__(config, **kwargs) with self.config["download_cache"].open("r") as file: self.cache = json.load(file) self.client.headers = { 'accept': '*/*', 'accept-encoding': 'gzip, deflate', 'accept-language': 'en-US,en;q=0.9', 'sec-fetch-dest': 'document', 'sec-fetch-mode': 'navigate', 'sec-fetch-site': 'none', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36', 'Connection': 'keep-alive' } self.get_options()
I have also got back 720p streaming on ITV by adjusting the headers that are sent before requesting the manifests, this I learned by examining the code that devine uses in its ITV script.
Let me know if this works for you. -
@Jonnyjon869, made sure all spaces are correct but no go still. Hangs on "Getting episode from URL..." then displays the error above. Good work on the custom bits it's all way beyond me.
@billybanana, I tried to find where to put that but it's evading me can you give a hint?
Thanks all. -
Open the itv.py and insert this code
Code:self.client.headers = { 'user-agent': 'okhttp/4.9.3', }
Code:class ITV(Config): def __init__(self, config, **kwargs): super().__init__(config, **kwargs) with self.config["download_cache"].open("r") as file: self.cache = json.load(file) self.client.headers = { 'user-agent': 'okhttp/4.9.3', } self.get_options()
-
@octo, I see now that you are using a Windscribe proxy, my code works if you are accessing ITV directly from within the UK without a proxy, however I cannot find a way to manipulate the headers whilst using Windscribe. Do you need to use the proxy, are you accessing from outside the UK or just trying to disguise your IP address?
-
Gotcha thanks that works but with an SD show it gets 896x504 picture and 96.0 kb/s audio while Devine gets 1024x576 picture and 128 kb/s audio.
I'm very gratefull for Devine but it doesn't as far as I can work out allow to specify output filename and container like freevine does. In that regard I miss freevine dearly. -
@sebus and anyone else that wants to download 720p ITV streams with freevine.
The below code should restore access to 720p streams for ITV, I say should because I have heavily modified my freevine script to add extra command line parameters and other functions so I have had to backport the relevant changes I made to a fresh copy of the itv.py service.
In the folder services\itv, edit your itv.py with the following changes. Lines 115-137, if unmodified, starting with def get_playlist(self, playlist: str) -> tuple: and ending with return mpd_url, lic_url, subtitle replace with the following code:
Code:def get_playlist(self, playlist: str) -> tuple: headers = { "Accept": "application/vnd.itv.vod.playlist.v4+json", "Accept-Language": "en-US,en;q=0.9,da;q=0.8", "Connection": "keep-alive", "Content-Type": "application/json", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36", } payload = { "client": {"version":"4.1","id":"browser","supportsAdPods":True,"service":"itv.x","appversion":"2.320.5"}, "device": {"manufacturer":"Chrome","model":"122.0.0.0","os":{"name":"Windows","version":"10","type":"desktop"},"deviceGroup":"dotcom"}, "user": {}, "variantAvailability": {"player":"dash","featureset": ["mpeg-dash", "widevine", "outband-webvtt", "hd", "single-track"], "platformTag": "dotcom","drm":{"system":"widevine","maxSupported":"L3"}}, } r = self.client.post(playlist, headers=headers, json=payload) r.raise_for_status() data = r.json() video = data["Playlist"]["Video"] media = video["MediaFiles"] mpd_url = f"{media[0].get('Href')}" lic_url = f"{media[0].get('KeyServiceUrl')}" subtitle = video.get("Subtitles") subtitle = f"{subtitle[0].get('Href')}" if subtitle else None return mpd_url, lic_url, subtitle
Alternatively, you can use mobile headers to download the mobile playlist / mpd. This can be a bit hit and miss depending upon the show, sometimes it will give you HD streams which are not available in the desktop version but other times it can give you worse quality streams. Replace the headers / payload strings in the above code with the following:
Code:headers = { "Accept": "application/vnd.itv.vod.playlist.v4+json", "Accept-Language": "en-US,en;q=0.9,da;q=0.8", "Connection": "keep-alive", "Content-Type": "application/json", "user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Mobile Safari/537.36", } payload = { "client": {"version":"4.1","id":"browser","supportsAdPods":True,"service":"itv.x","appversion":"2.320.7"}, "device": {"manufacturer":"Chrome","model":"122.0.0.0","os":{"name":"Android","version":"6.0","type":"mobile"},"deviceGroup":"dotcom"}, "user": {}, "variantAvailability": {"player":"dash","featureset": ["mpeg-dash", "widevine", "outband-webvtt", "hd", "single-track"], "platformTag": "mobile","drm":{"system":"widevine","maxSupported":"L3"}}, }
Code:headers = { "Accept": "application/vnd.itv.vod.playlist.v4+json", "Accept-Language": "en-US,en;q=0.9,da;q=0.8", "Connection": "keep-alive", "Content-Type": "application/json", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36", } payload = { "client": {"id": "lg"}, "device": {"deviceGroup": "ctv"}, "variantAvailability": {"player": "dash", "featureset": ["mpeg-dash", "widevine", "outband-webvtt", "hd", "single-track"], "platformTag": "ctv", "drm": { "system": "widevine", "maxSupported": "L3"}}, }
Last edited by Jonnyjon869; 12th Jun 2025 at 13:02. Reason: update
-
Sorry still doesn't work, even without proxy. I'm sure I'm pasting it in correctly but maybe not. I added the your change in post 1602 and the first code block in post 1608 https://pastebin.com/vWNLmPLd
-
That's very strange, I've copied your pastebin code over my itv.py and it works on my machine.
[Attachment 87380 - Click to enlarge]
You've confirmed that @billybanana code worked for you, and I also find that simpler code of his works for me also. Have you tried mixing the change in post 1605 (which works for you) with the first code block in post 1608 (to get higher resolution)?
Let me know if that solution works. -
It is odd, I'm still using freevine for CH4 and U.
I hadn't no but that works. Thank you so much. Freevine is getting a higher video bitrate stream as well at least on the few files I've checked so far.
For https://www.itv.com/watch/classic-emmerdale/2a8015/Ya0524a4622 devine lists
Code:Videos │ │ ├── [H.264, SDR] | en | 1024x576 @ 1780 kb/s, 25.000 FPS │ │ ├── [H.264, SDR] | en | 1024x576 @ 1116 kb/s, 25.000 FPS │ │ └── [H.264, SDR] | en | 704x396 @ 564 kb/s, 25.000 FPS │ │ 1 Audio │ │ └── [AAC] | en | 2.0 | 128 kb/s
Many thanks all for keeping freevine alive
Similar Threads
-
UK Free to Air Downloader
By A_n_g_e_l_a in forum Video Streaming DownloadingReplies: 610Last Post: 13th Jun 2025, 16:34 -
Video/Screenshot Guide to Freevine/N_m3u8DL-RE downloader for MacOS
By gwilliams1996 in forum Video Streaming DownloadingReplies: 16Last Post: 15th May 2024, 06:14 -
Forcing quality on streaming services
By qnufc in forum Video Streaming DownloadingReplies: 10Last Post: 8th Mar 2024, 17:27 -
Are we going to see all streaming services switching to L1 completely
By Loryanam2 in forum Video Streaming DownloadingReplies: 7Last Post: 5th Mar 2023, 07:37 -
Portable Streaming DownLoader for XMovies8?
By KermitJ in forum Video Streaming DownloadingReplies: 0Last Post: 27th Sep 2019, 10:44