rand-net/khan-dl

Download Error When Downloading Any Course/Domain

Closed this issue · 2 comments

I'm trying to download some economics courses but getting the following error every time, I tried downloading the complete library, download courses by url, download interactively and all with the same problem.
I tried to use it with python version 3.7 and 3.11 and still getting the same error.

Domain: Economics-Finance-Domain
Selected Domain: economics-finance-domain

Downloading Courses...

Course: Macroeconomics
Selected Course: Macroeconomics
Course URL: https://www.khanacademy.org/economics-finance-domain/macroeconomics

Generating Path Slugs...

Collecting Youtube IDs:   0.0% [>                                                       ]   0/  8 eta [?:??:??]
Traceback (most recent call last):
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/YoutubeDL.py", line 4052, in urlopen
    return self._request_director.send(req)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/networking/common.py", line 114, in send
    response = handler.send(request)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/networking/_helper.py", line 204, in wrapper
    return func(self, *args, **kwargs)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/networking/common.py", line 325, in send
    return self._send(request)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/networking/_requests.py", line 341, in _send
    raise HTTPError(res, redirect_loop=max_redirects_exceeded)
yt_dlp.networking.exceptions.HTTPError: HTTP Error 400: Bad Request

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/extractor/common.py", line 847, in _request_webpage
    return self._downloader.urlopen(self._create_request(url_or_request, data, headers, query))
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/YoutubeDL.py", line 4074, in urlopen
    raise _CompatHTTPError(e) from e
yt_dlp.networking.exceptions._CompatHTTPError: HTTP Error 400: Bad Request

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/YoutubeDL.py", line 1567, in wrapper
    return func(self, *args, **kwargs)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/YoutubeDL.py", line 1702, in __extract_info
    ie_result = ie.extract(url)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/extractor/common.py", line 715, in extract
    ie_result = self._real_extract(url)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/extractor/khanacademy.py", line 39, in _real_extract
    'countryCode': 'US',
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/extractor/common.py", line 1069, in download_content
    res = getattr(self, download_handle.__name__)(url_or_request, video_id, **kwargs)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/extractor/common.py", line 1035, in download_handle
    data=data, headers=headers, query=query, expected_status=expected_status)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/extractor/common.py", line 903, in _download_webpage_handle
    urlh = self._request_webpage(url_or_request, video_id, note, errnote, fatal, data=data, headers=headers, query=query, expected_status=expected_status)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/extractor/common.py", line 860, in _request_webpage
    raise ExtractorError(errmsg, cause=err)
yt_dlp.utils.ExtractorError: [khanacademy:unit] economics-finance-domain/macroeconomics/macro-basic-economics-concepts: Unable to download JSON metadata: HTTP Error 400: Bad Request (caused by <HTTPError 400: Bad Request>); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/khan_dl/khan_dl.py", line 348, in get_course_youtube_ids
    info_dict = ydl.extract_info(unit_url, download=False)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/YoutubeDL.py", line 1556, in extract_info
    return self.__extract_info(url, self.get_info_extractor(key), download, extra_info, process)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/YoutubeDL.py", line 1585, in wrapper
    self.report_error(str(e), e.format_traceback())
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/YoutubeDL.py", line 1045, in report_error
    self.trouble(f'{self._format_err("ERROR:", self.Styles.ERROR)} {message}', *args, **kwargs)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/YoutubeDL.py", line 984, in trouble
    raise DownloadError(message, exc_info)
yt_dlp.utils.DownloadError: ERROR: [khanacademy:unit] economics-finance-domain/macroeconomics/macro-basic-economics-concepts: Unable to download JSON metadata: HTTP Error 400: Bad Request (caused by <HTTPError 400: Bad Request>); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/YoutubeDL.py", line 4052, in urlopen
    return self._request_director.send(req)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/networking/common.py", line 114, in send
    response = handler.send(request)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/networking/_helper.py", line 204, in wrapper
    return func(self, *args, **kwargs)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/networking/common.py", line 325, in send
    return self._send(request)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/networking/_requests.py", line 341, in _send
    raise HTTPError(res, redirect_loop=max_redirects_exceeded)
yt_dlp.networking.exceptions.HTTPError: HTTP Error 400: Bad Request

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/extractor/common.py", line 847, in _request_webpage
    return self._downloader.urlopen(self._create_request(url_or_request, data, headers, query))
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/YoutubeDL.py", line 4074, in urlopen
    raise _CompatHTTPError(e) from e
yt_dlp.networking.exceptions._CompatHTTPError: HTTP Error 400: Bad Request

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/YoutubeDL.py", line 1567, in wrapper
    return func(self, *args, **kwargs)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/YoutubeDL.py", line 1702, in __extract_info
    ie_result = ie.extract(url)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/extractor/common.py", line 715, in extract
    ie_result = self._real_extract(url)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/extractor/khanacademy.py", line 39, in _real_extract
    'countryCode': 'US',
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/extractor/common.py", line 1069, in download_content
    res = getattr(self, download_handle.__name__)(url_or_request, video_id, **kwargs)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/extractor/common.py", line 1035, in download_handle
    data=data, headers=headers, query=query, expected_status=expected_status)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/extractor/common.py", line 903, in _download_webpage_handle
    urlh = self._request_webpage(url_or_request, video_id, note, errnote, fatal, data=data, headers=headers, query=query, expected_status=expected_status)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/extractor/common.py", line 860, in _request_webpage
    raise ExtractorError(errmsg, cause=err)
yt_dlp.utils.ExtractorError: [khanacademy:unit] economics-finance-domain/macroeconomics/macro-basic-economics-concepts: Unable to download JSON metadata: HTTP Error 400: Bad Request (caused by <HTTPError 400: Bad Request>); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/mohamed/.pyenv/versions/3.7.12/bin/khan-dl", line 8, in <module>
    sys.exit(main())
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/khan_dl/__init__.py", line 57, in main
    khan_down.download_course_interactive()
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/khan_dl/khan_dl.py", line 456, in download_course_interactive
    self.get_course_youtube_ids()
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/khan_dl/khan_dl.py", line 358, in get_course_youtube_ids
    unit_url, download=False, process=False
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/YoutubeDL.py", line 1556, in extract_info
    return self.__extract_info(url, self.get_info_extractor(key), download, extra_info, process)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/YoutubeDL.py", line 1585, in wrapper
    self.report_error(str(e), e.format_traceback())
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/YoutubeDL.py", line 1045, in report_error
    self.trouble(f'{self._format_err("ERROR:", self.Styles.ERROR)} {message}', *args, **kwargs)
  File "/home/mohamed/.pyenv/versions/3.7.12/lib/python3.7/site-packages/yt_dlp/YoutubeDL.py", line 984, in trouble
    raise DownloadError(message, exc_info)
yt_dlp.utils.DownloadError: ERROR: [khanacademy:unit] economics-finance-domain/macroeconomics/macro-basic-economics-concepts: Unable to download JSON metadata: HTTP Error 400: Bad Request (caused by <HTTPError 400: Bad Request>); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U

There seems to be some major changes to the Khan Academy API. These have affected the yt-dlp library on which this app depends on. Once the bug is fixed, the app will work.

Fixed in latest version