Ah well done! Finally we are getting somewhere, thank you!
See \devine\core\tracks.py lines 104-111
I'm wondering if we add BT_2020_HLG = 18 would that fix the issue?Code:class Transfer(Enum): Unspecified = 0 BT_709 = 1 BT_601 = 6 BT_2020 = 14 BT_2100 = 15 BT_2100_PQ = 16 BT_2100_HLG = 18
@stabbedbybrick @pssh any ideas?
If it helps asking devine to download only the video file with -V results in an mkv with the correct colour characteristics: HLG
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,351 to 1,365 of 1365
-
Last edited by PunchDrunkL0ve; 7th Feb 2025 at 12:21.
-
TUBI has been updated. Authorization with cookies no-longer required and slightly better bitrate than before (still 720p, though). Geofence has been removed, so as long as you connect from the region where the title is available it should work. If not, the error will tell you what region(s) the title is available in. And due to requests downloader not giving any output, and n_m3u8dl_re can't handle the DASH for some reason, Aria2c has been set as downloader in the service itself.
The update caused the search to break, though. I might look at that some other time, but at least the important stuff works for now. -
Great find @PunchDrunkL0ve, I don't have a GitHub account ....
Searching on my system:
Code:grep -r BT_2100_HLG
Code:devine/devine/core/tracks/video.py: BT_2100_HLG = 18 devine/devine/core/tracks/video.py: elif transfer == Transfer.BT_2100_HLG:
https://github.com/stabbedbybrick/devine/blob/n_m3u8dl_re/devine/core/tracks/video.py#L111
On the other hand, if I check for "HLG" only, I get the following:
Code:devine/devine/core/tracks/video.py: HLG = "HLG" # https://en.wikipedia.org/wiki/Hybrid_log%E2%80%93gamma devine/devine/core/tracks/video.py: BT_2100_HLG = 18 devine/devine/core/tracks/video.py: elif transfer == Transfer.BT_2100_HLG: devine/devine/core/tracks/video.py: return Video.Range.HLG devine/devine/core/tracks/video.py: elif tag == "HLG": devine/devine/core/tracks/video.py: return Video.Range.HLG grep: devine/devine/core/tracks/__pycache__/video.cpython-312.pyc: binary file matches devine/devine/core/titles/episode.py: elif trc and "HLG" in trc: devine/devine/core/titles/episode.py: name += " HLG" devine/devine/core/titles/movie.py: elif trc and "HLG" in trc: devine/devine/core/titles/movie.py: name += " HLG" grep: devine/devine/core/titles/__pycache__/movie.cpython-312.pyc: binary file matches grep: devine/devine/core/titles/__pycache__/episode.cpython-312.pyc: binary file matches devine/devine/core/downloaders/n_m3u8dl_re.py:VIDEO_CODEC_MAP = {"AVC": "avc", "HEVC": "hvc", "DV": "dvh", "HLG": "hev"} devine/devine/core/downloaders/n_m3u8dl_re.py: ("HEVC", "HLG"): "HLG"
@stabbedbybrick what do you think?
Is Devine not based on VT?
(apart from "-nm" not implemented -
So I finally put the time and effort in today to try and get Devine working and I can finally say I’ve done it. Its working as expected and I’ve also downloaded UHD videos from BBC, which I’m really happy with. Thank you for everyone that has helped me over the past year, and to pssh for the great guide to getting it setup.
Now I’ve mastered downloading videos using Devine, is there a guide or tips for creating my own services? -
-
-
Code:
git -C "W:\APPLICATIONS_DESKTOP\git_stabbedbybrick_devine-services" pull --ff-only; git -C "W:\APPLICATIONS_DESKTOP\git_stabbedbybrick_devine-services" fetch --force origin 'refs/tags/*:refs/tags/*' remote: Enumerating objects: 11, done. remote: Counting objects: 100% (11/11), done. remote: Compressing objects: 100% (6/6), done. remote: Total 6 (delta 3), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (6/6), 1.82 KiB | 45.00 KiB/s, done. From https://cdm-project.com/stabbedbybrick/devine-services b65c6b7..b4d7f7a main -> origin/main Updating b65c6b7..b4d7f7a Fast-forward services/TUBI/__init__.py | 169 +++++++++++++++++++++++++++------------------- services/TUBI/config.yaml | 4 +- 2 files changed, 100 insertions(+), 73 deletions(-) devine env clear cache TUBI devine dl TUBI https://tubitv.com/movies/100032304/passengers
-
That class is only for detecting video range from the transfer value specified in the manifest and won't affect the muxing process.
If you want to experiment with mkvmerge options, check mux() function at the bottom of core/tracks/tracks.py.
I don't know why you'd think so, but no. It's existed for well over 10 years and is completely open source. You can even build it yourself if you wanted to. -
│
│ _ ___ ____ __ │
│ | | / (_)__ ___ / __/__ ___ ___/ /__ ____ │
│ | |/ / / _ \/ -_) _// -_) -_) _ / -_) __/ │
│ |___/_/_//_/\__/__/ \__/\__/\_,_/\__/_/ │
│ │
│ │
│ A front-end for Devine │
│ Copyright © 2024 A_n_g_e_l_a │
│ https://github.com/vinefeeder │
│ │
│ python vinefeeder.py --help for options │
│ │
│ │
│ │
╰───────────────────────────────────────────────── ─────────────────────────────╯
[info] Loaded service: ALL4
Searching for four-in-a-bed
╭──────────── info ────────────╮
│ │
│ Data for Four In A Bed │
│ Series are non-contiguous: │
│ 2 3 4 5 6 8 9 │
│ 10 11 12 13 14 15 16 │
│ 17 18 19 20 │
│ │
╰──────────────────────────────╯
Series to download? 2
/ __ \/ ____/ | / / _/ | / / ____/
/ / / / __/ | | / // // |/ / __/
/ /_/ / /___ | |/ // // /| / /___
/_____/_____/ |___/___/_/ |_/_____/
⠀
v3.3.3 Copyright © 2019-2025 rlaphoenix
https://github.com/devine-dl/devine
Service Config loaded
Loaded Cdm Widevine CDM: 22589 (L3)
Loaded 0 Vaults
────────────────────────────── Service: ALL4 ───────────────────────────────
Service is not Geoblocked in your region
+ Using cached Tokens...
Authenticated with Service
────────────────────────── Series: Four in a Bed ───────────────────────────
1 Season, 1 Episode
────── Four in a Bed S02E01 Mon 30 May 2011: Robertsbrook Guesthouse ───────
Cached 1 Key to 0/0 Vaults
[Widevine]: ERROR: Unknown command line flag
'enable_raw_key_decryption' ERROR: Unknown command line
flag 'keys'. Did you mean: v ? ERROR: Unknown command line
flag 'temp_dir'
1 Video
└── [H.264, SDR] | en | 1920x1080 @ 2986 kb/s, 25.000 FPS
⠏ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • Decrypting
1 Audio
└── [AAC] | en | 2.0 | 130 kb/s
⠏ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • FAILED
1 Subtitle
└── [VTT] | en
⠏ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • SKIPPED
3 Chapters
├── 00:00:00.000 | Chapter 01
├── 00:09:35.000 | Chapter 02
└── 00:23:05.880 | Credits
Widevine(AAAANHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAA BQIARIQAAAAAAAAAAAAA
AAAAzYoVQ==)
├── 00000000000000000000000003362855:d127d5c9228264bd0 e24e4bc2d4c4945*
└── An exception occurred in the Service's license function: License
request failed: The token has already expired (te value)
╭───────────────────── Traceback (most recent call last) ──────────────────────╮
│ C:\Users\manwei\AppData\Local\Programs\Python\Pyth on312\Lib\site-packages\de │
│ vine\commands\dl.py:540 in result │
│ │
│ 537 │ │ │ │ │ │ │ ) │
│ 538 │ │ │ │ │ │ │ for i, track in enumerate(title.tracks) │
│ 539 │ │ │ │ │ │ )): │
│ ❱ 540 │ │ │ │ │ │ │ download.result() │
│ 541 │ │ │ except KeyboardInterrupt: │
│ 542 │ │ │ │ console.print(Padding( │
│ 543 │ │ │ │ │ ": Download Cancelled...", │
│ │
│ C:\Users\manwei\AppData\Local\Programs\Python\Pyth on312\Lib\concurrent\futur │
│ es\_base.py:449 in result │
│ │
│ 446 │ │ │ │ if self._state in [CANCELLED, CANCELLED_AND_NOTIFIED]: │
│ 447 │ │ │ │ │ raise CancelledError() │
│ 448 │ │ │ │ elif self._state == FINISHED: │
│ ❱ 449 │ │ │ │ │ return self.__get_result() │
│ 450 │ │ │ │ │
│ 451 │ │ │ │ self._condition.wait(timeout) │
│ 452 │
│ │
│ C:\Users\manwei\AppData\Local\Programs\Python\Pyth on312\Lib\concurrent\futur │
│ es\_base.py:401 in __get_result │
│ │
│ 398 │ def __get_result(self): │
│ 399 │ │ if self._exception: │
│ 400 │ │ │ try: │
│ ❱ 401 │ │ │ │ raise self._exception │
│ 402 │ │ │ finally: │
│ 403 │ │ │ │ # Break a reference cycle with the exception in self._ │
│ 404 │ │ │ │ self = None │
│ │
│ C:\Users\manwei\AppData\Local\Programs\Python\Pyth on312\Lib\concurrent\futur │
│ es\thread.py:59 in run │
│ │
│ 56 │ │ │ return │
│ 57 │ │ │
│ 58 │ │ try: │
│ ❱ 59 │ │ │ result = self.fn(*self.args, **self.kwargs) │
│ 60 │ │ except BaseException as exc: │
│ 61 │ │ │ self.future.set_exception(exc) │
│ 62 │ │ │ # Break a reference cycle with the exception 'exc' │
│ │
│ C:\Users\manwei\AppData\Local\Programs\Python\Pyth on312\Lib\site-packages\de │
│ vine\core\tracks\track.py:200 in download │
│ │
│ 197 │ │ │ │ │ license_widevine=prepare_drm │
│ 198 │ │ │ │ ) │
│ 199 │ │ │ elif self.descriptor == self.Descriptor.DASH: │
│ ❱ 200 │ │ │ │ DASH.download_track( │
│ 201 │ │ │ │ │ track=self, │
│ 202 │ │ │ │ │ save_path=save_path, │
│ 203 │ │ │ │ │ save_dir=save_dir, │
│ │
│ C:\Users\manwei\AppData\Local\Programs\Python\Pyth on312\Lib\site-packages\de │
│ vine\core\manifests\dash.py:533 in download_track │
│ │
│ 530 │ │ │
│ 531 │ │ if drm: │
│ 532 │ │ │ progress(downloaded="Decrypting", completed=0, total=100) │
│ ❱ 533 │ │ │ drm.decrypt(save_path) │
│ 534 │ │ │ track.drm = None │
│ 535 │ │ │ events.emit( │
│ 536 │ │ │ │ events.Types.TRACK_DECRYPTED, │
│ │
│ C:\Users\manwei\AppData\Local\Programs\Python\Pyth on312\Lib\site-packages\de │
│ vine\core\drm\widevine.py:291 in decrypt │
│ │
│ 288 │ │ │ p.wait() │
│ 289 │ │ │ │
│ 290 │ │ │ if p.returncode != 0 or had_error: │
│ ❱ 291 │ │ │ │ raise subprocess.CalledProcessError(p.returncode, argu │
│ 292 │ │ │ │
│ 293 │ │ │ path.unlink() │
│ 294 │ │ │ if not stream_skipped: │
╰───────────────────────────────────────────────── ─────────────────────────────╯
CalledProcessError: Command
'['input=C:\\Users\\manwei\\AppData\\Local\\Temp\\de vine\\Video_c28d938d.mp4,str
eam=0,output=C:\\Users\\manwei\\AppData\\Local\\Te mp\\devine\\Video_c28d938d_dec
rypted.mp4,output_format=MP4', '--enable_raw_key_decryption', '--keys',
'label=0:key_id=00000000000000000000000003362855:k ey=d127d5c9228264bd0e24e4bc2d4
c4945,label=1:key_id=00000000000000000000000000000 000:key=d127d5c9228264bd0e24e4
bc2d4c4945', '--temp_dir',
WindowsPath('C:/Users/manwei/AppData/Local/Temp/devine')]' returned non-zero
exit status 1.
❌ Download Failed...
An unexpected error occurred in one of the download workers.
Binary call failed, Process exit code: 1
See the error trace above for more information. -
Delete the cached token and try with devine directly rather than via vinefeeder.
-
Can anyone help me what I am doing wrong? TUBI isn't working for me either
[Attachment 85369 - Click to enlarge] -
Tubi is working well for me and thank you for fixing it. I only asked about Aria2c because I ran across this in a Google search:
"aria2c.exe or aria2 is legitimate software, it seems. Unfortunately for you, it can be used to download files and can be remote controlled." So it has always given me a bit of concern. But I have put in the Devine Folder and it is helping to download from TUBI and I am trusting it is safe. -
Hi can someone help me i'm going crazy,
[Attachment 85372 - Click to enlarge] i get these errors
"An exception occurred in the Service's license function:
'widevine2License'
❌ Download Failed...
An unexpected error occurred in one of the download workers.
See the error trace above for more information. "
my config.yaml is adapted for prime italy.
thanks for all the suggestions
Similar Threads
-
How do I completely remove the music and sound effects from a movie?
By cns00 in forum EditingReplies: 1Last Post: 15th Jan 2024, 13:11 -
Which software can remove music from show but keep character dialogue?
By Mohamed61020 in forum AudioReplies: 6Last Post: 2nd Jul 2023, 22:32 -
Software for simple music videos?
By dewiclements in forum Software PlayingReplies: 3Last Post: 26th Jul 2022, 02:21 -
H.264 for archival and editing - no go?
By malling in forum Capturing and VCRReplies: 8Last Post: 20th Aug 2019, 00:51 -
Movie music too loud but dialogue too quiet fix needed
By hokkom in forum AudioReplies: 121Last Post: 4th May 2019, 09:51