python - 系统找不到 `edx-dl`模块中指定的文件

标签 python windows edx

我正在尝试使用这个 Python 模块。 https://github.com/coursera-dl/edx-dl

请原谅我的基础知识。

然后安装了 Anaconda 3 Windows 10:

pip 安装 edx-dl

pip install --upgrade youtube-dl

然后获取类(class):

edx-dl -u user@user.com --list-courses

edx-dl -u user@user.com COURSE_URL

这一切都有效,但是一旦下载实际开始,就会出现: 出现 SSL/连接错误:HTTP 错误 403:禁止

Fiddler 显示它被 Cloudfare 阻止,我怀疑是由于用户代理的原因

我安装了Fake_UserAgent https://pypi.python.org/pypi/fake-useragent并补充道:

from fake_useragent import UserAgent #added this


def edx_get_headers():
    """
    Build the Open edX headers to create future requests.
    """
    logging.info('Building initial headers for future requests.')

    headers = {
        'User-Agent': 'edX-downloader/0.01',
        'Accept': 'application/json, text/javascript, */*; q=0.01',
        'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
        'Referer': EDX_HOMEPAGE,
        'X-Requested-With': 'XMLHttpRequest',
        'X-CSRFToken': _get_initial_token(EDX_HOMEPAGE),
    }

    ua = UserAgent()   #added this
    headers['User-Agent'] = ua.ie #added this

然后它下载了一个 pdf 和一个 xls,但由于 request.py 添加了 header 而出现另一个错误,因此向 requests.py 添加了 fake 并注释掉了默认 header ,如下所示。

from fake_useragent import UserAgent
        ub = UserAgent()
        self.addheaders = [('User-Agent', ub.ie)] 
        # self.addheaders = [('User-Agent', self.version), ('Accept', '*/*')] [('User-Agent', self.version), ('Accept', '*/*')]

新错误如下。我不知道如何进一步排除故障。我怀疑可能是 Windows 导致找不到文件/路径。

[download] https://youtube.com/watch?v=bKkrDLwDnDE => Downloaded\Implementing_ETL_with_SQL_Server_Integration_Services\02-Module_1__ETL_Processing\01-%(title)s-%(id)s.%(ext)s
Downloading video with URL https://youtube.com/watch?v=bKkrDLwDnDE from YouTube.
Traceback (most recent call last):
  File "edx-dl.py", line 6, in <module>
    edx_dl.main()
  File "c:\edx-dl-master\edx-dl-master\edx_dl\edx_dl.py", line 1080, in main
    download(args, selections, filtered_units, headers)
  File "c:\edx-dl-master\edx-dl-master\edx_dl\edx_dl.py", line 857, in download
    headers)
  File "c:\edx-dl-master\edx-dl-master\edx_dl\edx_dl.py", line 819, in download_unit
    headers)
  File "c:\edx-dl-master\edx-dl-master\edx_dl\edx_dl.py", line 801, in download_video
    skip_or_download(youtube_downloads, headers, args)
  File "c:\edx-dl-master\edx-dl-master\edx_dl\edx_dl.py", line 788, in skip_or_download
    f(url, filename, headers, args)
  File "c:\edx-dl-master\edx-dl-master\edx_dl\edx_dl.py", line 721, in download_url
    download_youtube_url(url, filename, headers, args)
  File "c:\edx-dl-master\edx-dl-master\edx_dl\edx_dl.py", line 761, in download_youtube_url
    execute_command(cmd, args)
  File "c:\edx-dl-master\edx-dl-master\edx_dl\utils.py", line 37, in execute_command
    subprocess.check_call(cmd)
  File "C:\Users\anton\Anaconda3\lib\subprocess.py", line 286, in check_call
    retcode = call(*popenargs, **kwargs)
  File "C:\Users\anton\Anaconda3\lib\subprocess.py", line 267, in call
    with Popen(*popenargs, **kwargs) as p:
  File "C:\Users\anton\Anaconda3\lib\subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "C:\Users\anton\Anaconda3\lib\subprocess.py", line 997, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified

与这里相同的问题,但没有提供解决方案或帮助,所以我想我会在这里尝试。

https://github.com/coursera-dl/edx-dl/issues/368

有关如何学习解决此问题的建议将不胜感激。

最佳答案

调试代码发现找不到youtube-dl .

检查回显%PATH%并意识到我有办法:

C:...\Anaconda3\但不是C:...\Anaconda3\Scripts\ (this is location of youtube_dl.exe) .

我已添加此路径但未重新启动。

重新启动并现已解决。

关于python - 系统找不到 `edx-dl`模块中指定的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49811189/

相关文章:

Python - 如果两个列表对象的名字大写,则彼此连接

python - Pandas 合并具有不同列的两个数据框

ios - 从 edX API 检索数据

edx平台无法应用stanford主题

python - SQLAlchemy:按多态子类过滤现有查询(相当于 `.of_type()` 但针对 `session.query()` )

.net - HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\TimeZoneKeyName 已损坏?

Windows 应用程序可以选择保持连接到控制台

Python:获取 WindowsError 而不是 IOError

python - Edx平台本地化不生效

python - 是否可以使用可以接受多种形式的键创建一个 python 字典?