I'm saving that one for the v1.0.0 launch
There aren't any specific options for it programmed at the moment, but you can do it by making some changes in the config file.Originally Posted by liongtwap
That will download audio only with separate subtitle files.Code:subtitles: no_mux: "true" video: "id=X"
There aren't any clean ways of downloading only audio or only subtitles, but it's a relatively easy thing to implement so I'll probably add it in a future update.
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 121 to 150 of 1612
-
-
got error from the roku channel
Code:raise ValueError("unknown url type: %r" % self.full_url) ValueError: unknown url type: '/audio_codec:AACL,AACH;subtitle_language:unused'
Code:freevine.py -m https://therokuchannel.roku.com/details/843491f520fd54a7a60ef6b3c25d7ceb
-
@iamghost:
Looks like this particular title had a different manifest structure than others. It's been fixed and will be included in the next update.
Thanks for letting me know -
Thanks for the tool, great stuff.
I have a question: is it possible to disable the check for a CDM or delete that part from the script so I can DL a series from pluto that isn't protected? I'm grabbing it with yt-dlp atm but I have to manually grab every link and theres tons of episodes, would be cool if I could paste the season link to freevine. -
Both encrypted and non-encrypted streams should already work as is. You need to have the pywidevine module in there to properly run the program, but there's no need for any CDM if there's no DRM.
Just make sure to check available episodes with --titles beforehand. Pluto is the absolute worst when it comes to gaps in library and inconsistent labels. -
New update! v0.5.9-beta (20231019):
Settings:
I've expanded the config options to allow for each service to have its own settings. You can now choose what video or audio track to include or drop per service instead of having to change the main config each time. So if you regularly use several services, you can set each service to do its own thing.
You'll find it in /services/config folder.
Subtitles:
I've added --subtitles to the command options to download subtitles only (if available).
BBC iPlayer and Tubi might groan a bit, but it should work.
Minor fixes:
Fixed search function to not break when being geo blocked.
Fixed the occasional MPD error for Roku -
Small bug.
By default, I alter the subtitles options for 'no_mux' and 'clean'. In other words, change false to true and true to false respectively.
This has worked flawlessly since it was implemented.
Using v0.5.9-beta (20231019), no subtitles are downloaded at all, subtitles are muxed, thus ignoring the main config changes. BBC, Ch4 or Ch5. I haven't tried any of the others yet.
To make this work I had to replicate my changes in the respective channel config yaml files.
No biggie, things still work and maybe this is now by design.Last edited by sipho; 20th Oct 2023 at 03:42.
-
Yeah, it was by design. But now that I think about it, it's needlessly complicated. It's better to remove the video, audio and subtitle settings from the main config and leave those completely up to each service. Since they all ship with the default settings and get injected into the main config on runtime, there's no need for them to be in the main config at all.
Thanks for the feedback, as always. As this thing grows, I'll need it to keep the whole thing from becoming a huge mess. -
working great so far but i think i've found an issue,
when trying to grab --episode s02e01 https://www.channel5.com/show/22-kids-counting it errors i think its because when viewing the titles from that show that episode shows :
20:35:08.491 INFO : 22 Kids & Counting S02E01 22 Kids & Counting at Christmas -
Small update v0.6.0-beta (20231022):
Labels are mostly fixed, including the duplicates on ITV. Seasons and episodes without any clear numbering will no longer display "00", but will simply display their names. Numbers will only show if they actually have them (which is most of the time). For those occasions where labels don't follow standard, I've added so that you can use the name to download episodes:
Code:python freevine.py -e "EastEnders 01/05/2023" https://www.bbc.co.uk/iplayer/episodes/b006m86d python freevine.py -e "S07 Week 1: Monday" https://www.bbc.co.uk/iplayer/episodes/b094mjv0/richard-osmans-house-of-games
------------------
And with this update, most of the basic functionality is implemented. From here, new releases will probably slow down a bit. I'll continue to add and fix stuff in the main branch, so for those of you who use that will always be up-to-date, but official releases will be saved for bigger changes. I'm sure you guys are tired of being notified of new updates every other day.
Don't hesitate to suggest new features, though. If you have some cool ides, I'd love to hear about it. -
yeah, I must admit I prefered it when settings were done in the main config.yaml. I can't understand why folks would want different settings for different channels. I had config.yaml so that subs were separate and mp4 file. The most important change (ie. quality) could be done by using the -q argument anyway.
Now, I have to adjust all the services yaml files, (a whole bunch of them) instead of just the one config.yaml. Also, if extra things are added to these services yaml files with future updates, it means having to edit a whole load of them again. It was bad enough just having to change the one config.yaml which I've had to with various updates.
But hey, just an observation and let's face it, just my personal choice. Still, superb software.
@stabbedbybrick you've added an option for selecting the audio stream. The main troublesome one is CH4. We can sometimes have 2 'best' audio:
Code:audio=128000 m4a audio only │ 128k dash │ audio only mp4a.40.2 128k 48k DRM, DASH audio, m4a_dash audio_eng=128000 m4a audio only │ 128k dash │ audio only mp4a.40.2 128k 48k [en] DRM, DASH audio, m4a_dash
-
Hi guys, having an issue with naming convention for Roku Channel for single episodes.
Code:C:\ffmpeg\bin\freevine-main>python freevine.py --episode S01E01 https://therokuchannel.roku.com/watch/c416d2ab510f52a1945222870d0000d1 11:48:08.482 INFO : Freevine v0.6.0-beta (20231022) 11:48:09.128 INFO : The Roku Channel Traceback (most recent call last): File "C:\ffmpeg\bin\freevine-main\freevine.py", line 46, in <module> main() File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1157, in __call__ return self.main(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1078, in main rv = self.invoke(ctx) ^^^^^^^^^^^^^^^^ File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1434, in invoke return ctx.invoke(self.callback, **ctx.params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 783, in invoke return __callback(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\ffmpeg\bin\freevine-main\freevine.py", line 40, in main Service(config, **kwargs) File "C:\ffmpeg\bin\freevine-main\services\roku.py", line 50, in __init__ self.get_options() File "C:\ffmpeg\bin\freevine-main\services\roku.py", line 236, in get_options content, title = self.get_content(self.url) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\ffmpeg\bin\freevine-main\services\roku.py", line 187, in get_content content = self.get_series(url) ^^^^^^^^^^^^^^^^^^^^ File "C:\ffmpeg\bin\freevine-main\services\roku.py", line 77, in get_series episodes = asyncio.run(self.get_titles(data)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 190, in run return runner.run(main) ^^^^^^^^^^^^^^^^ File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 118, in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 653, in run_until_complete return future.result() ^^^^^^^^^^^^^^^ File "C:\ffmpeg\bin\freevine-main\services\roku.py", line 70, in get_titles for x in data["episodes"] ~~~~^^^^^^^^^^^^ KeyError: 'episodes'
Hoping to get some advice please -
You know I don't think this is possible for CH4. If they were consistent in their naming of the audio streams, then a simple regex would suffice but they don't unfortunately.
I use the AD track so for me it's dead easy to check in post and then either
1. leave it as is (most of the time it's this)
2. remove the AD track
3. set the normal track as the default track (sometimes they make the AD track the default)
Maybe (hopefully) I'm wrong and Stabby has a solution hidden in a crack in the wall. -
-
The reasoning behind having separate settings is for people who regularly use different services to "set it and forget it" without having to edit the main config every single time you use the program. All these services have their own quirks in regards to track selection, and the video and audio options go beyond just "best" and "worst". You can specify tracks by id, resolution, language, codec, duration etc. For example, you can set Roku to download the best 1080p option and the non-dolby audio track, while setting Channel4 to download the non-AD track and the next best 1080p option. All without having to edit the main config every time. That is a massive improvement in functionality in my mind.
When it comes to having to edit the config files, that's a limitation of using .zip files more than anything. Every time you download a new update as a .zip file, it's like you're downloading the portable version of a software. It's impossible for local settings to remain when downloading a portable version of anything; they would have to be replaced manually. Whereas if you're using Git, it's like you're updating an existing installation and the old merges with the new.
As for the audio stream on Channel4, you select the track by its id:
Code:audio: track: "id=audio_eng=128000"
-
-
@stabbedbybrick Thank you for all your hard work and for your reply, yes indeed that was my error. Many Thanks for what you do for this community
-
I was trying to d/l a couple of episodes from iPlayer.
I get this error:
ERROR: Segment count check not pass, total: 927, downloaded: 916
Tried couple of times again, same error.
when I look at temp folder it has all 927 m4s files.
Another episode was fixed after I tried second time.
Running the latest Freevine v0.6.0-beta (20231022)
Any resolution? Thanks. -
-
This one with segment mismatch:
python freevine.py -q 720p https://www.bbc.co.uk/iplayer/episode/p0bvgvt3/art-that-made-us-series-1-2-revolution-of-the-dead
Code:PS C:\freevine> python freevine.py -q 720p https://www.bbc.co.uk/iplayer/episode/p0bvgvt3/art-that-made-us-series-1-2-revolution-of-the-dead 07:06:27.985 INFO : Freevine v0.6.0-beta (20231022) 07:06:28.136 INFO : BBC iPlayer 07:06:39.979 INFO : Art That Made Us S01E02 Revolution of the Dead 07:06:40.508 INFO : N_m3u8DL-RE (Beta version) 20230628 07:06:40.531 INFO : Loading URL: tmp\manifest.mpd 07:06:40.534 INFO : Content Matched: Dynamic Adaptive Streaming over HTTP 07:06:40.534 INFO : Parsing streams... 07:06:40.602 WARN : Writing meta json 07:06:40.603 INFO : Extracted, there are 6 streams, with 5 basic streams, 1 audio streams, 0 subtitle streams 07:06:40.603 INFO : Vid 1920x1080 | 8490 Kbps | video=12000000 | avc3.640020 | 926 Segments | ~59m15s 07:06:40.604 INFO : Vid 1280x720 | 5070 Kbps | video=5070000 | avc3.640020 | 926 Segments | ~59m15s 07:06:40.604 INFO : Vid 960x540 | 2812 Kbps | video=2812000 | avc3.64001F | 926 Segments | ~59m15s 07:06:40.605 INFO : Vid 704x396 | 1570 Kbps | video=1570000 | avc3.64001F | 926 Segments | ~59m15s 07:06:40.605 INFO : Vid 704x396 | 827 Kbps | video=827000 | avc3.4D401F | 926 Segments | ~59m15s 07:06:40.605 INFO : Aud audio_eng_1=128000 | 128 Kbps | mp4a.40.2 | en | 2CH | 926 Segments | ~59m15s 07:06:40.606 INFO : Parsing streams... 07:06:40.610 INFO : Selected streams: 07:06:40.610 INFO : Vid 1280x720 | 5070 Kbps | video=5070000 | avc3.640020 | 926 Segments | ~59m15s 07:06:40.611 INFO : Aud audio_eng_1=128000 | 128 Kbps | mp4a.40.2 | en | 2CH | 926 Segments | ~59m15s 07:06:40.611 WARN : Writing meta json 07:06:40.612 INFO : Save Name: Art.That.Made.Us.S01E02.Revolution.of.the.Dead.720p.iP.WEB-DL.AAC2.0.H.264 07:06:40.612 WARN : MuxAfterDone is detected, binary merging is automatically enabled 07:06:40.613 INFO : Start downloading...Vid 1280x720 | 5070 Kbps | video=5070000 | avc3.640020 07:06:40.614 INFO : Start downloading...Aud audio_eng_1=128000 | 128 Kbps | mp4a.40.2 | en | 2CH 07:06:40.615 WARN : Reading media info... 07:06:40.679 INFO : [0x1]: Video, h264 (avc3), 1280x720 07:06:42.284 WARN : Reading media info... 07:06:42.333 INFO : [0x1]: Audio, aac (mp4a), 128 kb/s 07:07:47.524 ERROR: Segment count check not pass, total: 927, downloaded: 916. 07:08:24.231 INFO : Binary merging... 07:08:24.490 ERROR: Failed Traceback (most recent call last):
-
It's working perfectly fine over here, so this is likely a local error on your end. And I'm not entirely sure what the reason could be as I've never seen that error before.
Maybe try reducing the threads in the config and see if that's whats causing the fragments to get a mismatch? -
For the most part, everything has been working. Thanks for the script!
1. I get the mismatched segments too from ITV and BBC, but I just assumed those services just don't like the VPN I am using.
2. For some reason, this specific episode doesn't work.
Code:D:\freevine>python freevine.py --titles https://www.channel5.com/show/ben-fogle-new-lives-in-the-wild/season-12 09:22:43.020 INFO : Freevine v0.5.8-beta (20231015) 09:22:43.520 INFO : My5 TV 09:22:44.675 INFO : Ben Fogle: New Lives in the Wild: 12 Season(s), 83 Episode(s) (snip) 09:22:44.710 INFO : Ben Fogle: New Lives in the Wild S12E01 New Zealand Revisit 09:22:44.710 INFO : Ben Fogle: New Lives in the Wild S12E02 Georgia 09:22:44.710 INFO : Ben Fogle: New Lives in the Wild S12E03 Australia 09:22:44.710 INFO : Ben Fogle: New Lives in the Wild S12E04 Arkansas 09:22:44.710 INFO : Ben Fogle: New Lives in the Wild S12E05 Fiji, Pacific Ocean 09:22:44.710 INFO : Ben Fogle: New Lives in the Wild S12E06 British Columbia, Canada (snip) D:\freevine>python freevine.py --episode s12e03 https://www.channel5.com/show/ben-fogle-new-lives-in-the-wild/season-12 09:23:07.233 INFO : Freevine v0.5.8-beta (20231015) 09:23:07.359 INFO : My5 TV 09:23:08.217 INFO : Ben Fogle: New Lives in the Wild: 12 Season(s), 83 Episode(s) Traceback (most recent call last): File "D:\freevine\freevine.py", line 48, in <module> main() File "c:\users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1130, in __call__ return self.main(*args, **kwargs) File "c:\users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1055, in main rv = self.invoke(ctx) File "c:\users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File "c:\users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 760, in invoke return __callback(*args, **kwargs) File "D:\freevine\freevine.py", line 42, in main Service(config, srvc, **kwargs) File "D:\freevine\services\channel5.py", line 50, in __init__ self.get_options() File "D:\freevine\services\channel5.py", line 247, in get_options self.download(download, title) File "D:\freevine\services\channel5.py", line 252, in download res, pssh = self.get_mediainfo(manifest, self.quality) File "D:\freevine\services\channel5.py", line 150, in get_mediainfo pssh = self.get_pssh(self.soup) File "D:\freevine\services\channel5.py", line 139, in get_pssh .attrs.get("cenc:default_KID") AttributeError: 'NoneType' object has no attribute 'attrs'
4. Any chance you will change the script to use the pywidevine python module instead of the old WKS-KEYS pywidevine? I got it working with the newer WKS-KEYS pywidevine but if you use the pywidevine module, no outside code would be needed and no conflict with different protobuf versions.
5. As for future features, how about chapter breaks? or other free services like CBC in Canada, and the various Australian networks (Seven, Nine, ABC, Network 10)? -
-
Regarding Aussie networks, a bit of offtopic: is there any VPN out there whose AU servers aren't slow as mud?
-
You're very welcome!
First of all, your version is outdated. The newest release is v0.6.0-beta, with the main branch receiving the newest updates.
1. The mismatched segments, I genuinely don't know what's the cause. I'll try to investigate, but I've never seen it even after downloading hundreds of videos.
Try using N_m3u8DL-RE to download the videos manually, outside of the script, and see if you get the same errors. That would at least point us in the right direction.
2. You managed to find an episode where the mpd URL wasn't formatted the same as the rest. It's relatively common on these services and should be an easy fix.
3. This shouldn't be a problem in the updated version. It will always save in a folder with the series name, but season folders will be skipped if "false" or if there is no official season.
4. Not sure. I tend to forget that some people don't separate their projects into virtual environments where this isn't an issue. But I'm not unreasonable, so if that's something people want maybe?
5. Adding chapter breaks is a lot of work for little benefit, so probably not. As for adding new services, I don't have any immediate plans for new ones. But if there is a particular service with good content not found anywhere else, that would be something worth looking into. -
2. Should I try to find the MPD URL or is this something you can fix in a future update?
3. Oh, I see. I thought the option was to put all episodes into the 'download' directory with no directories at all. In that case, I suggest allowing that as an option. And also an option to customize the season directory naming in the same way that you can customize filenames.
4. Right now, in your setup instructions, a person has to download a .zip file with WKS-KEYS pywidevine from some third party website. I think just for cleanliness of the install process, using the pywidevine module as another python dependency is better.
5. For your consideration, all of the services I mentioned has original content. CBC has their own originals. And Australian TV is really its own ecosystem. Lots of originals and also many Australian versions of many tv franchises, particularly reality tv. Also, all will provide unique Olympics coverage. -
2. No, you don't have to find anything. I looks like the issue is that this particular episode doesn't offer 1080p for some reason. I'll look into it.
3. You actually want a messy "download" folder with everything inside? The thought alone sends shivers down my overly organized spine :P
4. I see your point. But adding a tiny folder is also a nice alternative to a bloated pip installation. Especially at this point in development. People also seem thoroughly confused by .wvd files, which is an additional headache I'm not sure I want to deal with.
5. CBC has been requested a few times now, so I'll look into it.
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