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,380 of 1426
-
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 -
Unforgotten? Series 6 - STV beats ITV slightly with video-bitrate except episode 2 for some reason..
-
Many thanks, iamghost. I set the video with -q 540, and now there are no errors in the video, only in the audio. What are the settings for audio with L3 CDM?"
-
I'm replying here because I can't see how to start a new thread!
I'm trying to change the downloads directory in devine, but having no luck. Here is my devine.yaml
directories:
services: C:\devine-services\services
credentials:
ALL4: <all4user>:<all4pw>
cdm:
default: <cdm>
downloader: aria2c
n_m3u8dl_re:
use_proxy: false
dl:
downloads: 4
workers: 16
sub_format: srt
downloads: D:\Downloads
temp: D:\Temp\devine
but "devine env info" shows this, and downloads continue to go into the C: drive
/ __ \/ ____/ | / / _/ | / / ____/
/ / / / __/ | | / // // |/ / __/
/ /_/ / /___ | |/ // // /| / /___
/_____/_____/ |___/___/_/ |_/_____/
⠀
v3.3.3 Copyright © 2019-2025 rlaphoenix
https://github.com/devine-dl/devine
Config loaded from C:\Users\DK\AppData\Local\devine\devine.yaml
Directories
┌──────────────────────┬────────────────────────── ───────────────────┐
│ Name │ Path │
├──────────────────────┼────────────────────────── ───────────────────┤
│ Cache │ %LOCALAPPDATA%\devine\Cache │
│ Commands │ C:\devine\devine\commands │
│ Cookies │ %LOCALAPPDATA%\devine\Cookies │
│ Core_Dir │ C:\devine\devine\core │
│ Data │ %LOCALAPPDATA%\devine │
│ Dcsl │ %LOCALAPPDATA%\devine\DCSL │
│ Downloads │ %USERPROFILE%\Downloads\devine │
│ Fonts │ C:\devine\devine\fonts │
│ Logs │ %LOCALAPPDATA%\devine\Logs │
│ Namespace_Dir │ C:\devine\devine │
│ Services │ C:\devine-services\services │
│ Temp │ %TEMP%\devine │
│ User_Configs │ %LOCALAPPDATA%\devine │
│ Vaults │ C:\devine\devine\vaults │
│ Wvds │ %LOCALAPPDATA%\devine\WVDs │
└──────────────────────┴────────────────────────── ───────────────────┘
Any ideas? -
try with:
Code:directories: downloads: D:/devine/downloads temp: D:/devine/temp
-
Thanks PunchDrunkL0ve!
I've already got a "directories:" entry for "services", so I added "downloads" and "temp" under that and it worked! I'd already made sure that the directories were created, but on its own that made no difference. I've also looked at the temp directory, and can see the aria2 segments and how it can restart from cancellation or a temporary error.
I now feel a bit stupid for not noticing the directories entry... -
Hi,
I am trying to download this one specific show episode from Pluto called "Three's Company S02E09 Janet's Promotion."
However, I am receiving back this error:
ValueError: Unable to find manifest for this title
Here is my command:
(devine-py3.11) W:\APPLICATIONS_DESKTOP\git_devine_dl_devine_py311 poetry>devine dl -w S02E09 PLUTO https://pluto.tv/us/on-demand/series/5ee7b76bb7841f001a87398f/episode/5ee7c43d6e0047001cb975c5
/ __ \/ ____/ | / / _/ | / / ____/
/ / / / __/ | | / // // |/ / __/
/ /_/ / /___ | |/ // // /| / /___
/_____/_____/ |___/___/_/ |_/_____/
⠀
v3.3.3 Copyright © 2019-2025 rlaphoenix
https://github.com/devine-dl/devine
Service Config loaded
Loaded Cdm Widevine CDM: 4464 (L3)
Loaded 0 Vaults
Loaded Hola: 43 Countries
────────────────────────────── Service: PLUTO ──────────────────────────────
Service has no Geofence
────────────────────── Series: Three's Company (1977) ──────────────────────
8 Seasons, 174 Episodes
───────────────── Three's Company S02E09 Janet's Promotion ─────────────────
╭───────────────────── Traceback (most recent call last) ──────────────────────╮
│ W:\APPLICATIONS_DESKTOP\git_devine_dl_devine_py311 poetry\.venv\Scripts\\devi │
│ ne:6 in <module> │
│ │
│ 3 from devine.core.__main__ import main │
│ 4 │
│ 5 if __name__ == '__main__': │
│ ❱ 6 │ sys.exit(main()) │
│ 7 │
│ │
│ W:\APPLICATIONS_DESKTOP\git_devine_dl_devine_py311 poetry\.venv\Lib\site-pack │
│ ages\click\core.py:1157 in __call__ │
│ │
│ W:\APPLICATIONS_DESKTOP\git_devine_dl_devine_py311 poetry\.venv\Lib\site-pack │
│ ages\click\core.py:1078 in main │
│ │
│ W:\APPLICATIONS_DESKTOP\git_devine_dl_devine_py311 poetry\.venv\Lib\site-pack │
│ ages\click\core.py:1688 in invoke │
│ │
│ W:\APPLICATIONS_DESKTOP\git_devine_dl_devine_py311 poetry\.venv\Lib\site-pack │
│ ages\click\core.py:1688 in invoke │
│ │
│ W:\APPLICATIONS_DESKTOP\git_devine_dl_devine_py311 poetry\.venv\Lib\site-pack │
│ ages\click\core.py:1657 in _process_result │
│ │
│ W:\APPLICATIONS_DESKTOP\git_devine_dl_devine_py311 poetry\.venv\Lib\site-pack │
│ ages\click\core.py:783 in invoke │
│ │
│ W:\APPLICATIONS_DESKTOP\git_devine_dl_devine_py311 poetry\devine\commands\dl. │
│ py:342 in result │
│ │
│ 339 │ │ │ │ events.subscribe(events.Types.TRACK_MULTIPLEX, service │
│ 340 │ │ │ │
│ 341 │ │ │ with console.status("Getting tracks...", spinner="dots"): │
│ ❱ 342 │ │ │ │ title.tracks.add(service.get_tracks(title), warn_only= │
│ 343 │ │ │ │ title.tracks.chapters = service.get_chapters(title) │
│ 344 │ │ │ │
│ 345 │ │ │ # strip SDH subs to non-SDH if no equivalent same-lang non │
│ │
│ W:\APPLICATIONS_DESKTOP\symbolic_links_devine-services\PLUTO\__init__.py:214 │
│ in get_tracks │
│ │
│ 211 │ │ sources = next((item.get("sources") for item in episode if not │
│ 212 │ │ │
│ 213 │ │ if not sources: │
│ ❱ 214 │ │ │ raise ValueError("Unable to find manifest for this title") │
│ 215 │ │ │
│ 216 │ │ hls = next((x.get("file") for x in sources if x.get("type").lo │
│ 217 │ │ dash = next((x.get("file") for x in sources if x.get("type").l │
╰───────────────────────────────────────────────── ─────────────────────────────╯
ValueError: Unable to find manifest for this title
(devine-py3.11) W:\APPLICATIONS_DESKTOP\git_devine_dl_devine_py311 poetry>
Thanks. -
Grab it manually with this command
Code:N_m3u8DL-RE.exe "http://silo-hybrik.pluto.tv.s3.amazonaws.com/23309b_DLT/clip/5ee7c4986e0047001cb97666_Threes_Company_Janets_Promotion_S02E009/720p/20200619_105118/hls/0-end/master.m3u8" --save-name "S02E09" -M format=mkv:muxer=mkvmerge -mt -sv res=720 -sa best -ss all
-
Thank you billybanana. That worked perfectly.
N_m3u8DL-RE.exe "http://silo-hybrik.pluto.tv.s3.amazonaws.com/23309b_DLT/clip/5ee7c4986e0047001cb97666_Threes_Company_Janets_Pro motion_S02E009/720p/20200619_105118/hls/0-end/master.m3u8" --save-name "S02E09" -M format=mkv:muxer=mkvmerge -mt -sv res=720 -sa best -ss all
15:56:03.604 INFO : N_m3u8DL-RE (Beta version) 20230628
15:56:03.625 INFO : Loading URL: http://silo-hybrik.pluto.tv.s3.amazonaws.com/23309b_DLT/clip/5ee7c4986e0047001cb97666_...nd/master.m3u8
15:56:03.855 INFO : Content Matched: HTTP Live Streaming
15:56:03.859 INFO : Parsing streams...
15:56:03.861 WARN : Master List detected, try parse all streams
15:56:03.864 INFO : New version detected! v0.3.0-beta
15:56:03.868 WARN : Writing meta json
15:56:03.872 INFO : Extracted, there are 6 streams, with 5 basic streams, 0 audio streams, 1 subtitle streams
15:56:03.874 INFO : Vid 1280x720 | 2560 Kbps | 30 | avc1.64001f,mp4a.40.2
. . .
15:56:28.489 WARN : Muxing to S02E09.MUX.mkv
15:56:36.729 WARN : Cleaning files...
15:56:36.764 WARN : Rename to S02E09.mkv
15:56:36.766 INFO : Done -
I've been having a weird little issue
When try to download anything from BBC/Ip, Devine finds my nord credentials then it starts downloading and then it sticks at the 10-20% mark.
If I turn Nord VPN on manually before I start, the download is fine
Any suggestions ? -
I seem to have a different problem every time I try to use devine. I had to reinsall it because I needed to reinstall everything. I got the basics installed. I have one service installed that the moment just to see if things will work.
They will not. When I doCode:devine search tubi
Code:/ __ \/ ____/| / / _/ | / / ____/ / / / / __/ | | / // // |/ / __/ / /_/ / /___ | |/ // // /| / /___ /_____/_____/ |___/___/_/ |_/_____/ ⠀ v3.3.3 Copyright © 2019-2025 rlaphoenix https://github.com/devine-dl/devine Service Config loaded ╭───────────────────── Traceback (most recent call last) ──────────────────────╮ │ in _run_module_as_main:198 │ │ in _run_code:88 │ │ │ │ in <module>:7 │ │ │ │ C:\Users\Brian\AppData\Local\Programs\Python\Python313\Lib\site-packages\cli │ │ ck\core.py:1161 in __call__ │ │ │ │ C:\Users\Brian\AppData\Local\Programs\Python\Python313\Lib\site-packages\cli │ │ ck\core.py:1082 in main │ │ │ │ C:\Users\Brian\AppData\Local\Programs\Python\Python313\Lib\site-packages\cli │ │ ck\core.py:1697 in invoke │ │ │ │ C:\Users\Brian\AppData\Local\Programs\Python\Python313\Lib\site-packages\cli │ │ ck\core.py:1694 in invoke │ │ │ │ C:\Users\Brian\AppData\Local\Programs\Python\Python313\Lib\site-packages\cli │ │ ck\core.py:1443 in invoke │ │ │ │ C:\Users\Brian\AppData\Local\Programs\Python\Python313\Lib\site-packages\cli │ │ ck\core.py:788 in invoke │ │ │ │ C:\Users\Brian\AppData\Local\Programs\Python\Python313\Lib\site-packages\cli │ │ ck\decorators.py:33 in new_func │ │ │ │ C:\Users\Brian\AppData\Local\Programs\Python\Python313\Lib\site-packages\dev │ │ ine\commands\search.py:64 in search │ │ │ │ 61 │ │ │ log.info("Service Config loaded") │ │ 62 │ │ else: │ │ 63 │ │ │ service_config = {} │ │ ❱ 64 │ │ merge_dict(config.services.get(service), service_config) │ │ 65 │ │ │ 66 │ proxy_providers = [] │ │ 67 │ if no_proxy: │ ╰──────────────────────────────────────────────────────────────────────────────╯ AttributeError: 'str' object has no attribute 'get'
-
HELP
in _run_module_as_main:198 │
│ in _run_code:88 │
│ │
│ in <module>:7 │
│ │
│ C:\Users\palmer\git\devine-333-pip\env\Lib\site-packages\click\core.py:1157 │
│ in __call__ │
│ │
│ C:\Users\palmer\git\devine-333-pip\env\Lib\site-packages\click\core.py:1078 │
│ in main │
│ │
│ C:\Users\palmer\git\devine-333-pip\env\Lib\site-packages\click\core.py:1688 │
│ in invoke │
│ │
│ C:\Users\palmer\git\devine-333-pip\env\Lib\site-packages\click\core.py:1685 │
│ in invoke │
│ │
│ C:\Users\palmer\git\devine-333-pip\env\Lib\site-packages\click\core.py:1434 │
│ in invoke │
│ │
│ C:\Users\palmer\git\devine-333-pip\env\Lib\site-packages\click\core.py:783 │
│ in invoke │
│ │
│ C:\Users\palmer\git\devine-333-pip\env\Lib\site-packages\click\decorators.py │
│ :33 in new_func │
│ │
│ C:\Users\palmer\git\devine-333-pip\env\Lib\site-packages\devine\commands\dl. │
│ py:141 in cli │
│ │
│ 138 │ │ │ │ help="Amount of tracks to download concurrently.") │
│ 139 │ @click.pass_context │
│ 140 │ def cli(ctx: click.Context, **kwargs: Any) -> dl: │
│ ❱ 141 │ │ return dl(ctx, **kwargs) │
│ 142 │ │
│ 143 │ DRM_TABLE_LOCK = Lock() │
│ 144 │
│ │
│ C:\Users\palmer\git\devine-333-pip\env\Lib\site-packages\devine\commands\dl. │
│ py:201 in __init__ │
│ │
│ 198 │ │ │ │ if config.proxy_providers.get("basic"): │
│ 199 │ │ │ │ │ self.proxy_providers.append(Basic(**config.proxy_p │
│ 200 │ │ │ │ if config.proxy_providers.get("nordvpn"): │
│ ❱ 201 │ │ │ │ │ self.proxy_providers.append(NordVPN(**config.proxy │
│ 202 │ │ │ │ if binaries.HolaProxy: │
│ 203 │ │ │ │ │ self.proxy_providers.append(Hola()) │
│ 204 │ │ │ │ for proxy_provider in self.proxy_providers: │
│ │
│ C:\Users\palmer\git\devine-333-pip\env\Lib\site-packages\devine\core\proxies │
│ \nordvpn.py:35 in __init__ │
│ │
│ 32 │ │ self.password = password │
│ 33 │ │ self.server_map = server_map or {} │
│ 34 │ │ │
│ ❱ 35 │ │ self.countries = self.get_countries() │
│ 36 │ │
│ 37 │ def __repr__(self) -> str: │
│ 38 │ │ countries = len(self.countries) │
│ │
│ C:\Users\palmer\git\devine-333-pip\env\Lib\site-packages\devine\core\proxies │
│ \nordvpn.py:133 in get_countries │
│ │
│ 130 │ │ │ params={"action": "servers_countries"} │
│ 131 │ │ ) │
│ 132 │ │ if not res.ok: │
│ ❱ 133 │ │ │ raise ValueError(f"Failed to get a list of NordVPN countri │
│ 134 │ │ │
│ 135 │ │ try: │
│ 136 │ │ │ return res.json() │
╰───────────────────────────────────────────────── ─────────────────────────────╯
ValueError: Failed to get a list of NordVPN countries [403]
Any ideas what's going on here, folks -
mickmars - not yet, but I am getting the exact same issue all of a sudden, with no changes to any config or updates for weeks.
-
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