MathJax.js
Se puede decir que Coursera es el líder en cursos masivos abiertos en línea (MOOC) con una selección de más de 300 clases de 62 instituciones diferentes en febrero de 2013. Las generosas contribuciones de educadores e instituciones están poniendo una educación excelente a disposición de muchos que de otra manera no podrían pagarla. Incluso hay organizaciones sin fines de lucro con "los pies en la tierra" en áreas remotas del mundo que están ayudando a difundir la riqueza (consulte los comentarios de Tunapanda a continuación).
Este script facilita la descarga por lotes de recursos de conferencias (por ejemplo, videos, ppt, etc.) para las clases de Coursera. Dados uno o más nombres de clases y credenciales de cuenta, obtiene los nombres de las semanas y las clases de la página de conferencias y luego descarga los materiales relacionados en archivos y directorios con los nombres adecuados.
¿Por qué es esto útil? Una utilidad como wget puede funcionar, pero tiene las siguientes limitaciones:
wget
en un bucle for selecciona vídeos adicionales que no están publicados/vinculados y, a veces, están duplicados. Extensiones de navegador como DownloadThemAll son otra posibilidad, pero coursera-dl
ofrece más funciones, como archivos con nombres adecuados.
Este trabajo se inspiró originalmente en parte en youtube-dl del cual he descargado muchos otros buenos videos como los de Khan Academy.
.netrc
.coursera-dl.conf
. coursera-dl
está diseñado para usarse únicamente con el material que Coursera le brinda acceso para descargar.
No fomentamos ningún uso que viole sus Términos de uso. Un extracto relevante:
"[...] Coursera le otorga una licencia personal, no exclusiva e intransferible para acceder y utilizar los Sitios. Puede descargar material de los Sitios solo para su uso personal y no comercial. De lo contrario, no puede copiar , reproducir, retransmitir, distribuir, publicar, explotar comercialmente o transferir de otro modo cualquier material, ni podrá modificar ni crear trabajos derivados del material".
coursera-dl
requiere Python 2 o Python 3 y una cuenta gratuita de Coursera inscrita en la clase de interés. (A partir de febrero de 2020 probamos automáticamente la ejecución del programa con las versiones de Python 2.7, Pypy, 3.6, 3.7, 3.8 y 3.9).
Nota: Le recomendamos encarecidamente que utilice un intérprete de Python 3 (3.9 o posterior).
En cualquier sistema operativo, asegúrese de que la ubicación del ejecutable de Python esté agregada a su variable de entorno PATH
y, una vez que tenga las dependencias instaladas (consulte la siguiente sección), para un uso básico , deberá invocar el script desde el directorio principal del proyecto y antepóngale la palabra python
. También puede utilizar funciones más avanzadas del programa consultando la sección "Ejecución del script" de este documento.
Nota: Ya debes haber aceptado (manualmente) el Código de Honor de los cursos particulares que deseas utilizar con coursera-dl
.
Desde una línea de comando (preferiblemente, desde un entorno virtual), simplemente emita el comando:
pip install coursera-dl
Esto descargará la última versión lanzada del programa desde Python Package Index (PyPI) junto con todas las dependencias necesarias. En este punto, deberías estar listo para empezar a usarlo.
Si esto no funciona porque su versión de Python 2 es demasiado antigua (por ejemplo, 2.7.5 en Ubuntu 14.4), intente:
apt-get install python3 python3-pip
pip3 install coursera-dl
en cambio.
Nota 1: Le recomendamos encarecidamente que no instale el paquete globalmente en su máquina (es decir, con privilegios de root/administrador), ya que los módulos instalados pueden entrar en conflicto con otras aplicaciones Python que haya instalado en su sistema (o pueden interferir con coursera-dl
). Prefiere usar la opción --user
para pip install
, si es necesario.
Nota 2: Como ya se mencionó, le recomendamos encarecidamente que utilice un nuevo intérprete de Python 3 (por ejemplo, 3.9 o posterior), ya que Python 3 tiene mejor soporte para SSL/TLS (para conexiones seguras) que las versiones anteriores.
Si debe utilizar Python 2, asegúrese de tener al menos Python 2.7.9 (las versiones posteriores están bien).
De lo contrario, aún puedes usar coursera-dl
, pero tendrás que instalar el paquete adicional ndg-httpsclient
, lo que puede implicar compilación (al menos en sistemas Linux).
Le recomendamos encarecidamente que considere instalar paquetes de Python con pip, ya que es el método preferido actualmente, a menos que uno de los miembros del proyecto le indique lo contrario (por ejemplo, al probar o depurar una nueva característica o al usar el código fuente directamente desde nuestro git repositorio). Si está utilizando pip
, puede instalar directamente todas las dependencias desde el archivo de requisitos usando pip install -r requirements.txt
.
Le recomendamos encarecidamente que instale coursera-dl
y todas sus dependencias de una manera que no interfiera con el resto de su instalación de Python. Esto se logra mediante la creación de un entorno virtual o "virtualenv".
Para la configuración inicial, en un sistema operativo tipo Unix, siga los siguientes pasos (cree/adapte primero el directorio /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 ...
Para descargar aún más nuevos videos de tus clases, simplemente realiza:
cd /directory/where/I/want/my/courses/my-coursera
source bin/activate
cd coursera-dl
./coursera-dl ...
Estamos trabajando para simplificar todo este proceso para que sea lo más simple posible, pero para admitir versiones anteriores de Python y hacer frente a que Coursera deshabilite SSLv3, debemos tomar algunos pasos adicionales. En cualquier caso, es muy recomendable que siempre instales la última versión del intérprete de Python que puedas.
Paquete AUR: coursera-dl
Advertencia: este método no se recomienda a menos que tenga experiencia trabajando con múltiples entornos Python.
Puede utilizar el programa pip
para instalar las dependencias usted mismo. Todos están enumerados en el archivo requirements.txt
(y las dependencias adicionales necesarias para el desarrollo se enumeran en el archivo requirements-dev.txt
).
Para utilizar este método, procedería de la siguiente manera:
pip install -r requirements.txt
pip install -r requirements-dev.txt
La segunda línea anterior sólo debería ser necesaria si tiene la intención de ayudar con el desarrollo (y la ayuda siempre es bienvenida) o si un responsable del proyecto le pide que instale paquetes adicionales con fines de depuración.
Una vez más, antes de presentar informes de errores, si instaló las dependencias usted mismo, verifique que las versiones de sus módulos sean al menos las que figuran en el archivo requirements.txt
(y el archivo requirements-dev.txt
, si corresponde).
Si lo prefieres, puedes ejecutar este software dentro de Docker:
docker run --rm -it -v
"$(pwd):/courses"
courseradl/courseradl -u <USER> -p <PASSWORD>
O usando el archivo netrc:
docker run --rm -it
-v "$(pwd):/courses" -v "$HOME/.netrc:/netrc"
courseradl/courseradl -n /netrc
El directorio de trabajo real para Coursera-dl es /cursos, todos los cursos se descargarán allí si no especifica lo contrario.
python -m pip install coursera-dl
Asegúrese de que la ruta de instalación de Python se agregue a las variables de entorno del sistema PATH. Esto se puede encontrar en Panel de control > Sistema > Configuración avanzada del sistema > Variables de entorno.
Example:
C:Python39Scripts;C:Python39;
O si tiene permisos de instalación restringidos y ha instalado Python en AppData, agréguelo a su RUTA.
Example:
C:Users<user>AppDataLocalProgramsPythonPython39-32Scripts;C:Users<user>AppDataLocalProgramsPythonPython39-32;
Coursera-dl ahora se puede ejecutar desde la línea de comandos o powershell.
Si aún no tienes una, crea una cuenta de Coursera e inscríbete en una clase. Consulte https://www.coursera.org/courses para obtener la lista de clases.
Consulte coursera-dl --help
para obtener una referencia completa y actualizada sobre las opciones de tiempo de ejecución admitidas por esta utilidad.
Ejecute el script para descargar los materiales proporcionando las credenciales de su cuenta de Coursera (por ejemplo, dirección de correo electrónico y contraseña o un archivo ~/.netrc
), los nombres de las clases y cualquier parámetro adicional:
General: coursera-dl -u <user> -p <pass> modelthinking-004
With CAUTH parameter: coursera-dl -ca 'some-ca-value-from-browser' modelthinking-004
Si no desea escribir su contraseña en la línea de comando como texto sin formato, puede usar el script sin la opción -p
. En este caso, se le solicitará la contraseña una vez que se ejecute el script.
Aquí hay algunos ejemplos de cómo invocar coursera-dl
desde la línea de comando:
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`
Nota: Si su comando ls
tiene un alias para mostrar una salida coloreada, puede experimentar problemas. Asegúrese de escapar del comando ls
(use ls
) para asegurarse de que no se envíen caracteres especiales al script.
Tenga en cuenta que admitimos los cursos de la Nueva Plataforma ("bajo demanda").
De forma predeterminada, los vídeos se descargan con una resolución de 540p. Para cursos bajo demanda, el indicador --video-resolution
acepta valores de 360p, 540p y 720p.
Para descargar solo los archivos de subtítulos .txt
y/o .srt
en lugar de los videos, use -ignore-formats mp4 --subtitle-language en
o cualquier formato en el que estén codificados los videos y los idiomas deseados para los subtítulos.
En plataformas *nix, el uso de un archivo ~/.netrc
es una buena alternativa a especificar tanto su nombre de usuario (es decir, su dirección de correo electrónico) como su contraseña cada vez en la línea de comando. Para usarlo, simplemente agregue una línea como la siguiente a un archivo llamado .netrc
en su directorio de inicio (o su equivalente, si está usando Windows) con contenidos como:
machine coursera-dl login <user> password <pass>
Cree el archivo si aún no existe. A partir de ese momento, puedes pasar de usar -u
y -p
a simplemente llamar coursera-dl
con la opción -n
. Esto es especialmente conveniente, ya que escribir nombres de usuario (direcciones de correo electrónico) y contraseñas directamente en la línea de comando puede resultar tedioso (aún más si elige una contraseña "segura").
Alternativamente, si desea almacenar sus parámetros preferidos (que también pueden incluir su nombre de usuario y contraseña), cree un archivo llamado coursera-dl.conf
donde se supone que se ejecutará el script, con el siguiente formato:
--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
Los parámetros que se especifican en el archivo se anularán si se proporcionan nuevamente en la línea de comando.
Nota: En coursera-dl.conf
, todos los parámetros no deben estar entre comillas.
En el modo predeterminado, cuando interrumpes el proceso de descarga presionando CTRL + C , los archivos parcialmente descargados se eliminarán de tu disco y tendrás que iniciar el proceso de descarga desde el principio. Si su descarga fue interrumpida por algo que no sea KeyboardInterrupt ( CTRL + C ), como una falla repentina del sistema, los archivos parcialmente descargados permanecerán en su disco y la próxima vez que inicie el proceso nuevamente, estos archivos se descartarán de la lista de descargas. Por lo tanto, es su trabajo para eliminarlos manualmente antes del próximo inicio. Por esta razón agregamos una opción llamada --resume
que continúa las descargas desde donde se detuvieron:
coursera-dl -u <user> -p <pass> --resume sdn1-001
Esta opción también se puede utilizar con descargadores externos:
coursera-dl --wget -u <user> -p <pass> --resume sdn1-001
Nota 1 : Algunos descargadores externos utilizan su propia función de currículum incorporada que puede no ser compatible con otros, así que utilícelos bajo su propia responsabilidad.
Nota 2 : Recuerde que en el modo de reanudación, los archivos interrumpidos NO se eliminarán de su disco.
NOTA : Si su contraseña contiene puntuación, comillas u otros "caracteres divertidos" (p. ej., <
, >
, #
, &
, |
etc.), es posible que deba escaparlos de su shell. Con bash u otros clones de Bourne-Shell (y probablemente con muchos otros shells), una de las mejores formas de hacerlo es escribir su contraseña entre comillas simples, para no tener problemas. Consulte el número 213 para obtener más información.
Si tiene problemas al descargar materiales de clase, intente ver si una de las siguientes acciones resuelve su problema:
Asegúrese de que el nombre de la clase que está utilizando corresponda con el nombre del recurso utilizado en la URL de esa clase: https://www.coursera.org/learn/<CLASS_NAME>/home/welcome
¿Has intentado limpiar las cookies/credenciales almacenadas en caché con la opción --clear-cache
?
Tenga en cuenta que muchos cursos (¿la mayoría, quizás?) pueden eliminar los materiales un poco después de completar el curso, mientras que otros cursos pueden conservar los materiales hasta una próxima sesión/ofrecimiento del mismo curso (para evitar problemas de deshonestidad académica, aparentemente).
En resumen, no se garantiza que puedas realizar la descarga una vez finalizado el curso y, lamentablemente, no podemos ayudarte con esto.
Asegúrese de haber instalado y/o actualizado todas sus dependencias de acuerdo con el archivo requirements.txt
como se describe anteriormente.
Se puede exportar un archivo de cookies estilo Netscape con una extensión de navegador (1, 2) y usarlo con la opción -c
. Esto resulta útil cuando la autenticación mediante contraseña no funciona (el proceso de autenticación cambia de vez en cuando).
Si los resultados muestran 0 secciones, lo más probable es que haya proporcionado credenciales no válidas (nombre de usuario y/o contraseña en la línea de comando o en su archivo .netrc
o en su archivo coursera-dl.conf
).
Para los cursos que aún no han comenzado, pero que han tenido una iteración anterior, a veces hay disponible una vista previa que contiene todas las clases del último curso. Estos archivos se pueden descargar pasando el parámetro --preview
.
Si recibe un error como Could not find class: <CLASS_NAME>
, entonces:
class
y la versión actual del curso (un número). Por ejemplo, para una clase llamada class
, tendrías que usar class-001
, class-002
etc.Si:
Obtiene un error al usar -n
para especificar que desea usar un archivo .netrc
y,
Quiere que el script utilice su archivo netrc predeterminado y,
Recibes un mensaje que dice coursera-dl: error: too few arguments
Luego debe especificar --
como argumento después de -n
, es decir, -n --
o cambiar el orden en el que pasa los argumentos al script, de modo que el argumento después de -n
comience con un guión ( -
). De lo contrario, el módulo argparse
de Python pensará que lo que está pasando es el nombre del archivo netrc que desea utilizar. Consulte el número 162.
Si tu contraseña tiene espacios, no olvides escribirla entre comillas.
¿Has instalado el proyecto correcto?
Advertencia : si instaló el script usando PyPi (pip), verifique que haya instalado el proyecto correcto. Tuvimos que usar un nombre diferente en pip porque nuestro nombre original ya estaba en uso. Recuerda instalarlo usando:
pip install coursera-dl
Si eres de China y tienes problemas para descargar videos, agregar "52.84.167.78 d3c33hcgiwev3.cloudfront.net" en el archivo de hosts (/etc/hosts) y actualizar DNS con "ipconfig/flushdns" puede funcionar (ver https: //github.com/googlehosts/hosts para obtener más información).
En primer lugar, asegúrese de estar inscrito en el curso que desea descargar.
Muchos cursos antiguos ya han cerrado la inscripción, por lo que a menudo no es una opción. En este caso, intente descargar con la opción --preview
. Algunos cursos permiten descargar materiales de conferencias sin inscribirse, pero no es común y no se garantiza que funcione en todos los cursos.
Finalmente, puedes descargar los videos si tienes, al menos, el archivo índice que enumera todos los materiales del curso. Tal vez su amigo que esté inscrito pueda guardarle la página del curso. En ese caso utilice la opción --process_local_page
.
Alternativamente, es posible que desees probar varias extensiones de navegador diseñadas para este problema.
Si nada de lo anterior funciona para usted, no hay nada que podamos hacer.
Coursera-dl admite descargadores externos, pero tenga en cuenta que solo se utilizan para descargar materiales después de que se haya analizado el programa de estudios, por ejemplo, videos, archivos PDF, algunos folletos y archivos adicionales (el programa de estudios siempre se descarga utilizando el descargador interno). Si tiene problemas con la descarga de dichos materiales, es posible que desee comenzar a utilizar un descargador externo y configurar sus valores de tiempo de espera. Por ejemplo, puedes usar el descargador aria2c pasando la opción --aria
:
coursera-dl -n --path . --aria2 <course-name>
Y ponga esto en el archivo de configuración de aria2c ~/.aria2/aria2.conf
para reducir los tiempos de espera:
connect-timeout=2
timeout=2
bt-stop-timeout=1
No se admite la configuración de tiempo de espera para el descargador interno.
Si está en Windows detrás de un proxy, configure las variables de entorno antes de ejecutar el script de la siguiente manera:
set HTTP_PROXY=http://host:port
set HTTPS_PROXY=http://host:port
Discusión relacionada: #205
En C:Users<user>AppDataLocalProgramsPythonPython39-32Scripts
o donde esté instalado Python (arriba es el valor predeterminado para Windows) edite el siguiente archivo en modo inactivo: (haga clic con el botón derecho en el nombre del script y seleccione 'editar' con inactivo en el menú)
coursera-dl-script
de
#!c:users<user>appdatalocalprogramspythonpython39-32python.exe
a
#"!c:users<user>appdatalocalprogramspythonpython39-32python.exe"
(agregar comillas). Este es un error de pip conocido.
Fuente: número 500 StackOverflow
Este es un error conocido, ¡no informe sobre este mensaje de error! El problema está en TU entorno. Para solucionarlo, haga lo siguiente:
sudo apt-get install build-essential python-dev libssl-dev libffi-dev
pip install --user urllib3 pyasn1 ndg-httpsclient pyOpenSSL
Si el error persiste, intente instalar Coursera-dl desde github siguiendo estas instrucciones: https://github.com/coursera-dl/coursera-dl#alternative-installation-method-for-unix-systems
Si aún tiene el problema, lea los siguientes números para obtener más ideas sobre cómo solucionarlo: #330 #377 #329
También vale la pena leerlo: https://urllib3.readthedocs.io/en/latest/security.html#insecureplatformwarning
MathJax.js
Al guardar la página de un curso, habilitamos la representación MathJax
para ecuaciones matemáticas, inyectando MathJax.js
en el encabezado. El script utiliza un servicio cdn proporcionado por mathjax.org. Sin embargo, no se puede acceder a esa URL en algunos países/regiones, puede proporcionar un parámetro --mathjax-cdn <MATHJAX_CDN>
para especificar el archivo MathJax.js
al que se puede acceder en su región.
Antes de informar cualquier problema, siga los pasos a continuación:
Verifique que esté ejecutando la última versión del script y las versiones recomendadas de sus dependencias, véalas en el archivo requirements.txt
. Utilice el siguiente comando en caso de duda:
pip install --upgrade coursera-dl
Si el problema persiste, no dude en abrir un problema en nuestro rastreador de errores; complete la plantilla de problemas con la mayor cantidad de información posible .
Cuando informe errores en coursera-dl
, no olvide incluir suficiente información para que pueda ayudarnos a ayudarlo:
requirements.txt
.--debug
antes de publicar los mensajes como un informe de error. Por favor, cópielos y péguelos. No reformule ni parafrasee los mensajes.Disfruto recibir comentarios. Éstos son algunos de los comentarios que he recibido:
"¡Gracias por el buen trabajo! ¡El conocimiento inundará el mundo un poco más gracias a tu guión!"
Guillaume V. 8/11/2012
"Solo quería enviarte accesorios para tu secuencia de comandos Python para descargar cursos de Coursera. Lo he estado usando en Kenia para mi organización sin fines de lucro para llevar cursos en línea a lugares donde Internet es muy caro y poco confiable. La mayoría de los niños aquí no pueden permitírselo. escuela secundaria, y descargar una de estas clases por los medios habituales costaría más de lo que gana una familia promedio en una semana. ¡Gracias!
Jay L., Tunapanda 20/03/2013
"Soy un gran admirador de Coursera y asisto a muchos cursos diferentes. Las limitaciones de tiempo no me permiten asistir a todos los cursos que quiero al mismo tiempo. Encontré tu guión y estoy muy feliz de usarlo. ¡Excelente material! y gracias por hacer que esto esté disponible en Github. ¡Bien hecho!"
William G. 18/02/2013
"¡Este script es increíble! Estaba descargando minuciosamente todos y cada uno de los videos y ppt a mano; busqué en wget pero encontré problemas con comodines con HTML, y luego... encontré su script. No puedo decirle cuántas horas Me acabas de salvar :) Si alguna vez estás en París / Estocolmo, es absolutamente obligatorio que te invite a una cerveza :)"
Razvan T. 26/11/2012
"¡Muchas gracias! :)"
Víctor V. 24/04/2013
Por favor, publique errores y problemas en github. ¡Por favor, NO envíe solicitudes de soporte de forma privada a los mantenedores! Estamos bastante abrumados con las actividades del día a día. Si tiene problemas, POR FAVOR , archívelos en el rastreador de problemas.