MathJax.js
Coursera, пожалуй, является лидером в области массовых открытых онлайн-курсов (МООК), в которых по состоянию на февраль 2013 года было выбрано более 300 классов из 62 различных учреждений. Щедрый вклад преподавателей и учреждений делает отличное образование доступным для многих, кто иначе не мог бы себе этого позволить. В отдаленных уголках мира есть даже некоммерческие организации, «стоящие на ногах», которые помогают распространять богатство (см. отзыв Тунапанды ниже).
Этот скрипт упрощает пакетную загрузку лекционных ресурсов (например, видео, презентаций и т. д.) для занятий Coursera. Учитывая одно или несколько названий классов и учетные данные, он получает названия недель и классов со страницы лекций , а затем загружает соответствующие материалы в файлы и каталоги с соответствующими именами.
Почему это полезно? Такая утилита, как wget, может работать, но имеет следующие ограничения:
wget
в цикле for позволяет получить дополнительные видео, которые не опубликованы или не связаны ссылками, и иногда это дубликаты. Расширения браузера, такие как DownloadThemAll , являются еще одной возможностью, но coursera-dl
предоставляет больше функций, таких как файлы с соответствующими именами.
Первоначально эта работа была частично вдохновлена YouTube-dl, с помощью которого я скачал много других хороших видео, например, из Академии Хана.
.netrc
.coursera-dl.conf
. coursera-dl
предназначен для использования только для ваших материалов, которые Coursera предоставляет вам для скачивания.
Мы не поощряем любое использование, нарушающее Условия использования. Соответствующий отрывок:
«[...] Coursera предоставляет вам личную, неисключительную, непередаваемую лицензию на доступ к Сайтам и их использование. Вы можете загружать материалы с Сайтов только для личного некоммерческого использования. Вы не имеете права копировать иным образом , воспроизводить, ретранслировать, распространять, публиковать, использовать в коммерческих целях или иным образом передавать любой материал, а также не можете изменять или создавать производные работы на основе материала».
coursera-dl
требует Python 2 или Python 3 и бесплатную учетную запись Coursera, зарегистрированную в интересующем классе. (По состоянию на февраль 2020 года мы автоматически тестируем выполнение программы на Python версий 2.7, Pypy, 3.6, 3.7, 3.8 и 3.9).
Примечание. Мы настоятельно рекомендуем вам использовать интерпретатор Python 3 (3.9 или новее).
В любой операционной системе убедитесь, что расположение исполняемого файла Python добавлено в переменную среды PATH
, и после установки зависимостей (см. следующий раздел) для базового использования вам нужно будет вызвать сценарий из основного каталога операционной системы. проект и добавьте к нему слово python
. Вы также можете воспользоваться более расширенными возможностями программы, просмотрев раздел «Запуск сценария» этого документа.
Примечание. Вы уже должны (вручную) согласиться с Кодексом чести конкретных курсов, которые хотите использовать с coursera-dl
.
Из командной строки (желательно из виртуальной среды) просто введите команду:
pip install coursera-dl
Это позволит загрузить последнюю выпущенную версию программы из индекса пакетов Python (PyPI) вместе со всеми необходимыми зависимостями. На этом этапе вы должны быть готовы начать его использовать.
Если это не сработает, поскольку ваша версия Python 2 слишком старая (например, 2.7.5 в Ubuntu 14.4), попробуйте:
apt-get install python3 python3-pip
pip3 install coursera-dl
вместо.
Примечание 1. Мы настоятельно рекомендуем вам не устанавливать пакет глобально на вашем компьютере (т. е. с правами root/администратора), поскольку установленные модули могут конфликтовать с другими приложениями Python, которые вы установили в вашей системе (или они могут мешать работе). с coursera-dl
). Предпочитайте использовать опцию --user
для pip install
, если вам нужно.
Примечание 2. Как уже упоминалось, мы настоятельно рекомендуем вам использовать новый интерпретатор Python 3 (например, 3.9 или новее), поскольку Python 3 лучше поддерживает SSL/TLS (для безопасных соединений), чем более ранние версии.
Если вам необходимо использовать Python 2, убедитесь, что у вас установлена хотя бы Python 2.7.9 (более поздние версии подходят).
В противном случае вы все равно можете использовать coursera-dl
, но вам придется установить дополнительный пакет ndg-httpsclient
, который может включать компиляцию (по крайней мере, в системах Linux).
Мы настоятельно рекомендуем вам рассмотреть возможность установки пакетов Python с помощью pip, поскольку в настоящее время это предпочтительный метод, если только один из участников проекта не указал иное (например, при тестировании или отладке новой функции или использовании исходного кода непосредственно из нашего git). хранилище). Если вы используете pip
, вы можете напрямую установить все зависимости из файла требований, используя pip install -r requirements.txt
.
Мы настоятельно рекомендуем вам установить coursera-dl
и все его зависимости таким образом, чтобы не мешать остальной части вашей установки Python. Это достигается путем создания виртуальной среды , или «virtualenv».
Для первоначальной настройки в Unix-подобной операционной системе выполните следующие действия (сначала создайте/адаптируйте каталог /directory/where/I/want/my/courses
):
cd /directory/where/I/want/my/courses
virtualenv my-coursera
cd my-coursera
source bin/activate
git clone https://github.com/coursera-dl/coursera-dl
cd coursera-dl
pip install -r requirements.txt
./coursera-dl ...
Чтобы в дальнейшем загружать новые видео с занятий, просто выполните:
cd /directory/where/I/want/my/courses/my-coursera
source bin/activate
cd coursera-dl
./coursera-dl ...
Мы работаем над оптимизацией всего этого процесса, чтобы он был максимально простым, но для поддержки старых версий Python и решения проблемы отключения SSLv3 на Coursera нам придется предпринять несколько дополнительных шагов. В любом случае настоятельно рекомендуется всегда устанавливать последнюю возможную версию интерпретатора Python.
Пакет AUR: Coursera-dl
Предупреждение. Этот метод не рекомендуется использовать, если у вас нет опыта работы с несколькими средами Python.
Вы можете использовать программу pip
для самостоятельной установки зависимостей. Все они перечислены в файле requirements.txt
(а дополнительные зависимости, необходимые для разработки, перечислены в файле requirements-dev.txt
).
Чтобы использовать этот метод, вы должны действовать следующим образом:
pip install -r requirements.txt
pip install -r requirements-dev.txt
Вторая строка выше должна понадобиться только в том случае, если вы намерены помочь с разработкой (а помощь всегда приветствуется) или если сопровождающий проекта просит вас установить дополнительные пакеты для целей отладки.
Еще раз: прежде чем подавать отчеты об ошибках, если вы установили зависимости самостоятельно, убедитесь, что версии ваших модулей не ниже тех, которые указаны в файле requirements.txt
(и файле requirements-dev.txt
, если применимо).
Если вы предпочитаете, вы можете запустить это программное обеспечение внутри Docker:
docker run --rm -it -v
"$(pwd):/courses"
courseradl/courseradl -u <USER> -p <PASSWORD>
Или используя файл netrc:
docker run --rm -it
-v "$(pwd):/courses" -v "$HOME/.netrc:/netrc"
courseradl/courseradl -n /netrc
Фактический рабочий каталог Coursera-dl — /courses. Все курсы будут загружены туда, если вы не укажете иное.
python -m pip install coursera-dl
Убедитесь, что путь установки Python добавлен в системные переменные среды PATH. Его можно найти в «Панель управления» > «Система» > «Дополнительные параметры системы» > «Переменные среды».
Example:
C:Python39Scripts;C:Python39;
Или, если у вас ограниченные права на установку и вы установили Python в AppData, добавьте это в свой PATH.
Example:
C:Users<user>AppDataLocalProgramsPythonPython39-32Scripts;C:Users<user>AppDataLocalProgramsPythonPython39-32;
Coursera-dl теперь можно запускать из командной строки или PowerShell.
Если у вас его еще нет, создайте учетную запись Coursera и запишитесь на курс. Список классов см. на https://www.coursera.org/courses.
Обратитесь к coursera-dl --help
для получения полной и актуальной информации по параметрам времени выполнения, поддерживаемым этой утилитой.
Запустите сценарий для загрузки материалов, указав учетные данные своей учетной записи Coursera (например, адрес электронной почты и пароль или файл ~/.netrc
), имена классов, а также любые дополнительные параметры:
General: coursera-dl -u <user> -p <pass> modelthinking-004
With CAUTH parameter: coursera-dl -ca 'some-ca-value-from-browser' modelthinking-004
Если вы не хотите вводить свой пароль в командной строке в виде обычного текста, вы можете использовать сценарий без опции -p
. В этом случае вам будет предложено ввести пароль после запуска сценария.
Вот несколько примеров того, как вызвать coursera-dl
из командной строки:
Without -p field: coursera-dl -u <user> modelthinking-004
Multiple classes: coursera-dl -u <user> -p <pass> saas historyofrock1-001 algo-2012-002
Filter by section name: coursera-dl -u <user> -p <pass> -sf "Chapter_Four" crypto-004
Filter by lecture name: coursera-dl -u <user> -p <pass> -lf "3.1_" ml-2012-002
Download only ppt files: coursera-dl -u <user> -p <pass> -f "ppt" qcomp-2012-001
Use a ~/.netrc file: coursera-dl -n -- matrix-001
Get the preview classes: coursera-dl -n -b ni-001
Download videos at 720p: coursera-dl -n --video-resolution 720p ni-001
Specify download path: coursera-dl -n --path=C:CourseraClasses comnetworks-002
Display help: coursera-dl --help
Maintain a list of classes in a dir:
Initialize: mkdir -p CURRENT/{class1,class2,..classN}
Update: coursera-dl -n --path CURRENT `ls CURRENT`
Примечание. Если ваша команда ls
имеет псевдоним для отображения цветного вывода, у вас могут возникнуть проблемы. Обязательно экранируйте команду ls
(используйте ls
), чтобы в сценарий не отправлялись специальные символы.
Обратите внимание, что мы поддерживаем курсы Новой платформы («по требованию»).
По умолчанию видео загружаются с разрешением 540p. Для курсов по запросу флаг --video-resolution
принимает значения 360p, 540p и 720p.
Чтобы загрузить только файлы субтитров .txt
и/или .srt
вместо видео, используйте -ignore-formats mp4 --subtitle-language en
или любой другой формат, в котором закодированы видео, и желаемые языки субтитров.
На платформах *nix использование файла ~/.netrc
является хорошей альтернативой указанию вашего имени пользователя (т. е. вашего адреса электронной почты) и пароля каждый раз в командной строке. Чтобы использовать его, просто добавьте строку, подобную приведенной ниже, в файл с именем .netrc
в вашем домашнем каталоге (или его эквивалент, если вы используете Windows) с таким содержимым:
machine coursera-dl login <user> password <pass>
Создайте файл, если он еще не существует. С этого момента вы можете переключиться с использования -u
и -p
на простой вызов coursera-dl
с опцией -n
. Это особенно удобно, так как вводить имена пользователей (адреса электронной почты) и пароли непосредственно в командной строке может быть утомительно (даже больше, если вы случайно выбрали «надежный» пароль).
В качестве альтернативы, если вы хотите сохранить предпочтительные параметры (которые также могут включать ваше имя пользователя и пароль), создайте файл с именем coursera-dl.conf
, в котором должен выполняться сценарий, в следующем формате:
--username <user>
--password <pass>
--subtitle-language en,zh-CN|zh-TW
--download-quizzes
#--mathjax-cdn https://cdn.bootcss.com/mathjax/2.7.1/MathJax.js
# more other parameters
Параметры, указанные в файле, будут переопределены, если они снова будут указаны в командной строке.
Примечание. В coursera-dl.conf
все параметры не следует заключать в кавычки.
В режиме по умолчанию, когда вы прерываете процесс загрузки нажатием CTRL + C , частично загруженные файлы будут удалены с вашего диска и вам придется начинать процесс загрузки с начала. Если ваша загрузка была прервана по причине, отличной от KeyboardInterrupt ( CTRL + C ), например внезапного сбоя системы, частично загруженные файлы останутся на вашем диске, и при следующем запуске процесса эти файлы будут удалены из списка загрузок!, поэтому это ваша задача — удалить их вручную перед следующим запуском. По этой причине мы добавили опцию --resume
, которая продолжает загрузку с того места, где она была остановлена:
coursera-dl -u <user> -p <pass> --resume sdn1-001
Эту опцию также можно использовать с внешними загрузчиками:
coursera-dl --wget -u <user> -p <pass> --resume sdn1-001
Примечание 1. Некоторые внешние загрузчики используют собственную встроенную функцию возобновления, которая может быть несовместима с другими, поэтому используйте их на свой страх и риск.
Примечание 2 : Помните, что в режиме возобновления прерванные файлы НЕ БУДУТ удаляться с вашего диска.
ПРИМЕЧАНИЕ . Если ваш пароль содержит знаки препинания, кавычки или другие «забавные символы» (например, <
, >
, #
, &
, |
и т. д.), вам, возможно, придется экранировать их из оболочки. В bash или других клонах оболочки Bourne (и, возможно, во многих других оболочках) один из лучших способов сделать это — заключить пароль в одинарные кавычки, чтобы не столкнуться с проблемами. Дополнительную информацию см. в выпуске № 213.
Если у вас возникли проблемы при загрузке материалов занятий, попробуйте посмотреть, решит ли вашу проблему одно из следующих действий:
Убедитесь, что имя используемого вами класса соответствует имени ресурса, используемому в URL-адресе этого класса: https://www.coursera.org/learn/<CLASS_NAME>/home/welcome
Пробовали ли вы очистить кэшированные файлы cookie/учетные данные с помощью опции --clear-cache
?
Обратите внимание, что многие курсы (возможно, большинство?) могут удалять материалы через некоторое время после завершения курса, в то время как другие курсы могут сохранять материалы до следующего сеанса/предложения того же курса (во избежание проблем с академической нечестностью, видимо).
Короче говоря, нет гарантии, что вы сможете скачать после завершения курса, и, к сожалению, мы ничем не можем вам помочь.
Убедитесь, что вы установили и/или обновили все свои зависимости в соответствии с файлом requirements.txt
, как описано выше.
Можно экспортировать файл cookie в стиле Netscape с расширением браузера (1, 2) и использовать его с опцией -c
. Это удобно, когда аутентификация по паролю не работает (процесс аутентификации время от времени меняется).
Если результаты показывают 0 разделов, скорее всего, вы предоставили неверные учетные данные (имя пользователя и/или пароль в командной строке, в файле .netrc
или в файле coursera-dl.conf
).
Для курсов, которые еще не начались, но уже прошли предыдущую итерацию, иногда доступен предварительный просмотр, содержащий все занятия из последнего курса. Эти файлы можно загрузить, передав параметр --preview
.
Если вы получите сообщение об ошибке типа « Could not find class: <CLASS_NAME>
, то:
class
, и текущей версии курса (числа). Например, для класса с именем class
вам придется использовать class-001
, class-002
и т. д.Если:
Вы получаете сообщение об ошибке при использовании -n
чтобы указать, что вы хотите использовать файл .netrc
, и
Вы хотите, чтобы сценарий использовал файл netrc по умолчанию и
Вы получаете сообщение coursera-dl: error: too few arguments
Затем вам следует указать --
в качестве аргумента после -n
, то есть -n --
или изменить порядок передачи аргументов в скрипт, чтобы аргумент после -n
начинался с дефиса ( -
). В противном случае модуль Python argparse
подумает, что вы передаете имя файла netrc, который вы хотите использовать. См. выпуск №162.
Если в вашем пароле есть пробелы, не забудьте написать его в кавычках.
Вы установили правильный проект?
Предупреждение . Если вы установили сценарий с помощью PyPi (pip), убедитесь, что вы установили правильный проект. Нам пришлось использовать другое имя в pip, поскольку наше исходное имя уже было занято. Не забудьте установить его, используя:
pip install coursera-dl
Если вы из Китая и у вас возникли проблемы с загрузкой видео, может помочь добавление «52.84.167.78 d3c33hcgiwev3.cloudfront.net» в файл хостов (/etc/hosts) и обновление DNS с помощью «ipconfig/flushdns» (см. https: //github.com/googlehosts/hosts для получения дополнительной информации).
Прежде всего, убедитесь, что вы зарегистрированы на курс, который хотите загрузить.
На многие старые курсы уже закрыт набор, поэтому часто это не вариант. В этом случае попробуйте загрузить с опцией --preview
. Некоторые курсы позволяют загружать лекционные материалы без регистрации, но это встречается нечасто и не гарантируется, что будет работать для каждого курса.
Наконец, вы можете скачать видео, если у вас есть хотя бы индексный файл, в котором перечислены все материалы курса. Возможно, ваш зачисленный друг сможет сохранить для вас эту страницу курса. В этом случае используйте опцию --process_local_page
.
В качестве альтернативы вы можете попробовать различные расширения браузера, предназначенные для решения этой проблемы.
Если ничего из вышеперечисленного вам не помогло, мы ничего не можем сделать.
Coursera-dl поддерживает внешние загрузчики, но учтите, что они используются только для загрузки материалов после анализа учебной программы, например видео, PDF-файлов, некоторых раздаточных материалов и дополнительных файлов (учебная программа всегда загружается с помощью внутреннего загрузчика). Если у вас возникли проблемы с загрузкой таких материалов, вы можете начать использовать внешний загрузчик и настроить значения его таймаута. Например, вы можете использовать загрузчик aria2c, передав опцию --aria
:
coursera-dl -n --path . --aria2 <course-name>
И поместите это в файл конфигурации aria2c ~/.aria2/aria2.conf
чтобы сократить время ожидания:
connect-timeout=2
timeout=2
bt-stop-timeout=1
Конфигурация тайм-аута для внутреннего загрузчика не поддерживается.
Если вы используете Windows за прокси-сервером, настройте переменные среды перед запуском сценария следующим образом:
set HTTP_PROXY=http://host:port
set HTTPS_PROXY=http://host:port
Связанное обсуждение: #205
В C:Users<user>AppDataLocalProgramsPythonPython39-32Scripts
или там, где установлен Python (выше — значение по умолчанию для Windows), отредактируйте файл ниже в режиме ожидания: (щелкните правой кнопкой мыши по имени сценария и выберите «Изменить»). с холостым ходом в меню)
coursera-dl-script
от
#!c:users<user>appdatalocalprogramspythonpython39-32python.exe
к
#"!c:users<user>appdatalocalprogramspythonpython39-32python.exe"
(добавить кавычки). Это известная ошибка пипа.
Источник: проблема № 500 StackOverflow.
Это известная ошибка, не сообщайте об этом сообщении об ошибке! Проблема в ВАШЕМ окружении. Чтобы это исправить, сделайте следующее:
sudo apt-get install build-essential python-dev libssl-dev libffi-dev
pip install --user urllib3 pyasn1 ndg-httpsclient pyOpenSSL
Если ошибка не исчезла, попробуйте установить Coursera-dl с GitHub, следуя этой инструкции: https://github.com/coursera-dl/coursera-dl#alternative-installation-method-for-unix-systems
Если проблема не устранена, прочтите следующие вопросы, чтобы получить дополнительные идеи по ее устранению: #330 #377 #329
Это также стоит прочитать: https://urllib3.readthedocs.io/en/latest/security.html#insecureplatformwarning.
MathJax.js
При сохранении страницы курса мы включили рендеринг MathJax
для математических уравнений, вставив MathJax.js
в заголовок. Сценарий использует службу cdn, предоставляемую mathjax.org. Однако этот URL-адрес недоступен в некоторых странах/регионах. Вы можете указать параметр --mathjax-cdn <MATHJAX_CDN>
, чтобы указать файл MathJax.js
, доступный в вашем регионе.
Прежде чем сообщить о какой-либо проблеме, выполните следующие действия:
Убедитесь, что вы используете последнюю версию скрипта, а рекомендуемые версии его зависимостей смотрите в файле requirements.txt
. Если у вас есть сомнения, используйте следующую команду:
pip install --upgrade coursera-dl
Если проблема не устранена, смело открывайте ее в нашем трекере ошибок. Пожалуйста, заполните шаблон проблемы как можно более подробной информацией .
Сообщая об ошибках в coursera-dl
, не забудьте указать достаточно информации, чтобы мы могли помочь вам:
requirements.txt
.--debug
, прежде чем публиковать сообщения в виде отчета об ошибке. Пожалуйста, скопируйте и вставьте их. Не перефразируйте/перефразируйте сообщения.Мне нравится получать обратную связь. Вот несколько комментариев, которые я получил:
«Спасибо за хорошую работу! Благодаря вашему сценарию знания еще немного наводнят мир!»
Гийом В. 08.11.2012
«Просто хотел отправить вам реквизиты для вашего скрипта Python для загрузки курсов Coursera. Я использую его в Кении для своей некоммерческой организации, чтобы проводить онлайн-курсы в местах, где Интернет очень дорогой и ненадежный. В основном дети здесь не могут себе этого позволить. средней школе, и загрузка одного из этих курсов обычными способами обойдется дороже, чем среднестатистическая семья зарабатывает за неделю. Спасибо!"
Джей Л., Тунапанда, 20 марта 2013 г.
«Я большой поклонник Coursera и посещаю множество разных курсов. Ограничения по времени не позволяют мне посещать все курсы, которые я хочу одновременно. Я наткнулся на ваш сценарий и с большим удовольствием им пользуюсь! Отличный материал! и спасибо, что сделали это доступным на Github — молодец!"
Уильям Г. 18 февраля 2013 г.
«Этот сценарий потрясающий! Я кропотливо загружал каждое видео и каждый файл вручную — просматривал wget, но столкнулся с проблемами с подстановочными знаками в HTML, а потом… я наткнулся на ваш сценарий. Не могу сказать, сколько часов вы потратили. только что спас меня :) Если ты когда-нибудь будешь в Париже/Стокгольме, я обязательно куплю тебе пива :)"
Разван Т. 26.11.2012
"Большое спасибо! :)"
Виктор В. 24.04.2013
Пожалуйста, публикуйте ошибки и проблемы на github. Пожалуйста, НЕ отправляйте запросы на поддержку лично сопровождающим! Мы очень загружены повседневными делами. Если у вас возникли проблемы, ПОЖАЛУЙСТА , сообщите о них в систему отслеживания проблем.