Hi, just wanted to archive some videos from Netflix's Tudum subsite but I can't seem to figure out how to download them or if these videos are even DRMed or not. I can't even find an mpd or m3u. I don't need to rip from Netflix, just their subsite since they have some videos not officially on YouTube or other platforms.
Example: The easter egg video on this article
https://www.netflix.com/tudum/wednesday-episode-8-finale-ending-explained
Can anyone help?![]()
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 to 30 of 49
-
-
yes, all NF video is encrypted
and yes, NF not have mpd or m3u8 to download. but well anything is possible. but don't ask with PM, i don't have anything else to say besides that
edit: well, as iamghost says (see post#4), not all NF videos are encrypted (this s a news for me)Last edited by lomero; 3rd Dec 2023 at 08:29.
-
sorry wrong one,
see next post belowLast edited by iamghost; 3rd Dec 2023 at 07:47.
-
for your video
The easter egg video on this article
https://www.netflix.com/tudum/wednesday-episode-8-finale-ending-explained
both video and audio is not encrypt.
here
https://gofile.io/d/pzInNE
@lomero
only trailer/clip video dont need keys, full movies and series need keysLast edited by iamghost; 3rd Dec 2023 at 09:23.
-
-
Apologies but I can't figure out a way still. I'll keep this thread open because this is unencrypted.
If anybody's willing to assist, I'd like all the videos on these articles:
https://www.netflix.com/tudum/articles/squid-game-the-challenge-winner
https://www.netflix.com/tudum/articles/squid-game-the-challenge-where-are-they-now
https://www.netflix.com/tudum/videos/squid-game-the-challenge-what-happens-on-set-between-games
https://www.netflix.com/tudum/videos/squid-game-the-challenge-what-players-really-thin...he-pink-guards -
NF don't use m3u8 or mpd for his videos. so if you want an easy way to download, use a free ext like Stream Recorder in capture mode or excellent Tubedigger (always in capture mode)
or also try dedicated programs like streamfab or Kigo Netflix Video Downloader -
Do you know that mpd have parts video files like 1.ts 2.ts 3.ts
Netflix have it in inspect f12 with numbers like 65387621/67786542
When you click on that link it will not download part video files
You can see link showing/range/65387621-67786542 so delete this
Link will download file ….. nf.com/?o=……. There have 2 link for video and audio, Then rename video.mp4 and audio.mp4 merge together -
Hi! I just stumbled across this thread (and to be honest it's going over my head a little bit).
Is it possible to get this video https://www.netflix.com/tudum/articles/bridgerton-season-3-filming-cast-news? I think it follows the same format as the other videos you were trying to get. -
Thank you so much! Can I ask where you found the audio file?
I was finally able to figure out how to get the video itself by using your instructions (had to go to Inspect > Network to find the actual files). I've downloaded a few of them, but never get an audio file with it. -
same as video, look out for different number
something like that
video 567447567-655442344 5.980kb
655442345-66785433
audio 16334644-177807790 590kb
177807791-1876357383 -
If you filter for "manifest" in the network tab and load a random video, you will get a json manifest. In that json there are links pointing to all the versions possible of any quality available. Video, audio, and subtitle included.
--[----->+<]>.++++++++++++.---.--------.
[*drm mass downloader: widefrog*]~~~[*how to make your own mass downloader: guide*] -
Once we are in the inspect/network what do I need to do?
I don’t see any video/audio type files.
Is it the xhr type file? If yes then what to do?
There are several of them...
[Attachment 80188 - Click to enlarge] -
Search for the manifest : 'playapi/cadmium/manifest'. Then you have links to download in 'timedtexttracks', 'audio_tracks' and 'video_tracks'. You got 3 files. You have to convert subs to vtt to merge using :
HTML Code:mkvmerge -o "bridgerton-season-3-penelope-colin-nicola-coughlan-luke-newton-astrology.mkv" video.mp4 audio.en.mp3 subs.vtt
-
OK so I managed to find the playapi/cadmium/manifest. I see some audio_tracks mentioned (6times) but don’t find any link.
[Attachment 80192 - Click to enlarge]
[Attachment 80193 - Click to enlarge].
To what those URL should look like? -
What's the main URL?
--[----->+<]>.++++++++++++.---.--------.
[*drm mass downloader: widefrog*]~~~[*how to make your own mass downloader: guide*] -
https://www.netflix.com/tudum/articles/bridgerton-season-3-filming-cast-news
i took this link as it was earlier mentioned. -
Pardon the Interruption
This title currently isn't available. You'll find lots to explore on the homepage.
Error code: E100--[----->+<]>.++++++++++++.---.--------.
[*drm mass downloader: widefrog*]~~~[*how to make your own mass downloader: guide*] -
-
Those files aren't the manifest but source code for their app. You should get a link like that :
Code:https://www.netflix.com/playapi/cadmium/manifest/1?............
[Attachment 80202 - Click to enlarge] -
Did Netflix change something ?
I m no longer able to see any manifest file... I tried with the link above, (where i could see the file and download until then)but also tried others ones and same.... -
Nothing changed ! I was bother and make a downloader for this website, it return a long command to get the video in a single file. Ex for https://www.netflix.com/tudum/articles/bridgerton-season-3-filming-cast-news :
Code:Enter the tudum netflix url: https://www.netflix.com/tudum/articles/bridgerton-season-3-filming-cast-news Found 7 videos ------------------ maxAudioBitrate: 192 maxHeight: 1080 maxVideoBitrate: 1285 yt-dlp "https://ipv4-c160-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=210&e=1723786342&t=U0cotx3yPzPE80ZPO0flhby7PfFbP3B2cMDvpHR4wo3tHA6l0Mn-puJhKMji3dTwYNAOugzcjwm9u1TKxmbK_8MzbYGp-gYuNV1mODh3iV0MNxug0AnpFuE2L8kb9eDXW0fZzwjvbnbOqsdJxK4CrXANLNl0q7TqChhH96Y7RYfjAPKO7OjSGMa3b7HywrztieD3AiiTjmu3luqBlZ08M7Balo59HKSwlCJ4LAh__BAF-uViBEQ4qcj8" -o "temp/audio.mp4" && yt-dlp "https://ipv4-c166-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=210&e=1723786342&t=J68gUTV--Ds_NL98lWw6uYZsYd2Nvb91ExkB_x9pXlraVf8DiZ--GDPvZLSi_AK4Fz5Cvzvj79iB544ZCzW2swh5t1PhtyTW6YuytLNqrUI99kpq76rSk8J3MQrkadhcYFZUvX-ulxLUDa83ULJUh9u1XQHvlLNLz1p6ZMmz_5r9T4g7y0Nf_al7sW9izh9ZaMedqhlnVXO5AwVdkLBU__HGNAmC8wGfp_0plVfK9HG1pvSIUj5IDqKfWA" -o "temp/video.mp4" && wget "https://ipv4-c160-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=210&e=1723786342&t=E7ywOkHr_n73a1EWRGWtfI3eonSzvsSNC9KScr_GquF62BpOdw2Q-C2w2Lcad6jy7uOXYMHFFuKbTqHCf-L2nTd4kIZrEcfEQVqyrA4Wx-SOBC_0HZVCW3k2VX4Gas_jbsjlb_-SqXoD6P0PmK0YKDugAwB1gPgNFpG6WSs7XNq7vIvj7zHg52LUcY6ugA6H2UXQJ0_m2tKe1x0LsqKs8oNzozdCJRpg8TipGPt-wqlODu189yknGUL2cjY" -O "temp/subs.ttml" && tt convert -i "temp/subs.ttml" -o "temp/subs.srt" && mkvmerge -o 81902902.mkv --language 0:eng "temp/audio.mp4" --language 0:eng "temp/video.mp4" --language 0:eng "temp/subs.srt" && rm -r temp ------------------ maxAudioBitrate: 192 maxHeight: 1080 maxVideoBitrate: 1265 yt-dlp "https://ipv4-c170-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=210&e=1723786342&t=QiqohakHcdEQMX6icGZRgDj28vgaW2bmehclZmd2TyRjRFcQHg5rns8nDlCfSU1pFxXgIOcXFYXne9QHvlGhhzdPhOqI_Ldm4isDKVwTCEDu8_PzxGKOUyyonkcrpiiTRHhrzTTdUDGU2DemiIzBY3gPrODBH6QgBu3-HGQD-GqaP0P1CdtEtXta6n73srk4s3lMCF8JTsiEIe9fFhs17ua4GRNsR8YIACVjS-twLINO6Vcy0hPYuz1d" -o "temp/audio.mp4" && yt-dlp "https://ipv4-c169-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=210&e=1723786342&t=7C0H7KiXgR-l37-4lU-3xe0AFOqNB3VGq3mJD1yAYZc_cqFlHem4lCoNSorfPWonAtqdNfi4-_gOdqAqkGiCSrUGtCl3Mzo0ZrobntZPOPsNBw7gHzQEv6aQsZF6BHZZJG1Bz-CD58f-loIDpAPaCEFsdK1LMKI-qXaiPX8UwDmyCrJzGfF-K-Rt6xeTa1d5h6Q-JubJPnMBZ6mHUshGSqsxiBjO3UcJ9DztzHB3dnaBEHdsZRCGnMhkLg" -o "temp/video.mp4" && wget "https://ipv4-c170-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=210&e=1723786342&t=64dr3b3InIwBoFVW_eEZmPLjklGQrTmro-kmEE1y5ztULrMutefB-zQX2ds3vNP-lIcdC1KUUxLFV_YnX5vR2RKO9DZ3ZOKixFuzA6gdno3Pq-hjBK0kkiK7n0XLDknFsioxzaa2piZfMk1Q2LP4yy52Xnb9Tq_-1AtU6AwRVf922dkyU8lJYvSTB_tN230g7mM9XKtq198PGEdG0keRazA66k_TKwAa_Ke5Tfi3Y861kOSchE1wBhZ8uqI" -O "temp/subs.ttml" && tt convert -i "temp/subs.ttml" -o "temp/subs.srt" && mkvmerge -o 81907163.mkv --language 0:eng "temp/audio.mp4" --language 0:eng "temp/video.mp4" --language 0:eng "temp/subs.srt" && rm -r temp ------------------ maxAudioBitrate: 192 maxHeight: 1080 maxVideoBitrate: 710 yt-dlp "https://ipv4-c167-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=210&e=1723786343&t=1GlaJmD6iuriOikdyFTGQeim3C2hvWVlztkUTgH1iXu_zl7Yf-lUDgrxmumDcJzvjl-fj_FULg_RT_QjBuemKIRgxu8FOck3MxqMrDpx3Siio8lQcesbKNvt9rDqa5lHMHE4oAwb-NCU2kxNw_jKaZpMKu_4X71va2V4hci2ZzyU-kccOx1WQMHR_ZvjLm0hbmYVX65xsgz3Vtpu_GlqxqIR7IE5yo-GCAVsgd5O4yxpZbi3aIttmGda" -o "temp/audio.mp4" && yt-dlp "https://ipv4-c168-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=210&e=1723786343&t=EXrZY25qMPCJrc1UBn4WtoK1otsZ2hRgRAfuzdRH2rW70bv7wQRS1uK8WV28R4zKlC2csSHjFmIFeaoey5NU-31VfPbWIC3DsDZvy_mBhhcEwo-U60ZDylyGmskKPss9vK_bfSZ57GtP1_X86hCAVD5PHsEOAUufdU56FEgpNMtvn9Hy2V9zJAAkqoGFzZe8L4INIqcOhkfktzATD1rruzB0SnNeGRuZm9afdEocIab8hKQqpstfLk4R" -o "temp/video.mp4" && wget "https://ipv4-c167-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=210&e=1723786343&t=lpSgfNfJ7gsTRKGK6DIZU5fVtbuHxOmrX9UYORE2Km7TBJmRGkyA1OsBwWw5EHJcd8KLwpIB9_eemCHaLDhseoteZrpZcsskNHw0ASXkI3mNmfbZEa9P3JlPvODyj7w8NO3Q-kxLcZ56n3syYi8pFCQ0XRSkO9O1BrUqfefZjRe8OVVeWJGmSRm7oJFyYw2KF0kX2BdLvzFVayaemjWNAHzEh55q4WCUoIP5R-0Rg-EIAv48IxIavyfq-nI" -O "temp/subs.ttml" && tt convert -i "temp/subs.ttml" -o "temp/subs.srt" && mkvmerge -o 81760982.mkv --language 0:eng "temp/audio.mp4" --language 0:eng "temp/video.mp4" --language 0:eng "temp/subs.srt" && rm -r temp ------------------ maxAudioBitrate: 192 maxHeight: 1080 maxVideoBitrate: 1190 yt-dlp "https://ipv4-c159-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=210&e=1723786343&t=xbemauo0Rf6iVe1co67Yr-wxZrzhG6mA43x1AMX4g5QFUC1rCCg-1tTaIdHpAdZ4NbHae8uCHyBm1DEDV5RaKVn9NpFGU9AVB6FcaxDkkqYVBjudbqO_CqVT0XInnzU3VTzWlzlzvT9Uhm5LhGVy9FrIBhcuXmfMJHg4wo3YxAapJfvv6jYv0NYCGqIijpbIo7lQE45YKj0gyxxkJztF60qAH-wH7ITDaM5CDror956hHPnZf2LZpHI" -o "temp/audio.mp4" && yt-dlp "https://ipv4-c198-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=112&e=1723786343&t=jMJweFcw0ORAGQEexdW9Ytrgmkmx9s3ZoYnAMZUkcCuvsZL_U76UzeCoPToFsjbWSm3UrTxVUND8eT_a6HG6qWSxitU2IDhKFNFqbVE8CoTWBXlPCVj-MDPHLGbDvPk7buuyu5xLyB4No363TjVLb96Tk0n8A2QkhBVmFTWoHT9w02fnXmQWNgDyhjkB6m51B1v67LpAscUER4d1bANjs7oezBCxnp17Gumls1vQEQsOtBhwKV_-EstEEw" -o "temp/video.mp4" && wget "https://ipv4-c159-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=210&e=1723786343&t=-c8BUqErWjJBBNMXF-mWfi0jKfqiXtCFaKOH71jEyoUsQykfbE4V8DDxWV6w973RC6t1bEFIKCz-YfW-gc55qoZ5tA4upmEXKed15xfF0LH3g0OVbbmgj4aVEltS07JWu5IzaJg-SuKM2sfLeesDvHGicaE4Pyc1iMgb5MnSqtl97vdvEOqdGs87sXh0sB_I-QuHCS7C1mUBg2_kjmBoCh85FLQH3ZhI-b4kEPnmr6Joex89Z48062TqlyQ" -O "temp/subs.ttml" && tt convert -i "temp/subs.ttml" -o "temp/subs.srt" && mkvmerge -o 81772127.mkv --language 0:eng "temp/audio.mp4" --language 0:eng "temp/video.mp4" --language 0:eng "temp/subs.srt" && rm -r temp ------------------ maxAudioBitrate: 192 maxHeight: 1080 maxVideoBitrate: 1001 yt-dlp "https://ipv4-c079-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=211&e=1723786343&t=AA7Q8q9yYV_zdiCnBkAvhmvcuJFbpHTIVrXD14Mm8uJ5EzHugqBbs2WZqqrTTR0PvemFCRg9UskxFMf0aLddLmLvhaEKlZj4qngHYaQ0W1CoVGN5HFCqPTvHm9N_b-g7aChzohbG4Fis5xKJBEVvNzZRK6t8QWM-a7WJrfskZFBIA3aA_4DBkGUc_mSLZPWP79dyi5z_9wW77KmmoHz0fbmGC4PqHc5GtHS0_ie9a06pPAXmizOXSqwz7Q" -o "temp/audio.mp4" && yt-dlp "https://ipv4-c147-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=210&e=1723786343&t=zMCl44sxi7_K9Sh_hF8WKZGOYZxvu03TdzK4d70BzZeO6J04phy8UbnNB3TRfSxZu30iGlvvMxr26mP-7NLxvUNAKdse_R8LDve_njN6q_EordXHNj6lALsat9Yid0Ir8CU6t4cp1tcMBfEOTguDAgJ5DmObKrRozlLp8I0EQA9XKKw9eH3P5_tqRMCd5h8V0KNhDdFSCwaoTQAILiVj35QEh7DDacCDE9XJ6YnHtvICCjvl3yliVZYIKNA" -o "temp/video.mp4" && wget "https://ipv4-c079-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=211&e=1723786343&t=pZxBDbSQmHV6ZusYLaLr-mHHb-sqkp_-jeDYhkMnW2Z6vLxZixp8e5btRYQOdSBOfCgwRz7sTsD5AG7h3DydOsCSlAZu-1jSE_Ep_zVvAlTMU8sHshhWcGyE3yrVsAruS9xcIDsvvvYBsidDkF8nxDZQB1oX5X61GNyNmZT7NdWshEHuVT7WxhXNedM94EInT4v7p0MilC83GWS9Gz8eHOc_T-ypIbBn33eHnPara09bAROVh0ewbC08vsp0" -O "temp/subs.ttml" && tt convert -i "temp/subs.ttml" -o "temp/subs.srt" && mkvmerge -o 81763979.mkv --language 0:eng "temp/audio.mp4" --language 0:eng "temp/video.mp4" --language 0:eng "temp/subs.srt" && rm -r temp ------------------ maxAudioBitrate: 192 maxHeight: 1080 maxVideoBitrate: 2271 yt-dlp "https://ipv4-c154-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=210&e=1723786343&t=v7SjR-zJuanjHljR0XFG92rSAzm9KrCJxCcNRTxnyIG9CiU4mgvbGCab3kA_ffSmOmrkXulmubQCT3a9hUjiX-PXt_yBmX02eZC_C8j-36msWUTtlbw9AhcCZSwkV2ZXqO5cqDQQeDm7z9QdMEi38hyf7vT80-mlwbeAsSGp7s-nZb9ne7Lo7wXnNcUcpyUPIqvNW2HcrYSZ8A8TMHIu7TZ5qpGC3idJDAFwWfUot2tmr8BRhpEHSBG0" -o "temp/audio.mp4" && yt-dlp "https://ipv4-c151-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=210&e=1723786343&t=9C6QqT2UXgaLLZqWXJYwNfcILH1ck_TH2pjxtCP68waee9zXlicsbcgxGMpQJC4-E3qdLDij5FqnhXeEh4ing5kub6n6cyM0i29JG1hTxvUbWB3NmNvi1TncECw0w82CYKNZY7Ss2bcGnjsP3aeEvSGNSNYhTJH-v5r2k_u4P2ugoKQHztMC1ZMloOvbL30Sy1kkDA87tsezBQlU4FlBAdP5LyBuGVybMYoSaEcTHTUEzLeRqAwP5B1gFg" -o "temp/video.mp4" && wget "https://ipv4-c154-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=210&e=1723786343&t=oC6_l3eQSMm5FoBEmEabxpET1tlyzvwLlp72xNweILFoKgv1R1MEXs3x4JoHvXOmEpxJwbsm7m8cYVDNs4MVCA4aXzDbrB08mQRbC9wdc_lEQkw6jUkC_SjAeyK_YymCLDt3GHIacah9K7okVW7F7nO8SHUCt8GkJOnhA-Pi1a5-tuUdqQiYAFQyTrKoVAIpQrI1GD7eDG0XR09XCl7sqoe9q1HyVHLzoHsTYGmaxfkLHjo1ynZE4WX6cOE" -O "temp/subs.ttml" && tt convert -i "temp/subs.ttml" -o "temp/subs.srt" && mkvmerge -o 81928651.mkv --language 0:eng "temp/audio.mp4" --language 0:eng "temp/video.mp4" --language 0:eng "temp/subs.srt" && rm -r temp ------------------ maxAudioBitrate: 192 maxHeight: 1080 maxVideoBitrate: 1349 yt-dlp "https://ipv4-c195-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=111&e=1723786343&t=crZi2CWZOG2IWg0UW43TLCwPlxf6RTbStcgz1WCT_7-YoFcAoWKf-BPYbroCK8S5FjK1KDDMbiSZNEdEc_qipRiAuRa0N83ME4uFUUf8JBwyVC9vZ-vuwaYbyRCk2rywaPbYfNV3gQDwIMRDbFzNklU4ESllynCkwG-2mmxnxchO3MN1-pX7z-58zukOoWU9SLxYAu6i0cp9FDvI9qmwEEeX0j6fl70IxfKZo_RtIkK385BDCyuJgHKmBA" -o "temp/audio.mp4" && yt-dlp "https://ipv4-c152-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=210&e=1723786343&t=R8YZ2f_UROjSEj-pefFa8VfWwbaHC-rVAA3cJfsLRBHcUZ-D3jMtZQuAoM98Yf6WILGPHPAwim_TSp9DgQ-N-N1OlVEtsSTPTEvD_25JkbtDU7CbSfNP-zHN7GTOUwXamADoQJE9fEjbXOxDc5liJrUEhL1qW7DP6zDmH80SdtYknV05f58RtbeXfdrDxUpe8-fLGdBOUppA5aNodhR-cYV1MZLJTbp61eLWZUeEv-5PW9ekGTkZqGqqGdY" -o "temp/video.mp4" && wget "https://ipv4-c108-cdg001-ix.1.oca.nflxvideo.net/?o=1&v=211&e=1723786343&t=rsEpYbRGUnw1mbZS2PfWkiEqY0g98YvT6b6T82fBKdRjGbD8e5q2fMd4Kz7845V70eZcM3YKrmyyRrDyOUo-hay4Fj2XOnXtW2H7uM60t4q8wL_FUEfNSclVyQXIQmtSEwQNZxqdv14BXz6JJxiL1gidQ0lkIuunQGIx6W-4RkyMJJMfj_4F0VPOF1F0xY91Nvn3N2J0BH_TcuDSbbyN2nuK3msQoKUL_5_q7c328Del89D_lkOZZtFY-MGe" -O "temp/subs.ttml" && tt convert -i "temp/subs.ttml" -o "temp/subs.srt" && mkvmerge -o 81788261.mkv --language 0:eng "temp/audio.mp4" --language 0:eng "temp/video.mp4" --language 0:eng "temp/subs.srt" && rm -r temp
-
Are you able to see the manifest files bc I no longer see them... so can’t see the video links
Could you share your downloader? -
They aren't using manifest, see explanation here : https://forum.videohelp.com/threads/412565-Downloading-videos-from-Tudum-(Netflix-fans...e)#post2740825
I'll not share this script since I'm not proud of it, but feel free to send tons of page links I'll provide commands/files. -
I don't care about the subtitles, so I just downloaded them raw in the temp folder. Use subtitle edit later since it can handle any format, not just ttl or whatever it's called. Delete the temp folder when you're done and also install N_m3u8DL-RE.
Code:import json import os import re import requests MANIFEST_URL = 'https://www.netflix.com/playapi/cadmium/manifest/1' PROFILES = [ "heaac-2-dash", "heaac-2hq-dash", "vp9-profile0-L30-dash-cenc", "vp9-profile0-L31-dash-cenc", "av1-main-L30-dash-cbcs-prk", "av1-main-L31-dash-cbcs-prk", "vp9-profile0-L40-dash-cenc", "av1-main-L40-dash-cbcs-prk", "av1-main-L41-dash-cbcs-prk", "imsc1.1", "dfxp-ls-sdh", "simplesdh", "nflx-cmisc", "BIF240", "BIF320" ] TEMP_M3U8 = "tmp_m3u8" def get_download_commands(source_url, url_index): response = requests.get(source_url) headers = response.headers['Set-cookie'].split(";") netflix_id = None for header in headers: if " NetflixId=" in header: netflix_id = header.split("NetflixId=")[1].split(" ")[0] break assert netflix_id is not None response = response.text content_ids = re.findall(r'id="VideoControls-(\d+)"', response) content_index = 0 commands = [] for content_id in content_ids: all_tracks_index = 0 content_index += 1 content_title = f'Media_url_{url_index}_content_{content_index}' master_m3u8_output_path = os.path.join(TEMP_M3U8, content_title) if not os.path.exists(master_m3u8_output_path): os.makedirs(master_m3u8_output_path) response = requests.post( MANIFEST_URL, params={'reqAttempt': '1', 'reqName': 'manifest'}, cookies={"NetflixId": netflix_id}, data=json.dumps({ "url": "manifest", "languages": ["en-US"], "params": { "type": "standard", "manifestVersion": "v2", "viewableId": content_id, "profiles": PROFILES, "isBranching": False, "useHttpsStreams": True } }) ).json()["result"] master_m3u8_content = "#EXTM3U\n#EXT-X-VERSION:3\n\n" content_duration = response["duration"] for audio_track in response["audio_tracks"]: audio_codec = audio_track.get("codecName", None) if audio_codec is None: audio_codec = audio_track.get("profile", None) if audio_codec is not None: audio_codec = audio_codec.split("-")[0] audio_profile = audio_track.get("profile", None) for audio_stream in audio_track["streams"]: if audio_stream.get("isDrm", False) is True: continue if len(audio_stream["urls"]) == 0: continue all_tracks_index += 1 audio_m3u8_title = f"audio_{all_tracks_index}.m3u8" audio_m3u8_output_path = os.path.join( master_m3u8_output_path, audio_m3u8_title ) audio_bitrate = audio_stream.get("bitrate", audio_stream.get("peakBitrate", 1)) audio_url = audio_stream["urls"][0]["url"] if audio_profile is None: audio_profile = audio_stream["content_profile"] if audio_codec is None: audio_codec = audio_profile.split("-")[0] master_m3u8_content += f"#EXT-X-STREAM-INF:BANDWIDTH={audio_bitrate * 1000},CODECS=\"{audio_codec}\",TYPE=AUDIO,MIME-TYPE=\"{audio_profile}\"\n" master_m3u8_content += f"{audio_m3u8_title}\n" audio_m3u8_content = "#EXTM3U\n#EXT-X-VERSION:3\n\n" audio_m3u8_content += f"#EXTINF:{content_duration // 1000},\n{audio_url}\n" audio_m3u8_content += "#EXT-X-ENDLIST\n" with open(audio_m3u8_output_path, "w") as f: f.write(audio_m3u8_content) for video_track in response["video_tracks"]: video_codec = video_track.get("flavor", None) video_profile = video_track.get("profile", None) for video_stream in video_track["streams"]: if video_stream.get("isDrm", False) is True: continue if len(video_stream["urls"]) == 0: continue all_tracks_index += 1 video_m3u8_title = f"video_{all_tracks_index}.m3u8" video_m3u8_output_path = os.path.join( master_m3u8_output_path, video_m3u8_title ) video_bitrate = video_stream.get("bitrate", video_stream.get("peakBitrate", 1)) video_width = video_stream.get("res_w", video_stream["crop_w"]) video_height = video_stream.get("res_h", video_stream["crop_h"]) video_url = video_stream["urls"][0]["url"] if video_profile is None: video_profile = video_stream["content_profile"] if video_codec is None: video_codec = video_profile.split("-")[0] master_m3u8_content += f"#EXT-X-STREAM-INF:BANDWIDTH={video_bitrate * 1000},RESOLUTION={video_width}x{video_height},CODECS=\"{video_codec}\",TYPE=VIDEO,MIME-TYPE=\"{video_profile}\",AUDIO=\"Audio\"\n" master_m3u8_content += f"{video_m3u8_title}\n" video_m3u8_content = "#EXTM3U\n#EXT-X-VERSION:3\n\n" video_m3u8_content += f"#EXTINF:{content_duration // 1000},\n{video_url}\n" video_m3u8_content += "#EXT-X-ENDLIST\n" with open(video_m3u8_output_path, "w") as f: f.write(video_m3u8_content) for text_track in response["timedtexttracks"]: if len(text_track.get("ttDownloadables", {}).keys()) == 0: continue for _, downloadable in text_track["ttDownloadables"].items(): all_tracks_index += 1 subtitle_output_path = os.path.join( master_m3u8_output_path, f'sub_{all_tracks_index}.txt' ) subtitle_url = list(downloadable["downloadUrls"].items())[0][1] subtitles = requests.get(subtitle_url).content.decode() with open(subtitle_output_path, 'w+') as f: f.write(subtitles) break master_m3u8_output_path = os.path.join( master_m3u8_output_path, "master.m3u8" ) with open(master_m3u8_output_path, "w") as f: f.write(master_m3u8_content) commands.append( f'N_m3u8DL-RE "{master_m3u8_output_path}" ' f'--save-name "{content_title}" ' f'--save-dir "output" ' f'-M format=mkv' ) return commands SOURCE_URLS = [ 'https://www.netflix.com/tudum/articles/squid-game-the-challenge-winner', "https://www.netflix.com/tudum/articles/squid-game-the-challenge-where-are-they-now", "https://www.netflix.com/tudum/videos/squid-game-the-challenge-what-happens-on-set-between-games", "https://www.netflix.com/tudum/videos/squid-game-the-challenge-what-players-really-think-of-the-pink-guards", "https://www.netflix.com/tudum/articles/bridgerton-season-3-filming-cast-news", "https://www.netflix.com/tudum/wednesday-episode-8-finale-ending-explained", ] i = 0 for u in SOURCE_URLS: i += 1 print("\n".join(get_download_commands(u, i)))
Code:N_m3u8DL-RE "tmp_m3u8\Media_url_1_content_1\master.m3u8" --save-name "Media_url_1_content_1" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_1_content_2\master.m3u8" --save-name "Media_url_1_content_2" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_2_content_1\master.m3u8" --save-name "Media_url_2_content_1" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_2_content_2\master.m3u8" --save-name "Media_url_2_content_2" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_2_content_3\master.m3u8" --save-name "Media_url_2_content_3" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_2_content_4\master.m3u8" --save-name "Media_url_2_content_4" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_2_content_5\master.m3u8" --save-name "Media_url_2_content_5" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_2_content_6\master.m3u8" --save-name "Media_url_2_content_6" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_2_content_7\master.m3u8" --save-name "Media_url_2_content_7" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_2_content_8\master.m3u8" --save-name "Media_url_2_content_8" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_2_content_9\master.m3u8" --save-name "Media_url_2_content_9" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_2_content_10\master.m3u8" --save-name "Media_url_2_content_10" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_2_content_11\master.m3u8" --save-name "Media_url_2_content_11" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_2_content_12\master.m3u8" --save-name "Media_url_2_content_12" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_2_content_13\master.m3u8" --save-name "Media_url_2_content_13" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_3_content_1\master.m3u8" --save-name "Media_url_3_content_1" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_4_content_1\master.m3u8" --save-name "Media_url_4_content_1" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_5_content_1\master.m3u8" --save-name "Media_url_5_content_1" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_5_content_2\master.m3u8" --save-name "Media_url_5_content_2" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_5_content_3\master.m3u8" --save-name "Media_url_5_content_3" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_5_content_4\master.m3u8" --save-name "Media_url_5_content_4" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_5_content_5\master.m3u8" --save-name "Media_url_5_content_5" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_5_content_6\master.m3u8" --save-name "Media_url_5_content_6" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_5_content_7\master.m3u8" --save-name "Media_url_5_content_7" --save-dir "output" -M format=mkv N_m3u8DL-RE "tmp_m3u8\Media_url_6_content_1\master.m3u8" --save-name "Media_url_6_content_1" --save-dir "output" -M format=mkv
> [ ] Basic
[X] Vid 1920x1080 | 1479 Kbps | av1
[ ] Vid 1920x1080 | 870 Kbps | av1
[ ] Vid 1280x720 | 488 Kbps | av1
[ ] Vid 960x540 | 304 Kbps | av1
[ ] Vid 768x432 | 222 Kbps | av1
[ ] Vid 128 Kbps | AAC
[ ] Vid 608x342 | 128 Kbps | av1
[ ] Vid 608x342 | 99 Kbps | av1
[ ] Vid 96 Kbps | AAC--[----->+<]>.++++++++++++.---.--------.
[*drm mass downloader: widefrog*]~~~[*how to make your own mass downloader: guide*] -
Thanks. I don’t know this tool. So once I install it, I will be able to run directly your script ( where I will change the links to check) and that’s it?
-
No problem. Download and put in same directory :
- N_m3u8DL-RE
- mp4decrypt
- ffmpeg
- mkvmerge
Also since you're running a python script, you need to install python as well. But that's pretty self explanatory. To update the links, just modify the "SOURCE_URLS" variable like I did in the script.--[----->+<]>.++++++++++++.---.--------.
[*drm mass downloader: widefrog*]~~~[*how to make your own mass downloader: guide*]
Similar Threads
-
Please help with downloading videos from this site abyss.to
By mehdukun2020 in forum Video Streaming DownloadingReplies: 0Last Post: 11th Oct 2023, 07:10 -
Please help with downloading from this site
By margolafo in forum Video Streaming DownloadingReplies: 10Last Post: 6th Sep 2022, 21:55 -
Please help with downloading videos from this site
By detailerTLN in forum Video Streaming DownloadingReplies: 7Last Post: 31st Jan 2022, 07:36 -
Help with downloading a videos from www.besodh.com site
By dushkin in forum Video Streaming DownloadingReplies: 10Last Post: 30th Oct 2019, 04:54 -
Need help downloading from this site
By tom-vin in forum Video Streaming DownloadingReplies: 0Last Post: 8th May 2019, 16:42