A Udemy downloader that can download DRM protected videos and non-DRM protected videos.

Overview

Udemy Downloader with DRM support

NOTE

This program is WIP, the code is provided as-is and i am not held resposible for any legal repercussions resulting from the use of this program.

Support

if you want help using the program, join my discord server or use github issues

License

All code is licensed under the MIT license

Description

Simple and hacky program to download a udemy course, has support for DRM videos but requires the user to aquire the decryption key (for legal reasons).

Requirements

  1. You would need to download ffmpeg and mp4decrypter from Bento4 SDK and ensure they are in path(typing their name in cmd invokes them).

Usage

quick and dirty how-to

You will need to get a few things before you can use this program:

  • Decryption Key ID
  • Decryption Key
  • Udemy Course ID
  • Udemy Bearer Token

Setting up

  • rename .env.sample to .env
  • rename keyfile.example.json to keyfile.json

Aquire bearer token

  • open dev tools
  • go to network tab
  • in the search field, enter api-2.0/courses
  • Valid udemy api requests
  • click a random request
  • locate the Request Headers section
  • copy the the text after Authorization, it should look like Bearer xxxxxxxxxxx
  • bearer token example
  • enter this in the .env file after UDEMY_BEARER=

Aquire Course ID

  • Follow above before following this
  • locate the request url field
  • request url
  • copy the number after /api-2.0/courses/ as seen highlighed in the above picture
  • enter this in the .env file after UDEMY_COURSE_ID=

Key ID and Key

It is up to you to aquire the key and key id.

  • Enter the key and key id in the keyfile.json
  • keyfile example
  • example key and kid from console

Start Downloading

You can now run python main.py to start downloading. The course will download to out_dir, chapters are seperated into folders.

Credits

Comments
  • [Feature Request] HEVC H.265

    [Feature Request] HEVC H.265

    First i would thank you @Puyodead1 for his efforts and time for developing tis repo with this tool, I am sharing few coerces on cloud drive (like one drive) for my students, and they can able to download and access from internet

    But this tool creating video's in AVC -H.264 format , so it consumes much disk space and internet bandwidth for upload and downlead. and ffmpg supports HEVC H265 format, so, i request to give on option to create the video's in H265 format

    For more details about HEVC can be found here

    i am using MediaInfo tool for identifying the codec. and HEVC is the best codec for high quality video's with less disk space also request to integrate sub titles inside .MP4 container, so it will reduce the number of files in disks, and helpful for my student's to handle,

    Thank you!

    enhancement 
    opened by CHITTIMOTU 26
  • [Bug]: decryption process return M4A Audio file + mp4 Video file and they don't work

    [Bug]: decryption process return M4A Audio file + mp4 Video file and they don't work

    What happened?

    I think there is an issue with decryption process because the end result with some of drm videos will be audio M4A format file and video named with .encrypted at the end of the name ?? and these file actually dose not work on any video player at all So how we can merge them or decrypt this thing ?? any solutions any ideas ?

    seethis img

    Expected Result

    one video file ! and working

    Branch

    master/main

    What operating systems are you seeing the problem on?

    Windows

    Relevant log output

    No response

    Other information

    No response

    bug waiting for response 
    opened by mzughbor 24
  • [Bug]: I can't download videos that contains

    [Bug]: I can't download videos that contains "Ñ,ñ,´" in their title "No such file or directory"

    What happened?

    I have been trying to download Spanish courses from Udemy and just noticed that the program is always skipping videos that contains "Ñ,ñ,´" in their title.

    I'm getting the error: "No such file or directory" with this kind of videos.

    Here you can see the error and an example of a folder missing to videos because of their title:

    https://imgur.com/gallery/rC5SmQH

    Pequeños Básico Situación Día

    Expected Result

    I expect to be able to download videos that constains "Ñ,ñ,´" in their title

    Branch

    master/main

    What operating systems are you seeing the problem on?

    Windows

    Relevant log output

    No response

    Other information

    No response

    bug 
    opened by BRamirez72 24
  • [BUG] it does not download the attached resources or subtitles.

    [BUG] it does not download the attached resources or subtitles.

    Description When you have already downloaded only the video files of the classes, and you run the script again, this time specifying the arguments to download all resources and all subtitles: The script does not download any of the attached resources and downloads only some subtitles from classes (very, very few).

    To Reproduce

    1. Run the script without downloading attachments or subtitles:

    python main.py -c https://www.udemy.com/courses/myawesomecourse -b <Bearer Token>

    1. Wait for it to end.
    2. Run the script again, this time with the --download-assets --download-captions -l all arguments in order to complete the previous download with the attachments and subtitles, like this: python main.py -c https://www.udemy.com/courses/myawesomecourse -b <Bearer Token> --download-assets --download-captions -l all
    3. You will find that upon completion, it downloaded the subtitles for only some classes, and none of the attachments.

    Desktop: OS: [Windows 10, Linux Centos 8.5 Stream] Python: [v3.9.1, v3.6.8]

    bug 
    opened by oijm17 21
  • [Bug]: Udemy Says: 'NoneType' object has no attribute 'json'

    [Bug]: Udemy Says: 'NoneType' object has no attribute 'json'

    What happened?

    I tried to download a course with the below command: python main.py -c https://www.udemy.com/course/docker-hands-on/learn/ --download-assets --download-captions -b ******************************************************* but I faced this error:

    Login Success
    > Fetching course information, this may take a minute...
    Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=docker-hands-on
    403 Forbidden, retrying (attempt 0 )...
    Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=docker-hands-on
    403 Forbidden, retrying (attempt 1 )...
    Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=docker-hands-on
    403 Forbidden, retrying (attempt 2 )...
    Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=docker-hands-on
    403 Forbidden, retrying (attempt 3 )...
    Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=docker-hands-on
    403 Forbidden, retrying (attempt 4 )...
    Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=docker-hands-on
    403 Forbidden, retrying (attempt 5 )...
    Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=docker-hands-on
    403 Forbidden, retrying (attempt 6 )...
    Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=docker-hands-on
    403 Forbidden, retrying (attempt 7 )...
    Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=docker-hands-on
    403 Forbidden, retrying (attempt 8 )...
    Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=docker-hands-on
    403 Forbidden, retrying (attempt 9 )...
    Udemy Says: 'NoneType' object has no attribute 'json' on https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=docker-hands-on
    

    Expected Result

    somehow this problem has a connection with IP address, if I use a VPN, then it works fine and starts downloading (everything is the same, except the IP!)

    Branch

    master/main

    What operating systems are you seeing the problem on?

    Windows

    Relevant log output

    No response

    Other information

    No response

    bug 
    opened by MJ-DEV91 15
  • [Bug]: Forbidden 403 Error for subscription

    [Bug]: Forbidden 403 Error for subscription

    What happened?

    Got the forbidden error(master branch), timeout(feat selenium) when i was trying to download scbscription course(personal plan).

    Expected Result

    Expected Result: no error and can download subscription course.

    Master/main branch: image image

    feat-selenium: image

    Branch

    master/main

    What operating systems are you seeing the problem on?

    Windows

    Relevant log output

    (UDDL) PS E:\Udemy\Tool\udemy-downloader-master> python .\main.py -c https://www.udemy.com/course/learn-website-hacking-penetration-testing-from-scratch/learn/ --download-assets
    [02:39:17] [udemy-downloader] [__init__:287] INFO: Login Success
    [02:39:17] [udemy-downloader] [main:1467] INFO: > Fetching course information, this may take a minute...
    [02:39:18] [udemy-downloader] [_get:804] ERROR: Failed request https://www.udemy.com/course/learn-website-hacking-penetration-testing-from-scratch/learn/
    [02:39:18] [udemy-downloader] [_get:805] ERROR: 403 Forbidden, retrying (attempt 0 )...
    [02:39:19] [udemy-downloader] [_get:804] ERROR: Failed request https://www.udemy.com/course/learn-website-hacking-penetration-testing-from-scratch/learn/
    [02:39:19] [udemy-downloader] [_get:805] ERROR: 403 Forbidden, retrying (attempt 1 )...
    [02:39:21] [udemy-downloader] [_get:804] ERROR: Failed request https://www.udemy.com/course/learn-website-hacking-penetration-testing-from-scratch/learn/
    [02:39:21] [udemy-downloader] [_get:805] ERROR: 403 Forbidden, retrying (attempt 2 )...
    [02:39:22] [udemy-downloader] [_get:804] ERROR: Failed request https://www.udemy.com/course/learn-website-hacking-penetration-testing-from-scratch/learn/
    [02:39:22] [udemy-downloader] [_get:805] ERROR: 403 Forbidden, retrying (attempt 3 )...
    

    Other information

    image

    bug 
    opened by hacksonic 9
  • [BUG] Course not downloading its logging me out

    [BUG] Course not downloading its logging me out

    1. I want to this course https://www.udemy.com/course/graph-theory-algorithms/learn/lecture/10794112
    2. Whenever I try too download it I'm getting this error
    3. See error

    image

    bug 
    opened by ogeeDeveloper 8
  • filenotfound error for keyfile.name

    filenotfound error for keyfile.name

    filenotfound error for keyfile.json

    C:\Users\username\Downloads\udemy-downloader-master>py main.py Traceback (most recent call last): File "C:\Users\username\Downloads\udemy-downloader-master\main.py", line 36, in with open(keyfile_path, 'r') as keyfile: FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\username\Downloads\udemy-downloader-master\keyfile.json'

    opened by ravYog99 8
  • [Bug]: Stuck at merging video and audio

    [Bug]: Stuck at merging video and audio

    What happened?

    I've been trying to download this course: https://www.udemy.com/course/react-tutorial-and-projects-course/

    It has been stuck on the log that I attached below for more than an hour, if I go to the directory of the course I see the video(decrypted) which I can play without audio and the audio file(that is also decrypted) which is playable, I see a .mp4 with 0 bytes in size which is most probably the file that it tries to merge both of the files(video and audio to), this error sometimes also happens when it actually merges the files successfully and the script is stuck in the "merging" state, the way I was able to confirm this is if I go to the files, instead of finding a .mp4 file with size of 0 bytes, I would find a file which fully works with audio and video, the logs of this case is the same for the first case which I attached below.

    I would say it happens randomly, so I didn't notice a specific pattern in which it happens

    Expected Result

    A playable lecture .mp4 file is supposed to be available, and the script should continue downloading other lectures and so on

    Branch

    master/main

    What operating systems are you seeing the problem on?

    Windows

    Relevant log output

    [07:35:39] [udemy-downloader] [handle_segments:1182] INFO: > Decryption complete
    [07:35:39] [udemy-downloader] [handle_segments:1183] INFO: > Decrypting audio, this might take a minute...
    [07:35:39] [udemy-downloader] [log_subprocess_output:57] DEBUG: [SHAKA-STDOUT]: 'Packaging completed successfully.'
    [07:35:39] [udemy-downloader] [log_subprocess_output:57] DEBUG: [SHAKA-STDERR]: "[0304/193539:INFO:demuxer.cc(89)] Demuxer::Run() on file '019 Fusion Charts - Pie Chart.encrypted.m4a'."
    [07:35:39] [udemy-downloader] [log_subprocess_output:57] DEBUG: [SHAKA-STDERR]: "[0304/193539:INFO:demuxer.cc(155)] Initialize Demuxer for file '019 Fusion Charts - Pie Chart.encrypted.m4a'."
    [07:35:39] [udemy-downloader] [log_subprocess_output:57] DEBUG: [SHAKA-STDERR]: "[0304/193539:INFO:single_segment_segmenter.cc(111)] Update media header (moov) and rewrite the file to '019 Fusion Charts - Pie Chart.decrypted.m4a'."
    [07:35:39] [udemy-downloader] [log_subprocess_output:57] DEBUG: [SHAKA-STDERR]: "[0304/193539:INFO:mp4_muxer.cc(186)] MP4 file '019 Fusion Charts - Pie Chart.decrypted.m4a' finalized."
    [07:35:39] [udemy-downloader] [handle_segments:1189] INFO: > Decryption complete
    [07:35:39] [udemy-downloader] [handle_segments:1190] INFO: > Merging video and audio, this might take a minute...
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'ffmpeg version 2021-11-18-git-85a6b7f7b7-full_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'built with gcc 11.2.0 (Rev2, Built by MSYS2 project)'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libglslang --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'libavutil      57.  9.100 / 57.  9.100'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'libavcodec     59. 13.100 / 59. 13.100'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'libavformat    59.  9.101 / 59.  9.101'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'libavdevice    59.  0.101 / 59.  0.101'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'libavfilter     8. 17.100 /  8. 17.100'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'libswscale      6.  1.100 /  6.  1.100'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'libswresample   4.  0.100 /  4.  0.100'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'libpostproc    56.  0.100 / 56.  0.100'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: "Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '019 Fusion Charts - Pie Chart.decrypted.mp4':"
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'Metadata:'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'major_brand     : mp41'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'minor_version   : 0'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'compatible_brands: iso8isommp41dashavc1cmfc'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'creation_time   : 2022-03-04T17:35:38.000000Z'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'Duration: 00:07:13.17, start: 0.172033, bitrate: 854 kb/s'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'Stream #0:0[0x1](und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 12 kb/s, 30 fps, 30 tbr, 30k tbn (default)'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'Metadata:'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'creation_time   : 2022-03-04T17:35:38.000000Z'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'handler_name    : VideoHandler'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'vendor_id       : [0][0][0][0]'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'encoder         : AVC Coding'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: "Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '019 Fusion Charts - Pie Chart.decrypted.m4a':"
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'Metadata:'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'major_brand     : mp41'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'minor_version   : 0'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'compatible_brands: iso8isommp41dashcmfc'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'creation_time   : 2022-03-04T17:35:39.000000Z'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'Duration: 00:07:13.11, start: 0.000000, bitrate: 63 kb/s'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'Stream #1:0[0x1](und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 0 kb/s (default)'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'Metadata:'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'creation_time   : 2022-03-04T17:35:39.000000Z'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'handler_name    : SoundHandler'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'vendor_id       : [0][0][0][0]'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: "Output #0, mp4, to 'D:\\udemy-downloader\\out_dir\\react-tutorial-and-projects-course\\07 - Search Github Users\\019 Fusion Charts - Pie Chart.mp4':"
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'Metadata:'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'title           : 019 Fusion Charts - Pie Chart'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'Stream #0:0: Video: h264 (Main) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 12 kb/s, 30 fps, 30 tbr, 30k tbn (default)'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'Stream #0:1: Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 0 kb/s (default)'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'Stream mapping:'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'Stream #0:0 -> #0:0 (copy)'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'Stream #1:0 -> #0:1 (copy)'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'Press [q] to stop, [?] for help'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'frame=    1 fps=0.0 q=-1.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   0x    \rframe=12990 fps=0.0 q=-1.0 Lsize=   48670kB time=00:07:13.10 bitrate= 920.6kbits/s speed=5.93e+03x'
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [FFMPEG-STDERR]: 'video:45018kB audio:3314kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.698067%'
    [07:35:40] [udemy-downloader] [handle_segments:1197] INFO: > Merging complete, removing temporary files...
    [07:35:40] [udemy-downloader] [parse_new:1444] INFO:   > Processing lecture 263 of 414
    [07:35:40] [udemy-downloader] [process_lecture:1346] INFO:       > Lecture '020 Calculate Most Used Language' has DRM, attempting to download
    [07:35:40] [udemy-downloader] [handle_segments:1139] INFO: > Downloading Lecture Tracks...
    [07:35:40] [udemy-downloader] [log_subprocess_output:57] DEBUG: [YTDLP-STDOUT]: '[generic] index.mpd?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXRoIjoib3V0L3YxLzY5MjUxOTM5MTA4NjQ2MDE4ZGMxYjg4MmUxODk0MmUxLzA2YzhkYzEyZGEyNzQ1ZjFiMGI0ZTdjMmMwMzJkZmVmLzg0MmQ0YjhlMmUwMTRmYmJiODdjNjQwZGRjODlkMDM2LyIsImV4cCI6MTY0NjQzMDc0NH0: Requesting header'
    [07:35:41] [udemy-downloader] [log_subprocess_output:57] DEBUG: [YTDLP-STDOUT]: '[generic] index.mpd?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXRoIjoib3V0L3YxLzY5MjUxOTM5MTA4NjQ2MDE4ZGMxYjg4MmUxODk0MmUxLzA2YzhkYzEyZGEyNzQ1ZjFiMGI0ZTdjMmMwMzJkZmVmLzg0MmQ0YjhlMmUwMTRmYmJiODdjNjQwZGRjODlkMDM2LyIsImV4cCI6MTY0NjQzMDc0NH0: Downloading webpage'
    [07:35:43] [udemy-downloader] [log_subprocess_output:57] DEBUG: [YTDLP-STDOUT]: '[generic] index.mpd?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXRoIjoib3V0L3YxLzY5MjUxOTM5MTA4NjQ2MDE4ZGMxYjg4MmUxODk0MmUxLzA2YzhkYzEyZGEyNzQ1ZjFiMGI0ZTdjMmMwMzJkZmVmLzg0MmQ0YjhlMmUwMTRmYmJiODdjNjQwZGRjODlkMDM2LyIsImV4cCI6MTY0NjQzMDc0NH0: Extracting information'
    [07:35:43] [udemy-downloader] [log_subprocess_output:57] DEBUG: [YTDLP-STDOUT]: '[info] index.mpd?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXRoIjoib3V0L3YxLzY5MjUxOTM5MTA4NjQ2MDE4ZGMxYjg4MmUxODk0MmUxLzA2YzhkYzEyZGEyNzQ1ZjFiMGI0ZTdjMmMwMzJkZmVmLzg0MmQ0YjhlMmUwMTRmYmJiODdjNjQwZGRjODlkMDM2LyIsImV4cCI6MTY0NjQzMDc0NH0: Downloading 2 format(s): 8, 9'
    [07:35:43] [udemy-downloader] [log_subprocess_output:57] DEBUG: [YTDLP-STDOUT]: '[dashsegments] Total fragments: 189'
    [07:35:43] [udemy-downloader] [log_subprocess_output:57] DEBUG: [YTDLP-STDOUT]: '[dashsegments] Fragment downloads will be delegated to aria2c'
    [07:35:43] [udemy-downloader] [log_subprocess_output:57] DEBUG: [YTDLP-STDOUT]: '[download] Destination: 020 Calculate Most Used Language.encrypted.mp4'
    [07:36:23] [udemy-downloader] [log_subprocess_output:57] DEBUG: [YTDLP-STDOUT]: '[DL:40KiB][#1c834f 0B/523KiB(0%)][#bf2a1c 0B/1.0MiB(0%)][#3440a4 0B/0B][#3493e6\r
     \r[DL:4.7MiB][#1c834f 480KiB/523KiB(91%)][#bf2a1c 896KiB/1.0MiB(83%)][#3440a4 512\r
                                               \r[DL:4.8MiB][#3440a4 1.0MiB/1.1MiB(89%)][#3493e6 0.9MiB/1.8MiB(50%)][#bb34c3 1.2\r                                                                               \r[DL:4.3MiB][#3493e6 1.2MiB/1.8MiB(64%)][#bb34c3 1.5MiB/1.8MiB(87%)][#ccbd94 1.2\r
           \r[DL:4.9MiB][#00ea45 0.9MiB/0.9MiB(98%)][#33bff2 1.2MiB/1.2MiB(100%)][#adbef2 83\r
                                                     \r[DL:5.4MiB][#adbef2 1.5MiB/1.7MiB(88%)][#f4d1a8 1.2MiB/1.3MiB(92%)][#7b2110 0.9\r                                                                               \r[DL:4.9MiB][#adbef2 1.6MiB/1.7MiB(96%)][#f7433c 864KiB/0.9MiB(91%)][#e48bd4 784\r
                 \r[DL:4.7MiB][#ce9bc0 720KiB/0.9MiB(77%)][#a94c4e 672KiB/912KiB(73%)][#a737e6 752\r
                                                           \r[DL:4.4MiB][#0feb5b 560KiB/0.9MiB(58%)][#d0638a 544KiB/0.9MiB(57%)][#26d10a 512\r                                                                               \r[DL:5.4MiB][#80c1e8 1.3MiB/1.5MiB(86%)][#92f391 1.2MiB/1.3MiB(94%)][#271d1f 736\r
                       \r[DL:4.8MiB][#271d1f 1.0MiB/1.8MiB(56%)][#54b02c 1.0MiB/1.1MiB(88%)][#2b1dd3 1.0\r
                                                                 \r[DL:4.7MiB][#271d1f 1.4MiB/1.8MiB(78%)][#ad96e5 0.9MiB/1.1MiB(84%)][#77260c 704\r                                                                               \r[DL:4.9MiB][#dae882 880KiB/902KiB(97%)][#1d1741 816KiB/0.9MiB(87%)][#03b423 816\r
                             \r[DL:4.9MiB][#03b423 1.3MiB/1.5MiB(85%)][#0ab78d 800KiB/0.9MiB(82%)][#ae2714 800\r
                                                                       \r[DL:4.3MiB][#fd6111 1.0MiB/1.5MiB(68%)][#02c5d9 1.0MiB/1.2MiB(85%)][#6e3e15 672\r                                                                               \r[DL:4.7MiB][#f46637 1.1MiB/1.4MiB(78%)][#416f5c 768KiB/885KiB(86%)][#b6f7a7 672\r
                                   \r[DL:5.2MiB][#7e65fd 912KiB/1.0MiB(85%)][#477e20 624KiB/0.9MiB(62%)][#2a616d 624\r                                                                               \r[DL:5.7MiB][#b222c5 736KiB/1.4MiB(50%)][#4eee32 736KiB/0.9MiB(73%)][#067c2b 736\r                                                                               \r[DL:5.6MiB][#ea456e 736KiB/1.0MiB(69%)][#edb2f6 912KiB/1.1MiB(77%)][#e973ec 496\r
                                         \r[DL:5.5MiB][#e973ec 848KiB/878KiB(96%)][#bfc7cc 832KiB/1.1MiB(67%)][#fd6d14 352\r                                                                               \r[DL:5.6MiB][#f8754e 832KiB/0.9MiB(90%)][#2af366 608KiB/837KiB(72%)][#3ca991 608\r
     \r[DL:5.9MiB][#aa547d 544KiB/0.9MiB(58%)][#3aad68 560KiB/900KiB(62%)][#ef341a 576\r
                                               \r[DL:5.6MiB][#e0b983 848KiB/890KiB(95%)][#932941 0.9MiB/1.3MiB(67%)][#6625f6 0.9\r                                                                               \r[DL:5.3MiB][#932941 1.0MiB/1.3MiB(78%)][#40227c 752KiB/852KiB(88%)][#aebeeb 176\r
           \r[DL:5.6MiB][#aebeeb 832KiB/843KiB(98%)][#eac221 832KiB/1.3MiB(61%)][#bf12ff 736\r
                                                     \r[DL:5.2MiB][#eac221 1.1MiB/1.3MiB(84%)][#e28512 1.0MiB/1.0MiB(95%)][#c80c7e 0.9\r                                                                               \r[DL:5.0MiB][#4bfae9 736KiB/840KiB(87%)][#26b3dc 752KiB/1.1MiB(65%)][#43e6c6 720\r
                 \r[DL:4.6MiB][#88388c 912KiB/0.9MiB(97%)][#04846a 0.9MiB/0.9MiB(98%)][#b5b824 848\r
                                                           \r[DL:4.7MiB][#8fcf39 0.9MiB/1.2MiB(74%)][#00d477 624KiB/0.9MiB(64%)][#6c612e 608\r                                                                               \r[DL:4.5MiB][#cad774 0.9MiB/1.4MiB(64%)][#e1d61a 784KiB/0.9MiB(82%)][#0a4993 704\r
                       \r[DL:4.3MiB][#e871d3 1.1MiB/1.7MiB(68%)][#1b406f 704KiB/0.9MiB(75%)][#13d6ca 864\r
                                                                 \r[DL:4.5MiB][#579120 1.0MiB/1.1MiB(94%)][#07093a 1.0MiB/1.4MiB(76%)][#5d1d00 1.0\r                                                                               \r[DL:4.8MiB][#59e62f 0.9MiB/1.0MiB(95%)][#ea44f0 0.9MiB/1.0MiB(90%)][#b9ae4b 0.9\r
                             \r[DL:4.5MiB][#2f57f8 800KiB/0.9MiB(81%)][#492ef9 832KiB/1.0MiB(79%)][#7e63ad 816\r
                                                                       \r[DL:4.5MiB][#a7c1a6 864KiB/0.9MiB(92%)][#3f9b00 0.9MiB/0.9MiB(96%)][#d61593 768\r[aria2c] Downloaded 199748882 bytes'
    [07:36:23] [udemy-downloader] [log_subprocess_output:57] DEBUG: [YTDLP-STDOUT]: '[download] 100% of 190.50MiB in 00:39'
    [07:36:23] [udemy-downloader] [log_subprocess_output:57] DEBUG: [YTDLP-STDOUT]: '[dashsegments] Total fragments: 189'
    [07:36:23] [udemy-downloader] [log_subprocess_output:57] DEBUG: [YTDLP-STDOUT]: '[dashsegments] Fragment downloads will be delegated to aria2c'
    [07:36:23] [udemy-downloader] [log_subprocess_output:57] DEBUG: [YTDLP-STDOUT]: '[download] Destination: 020 Calculate Most Used Language.encrypted.m4a'
    [07:36:59] [udemy-downloader] [log_subprocess_output:57] DEBUG: [YTDLP-STDOUT]: '[DL:0B][#e315e3 0B/1.7KiB(0%)][#421d0f 0B/0B][#026108 0B/0B][#4338c5 0B/0B][#90\r
     \r[DL:269B][#421d0f 0B/50KiB(0%)][#026108 0B/50KiB(0%)][#4338c5 0B/49KiB(0%)][#90\r
                                               \r[DL:90KiB][#421d0f 32KiB/50KiB(62%)][#b60428 0B/0B][#424beb 0B/0B][#58a745 0B/0\r                                                                               \r[DL:208KiB][#424beb 0B/50KiB(0%)][#58a745 0B/49KiB(0%)][#651361 0B/50KiB(0%)][#\r
           \r[DL:321KiB][#eeda8f 0B/50KiB(0%)][#a8ff61 0B/0B][#9d9fc1 0B/0B][#befe0d 0B/0B][\r
                                                     \r[DL:247KiB][#eeda8f 0B/50KiB(0%)][#a8ff61 0B/49KiB(0%)][#9d9fc1 0B/49KiB(0%)][#\r                                                                               \r[DL:313KiB][#a191a5 0B/0B][#b58d46 0B/0B][#77d012 0B/0B][#1bca18 0B/0B][#d21585\r
                 \r[DL:254KiB][#a191a5 0B/50KiB(0%)][#b58d46 0B/50KiB(0%)][#77d012 0B/49KiB(0%)][#\r
                                                           \r[DL:277KiB][#78e03f 0B/0B][#47f2de 0B/0B][#0348fd 0B/0B][#d4ef62 0B/50KiB(0%)][\r                                                                               \r[DL:249KiB][#78e03f 0B/50KiB(0%)][#47f2de 0B/50KiB(0%)][#0348fd 0B/50KiB(0%)][#\r
                       \r[DL:363KiB][#45f59a 0B/0B][#62f7c5 0B/0B][#ec4199 0B/0B][#0018ad 0B/0B][#c5dd65\r
                                                                 \r[DL:258KiB][#45f59a 0B/50KiB(0%)][#62f7c5 0B/50KiB(0%)][#ec4199 0B/0B][#0018ad \r                                                                               \r[DL:356KiB][#370c91 0B/0B][#88bc0a 0B/0B][#4636ce 0B/0B][#b81f27 0B/0B][#fe7610\r
                             \r[DL:259KiB][#370c91 0B/50KiB(0%)][#88bc0a 0B/49KiB(0%)][#4636ce 0B/49KiB(0%)][#\r
                                                                       \r[DL:375KiB][#47388c 0B/0B][#eeac9a 0B/0B][#a041c3 0B/0B][#63090f 0B/0B][#e90441\r                                                                               \r[DL:265KiB][#47388c 0B/50KiB(0%)][#eeac9a 0B/50KiB(0%)][#a041c3 0B/49KiB(0%)][#\r
                                   \r[DL:349KiB][#bca486 0B/0B][#fd2245 0B/0B][#6cdb6a 0B/0B][#2cdb22 0B/0B][#2a5614\r                                                                               \r[DL:265KiB][#bca486 0B/50KiB(0%)][#fd2245 0B/50KiB(0%)][#6cdb6a 0B/49KiB(0%)][#\r                                                                               \r[DL:342KiB][#779bd0 0B/0B][#a8bf63 16KiB/50KiB(31%)][#46c97b 0B/49KiB(0%)][#341\r
                                         \r[DL:347KiB][#438343 0B/0B][#67d366 0B/0B][#b2503a 0B/0B][#ff1a09 0B/0B][#8abe24\r                                                                               \r[DL:350KiB][#438343 0B/50KiB(0%)][#67d366 0B/0B][#b2503a 0B/49KiB(0%)][#ff1a09 \r
     \r[DL:354KiB][#adb03b 0B/0B][#628039 0B/0B][#0cd65d 0B/0B][#3b900e 0B/0B][#43a965\r[aria2c] Downloaded 9599582 bytes'
    [07:36:59] [udemy-downloader] [log_subprocess_output:57] DEBUG: [YTDLP-STDOUT]: '[download] 100% of 9.15MiB in 00:36'
    [07:36:59] [udemy-downloader] [log_subprocess_output:57] DEBUG: [YTDLP-STDERR]: 'WARNING: You have asked for UNPLAYABLE formats to be listed/downloaded. This is a developer option intended for debugging.'
    [07:36:59] [udemy-downloader] [log_subprocess_output:57] DEBUG: [YTDLP-STDERR]: 'If you experience any issues while using this option, DO NOT open a bug report'
    [07:36:59] [udemy-downloader] [log_subprocess_output:57] DEBUG: [YTDLP-STDERR]: 'WARNING: [generic] Forcing on generic information extractor.'
    [07:36:59] [udemy-downloader] [handle_segments:1154] INFO: > Lecture Tracks Downloaded
    [07:36:59] [udemy-downloader] [handle_segments:1163] INFO: KID for video file is: 156AC5DCE1404F21A8553879A9D43DE5
    [07:36:59] [udemy-downloader] [handle_segments:1170] INFO: KID for audio file is: 156AC5DCE1404F21A8553879A9D43DE5
    [07:36:59] [udemy-downloader] [handle_segments:1176] INFO: > Decrypting video, this might take a minute...
    [07:37:01] [udemy-downloader] [log_subprocess_output:57] DEBUG: [SHAKA-STDOUT]: 'Packaging completed successfully.'
    [07:37:01] [udemy-downloader] [log_subprocess_output:57] DEBUG: [SHAKA-STDERR]: "[0304/193659:INFO:demuxer.cc(89)] Demuxer::Run() on file '020 Calculate Most Used Language.encrypted.mp4'."
    [07:37:01] [udemy-downloader] [log_subprocess_output:57] DEBUG: [SHAKA-STDERR]: "[0304/193659:INFO:demuxer.cc(155)] Initialize Demuxer for file '020 Calculate Most Used Language.encrypted.mp4'."
    [07:37:01] [udemy-downloader] [log_subprocess_output:57] DEBUG: [SHAKA-STDERR]: "[0304/193701:INFO:single_segment_segmenter.cc(111)] Update media header (moov) and rewrite the file to '020 Calculate Most Used Language.decrypted.mp4'."
    [07:37:01] [udemy-downloader] [log_subprocess_output:57] DEBUG: [SHAKA-STDERR]: "[0304/193701:INFO:mp4_muxer.cc(186)] MP4 file '020 Calculate Most Used Language.decrypted.mp4' finalized."
    [07:37:01] [udemy-downloader] [handle_segments:1182] INFO: > Decryption complete
    [07:37:01] [udemy-downloader] [handle_segments:1183] INFO: > Decrypting audio, this might take a minute...
    [07:37:01] [udemy-downloader] [log_subprocess_output:57] DEBUG: [SHAKA-STDOUT]: 'Packaging completed successfully.'
    [07:37:01] [udemy-downloader] [log_subprocess_output:57] DEBUG: [SHAKA-STDERR]: "[0304/193701:INFO:demuxer.cc(89)] Demuxer::Run() on file '020 Calculate Most Used Language.encrypted.m4a'."
    [07:37:01] [udemy-downloader] [log_subprocess_output:57] DEBUG: [SHAKA-STDERR]: "[0304/193701:INFO:demuxer.cc(155)] Initialize Demuxer for file '020 Calculate Most Used Language.encrypted.m4a'."
    [07:37:01] [udemy-downloader] [log_subprocess_output:57] DEBUG: [SHAKA-STDERR]: "[0304/193701:INFO:single_segment_segmenter.cc(111)] Update media header (moov) and rewrite the file to '020 Calculate Most Used Language.decrypted.m4a'."
    [07:37:01] [udemy-downloader] [log_subprocess_output:57] DEBUG: [SHAKA-STDERR]: "[0304/193701:INFO:mp4_muxer.cc(186)] MP4 file '020 Calculate Most Used Language.decrypted.m4a' finalized."
    [07:37:01] [udemy-downloader] [handle_segments:1189] INFO: > Decryption complete
    [07:37:01] [udemy-downloader] [handle_segments:1190] INFO: > Merging video and audio, this might take a minute...
    

    Other information

    If there is any other information that you would like me to provide, I would provide happily thank you

    bug 
    opened by progamerz02 7
  • [Bug]: 403 Forbidden, 'NoneType' object has no attribute 'content'

    [Bug]: 403 Forbidden, 'NoneType' object has no attribute 'content'

    What happened?

    Got this error, but in the browser this link works good https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=mycourse

    Expected Result

    Download a course

    Branch

    master/main

    What operating systems are you seeing the problem on?

    Windows

    Relevant log output

    [12:53:17] [udemy-downloader] [__init__:287] INFO: Login Success
    [12:53:17] [udemy-downloader] [main:1467] INFO: > Fetching course information, this may take a minute...
    [12:53:17] [udemy-downloader] [_get:804] ERROR: Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=mycourse
    [12:53:17] [udemy-downloader] [_get:805] ERROR: 403 Forbidden, retrying (attemp 0 )...
    ...
    [12:53:27] [udemy-downloader] [_subscribed_courses:551] CRITICAL: Udemy Says: 'NoneType' object has no attribute 'content' on https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=mycourse
    

    Other information

    No response

    bug 
    opened by Zeddex 6
  • [Bug]: Shaka Packager is missing from your system or path!

    [Bug]: Shaka Packager is missing from your system or path!

    What happened?

    i have that file packager-win.exe in the path but i am getting this error.

    Expected Result

    i expect it to work

    Branch

    master/main

    What operating systems are you seeing the problem on?

    Windows

    Relevant log output

    No response

    Other information

    No response

    bug 
    opened by baba-boota 6
  • [Bug]: SRT files missing characters

    [Bug]: SRT files missing characters

    What happened?

    SRT files are missing foreign characters

    Expected Result

    SRT content is not modified and all characters are included

    Branch

    master/main

    What operating systems are you seeing the problem on?

    Windows, Linux/Unix, MacOS

    Relevant log output

    No response

    Other information

    No response

    bug enhancement 
    opened by Puyodead1 0
  • [Bug]:

    [Bug]:

    What happened?

    Traceback (most recent call last): File "main.py", line 1991, in main() File "main.py", line 1754, in main course_id, course_info = udemy._extract_course_info_sub(selenium, course_url) File "main.py", line 1030, in _extract_course_info_sub self._selenium_login(selenium.driver) File "main.py", line 988, in _selenium_login WebDriverWait(driver, 60).until(EC.visibility_of_element_located((By.ID, "id_email"))) File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/support/wait.py", line 90, in until raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message:

    Expected Result

    download ...

    Branch

    feat-selenium

    What operating systems are you seeing the problem on?

    Linux/Unix

    Relevant log output

    No response

    Other information

    No response

    bug 
    opened by YspCoder 0
  • [Bug]: Shaka-packager don't love spaces and special characters. (Decryption returned a non-zero exit code.)

    [Bug]: Shaka-packager don't love spaces and special characters. (Decryption returned a non-zero exit code.)

    What happened?

    Decryption error with path and filename containing spaces.

    Exception: Decryption returned a non-zero exit code
    

    I checked the version of shaka-packager, it's latest. (see https://github.com/Puyodead1/udemy-downloader/issues/116)

    I tried with mp4decrypt:

    sudo cp ./mp4decrypt /usr/bin
    sudo chmod 755 /usr/bin/mp4decrypt
    mp4decrypt --show-progress --key bdd****************************4c3:758f************************cdd'/home/rickey/Github/udemy-downloader/out_dir/powershell-core-les-fondamentaux/01 - Introduction to PowerShell/005 Discovering the PowerShell console .encrypted.mp4' '/home/rickey/Github/udemy-downloader/out_dir/powershell-core-les-fondamentaux/01 - Introduction to PowerShell/005 Discovering the PowerShell console.mp4'
    

    It works without audio.

    So I thought shaka was buggy, I tried manually:

    sudo cp ./shaka-packager /usr/bin
    sudo chmod 755 /usr/bin/shaka-packager
    shaka-packager --enable_raw_key_decryption --keys key_id=bdd*************************4c3:key=758**********************cdd in="/home/rickey/Github/udemy-downloader-feat-selenium/out_dir/powershell-core-les-fondamentaux/01 - Introduction to PowerShell/005 Discovering the powershell console .encrypted.mp4",stream=video,output=test.mp4
    
    [0816/070349:ERROR:packager_main.cc(551)] Packager Error: 5 (FILE_FAILURE): Could not open file for reading /home/rickey/Github/udemy-downloader-feat-selenium/out_dir/powershell - core-the-fundamentals/01 - Introduction to PowerShell/005 Getting to Know PowerShell console.encrypted.mp4
    
    

    I downloaded selenium branch, same bug.

    After doing some research, I noticed that users weren't using spaces in their paths or filenames. See https://github.com/shaka-project/shaka-packager/issues/334 and https://github.com/shaka-project/shaka-packager/issues/962

    cd "/home/rickey/Github/udemy-downloader-feat-selenium/out_dir/powershell-core-les-fondamentaux/01 - Introduction to PowerShell/"
    cp "01 - Introduction to PowerShell/005 Discovering PowerShell console.encrypted.mp4" test.encrypted.mp4
    shaka-packager --enable_raw_key_decryption --keys key_id=bdd*************************4c3:key=758**********************dd in=test.encrypted.mp4,stream=0,output=test.mp4
    

    It worked.

    Of course, I tested many syntaxes like these:

    shaka-packager input="blablablabla", stream=0
    shaka-packager input="blabla blabla",stream=0
    shaka-packager=blabla blabla, stream=video
    shaka-packager 'input=blabla blabla,stream=video'
    shaka-packager 'input=blabla blabla, stream=video'
    shaka-packager 'input="blabla blabla",stream=0'
    shaka-packager 'in="blabla blabla",stream=0'
    

    To join audios and videos :

    shaka-packager --enable_raw_key_decryption --keys key_id=bdd*************************4c3:key=758**********************dd in=test.encrypted.mp4,stream=video,output=test.mp4
    shaka-packager --enable_raw_key_decryption --keys key_id=bdd*************************4c3:key=758**********************dd in=test.encrypted.m4a,stream=audio,output=test.m4a
    ffmpeg -i test.mp4 -i test.m4a -acodec copy -vcodec copy merged.mp4
    

    Same error on Windows 10 (in VM), but i don't know why, shaka work correctly with or without spaces.

    Expected Result

    a new script to decrypt and merge (manually ?) the "*.encryted.mp4" and "*.encryted.m4a" ?

    Branch

    master/main

    What operating systems are you seeing the problem on?

    Linux/Unix

    Relevant log output

    [10:26:47] [udemy-downloader] [handle_segments:1344] INFO: > Lecture Tracks Downloaded
    [10:26:47] [udemy-downloader] [handle_segments:1353] INFO: KID for video file is: BDD***************************************4C3
    [10:26:47] [udemy-downloader] [handle_segments:1360] INFO: KID for audio file is: BDD***************************************4C3
    [10:26:47] [udemy-downloader] [handle_segments:1366] INFO: > Decrypting video, this might take a minute...
    [0815/222647:ERROR:packager_main.cc(551)] Packaging Error: 5 (FILE_FAILURE): Cannot open file for reading 005 Découverte de la console PowerShell.encrypted.mp4
    [10:26:47] [udemy-downloader] [handle_segments:1389] ERROR: [-] Error: 
    Traceback (most recent call last):
      File "/home/rickey/Github/udemy-downloader-feat-selenium/main.py", line 1367, in handle_segments
        ret_code = decrypt(video_kid, video_filepath_enc, video_filepath_dec)
      File "/home/rickey/Github/udemy-downloader-feat-selenium/main.py", line 1304, in decrypt
        raise Exception("Decryption returned a non-zero exit code")
    Exception: Decryption returned a non-zero exit code
    

    Other information

    No response

    bug 
    opened by rickeymandraque 6
  • [Bug]: unable to install requirements from requirements.txt

    [Bug]: unable to install requirements from requirements.txt

    What happened?

    image requirements.txt available in same directory, still python unable to install it

    using python 3.10

    Expected Result

    will install all requirements

    Branch

    master/main

    What operating systems are you seeing the problem on?

    Windows

    Relevant log output

    No response

    Other information

    No response

    bug 
    opened by chnaveen1993 1
  • [Bug]: Failed request

    [Bug]: Failed request

    What happened?

    First of all Thank you very much for your hard work to making this project. i will appriciate you by donating in crypto usdt for this efforts. however i try to run your script i am getting this error while downloading course. Evan i logout and relogin account many time and update .env file with new barear token but still i am getting this issue. kindly see the screenshot. Is my command is perfect and where i am doing mistake. i am not using any udemy subs plan. I am using normal account and i bought some courses.

    Screenshot 2022-08-07 154703 e

    Expected Result

    Download all lectures successfully.

    Branch

    master/main

    What operating systems are you seeing the problem on?

    Windows

    Relevant log output

    No response

    Other information

    i am using master branch

    bug 
    opened by samsam619 10
  • Forbidden Error

    Forbidden Error

    What happened?

    It constantly gives this error when try the download

    Expected Result

    Dont gives err

    Branch

    master/main

    What operating systems are you seeing the problem on?

    Windows

    Relevant log output

    [08:47:43] [udemy-downloader] [__init__:287] INFO: Login Success
    [08:47:43] [udemy-downloader] [main:1467] INFO: > Fetching course information, this may take a minute...
    [08:47:43] [udemy-downloader] [_get:804] ERROR: Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=.........
    [08:47:43] [udemy-downloader] [_get:805] ERROR: 403 Forbidden, retrying (attempt 0 )...
    [08:47:45] [udemy-downloader] [_get:804] ERROR: Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=.........
    [08:47:45] [udemy-downloader] [_get:805] ERROR: 403 Forbidden, retrying (attempt 1 )...
    [08:47:46] [udemy-downloader] [_get:804] ERROR: Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=.........
    [08:47:46] [udemy-downloader] [_get:805] ERROR: 403 Forbidden, retrying (attempt 2 )...
    [08:47:47] [udemy-downloader] [_get:804] ERROR: Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=.........
    [08:47:47] [udemy-downloader] [_get:805] ERROR: 403 Forbidden, retrying (attempt 3 )...
    [08:47:48] [udemy-downloader] [_get:804] ERROR: Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=.........
    [08:47:48] [udemy-downloader] [_get:805] ERROR: 403 Forbidden, retrying (attempt 4 )...
    [08:47:49] [udemy-downloader] [_get:804] ERROR: Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=.........
    [08:47:49] [udemy-downloader] [_get:805] ERROR: 403 Forbidden, retrying (attempt 5 )...
    [08:47:50] [udemy-downloader] [_get:804] ERROR: Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=.........
    [08:47:50] [udemy-downloader] [_get:805] ERROR: 403 Forbidden, retrying (attempt 6 )...
    [08:47:51] [udemy-downloader] [_get:804] ERROR: Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=.........
    [08:47:51] [udemy-downloader] [_get:805] ERROR: 403 Forbidden, retrying (attempt 7 )...
    [08:47:52] [udemy-downloader] [_get:804] ERROR: Failed request https://www.udemy.com/api-2.0/users/me/subscribed-courses?fields[course]=id,url,title,published_title&page=1&page_size=500&search=.........
    [08:47:52] [udemy-downloader] [_get:805] ERROR: 403 Forbidden, retrying (attempt 8 )...
    

    Other information

    I'm using this command

    python main.py -c "https://www.udemy.com/course/{i}/learn/" -b "{token}" --download-captions --download-assets --keep-vtt -l all
    
    bug 
    opened by Eikosa 1
Releases(1.0)
Owner
Puyodead1
Developer and Computer Nerd. I primarily code in Python, JavaScript, and Java. Currently in High School.
Puyodead1
this is udemy course downloader, before a start you know how to get access token.

udemy_downloader this is udemy course downloader, before a start you know how to get access token. To get the access_token on Google Chrome (once on U

OkUgur 18 Dec 4, 2022
Tkinter based YouTube video downloader works on pytube 11.0.2. Can download YouTube videos in 720p(HD), 144p and even only audio.

YouTube-Downloader Tkinter based YouTube video downloader works on pytube 11.0.2. Can download YouTube videos in 720p(HD), 144p and even only audio. G

Manav Grover 2 Dec 27, 2021
YouTube-Video-Downloader - Download Youtube Videos for free.

YouTube-Video-Downloader Download Youtube Videos for free. Installing Dependencies:- Windows pip install pytube Mac/Linux pip3 install pytube Clonin

Xception Inc. 1 Jan 1, 2022
Ripurei is a free-to-use osu! replay downloader, that can be configured to download from any osu! server.

Ripurei Ripurei is a fully functional osu! replay downloader, fully capable of downloading from almost any osu! server. Functionality Timeline ✔️ Able

Thomas 0 Feb 11, 2022
YouTube-Downloader - YouTube Video Downloader made using python

YouTube-Downloader YouTube Videos Downloder made using python.

Shivam 1 Jan 16, 2022
Python-Youtube-Downloader - An Open Source Python Youtube Downloader

Python-Youtube-Downloader Hello There This Is An Open Source Python Youtube Down

Flex Tools 3 Jun 14, 2022
Youtube Downloader is a simple but highly efficient Youtube Video Downloader, made completly using Python

Youtube Downloader is a simple but highly efficient Youtube Video Downloader, made completly using Python

Arsh 2 Nov 26, 2022
Youtube-downloader-using-Python - Youtube downloader using Python

Youtube-downloader-using-Python Hii guys !! Fancy to see here Welcome! built by

Lakshmi Deepak 2 Jun 9, 2022
Using Youtube downloader is the fast and easy way to download and save any YouTube video.

Youtube video downloader using Django Using Django as a backend along with pytube module to create Youtbue Video Downloader. https://yt-videos-downloa

Suman Raj Khanal 10 Jun 18, 2022
bing image downloader app used to download bulk images for a specific search term created using streamlit and bing_image_downloader python packages

bing image downloader app bing image downloader app is used to download bulk images for a specific search term. bing image downloader app gets the sea

Siva Prakash 8 Apr 5, 2022
MMDL (Mega Music Downloader) - A tool to easily download music.

mmdl - Mega Music Downloader What is mmdl ❓ TLDR: MMDL is a cli app which allows you to quickly and efficiently download one or multiple songs from Yo

techboy-coder 30 Dec 13, 2022
Youtube Downloader is a Graphic User Interface(GUI) that lets users download a Youtube Video or Audio through a URL

Youtube Downloader This Python and Tkinter based GUI allows users to directly download the Best Resolution Videos and Audios from Youtube. Pa-fy Insta

Samarth Kumar 2 Jun 25, 2022
YT-Downloader is a Tool to download youtube video.

YT-Downloader YT-Downloader is a Tool to download youtube video.If you are looking for a simple video downloader tool Than This YT-Downloader may be u

Pradip Thapa 7 May 11, 2022
An Inline Telegram bot that can download YouTube videos with permanent thumbnail support

Tube (YouTube Downloader) An Inline Telegram bot that can download YouTube videos with permanent thumbnail support About Bot need to be in Inline Mode

Renjith Mangal 30 Dec 14, 2022
PyQt5 simple files , youtube videos and youtube playlist downloader

PyQt5 simple files , youtube videos and youtube playlist downloader

AmirHossein Mohammadi 7 Jul 25, 2022
Youtube Downloader by PyTube é uma ferramenta simples com interface gráfica e escrito em python para baixar vídeos e playlists do youtube...

YouTube Downloader by PyTube O que é o YouTube Downloader by PyTube? YouTube Downloader by PyTube é um software simples para baixar vídeos no YouTube

Elizeu Barbosa Abreu 5 Jul 30, 2022
FireDM is a python open source (Internet Download Manager) with multi-connections, high speed engine, it downloads general files and videos from youtube and tons of other streaming websites .

python open source (Internet Download Manager) with multi-connections, high speed engine, based on python, LibCurl, and youtube_dl https://github.com/firedm/FireDM

null 1.6k Apr 12, 2022
Command-line program to download videos from YouTube.com and other video sites

youtube-dl - download videos from youtube.com or other video platforms

youtube-dl 116.4k Jan 7, 2023