MathJax.js
の代替 CDNCoursera は、2013 年 2 月現在、62 の異なる教育機関から 300 以上のクラスを選択できる、大規模なオープン オンライン コース(MOOC) のリーダーであることは間違いありません。教育者や教育機関による多大な貢献により、他の方法では教育を受ける余裕のなかった多くの人々が優れた教育を受けられるようになりました。世界の遠隔地には「地に足がついた」非営利団体もあり、富の拡散を支援しています(以下の Tunapanda からのフィードバックを参照)。
このスクリプトを使用すると、Coursera クラスの講義リソース (ビデオ、ppt など) を簡単に一括ダウンロードできます。 1 つ以上のクラス名とアカウント資格情報を指定すると、講義ページから週名とクラス名を取得し、関連資料を適切な名前のファイルとディレクトリにダウンロードします。
なぜこれが役立つのでしょうか? wget のようなユーティリティは動作しますが、次の制限があります。
wget
使用すると、投稿/リンクされていない余分なビデオが取得され、これらは重複する場合があります。 DownloadThemAllのようなブラウザ拡張機能も考えられますが、 coursera-dl
適切な名前のファイルなど、より多くの機能を提供します。
この作品はもともと youtube-dl から部分的にインスピレーションを得たもので、私は Khan Academy からのものなど、他の多くの優れたビデオをダウンロードしました。
.netrc
ファイルから受け入れられます。coursera-dl.conf
ファイルからロードされます。coursera-dl
、Coursera によってダウンロードへのアクセスが許可された資料のみに使用されることを目的としています。
利用規約に違反する使用は推奨しません。関連する抜粋:
「[...] Coursera は、サイトにアクセスして使用するための個人的、非独占的、譲渡不可のライセンスをお客様に付与します。お客様は、個人的、非商業的使用の場合にのみ、サイトから素材をダウンロードできます。その他の方法でコピーすることはできません。 、いかなるマテリアルも複製、再送信、配布、出版、商業利用、その他の方法で転送することはできません。また、マテリアルの改変や派生作品の作成も禁止されています。」
coursera-dl
には、Python 2 または Python 3、および対象のクラスに登録されている無料の Coursera アカウントが必要です。 (2020 年 2 月現在、Python バージョン 2.7、Pypy、3.6、3.7、3.8、および 3.9 でプログラムの実行を自動的にテストしています)。
注: Python 3 インタープリター (3.9 以降) を使用することを強くお勧めします。
どのオペレーティング システムでも、Python 実行可能ファイルの場所がPATH
環境変数に追加されていることを確認し、依存関係をインストールしたら (次のセクションを参照)、基本的な使用法として、スクリプトをメイン ディレクトリから呼び出す必要があります。 project を作成し、その先頭にpython
という単語を追加します。このドキュメントの「スクリプトの実行」セクションを参照すると、プログラムのより高度な機能を使用することもできます。
注: coursera-dl
で使用する特定のコースのコードの名誉に (手動で) すでに同意している必要があります。
コマンド ライン (できれば仮想環境) から次のコマンドを発行します。
pip install coursera-dl
これにより、プログラムの最新リリース バージョンが、必要なすべての依存関係とともに Python Package Index (PyPI) からダウンロードされます。この時点で、使用を開始する準備ができているはずです。
Python 2 のバージョンが古すぎるため (例: Ubuntu 14.4 の 2.7.5)、これが機能しない場合は、次のことを試してください。
apt-get install python3 python3-pip
pip3 install coursera-dl
その代わり。
注 1:インストールされたモジュールは、システムにインストールされている他の Python アプリケーションと競合する可能性がある (または干渉する可能性がある) ため、パッケージをマシンにグローバルに (つまり、root/管理者権限で) インストールしないことを強くお勧めします。 coursera-dl
を使用)。必要に応じて、 --user
オプションを使用してpip install
行うことをお勧めします。
注 2:すでに述べたように、Python 3 は以前のバージョンよりも SSL/TLS (安全な接続のため) のサポートが優れているため、新しい Python 3 インタープリター (例: 3.9 以降) を使用することを強くお勧めします。
Python 2 を使用する必要がある場合は、少なくとも Python 2.7.9 がインストールされていることを確認してください (それ以降のバージョンでも問題ありません)。
それ以外の場合は、 coursera-dl
引き続き使用できますが、追加のパッケージndg-httpsclient
インストールする必要があり、これには (少なくとも Linux システムでは) コンパイルが必要となる場合があります。
プロジェクト メンバーのいずれかによって別の指示がない限り (たとえば、新しい機能をテストまたはデバッグする場合、または git から直接ソース コードを使用する場合)、pip を使用して Python パッケージをインストールすることを検討することを強くお勧めします。これは現在推奨されている方法です。リポジトリ)。 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 をサポートし、Coursera による SSLv3 の無効化に対処するには、いくつかの追加手順を実行する必要があります。いずれの場合も、可能な限り最新バージョンの Python インタープリターを常にインストールすることを強くお勧めします。
AUR パッケージ: coursera-dl
警告:複数の Python 環境での作業経験がない限り、この方法はお勧めできません。
pip
プログラムを使用して、依存関係を独自にインストールできます。これらはすべて、 requirements.txt
ファイルにリストされています (また、開発に必要な追加の依存関係は、 requirements-dev.txt
ファイルにリストされています)。
この方法を使用するには、次のように進めます。
pip install -r requirements.txt
pip install -r requirements-dev.txt
上の 2 行目は、開発を支援するつもりがある場合 (支援はいつでも歓迎します)、またはプロジェクトのメンテナがデバッグ目的で追加のパッケージをインストールするように要求した場合にのみ必要です。
繰り返しになりますが、バグ レポートを提出する前に、依存関係を自分でインストールした場合は、モジュールのバージョンが少なくとも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
ファイルの使用は、コマンド ラインで毎回ユーザー名 (つまり、電子メール アドレス) とパスワードの両方を指定するのに代わる良い方法です。これを使用するには、ホーム ディレクトリ (Windows を使用している場合は同等のディレクトリ) にある.netrc
という名前のファイルに、次のような内容の行を追加するだけです。
machine coursera-dl login <user> password <pass>
ファイルがまだ存在しない場合は作成します。それ以降は、 -u
と-p
使用を切り替えて、代わりにオプション-n
を指定してcoursera-dl
呼び出すことができます。ユーザー名 (電子メール アドレス) とパスワードをコマンド ラインに直接入力するのは面倒な場合があるため、これは特に便利です (たまたま「強力な」パスワードを選択した場合はさらに面倒です)。
あるいは、優先パラメータ (ユーザー名とパスワードも含まれる場合があります) を保存したい場合は、スクリプトが実行される場所に、次の形式で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 を押してダウンロード プロセスを中断すると、部分的にダウンロードされたファイルがディスクから削除されるため、ダウンロード プロセスを最初から開始する必要があります。突然のシステムクラッシュなど、キーボード割り込み ( 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 シェル クローン (およびおそらく他の多くのシェル) を使用する場合、より良い方法の 1 つは、問題が発生しないようにパスワードを一重引用符で囲むことです。詳細については、問題 #213 を参照してください。
授業資料のダウンロード時に問題が発生した場合は、次のいずれかの操作で問題が解決するかどうかを確認してください。
使用しているクラス名が、そのクラスの URL で使用されているリソース名に対応していることを確認してください: https://www.coursera.org/learn/<CLASS_NAME>/home/welcome
--clear-cache
オプションを使用して、キャッシュされた Cookie/資格情報を消去しようとしましたか?
多くのコース (おそらくほとんど?) はコース終了後しばらくしてから教材を削除する可能性がありますが、他のコースでは同じコースの次のセッション/開講まで教材を保持する場合があることに注意してください (学術的不正の問題を避けるため、どうやら)。
つまり、コース終了後にダウンロードできるという保証はなく、残念ながら、これについては私たちがお手伝いできることは何もありません。
上で説明したように、 requirements.txt
ファイルに従ってすべての依存関係をインストールおよび/または更新していることを確認してください。
ブラウザ拡張機能 (1、2) を使用して Netscape スタイルの Cookie ファイルをエクスポートし、 -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
中国在住でビデオのダウンロードに問題がある場合は、ホスト ファイル (/etc/hosts) に「52.84.167.78 d3c33hcgiwev3.cloudfront.net」を追加し、「ipconfig/flushdns」で DNS を更新すると機能する可能性があります (https:詳細については、//github.com/googlehosts/hosts)。
まず、ダウンロードしたいコースに登録していることを確認してください。
多くの古いコースはすでに登録を終了しているため、選択肢にない場合がほとんどです。この場合は、 --preview
オプションを使用してダウンロードしてみてください。一部のコースでは、登録せずに講義資料をダウンロードできますが、これは一般的ではなく、すべてのコースで機能することが保証されません。
最後に、少なくともすべてのコース教材をリストしたインデックス ファイルがあれば、ビデオをダウンロードできます。登録している友人がそのコース ページを保存してくれるかもしれません。その場合は、 --process_local_page
オプションを使用します。
あるいは、この問題のために設計されたさまざまなブラウザ拡張機能を試してみることもできます。
上記のいずれもうまくいかない場合は、私たちにできることは何もありません。
Coursera-dl は外部ダウンローダーをサポートしていますが、これらはシラバスが解析された後の資料 (ビデオ、PDF、一部の配布資料、追加ファイルなど) をダウンロードするためにのみ使用されることに注意してください (シラバスは常に内部ダウンローダーを使用してダウンロードされます)。このような素材のダウンロードで問題が発生した場合は、外部ダウンローダーの使用を開始し、そのタイムアウト値を構成することをお勧めします。たとえば、 --aria
オプションを渡すことで、aria2c ダウンローダーを使用できます。
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
エラーが解決しない場合は、次の手順に従って github から coursera-dl をインストールしてみてください: 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
の代替 CDNコース ページを保存するときに、ヘッダーにMathJax.js
挿入することで、数式のMathJax
レンダリングを有効にしました。このスクリプトは、mathjax.org が提供する cdn サービスを使用しています。ただし、その URL は一部の国/地域ではアクセスできないため、 --mathjax-cdn <MATHJAX_CDN>
パラメーターを指定して、お住まいの地域でアクセス可能なMathJax.js
ファイルを指定できます。
問題を報告する前に、次の手順に従ってください。
最新バージョンのスクリプトを実行していることを確認し、その依存関係の推奨バージョンについては、 requirements.txt
ファイルで参照してください。疑わしい場合は、次のコマンドを使用してください。
pip install --upgrade coursera-dl
問題が解決しない場合は、お気軽にバグトラッカーで問題を開いてください。問題テンプレートにできるだけ多くの情報を記入してください。
coursera-dl
に対するバグを報告する場合は、サポートに役立つ十分な情報を忘れずに含めてください。
requirements.txt
を参照してください。--debug
オプションを使用してください。コピーして貼り付けてください。メッセージを言い換えたり言い換えたりしないでください。フィードバックを得るのは楽しいです。私が受け取ったコメントのいくつかを以下に示します。
「お疲れ様でした!あなたの脚本のおかげで、知識がもう少し世界に溢れます!」
ギョーム V. 2012 年 11 月 8 日
「Coursera コースをダウンロードするための Python スクリプトの小道具を送りたかったのです。私はケニアの非営利団体で、インターネットが非常に高価で信頼性の低い場所にオンライン コースを提供するためにこれを使用しています。ここのほとんどの子供たちはお金を買うことができません」高校の場合、これらのクラスを通常の方法でダウンロードすると、平均的な家庭が 1 週間で稼ぐ金額よりも高くなります。」
ジェイ L.、ツナパンダ 2013/3/20
「私は Coursera の大ファンで、さまざまなコースに参加しています。時間の制約により、希望するすべてのコースに同時に参加することはできません。貴社のスクリプトに出会い、とても喜んで使用しています。素晴らしいものです。」そしてこれを Github で利用できるようにしてくれてありがとう - よくやった!」
ウィリアム G. 2013/2/18
「このスクリプトは素晴らしいです。私はすべてのビデオと PPT を手作業で丹念にダウンロードしていました。wget を調べましたが、HTML のワイルドカードの問題に遭遇しました。そして、...あなたのスクリプトに出会いました。何時間かわかりません。助かったよ :) もしパリやストックホルムに行くことがあったら、絶対にビールをおごってください :)」
ラズヴァン T. 2012/11/26
"どうもありがとう! :)"
ヴィクトール V. 2013/04/24
バグや問題は github に投稿してください。サポート リクエストをメンテナに個人的に送信しないでください。私たちは日々の活動にかなり忙殺されています。問題がある場合は、問題トラッカーに報告してください。