MathJax.js
O Coursera é indiscutivelmente o líder em cursos on-line abertos e massivos (MOOC), com uma seleção de mais de 300 aulas de 62 instituições diferentes em fevereiro de 2013. Contribuições generosas de educadores e instituições estão disponibilizando uma educação excelente para muitos que de outra forma não poderiam pagar. Existem até organizações sem fins lucrativos com “pés no chão” em áreas remotas do mundo que estão ajudando a espalhar a riqueza (veja o feedback abaixo de Tunapanda).
Este script facilita o download em lote de recursos de palestras (por exemplo, vídeos, ppt, etc.) para aulas do Coursera. Dado um ou mais nomes de turmas e credenciais de conta, ele obtém nomes de semanas e turmas da página de palestras e, em seguida, baixa os materiais relacionados em arquivos e diretórios com nomes apropriados.
Por que isso é útil? Um utilitário como o wget pode funcionar, mas tem as seguintes limitações:
wget
em um loop for seleciona vídeos extras que não são postados/vinculados e, às vezes, são duplicados. Extensões de navegador como DownloadThemAll são outra possibilidade, mas coursera-dl
oferece mais recursos, como arquivos com nomes apropriados.
Este trabalho foi originalmente inspirado em parte no youtube-dl, do qual baixei muitos outros vídeos bons, como os da Khan Academy.
.netrc
.coursera-dl.conf
. coursera-dl
deve ser usado apenas para o material que o Coursera dá acesso para download.
Não encorajamos qualquer uso que viole seus Termos de Uso. Um trecho relevante:
"[...] O Coursera concede a você uma licença pessoal, não exclusiva e intransferível para acessar e usar os Sites. Você pode baixar material dos Sites apenas para seu uso pessoal e não comercial. Você não pode copiar de outra forma , reproduzir, retransmitir, distribuir, publicar, explorar comercialmente ou de outra forma transferir qualquer material, nem poderá modificar ou criar trabalhos derivados do material."
coursera-dl
requer Python 2 ou Python 3 e uma conta gratuita do Coursera inscrita na classe de interesse. (A partir de fevereiro de 2020, testamos automaticamente a execução do programa com as versões 2.7, Pypy, 3.6, 3.7, 3.8 e 3.9 do Python).
Nota: Recomendamos fortemente que você use um interpretador Python 3 (3.9 ou posterior).
Em qualquer sistema operacional, certifique-se de que o local do executável Python seja adicionado à sua variável de ambiente PATH
e, depois de instalar as dependências (veja a próxima seção), para um uso básico , você precisará invocar o script do diretório principal do projeto e acrescente a palavra python
no início. Você também pode usar recursos mais avançados do programa consultando a seção "Executando o script" deste documento.
Observação: você já deve ter concordado (manualmente) com a Honra do Código dos cursos específicos que deseja usar com coursera-dl
.
A partir de uma linha de comando (de preferência, de um ambiente virtual), basta emitir o comando:
pip install coursera-dl
Isso fará o download da versão mais recente do programa do Python Package Index (PyPI) junto com todas as dependências necessárias. Neste ponto, você deve estar pronto para começar a usá-lo.
Se isso não funcionar porque sua versão do Python 2 é muito antiga (por exemplo, 2.7.5 no Ubuntu 14.4), tente:
apt-get install python3 python3-pip
pip3 install coursera-dl
em vez de.
Nota 1: Recomendamos fortemente que você não instale o pacote globalmente em sua máquina (ou seja, com privilégios de root/administrador), pois os módulos instalados podem entrar em conflito com outros aplicativos Python que você instalou em seu sistema (ou podem interferir com coursera-dl
). Prefira usar a opção --user
ao pip install
, se precisar.
Nota 2: Como já mencionado, recomendamos fortemente que você use um novo interpretador Python 3 (por exemplo, 3.9 ou posterior), já que Python 3 tem melhor suporte para SSL/TLS (para conexões seguras) do que versões anteriores.
Se você precisar usar o Python 2, certifique-se de ter pelo menos o Python 2.7.9 (versões posteriores são aceitáveis).
Caso contrário, você ainda poderá usar coursera-dl
, mas terá que instalar o pacote extra ndg-httpsclient
, que pode envolver compilação (pelo menos em sistemas Linux).
Recomendamos fortemente que você considere instalar pacotes Python com pip, já que ele é o método preferido no momento, a menos que seja orientado de outra forma por um dos membros do projeto (por exemplo, ao testar ou depurar um novo recurso ou usar o código-fonte diretamente do nosso git repositório). Se estiver usando pip
, você pode instalar diretamente todas as dependências do arquivo de requisitos usando pip install -r requirements.txt
.
Recomendamos fortemente que você instale coursera-dl
e todas as suas dependências de uma forma que não interfira no restante da instalação do Python. Isto é conseguido através da criação de um ambiente virtual , ou "virtualenv".
Para a configuração inicial, em um sistema operacional tipo Unix, use as seguintes etapas (crie/adapte primeiro o diretório /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 baixar ainda mais novos vídeos de suas aulas, basta realizar:
cd /directory/where/I/want/my/courses/my-coursera
source bin/activate
cd coursera-dl
./coursera-dl ...
Estamos trabalhando para simplificar todo esse processo para que seja o mais simples possível, mas para oferecer suporte a versões mais antigas do Python e lidar com a desativação do SSLv3 pelo Coursera, precisamos realizar algumas etapas extras. Em qualquer caso, é altamente recomendável que você sempre instale a versão mais recente possível do interpretador Python.
Pacote AUR: coursera-dl
Aviso: este método não é recomendado, a menos que você tenha experiência em trabalhar com vários ambientes Python.
Você pode usar o programa pip
para instalar as dependências por conta própria. Eles estão todos listados no arquivo requirements.txt
(e as dependências extras necessárias para o desenvolvimento estão listadas no arquivo requirements-dev.txt
).
Para usar este método, você procederia da seguinte forma:
pip install -r requirements.txt
pip install -r requirements-dev.txt
A segunda linha acima só deverá ser necessária se você pretende ajudar no desenvolvimento (e ajuda é sempre bem-vinda) ou se um mantenedor do projeto solicitar que você instale pacotes extras para fins de depuração.
Mais uma vez, antes de enviar relatórios de bugs, se você instalou as dependências por conta própria, verifique se as versões dos seus módulos são pelo menos aquelas listadas no arquivo requirements.txt
(e no arquivo requirements-dev.txt
, se aplicável).
Se preferir você pode rodar este software dentro do Docker:
docker run --rm -it -v
"$(pwd):/courses"
courseradl/courseradl -u <USER> -p <PASSWORD>
Ou usando o arquivo netrc:
docker run --rm -it
-v "$(pwd):/courses" -v "$HOME/.netrc:/netrc"
courseradl/courseradl -n /netrc
O diretório de trabalho real do coursera-dl é /courses, todos os cursos serão baixados lá se você não especificar o contrário.
python -m pip install coursera-dl
Certifique-se de que o caminho de instalação do Python seja adicionado às variáveis de ambiente do sistema PATH. Isso pode ser encontrado em Painel de controle > Sistema > Configurações avançadas do sistema > Variáveis de ambiente.
Example:
C:Python39Scripts;C:Python39;
Ou se você restringiu as permissões de instalação e instalou o Python em AppData, adicione isto ao seu PATH.
Example:
C:Users<user>AppDataLocalProgramsPythonPython39-32Scripts;C:Users<user>AppDataLocalProgramsPythonPython39-32;
O Coursera-dl agora pode ser executado a partir da linha de comando ou do PowerShell.
Se você ainda não tem uma, crie uma conta no Coursera e inscreva-se em um curso. Consulte https://www.coursera.org/courses para obter a lista de aulas.
Consulte coursera-dl --help
para obter uma referência completa e atualizada sobre as opções de tempo de execução suportadas por este utilitário.
Execute o script para baixar os materiais, fornecendo as credenciais da sua conta do Coursera (por exemplo, endereço de e-mail e senha ou um arquivo ~/.netrc
), os nomes das aulas, bem como quaisquer parâmetros adicionais:
General: coursera-dl -u <user> -p <pass> modelthinking-004
With CAUTH parameter: coursera-dl -ca 'some-ca-value-from-browser' modelthinking-004
Se não quiser digitar sua senha na linha de comando como texto simples, você pode usar o script sem a opção -p
. Nesse caso, você será solicitado a fornecer a senha assim que o script for executado.
Aqui estão alguns exemplos de como invocar coursera-dl
na linha 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: Se o seu comando ls
tiver um alias para exibir uma saída colorida, você poderá ter problemas. Certifique-se de escapar do comando ls
(use ls
) para garantir que nenhum caractere especial seja enviado ao script.
Observe que oferecemos suporte aos cursos da Nova Plataforma ("sob demanda").
Por padrão, os vídeos são baixados com resolução de 540p. Para cursos sob demanda, o sinalizador --video-resolution
aceita valores de 360p, 540p e 720p.
Para baixar apenas os arquivos de legenda .txt
e/ou .srt
em vez dos vídeos, use -ignore-formats mp4 --subtitle-language en
ou qualquer formato em que os vídeos estejam codificados e os idiomas desejados para as legendas.
Nas plataformas *nix, o uso de um arquivo ~/.netrc
é uma boa alternativa para especificar seu nome de usuário (ou seja, seu endereço de e-mail) e senha sempre na linha de comando. Para usá-lo, basta adicionar uma linha como a abaixo a um arquivo chamado .netrc
em seu diretório inicial (ou equivalente, se você estiver usando Windows) com conteúdo como:
machine coursera-dl login <user> password <pass>
Crie o arquivo se ele ainda não existir. A partir de então, você pode deixar de usar -u
e -p
para simplesmente chamar coursera-dl
com a opção -n
. Isso é especialmente conveniente, pois digitar nomes de usuário (endereços de e-mail) e senhas diretamente na linha de comando pode ser cansativo (ainda mais se você escolher uma senha “forte”).
Alternativamente, se você deseja armazenar seus parâmetros preferidos (que também podem incluir seu nome de usuário e senha), crie um arquivo chamado coursera-dl.conf
onde o script deve ser executado, com o seguinte 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
Os parâmetros especificados no arquivo serão substituídos se forem fornecidos novamente na linha de comando.
Nota: Em coursera-dl.conf
, todos os parâmetros não devem ser colocados entre aspas.
No modo padrão, quando você interrompe o processo de download pressionando CTRL + C , os arquivos parcialmente baixados serão excluídos do disco e você deverá iniciar o processo de download desde o início. Se o seu download foi interrompido por algo diferente de KeyboardInterrupt ( CTRL + C ) como uma falha repentina do sistema, os arquivos parcialmente baixados permanecerão no seu disco e na próxima vez que você iniciar o processo novamente, esses arquivos serão descartados da lista de downloads!, portanto é seu trabalho para excluí-los manualmente antes do próximo início. Por esse motivo adicionamos uma opção chamada --resume
que continua seus downloads de onde pararam:
coursera-dl -u <user> -p <pass> --resume sdn1-001
Esta opção também pode ser usada com downloaders externos:
coursera-dl --wget -u <user> -p <pass> --resume sdn1-001
Nota 1 : Alguns downloaders externos usam seu próprio recurso de currículo integrado, que pode não ser compatível com outros, portanto, use-os por sua própria conta e risco.
Nota 2 : Lembre-se de que no modo de retomada, os arquivos interrompidos NÃO serão excluídos do seu disco.
NOTA : Se sua senha contém pontuação, aspas ou outros "caracteres engraçados" (por exemplo, <
, >
, #
, &
, |
e assim por diante), então você pode ter que escapar deles do seu shell. Com o bash ou outros clones do Bourne-shell (e provavelmente com muitos outros shells), uma das melhores maneiras de fazer isso é colocar sua senha entre aspas simples, para que você não tenha problemas. Consulte a edição nº 213 para obter mais informações.
Se você tiver problemas ao baixar os materiais da aula, tente ver se uma das ações a seguir resolve seu problema:
Certifique-se de que o nome da turma que você está usando corresponde ao nome do recurso usado no URL dessa turma: https://www.coursera.org/learn/<CLASS_NAME>/home/welcome
Você tentou limpar os cookies/credenciais em cache com a opção --clear-cache
?
Observe que muitos cursos (a maioria, talvez?) podem remover os materiais algum tempo após a conclusão do curso, enquanto outros cursos podem reter os materiais até uma próxima sessão/oferta do mesmo curso (para evitar problemas com desonestidade acadêmica, aparentemente).
Resumindo, não é garantido que você conseguirá fazer o download após o término do curso e, infelizmente, não podemos ajudá-lo com isso.
Certifique-se de ter instalado e/ou atualizado todas as suas dependências de acordo com o arquivo requirements.txt
conforme descrito acima.
Pode-se exportar um arquivo de cookies estilo Netscape com uma extensão de navegador (1, 2) e usá-lo com a opção -c
. Isto é útil quando a autenticação via senha não está funcionando (o processo de autenticação muda de vez em quando).
Se os resultados mostrarem 0 seções, você provavelmente forneceu credenciais inválidas (nome de usuário e/ou senha na linha de comando ou em seu arquivo .netrc
ou em seu arquivo coursera-dl.conf
).
Para cursos que ainda não foram iniciados, mas já tiveram uma iteração anterior, às vezes é disponibilizada uma prévia, contendo todas as aulas do último curso. Esses arquivos podem ser baixados passando o parâmetro --preview
.
Se você receber um erro como Could not find class: <CLASS_NAME>
, então:
class
e a versão atual do curso (um número). Por exemplo, para uma classe chamada class
, você teria que usar class-001
, class-002
etc.Se:
Você recebe um erro ao usar -n
para especificar que deseja usar um arquivo .netrc
e,
Você deseja que o script use seu arquivo netrc padrão e,
Você recebe uma mensagem dizendo coursera-dl: error: too few arguments
Então você deve especificar --
como um argumento após -n
, ou seja, -n --
ou alterar a ordem em que você passa os argumentos para o script, para que o argumento após -n
comece com um hífen ( -
). Caso contrário, o módulo argparse
do Python pensará que o que você está passando é o nome do arquivo netrc que deseja usar. Veja a edição nº 162.
Se sua senha contiver espaços, não se esqueça de escrevê-la entre aspas.
Você instalou o projeto certo?
Aviso : Se você instalou o script usando PyPi (pip), verifique se instalou o projeto correto. Tivemos que usar um nome diferente no pip porque nosso nome original já estava em uso. Lembre-se de instalá-lo usando:
pip install coursera-dl
Se você é da China e está tendo problemas para baixar vídeos, adicionar "52.84.167.78 d3c33hcgiwev3.cloudfront.net" no arquivo hosts (/etc/hosts) e atualizar o DNS com "ipconfig/flushdns" pode funcionar (consulte https: //github.com/googlehosts/hosts para mais informações).
Em primeiro lugar, certifique-se de estar inscrito no curso que deseja baixar.
Muitos cursos antigos já fecharam as inscrições com tanta frequência que não é uma opção. Neste caso, tente fazer o download com a opção --preview
. Alguns cursos permitem o download de materiais de aula sem inscrição, mas isso não é comum e não é garantido que funcione para todos os cursos.
Por fim, você pode baixar os vídeos se tiver, pelo menos, o arquivo de índice que lista todos os materiais do curso. Talvez seu amigo inscrito possa salvar a página do curso para você. Nesse caso, use a opção --process_local_page
.
Como alternativa, você pode tentar várias extensões de navegador projetadas para esse problema.
Se nenhuma das opções acima funcionar para você, não há nada que possamos fazer.
O Coursera-dl oferece suporte a downloaders externos, mas observe que eles só são usados para baixar materiais após a análise do plano de estudos, por exemplo, vídeos, PDFs, alguns folhetos e arquivos adicionais (o programa de estudos é sempre baixado usando o downloader interno). Se tiver problemas ao baixar esses materiais, você pode começar a usar o downloader externo e configurar seus valores de tempo limite. Por exemplo, você pode usar o downloader aria2c passando a opção --aria
:
coursera-dl -n --path . --aria2 <course-name>
E coloque isso no arquivo de configuração do aria2c ~/.aria2/aria2.conf
para reduzir o tempo limite:
connect-timeout=2
timeout=2
bt-stop-timeout=1
A configuração de tempo limite para downloader interno não é suportada.
Se você estiver no Windows atrás de um proxy, configure as variáveis de ambiente antes de executar o script da seguinte maneira:
set HTTP_PROXY=http://host:port
set HTTPS_PROXY=http://host:port
Discussão relacionada: #205
Em C:Users<user>AppDataLocalProgramsPythonPython39-32Scripts
ou onde quer que o Python esteja instalado (acima é o padrão para Windows) edite o arquivo abaixo em modo inativo: (clique com o botão direito no nome do script e selecione 'editar com ocioso no menu)
coursera-dl-script
de
#!c:users<user>appdatalocalprogramspythonpython39-32python.exe
para
#"!c:users<user>appdatalocalprogramspythonpython39-32python.exe"
(adicione aspas). Este é um bug conhecido do pip.
Fonte: edição nº 500 StackOverflow
Este é um erro conhecido, por favor não relate esta mensagem de erro! O problema está no SEU ambiente. Para consertar, faça o seguinte:
sudo apt-get install build-essential python-dev libssl-dev libffi-dev
pip install --user urllib3 pyasn1 ndg-httpsclient pyOpenSSL
Se o erro persistir, tente instalar o coursera-dl do github seguindo esta instrução: https://github.com/coursera-dl/coursera-dl#alternative-installation-method-for-unix-systems
Se você ainda tiver o problema, leia os seguintes problemas para obter mais ideias sobre como corrigi-lo: #330 #377 #329
Também vale a pena ler: https://urllib3.readthedocs.io/en/latest/security.html#insecureplatformwarning
MathJax.js
Ao salvar a página de um curso, habilitamos a renderização MathJax
para equações matemáticas, injetando MathJax.js
no cabeçalho. O script está usando um serviço CDN fornecido por mathjax.org. No entanto, esse URL não está acessível em alguns países/regiões. Você pode fornecer um parâmetro --mathjax-cdn <MATHJAX_CDN>
para especificar o arquivo MathJax.js
que está acessível em sua região.
Antes de relatar qualquer problema, siga as etapas abaixo:
Verifique se você está executando a versão mais recente do script, e as versões recomendadas de suas dependências, veja-as no arquivo requirements.txt
. Use o seguinte comando em caso de dúvida:
pip install --upgrade coursera-dl
Se o problema persistir, sinta-se à vontade para abrir um problema em nosso bugtracker, preencha o modelo de problema com o máximo de informações possível .
Ao relatar bugs no coursera-dl
, não se esqueça de incluir informações suficientes para que você possa nos ajudar:
requirements.txt
.--debug
antes de postar as mensagens como um relatório de bug. Por favor, copie e cole-os. Não reformule/parafraseie as mensagens.Gosto de receber feedback. Aqui estão alguns dos comentários que recebi:
"Obrigado pelo bom trabalho! O conhecimento inundará um pouco mais o mundo graças ao seu roteiro!"
Guillaume V. 08/11/2012
"Só queria enviar a você suporte para o seu script Python para baixar os cursos do Coursera. Tenho usado-o no Quênia para minha organização sem fins lucrativos para levar cursos on-line para lugares onde a Internet é realmente cara e não confiável. A maioria das crianças aqui não pode pagar ensino médio, e baixar uma dessas aulas pelos meios usuais custaria mais do que uma família média ganha em uma semana. Obrigado!"
Jay L., Tunapanda 20/03/2013
"Sou um grande fã do Coursera e participo de vários cursos diferentes. As restrições de tempo não me permitem frequentar todos os cursos que desejo ao mesmo tempo. Encontrei seu roteiro e estou muito feliz em usá-lo! Ótimo material e obrigado por disponibilizar isso no Github - muito bem!"
Guilherme G. 18/02/2013
"Este script é incrível! Eu estava baixando meticulosamente cada vídeo e ppt manualmente - olhei para o wget, mas tive problemas com caracteres curinga com HTML e então... me deparei com seu script. Não sei dizer quantas horas você acabei de me salvar :) Se você estiver em Paris / Estocolmo, é absolutamente obrigatório que eu lhe pague uma cerveja :)"
Razvan T. 26/11/2012
"Muito obrigado! :)"
Viktor V. 24/04/2013
Por favor, poste bugs e problemas no github. Por favor, NÃO envie solicitações de suporte em particular aos mantenedores! Estamos bastante sobrecarregados com as atividades do dia a dia. Se você tiver problemas, POR FAVOR , registre-os no rastreador de problemas.