MathJax.js
Coursera est sans doute le leader des cours en ligne ouverts et massifs (MOOC) avec une sélection de plus de 300 cours provenant de 62 institutions différentes en février 2013. Les généreuses contributions des éducateurs et des institutions rendent une excellente éducation accessible à ceux qui ne pourraient pas se le permettre autrement. Il existe même des organisations à but non lucratif ayant « les pieds sur terre » dans des régions reculées du monde et qui contribuent à répartir les richesses (voir les commentaires ci-dessous de Tunapanda).
Ce script facilite le téléchargement par lots de ressources de cours (par exemple, vidéos, ppt, etc.) pour les cours Coursera. Étant donné un ou plusieurs noms de classe et informations d'identification de compte, il obtient les noms de semaine et de classe à partir de la page des cours , puis télécharge le matériel associé dans des fichiers et répertoires nommés de manière appropriée.
Pourquoi est-ce utile ? Un utilitaire comme wget peut fonctionner, mais présente les limitations suivantes :
wget
dans une boucle for récupère des vidéos supplémentaires qui ne sont pas publiées/liées, et ce sont parfois des doublons. Les extensions de navigateur telles que DownloadThemAll sont une autre possibilité, mais coursera-dl
fournit plus de fonctionnalités telles que des fichiers nommés de manière appropriée.
Ce travail a été inspiré en partie par youtube-dl sur lequel j'ai téléchargé de nombreuses autres bonnes vidéos comme celles de Khan Academy.
.netrc
.coursera-dl.conf
. coursera-dl
est destiné à être utilisé uniquement pour votre matériel que Coursera vous donne accès au téléchargement.
Nous n'encourageons aucune utilisation qui viole leurs conditions d'utilisation. Un extrait pertinent :
"[...] Coursera vous accorde une licence personnelle, non exclusive et non transférable pour accéder et utiliser les sites. Vous pouvez télécharger du matériel à partir des sites uniquement pour votre usage personnel et non commercial. Vous ne pouvez pas copier autrement , reproduire, retransmettre, distribuer, publier, exploiter commercialement ou autrement transférer tout matériel, et vous ne pouvez pas non plus modifier ou créer des œuvres dérivées du matériel."
coursera-dl
nécessite Python 2 ou Python 3 et un compte Coursera gratuit inscrit dans la classe d'intérêt. (Depuis février 2020, nous testons automatiquement l'exécution du programme avec les versions Python 2.7, Pypy, 3.6, 3.7, 3.8 et 3.9).
Remarque : Nous vous recommandons fortement d'utiliser un interpréteur Python 3 (3.9 ou version ultérieure).
Sur n'importe quel système d'exploitation, assurez-vous que l'emplacement de l'exécutable Python est ajouté à votre variable d'environnement PATH
et, une fois les dépendances installées (voir section suivante), pour une utilisation de base , vous devrez appeler le script depuis le répertoire principal du projet et ajoutez-le au début du mot python
. Vous pouvez également utiliser des fonctionnalités plus avancées du programme en consultant la section « Exécution du script » de ce document.
Remarque : vous devez déjà avoir (manuellement) accepté l'honneur du code des cours particuliers que vous souhaitez utiliser avec coursera-dl
.
Depuis une ligne de commande (de préférence depuis un environnement virtuel), lancez simplement la commande :
pip install coursera-dl
Cela téléchargera la dernière version publiée du programme à partir du Python Package Index (PyPI) ainsi que toutes les dépendances nécessaires. À ce stade, vous devriez être prêt à commencer à l’utiliser.
Si cela ne fonctionne pas, parce que votre version de Python 2 est trop ancienne (par exemple 2.7.5 sur Ubuntu 14.4), essayez :
apt-get install python3 python3-pip
pip3 install coursera-dl
plutôt.
Remarque 1 : Nous vous recommandons fortement de ne pas installer le package globalement sur votre machine (c'est-à-dire avec les privilèges root/administrateur), car les modules installés peuvent entrer en conflit avec d'autres applications Python que vous avez installées sur votre système (ou ils peuvent interférer avec coursera-dl
). Préférez utiliser l'option --user
pour pip install
, si vous en avez besoin.
Remarque 2 : Comme déjà mentionné, nous vous recommandons fortement d'utiliser un nouvel interpréteur Python 3 (par exemple, 3.9 ou version ultérieure), car Python 3 prend mieux en charge SSL/TLS (pour les connexions sécurisées) que les versions précédentes.
Si vous devez utiliser Python 2, assurez-vous d'avoir au moins Python 2.7.9 (les versions ultérieures sont OK).
Sinon, vous pouvez toujours utiliser coursera-dl
, mais vous devrez installer le package supplémentaire ndg-httpsclient
, ce qui peut impliquer une compilation (au moins sur les systèmes Linux).
Nous vous recommandons fortement d'envisager d'installer des packages Python avec pip, car il s'agit de la méthode préférée actuelle, sauf indication contraire de l'un des membres du projet (par exemple, lors du test ou du débogage d'une nouvelle fonctionnalité ou en utilisant le code source directement depuis notre git dépôt). Si vous utilisez pip
, vous pouvez installer directement toutes les dépendances du fichier d'exigences en utilisant pip install -r requirements.txt
.
Nous vous recommandons fortement d'installer coursera-dl
et toutes ses dépendances de manière à ne pas interférer avec le reste de votre installation Python. Ceci est accompli par la création d'un environnement virtuel , ou "virtualenv".
Pour la configuration initiale, dans un système d'exploitation de type Unix, veuillez suivre les étapes suivantes (créez/adaptez d'abord le répertoire /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 ...
Pour télécharger davantage de nouvelles vidéos de vos cours, effectuez simplement :
cd /directory/where/I/want/my/courses/my-coursera
source bin/activate
cd coursera-dl
./coursera-dl ...
Nous travaillons à rationaliser l'ensemble de ce processus afin qu'il soit aussi simple que possible, mais pour prendre en charge les anciennes versions de Python et pour faire face à la désactivation de SSLv3 par Coursera, nous devons prendre quelques mesures supplémentaires. Dans tous les cas, il est fortement recommandé de toujours installer la dernière version possible de l’interpréteur Python.
Forfait AUR : coursera-dl
Avertissement : Cette méthode n'est pas recommandée, sauf si vous avez de l'expérience avec plusieurs environnements Python.
Vous pouvez utiliser le programme pip
pour installer vous-même les dépendances. Ils sont tous répertoriés dans le fichier requirements.txt
(et les dépendances supplémentaires nécessaires au développement sont répertoriées dans le fichier requirements-dev.txt
).
Pour utiliser cette méthode, vous procéderiez comme suit :
pip install -r requirements.txt
pip install -r requirements-dev.txt
La deuxième ligne ci-dessus ne devrait être nécessaire que si vous avez l'intention d'aider au développement (et l'aide est toujours la bienvenue) ou si un responsable du projet vous demande d'installer des packages supplémentaires à des fins de débogage.
Encore une fois, avant de déposer des rapports de bugs, si vous avez installé les dépendances vous-même, veuillez vérifier que les versions de vos modules sont au moins celles répertoriées dans le fichier requirements.txt
(et dans le fichier requirements-dev.txt
, le cas échéant).
Si vous préférez, vous pouvez exécuter ce logiciel dans Docker :
docker run --rm -it -v
"$(pwd):/courses"
courseradl/courseradl -u <USER> -p <PASSWORD>
Ou en utilisant le fichier netrc :
docker run --rm -it
-v "$(pwd):/courses" -v "$HOME/.netrc:/netrc"
courseradl/courseradl -n /netrc
Le répertoire de travail réel pour coursera-dl est /courses, tous les cours y seront téléchargés si vous ne spécifiez pas le contraire.
python -m pip install coursera-dl
Assurez-vous que le chemin d'installation de Python est ajouté aux variables d'environnement système PATH. Cela peut être trouvé dans Panneau de configuration > Système > Paramètres système avancés > Variables d'environnement.
Example:
C:Python39Scripts;C:Python39;
Ou si vous disposez d'autorisations d'installation restreintes et que vous avez installé Python sous AppData, ajoutez-le à votre PATH.
Example:
C:Users<user>AppDataLocalProgramsPythonPython39-32Scripts;C:Users<user>AppDataLocalProgramsPythonPython39-32;
Coursera-dl peut désormais être exécuté à partir de la ligne de commande ou de PowerShell.
Si vous n'en avez pas déjà un, créez un compte Coursera et inscrivez-vous à un cours. Voir https://www.coursera.org/courses pour la liste des cours.
Reportez-vous à coursera-dl --help
pour une référence complète et à jour sur les options d'exécution prises en charge par cet utilitaire.
Exécutez le script pour télécharger le matériel en fournissant les informations d'identification de votre compte Coursera (par exemple, adresse e-mail et mot de passe ou un fichier ~/.netrc
), les noms des cours, ainsi que tout paramètre supplémentaire :
General: coursera-dl -u <user> -p <pass> modelthinking-004
With CAUTH parameter: coursera-dl -ca 'some-ca-value-from-browser' modelthinking-004
Si vous ne souhaitez pas saisir votre mot de passe en ligne de commande sous forme de texte brut, vous pouvez utiliser le script sans l'option -p
. Dans ce cas, un mot de passe vous sera demandé une fois le script exécuté.
Voici quelques exemples de la façon d'invoquer coursera-dl
à partir de la ligne de commande :
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`
Remarque : Si votre commande ls
est alias pour afficher une sortie colorisée, vous risquez de rencontrer des problèmes. Assurez-vous d'échapper à la commande ls
(utilisez ls
) pour vous assurer qu'aucun caractère spécial n'est envoyé au script.
Notez que nous prenons en charge les cours Nouvelle Plateforme (« à la demande »).
Par défaut, les vidéos sont téléchargées à une résolution de 540p. Pour les cours à la demande, l'indicateur --video-resolution
accepte les valeurs 360p, 540p et 720p.
Pour télécharger uniquement les fichiers de sous-titres .txt
et/ou .srt
au lieu des vidéos, utilisez -ignore-formats mp4 --subtitle-language en
ou quel que soit le format dans lequel les vidéos sont encodées et les langues souhaitées pour les sous-titres.
Sur les plateformes *nix, l'utilisation d'un fichier ~/.netrc
est une bonne alternative à la spécification à la fois de votre nom d'utilisateur (c'est-à-dire votre adresse e-mail) et de votre mot de passe à chaque fois sur la ligne de commande. Pour l'utiliser, ajoutez simplement une ligne comme celle ci-dessous à un fichier nommé .netrc
dans votre répertoire personnel (ou l'équivalent, si vous utilisez Windows) avec un contenu comme :
machine coursera-dl login <user> password <pass>
Créez le fichier s'il n'existe pas encore. À partir de là, vous pouvez passer de l'utilisation -u
et -p
à simplement appeler coursera-dl
avec l'option -n
à la place. Ceci est particulièrement pratique, car saisir des noms d'utilisateur (adresses e-mail) et des mots de passe directement sur la ligne de commande peut devenir fastidieux (encore plus si vous choisissez un mot de passe « fort »).
Alternativement, si vous souhaitez stocker vos paramètres préférés (qui peuvent également inclure votre nom d'utilisateur et votre mot de passe), créez un fichier nommé coursera-dl.conf
dans lequel le script est censé être exécuté, au format suivant :
--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
Les paramètres spécifiés dans le fichier seront remplacés s'ils sont à nouveau fournis sur la ligne de commande.
Remarque : Dans coursera-dl.conf
, tous les paramètres ne doivent pas être entourés de guillemets.
En mode par défaut, lorsque vous interrompez le processus de téléchargement en appuyant sur CTRL + C , les fichiers partiellement téléchargés seront supprimés de votre disque et vous devrez recommencer le processus de téléchargement depuis le début. Si votre téléchargement a été interrompu par quelque chose d'autre que KeyboardInterrupt ( CTRL + C ) comme un crash soudain du système, les fichiers partiellement téléchargés resteront sur votre disque et la prochaine fois que vous recommencerez le processus, ces fichiers seront supprimés de la liste de téléchargement !, c'est donc votre travail pour les supprimer manuellement avant le prochain démarrage. Pour cette raison, nous avons ajouté une option appelée --resume
qui continue vos téléchargements là où ils se sont arrêtés :
coursera-dl -u <user> -p <pass> --resume sdn1-001
Cette option peut également être utilisée avec des téléchargeurs externes :
coursera-dl --wget -u <user> -p <pass> --resume sdn1-001
Remarque 1 : Certains téléchargeurs externes utilisent leur propre fonctionnalité de reprise intégrée qui peut ne pas être compatible avec d'autres, utilisez-les donc à vos propres risques.
Note 2 : N'oubliez pas qu'en mode reprise, les fichiers interrompus NE SERONT PAS supprimés de votre disque.
REMARQUE : Si votre mot de passe contient des signes de ponctuation, des guillemets ou d'autres « caractères amusants » (par exemple, <
, >
, #
, &
, |
et ainsi de suite), vous devrez peut-être les échapper de votre shell. Avec bash ou d'autres clones de Bourne-shell (et probablement avec de nombreux autres shells), l'un des meilleurs moyens de le faire est de mettre votre mot de passe entre guillemets simples, afin d'éviter tout problème. Voir le numéro 213 pour plus d'informations.
Si vous rencontrez des problèmes lors du téléchargement du matériel de cours, essayez de voir si l'une des actions suivantes résout votre problème :
Assurez-vous que le nom de la classe que vous utilisez correspond au nom de la ressource utilisé dans l'URL de cette classe : https://www.coursera.org/learn/<CLASS_NAME>/home/welcome
Avez-vous essayé de nettoyer les cookies/identifiants mis en cache avec l'option --clear-cache
?
Notez que de nombreux cours (la plupart, peut-être ?) peuvent supprimer le matériel peu de temps après la fin du cours, tandis que d'autres cours peuvent conserver le matériel jusqu'à une prochaine session/offre du même cours (pour éviter des problèmes de malhonnêteté académique, apparemment).
En bref, il n'est pas garanti que vous pourrez télécharger une fois le cours terminé et nous ne pouvons malheureusement pas vous aider pour cela.
Assurez-vous d'avoir installé et/ou mis à jour toutes vos dépendances conformément au fichier requirements.txt
comme décrit ci-dessus.
On peut exporter un fichier cookies de style Netscape avec une extension de navigateur (1, 2) et l'utiliser avec l'option -c
. Cela s'avère pratique lorsque l'authentification par mot de passe ne fonctionne pas (le processus d'authentification change de temps en temps).
Si les résultats affichent 0 section, vous avez probablement fourni des informations d'identification non valides (nom d'utilisateur et/ou mot de passe dans la ligne de commande ou dans votre fichier .netrc
ou dans votre fichier coursera-dl.conf
).
Pour les cours qui n'ont pas encore commencé, mais qui ont eu une itération précédente, un aperçu est parfois disponible, contenant tous les cours du dernier cours. Ces fichiers peuvent être téléchargés en passant le paramètre --preview
.
Si vous obtenez une erreur du type Could not find class: <CLASS_NAME>
, alors :
class
et la version actuelle du cours (un numéro). Par exemple, pour une classe nommée class
, vous devrez utiliser class-001
, class-002
etc.Si:
Vous obtenez une erreur lorsque vous utilisez -n
pour spécifier que vous souhaitez utiliser un fichier .netrc
et,
Vous souhaitez que le script utilise votre fichier netrc par défaut et,
Vous recevez un message disant coursera-dl: error: too few arguments
Ensuite, vous devez spécifier --
comme argument après -n
, c'est-à-dire -n --
ou modifier l'ordre dans lequel vous transmettez les arguments au script, de sorte que l'argument après -n
commence par un trait d'union ( -
). Sinon, le module argparse
de Python pensera que ce que vous transmettez est le nom du fichier netrc que vous souhaitez utiliser. Voir le numéro 162.
Si votre mot de passe comporte des espaces, n'oubliez pas de l'écrire entre guillemets.
Avez-vous installé le bon projet ?
Attention : Si vous avez installé le script en utilisant PyPi (pip), veuillez vérifier que vous avez installé le bon projet. Nous avons dû utiliser un nom différent dans pip car notre nom d'origine était déjà pris. Pensez à l'installer en utilisant :
pip install coursera-dl
Si vous venez de Chine et que vous rencontrez des problèmes pour télécharger des vidéos, l'ajout de "52.84.167.78 d3c33hcgiwev3.cloudfront.net" dans le fichier hosts (/etc/hosts) et l'actualisation du DNS avec "ipconfig/flushdns" peuvent fonctionner (voir https : //github.com/googlehosts/hosts pour plus d'informations).
Tout d'abord, assurez-vous que vous êtes inscrit au cours que vous souhaitez télécharger.
De nombreux anciens cours ont déjà fermé les inscriptions, ce n'est donc souvent pas une option. Dans ce cas, essayez de télécharger avec l'option --preview
. Certains cours permettent de télécharger du matériel de cours sans s'inscrire, mais ce n'est pas courant et il n'est pas garanti que cela fonctionne pour tous les cours.
Enfin, vous pouvez télécharger les vidéos si vous disposez au minimum du fichier index qui répertorie tous les supports de cours. Peut-être que votre ami inscrit pourrait enregistrer cette page de cours pour vous. Dans ce cas, utilisez l'option --process_local_page
.
Vous pouvez également essayer différentes extensions de navigateur conçues pour ce problème.
Si aucune des solutions ci-dessus ne fonctionne pour vous, nous ne pouvons rien faire.
Coursera-dl prend en charge les téléchargeurs externes, mais notez qu'ils ne sont utilisés que pour télécharger du matériel une fois le programme analysé, par exemple des vidéos, des PDF, certains documents et fichiers supplémentaires (le programme est toujours téléchargé à l'aide du téléchargeur interne). Si vous rencontrez des problèmes lors du téléchargement de tels documents, vous souhaiterez peut-être commencer à utiliser un téléchargeur externe et configurer ses valeurs de délai d'attente. Par exemple, vous pouvez utiliser le téléchargeur aria2c en passant l'option --aria
:
coursera-dl -n --path . --aria2 <course-name>
Et mettez ceci dans le fichier de configuration d'aria2c ~/.aria2/aria2.conf
pour réduire les délais d'attente :
connect-timeout=2
timeout=2
bt-stop-timeout=1
La configuration du délai d'attente pour le téléchargeur interne n'est pas prise en charge.
Si vous utilisez Windows derrière un proxy, configurez les variables d'environnement avant d'exécuter le script comme suit :
set HTTP_PROXY=http://host:port
set HTTPS_PROXY=http://host:port
Discussion connexe : #205
Dans C:Users<user>AppDataLocalProgramsPythonPython39-32Scripts
ou partout où Python est installé (ci-dessus est la valeur par défaut pour Windows), modifiez le fichier ci-dessous en mode veille : (cliquez avec le bouton droit sur le nom du script et sélectionnez « modifier » avec ralenti dans le menu)
coursera-dl-script
depuis
#!c:users<user>appdatalocalprogramspythonpython39-32python.exe
à
#"!c:users<user>appdatalocalprogramspythonpython39-32python.exe"
(ajouter des guillemets). Il s'agit d'un bug pip connu.
Source : numéro 500 StackOverflow
Il s'agit d'une erreur connue, veuillez ne pas signaler ce message d'erreur ! Le problème vient de VOTRE environnement. Pour résoudre ce problème, procédez comme suit :
sudo apt-get install build-essential python-dev libssl-dev libffi-dev
pip install --user urllib3 pyasn1 ndg-httpsclient pyOpenSSL
Si l'erreur persiste, essayez d'installer coursera-dl depuis github en suivant ces instructions : https://github.com/coursera-dl/coursera-dl#alternative-installation-method-for-unix-systems
Si le problème persiste, veuillez lire les problèmes suivants pour plus d'idées sur la façon de le résoudre : #330 #377 #329
Cela vaut également la peine d'être lu : https://urllib3.readthedocs.io/en/latest/security.html#insecureplatformwarning
MathJax.js
Lors de l'enregistrement d'une page de cours, nous avons activé le rendu MathJax
pour les équations mathématiques, en injectant MathJax.js
dans l'en-tête. Le script utilise un service cdn fourni par mathjax.org. Cependant, cette URL n'est pas accessible dans certains pays/régions, vous pouvez fournir un paramètre --mathjax-cdn <MATHJAX_CDN>
pour spécifier le fichier MathJax.js
accessible dans votre région.
Avant de signaler un problème, veuillez suivre les étapes ci-dessous :
Vérifiez que vous exécutez la dernière version du script et les versions recommandées de ses dépendances, consultez-les dans le fichier requirements.txt
. Utilisez la commande suivante en cas de doute :
pip install --upgrade coursera-dl
Si le problème persiste, n'hésitez pas à ouvrir un ticket dans notre bugtracker, veuillez remplir le modèle de ticket avec autant d'informations que possible .
Lorsque vous signalez des bogues contre coursera-dl
, n'oubliez pas d'inclure suffisamment d'informations pour que vous puissiez nous aider à vous aider :
requirements.txt
.--debug
avant de publier les messages sous forme de rapport de bogue. S'il vous plaît, copiez-les et collez-les. Ne reformulez/paraphrasez pas les messages.J'aime recevoir des commentaires. Voici quelques-uns des commentaires que j'ai reçus :
"Merci pour votre bon travail ! La connaissance inondera un peu plus le Monde grâce à votre scénario !"
Guillaume V. 8/11/2012
"Je voulais juste vous envoyer des accessoires pour votre script Python afin de télécharger des cours Coursera. Je l'utilise au Kenya pour mon organisation à but non lucratif afin de proposer des cours en ligne dans des endroits où Internet est très cher et peu fiable. La plupart des enfants d'ici n'ont pas les moyens de le faire. lycée, et télécharger un de ces cours par les moyens habituels coûterait plus que ce que gagne une famille moyenne en une semaine. Merci !"
Jay L., Tunapanda 20/03/2013
"Je suis un grand fan de Coursera et je participe à de nombreux cours différents. Les contraintes de temps ne me permettent pas d'assister à tous les cours que je souhaite en même temps. Je suis tombé sur votre script et je l'utilise avec beaucoup de plaisir ! Super truc et merci d'avoir rendu cela disponible sur Github - bravo !"
William G. 18/02/2013
"Ce script est génial ! Je téléchargeais minutieusement chaque vidéo et ppt à la main - j'ai regardé dans wget mais j'ai rencontré des problèmes de caractères génériques avec HTML, et puis... je suis tombé sur votre script. Je ne peux pas vous dire combien d'heures vous avez passé " Je viens de me sauver :) Si jamais tu es à Paris / Stockholm, il est absolument obligatoire que je t'achète une bière :)"
Razvan T. 26/11/2012
"Merci beaucoup! :)"
Viktor V. 24/04/2013
S'il vous plaît, publiez les bugs et les problèmes sur github. S'il vous plaît, N'envoyez PAS de demandes d'assistance en privé aux responsables ! Nous sommes assez débordés par les activités quotidiennes. Si vous rencontrez des problèmes, S'IL VOUS PLAÎT , signalez-les sur le système de suivi des problèmes.