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
YouTube Video publisher using youtube-dl & ROS2🐢

YouTube-publisher-ROS2 Publish sensor_msgs/Image by "YouTube" 🤗 🤗 🤗 ! You don't have to use webcamera or your video to check demos. Purpose Quick d

Ar-Ray 5 Dec 04, 2022
Mobile based API for Crunchyroll BETA (and Downloader).

Mobile based API for Crunchyroll BETA (and Downloader). Not restricted on servers and NO CLOUDFLARE

27 Dec 11, 2022
Can automatically download mods from a Curseforge modpack

Curseforge-Modpack-Downloader A Python script which automatically downloads mods from a Curseforge modpack. Installing Dependencies ⚠ Make sure you ha

Rayr 1 Sep 20, 2022
Download Apple Music Cover Artwork in the best Quality by providing an Apple Music Link. It downloads the jpg, png and webp version since they often differ from another.

amogus.py - Version 0.0.5 amogus - Apple Music Hi-Res Artwork Fetcher this is my first real python tool so sorry if its bad amogus is a Python script

reaper 46 Jan 09, 2023
Youtube videos and channels scraper python wrapper!

YouTubeCrawle Wrapper for python Why This wrapper? This is wrapper is not limited to videos only it can scrape both channel and videos seperately ;D

Kei 16 Aug 08, 2022
The free and open-source Download Manager written in pure Python

The free and open-source Download Manager written in pure Python

pyLoad 2.7k Dec 31, 2022
Pantheon - The fastest YouTube downloader.

A Youtube downloader written in Python3, using HTTP requests and an API.

Billy 38 Nov 21, 2022
Automatically download and crop key information from the arxiv daily paper. (cpu version)

Automatically download and crop key information from the arxiv daily paper. (cpu version)

HeoLis 4 Jul 30, 2022
The PornHub Downloader is a powerfull script used to download and manage both videos and pictures

The PornHub Downloader is a powerfull script used to download and manage both videos and pictures

16 Aug 31, 2022
Download every approved Obsidian.md community Plugin and Theme

obsidian-repos-downloader Contents What? Why? Setup Requirements Download Run Getting Started Usage - all the arguments Output Directories Flatter Str

Clare Macrae 16 Dec 13, 2022
Quickly, simply, and asynchronously download NFT's from an Opensea collection

iRightClick Quickly, simply, and asynchronously download NFT's from an Opensea collection. NOTICE This tool is not developed to encourage or facilitat

Setro 34 Dec 30, 2022
Download a large file from Google Drive (curl/wget fails because of the security notice).

gdown Download a large file from Google Drive. Description Download a large file from Google Drive. If you use curl/wget, it fails with a large file b

Kentaro Wada 2.7k Jan 09, 2023
A python scripts that downloads doujin from nhentai without having an account

nhentai-downloader a python scripts that downloads doujin from https://nhentai.net without having an account. Usage Needs Python 3^ Linux pip3 install

Earl Sabalo 4 Jun 13, 2022
Yahoo! Finance next gen python 3 / pandas market data downloader

Yahoo! Finance-ng python3 / pandas market data downloader Ever since Yahoo! finance decommissioned their historical data API, many programs that relie

Pedro Larroy 7 Dec 09, 2022
A股tick下载,自动判断交易日历,获取全市场level1数据

TickDown A股tick下载,自动判断交易日历,获取全市场level1数据 依赖项 func_timeout requests some_tool(仓库里) akshare 使用 定时任务在上午 09:07开始运行 参数调节 max_num 单批次提交的股票数,当前为800,可以自行尝试多个数

Demon Finch 7 Jul 06, 2022
Web Downloader With Python

Web Downloader Introduction This module will provide API to download the webpage components : html file, image file, css fil, javascript file, href li

3 Dec 28, 2022
Download and save Bing wallpapers and set as background for GNOME desktop

Save Bing wallpapers and set as background for GNOME desktop This script downloads the Bing wallpaper and sets it in the background of your gnome desk

manikamran 2 Nov 06, 2021
YoutubeDownloader - Download any public Playlist from Youtube

YoutubeDownloader Download any public Youtube Channel / Playlist Features Bulk d

17 Nov 12, 2022
Youtube list to mp3 - Youtube list to mp3 downloader

Youtube list to mp3 downloader Tiny script to convert a list of youtube videos t

Papi Diagne 3 Feb 11, 2022
A Quick demo of how to use the youtube_dl module in python.

youtube_dl python module demo A Quick demo of how to use the youtube_dl module in python. Whole documentation for the youtube_dl Installation git

7 Aug 27, 2021