GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

coursera-dl

coursera-dl – Coursera.orgのビデオをダウンロードして名前を付けるためのスクリプト

投稿日:

Coursera.orgのビデオをダウンロードして名前を付けるためのスクリプト。

Coursera Downloader

前書き

Courseraはおそらく2013年2月現在 62の異なる機関から300以上のクラスを選択した大規模オープンオンラインコース (MOOC)のリーダーです。 教育者や教育機関の寛大な貢献は、他に余裕がない多くの人に優れた教育を提供しています。 富の広がりを助けている世界の遠隔地には、「地上の足」を持つ非営利団体もいます( Tunapandaの下記のフィードバックを参照)。

このスクリプトを使用すると、Courseraクラスの講義リソース(ビデオ、pptなど)を一括ダウンロードすることが容易になります。 1つ以上のクラス名とアカウント資格情報が与えられた場合、 講義ページから週とクラスの名前を取得し、適切な名前のファイルとディレクトリに関連資料をダウンロードします。

なぜこれは役に立ちますか? wgetのようなユーティリティは動作しますが、以下の制限があります:

  1. ビデオ名に数字が入っていますが、これは実際の注文に対応していません。 手動でそれらの名前を変更するのは、コンピュータのために残された痛みです。
  2. シラバスのページの名前を使用すると、より有益な名前が得られます。
  3. forループでwgetを使用すると、投稿/リンクされていない余分な動画がwgetれ、重複することがあります。

DownloadThemAllのようなブラウザー拡張も可能ですが、 coursera-dlは適切な名前のファイルなどのより多くの機能を提供します。

この作品はもともとyoutube-dlの一部であり、Khan Academyなどの他の多くの優れた動画をダウンロードしました。

特徴

  • あらゆる種類のコース(「旧プラットフォーム」/時間ベース、「新プラットフォーム」/オンデマンドコース)のサポート
  • 意図的に詳細な名前を使用するため、ほとんどのインターフェース(AndroidデバイスのVLCやMX Videoなど)で正しく表示され、並べ替えられます。
  • 特定のリソースのみをダウンロードするRegexベースのセクション(週)および講義名フィルタ。
  • 必要なリソースタイプを取得するためのファイル形式拡張フィルタ。
  • コマンドラインまたは.netrcファイルから受け入れられるログイン資格情報。
  • coursera-dl.confファイルからロードされるデフォルトの引数。
  • Linux、Mac、Windows上でテストされたコア機能

免責事項

coursera-dlは、Courseraがあなたにダウンロードのためのアクセス権を与えるあなたのマテリアルのためだけに使用されることを意図しています。

当社は、 利用規約に違反する行為を奨励するものではありません。 関連する抜粋:

“[…] Courseraは、サイトにアクセスして使用するための個人的、非独占的、譲渡不能なライセンスをお客様に付与します。複製、再送信、配布、公開、商業上の悪用またはその他の方法で転送することはできず、また、その資料の派生品を変更または作成することもできません。

インストール手順

coursera-dlは、Python 2またはPython 3が必要です。また、興味のクラスに登録されている無料のCourseraアカウントが必要です。 (2016年2月現在、Pythonバージョン2.6,2.7、Pypy、3.4,3.5、および3.6のプログラムの実行を自動的にテストします)。

注意: Python 3インタプリタ(3.4以降)を使用することを強くお勧めします。

どのオペレーティングシステムでも、Python実行可能ファイルの場所がPATH環境変数に追加されていることを確認してください。依存関係をインストールしたら(次のセクションを参照)、 基本的な使い方については、プロジェクトに追加して、 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 )。 必要に応じて、 pip install--userオプションを使用することをお勧めします。

注2:既に述べたように、Python 3は以前のバージョンよりもSSL / TLS(セキュアな接続用)をサポートしているので、新しいPython 3インタプリタ(例えば3.4以降)を使用することを強く推奨します。
Python 2を使用する必要がある場合は、少なくともPython 2.7.9(それ以降のバージョンは問題ありません)があることを確認してください。
それ以外の場合は、引き続きcoursera-dl使用できますが、コンパイルが必要な追加パッケージndg-httpsclientをインストールする必要があります(少なくともLinuxシステムでは)。

不足している依存関係をインストールする別の方法

Pythonパッケージをpipでインストールすることを検討することをお勧めします。これは、現在の優先メソッドと同じように、プロジェクトメンバーのいずれかが指示しない限り(たとえば、新しい機能をテストまたはデバッグしたり、リポジトリ)。 pipを使用している場合は、 pip install -r requirements.txtを使用して要件ファイルからすべての依存関係を直接インストールできpip install -r requirements.txt

Unixシステムの代替インストール方法

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インタプリタをインストールすることを強くお勧めします。

ArchLinux

AURパッケージ: coursera-dl

依存関係のインストール

警告:この方法は、複数のPython環境で作業していない限りお勧めしません。

pipプログラムを使用して、依存関係を自分でインストールすることができます。 それらはすべてrequirements.txtファイルにリストされてrequirements.txtます(開発に必要な余分な依存関係はrequirements-dev.txtファイルにリストされています)。

この方法を使用するには、次の手順を実行します。

pip install -r requirements.txt
pip install -r requirements-dev.txt

上記の2行目は、開発の手助けをしたい場合(およびヘルプはいつでも歓迎)、プロジェクトのメンテナがデバッグのために余分なパッケージをインストールするよう求めた場合にのみ必要です。

もう一度、バグレポートを提出する前に、依存関係を自分でインストールした場合は、モジュールのバージョンがrequirements.txtファイル(およびrequirements-dev.txtファイル)にリストされているバージョン以上であることを確認してください。

Windows

python -m pip install coursera-dl

PythonのインストールパスがPATHシステム環境変数に追加されていることを確認してください。 これは、[コントロールパネル]> [システム]> [拡張システム設定]> [環境変数]にあります。

Example:
C:\Python35\Scripts\;C:\Python35\;

また、インストールのアクセス権が制限されていて、PythonをAppDataの下にインストールした場合は、これをPATHに追加してください。

Example:
C:\Users\<user>\AppData\Local\Programs\Python\Python35-32\Scripts;C:\Users\<user>\AppData\Local\Programs\Python\Python35-32;

Coursera-dlはコマンドラインまたはpowershellから実行できるようになりました。

Courseraでアカウントを作成する

まだ持っていない場合は、 Courseraアカウントを作成し、クラスに登録してください。 クラスのリストについては、 https://www.coursera.org/coursesを参照してください

スクリプトの実行

Courseraアカウントの資格情報(電子メールアドレスとパスワード、 ~/.netrcファイルなど)、クラス名、その他の追加パラメータを入力して、スクリプトを実行して資料をダウンロードします。

General:                     coursera-dl -u <user> -p <pass> 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
Specify download path:       coursera-dl -n --path=C:\Coursera\Classes\ 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使用)をエスケープしてください。

新しいプラットフォーム(「オンデマンド」)クラスをサポートしてます。

* nixプラットフォームでは、 ~/.netrcファイルを使用することは、コマンドラインで毎回ユーザー名(つまり電子メールアドレス)とパスワードを指定する良い方法です。 それを使用するには、ホームディレクトリの.netrcという名前のファイル(またはWindowsを使用している場合は同等のファイル)に以下のような行を追加するだけです:

machine coursera-dl login <user> password <pass>

ファイルがまだ存在しない場合は作成します。 それ以降、 -u-pを使用することからcoursera-dlオプションを指定してcoursera-dlを呼び出すことができます。 ユーザ名(電子メールアドレス)とコマンドライン上のパスワードを入力するのは面倒です(「強力な」パスワードを選択した場合でも)。

また、好みのパラメータ(ユーザ名とパスワードも含む)をcoursera-dl.conf場合は、スクリプトが実行される場所に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では、すべてのパラメータを引用符で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-shellクローン(おそらく他の多くのシェルもあります)では、パスワードを一重引用符で囲むことで、問題にぶつからないようにすることができます。 詳細は、 発行番号213を参照してください。

トラブルシューティング

クラス教材をダウンロードする際に問題が発生した場合は、次のいずれかの方法で問題が解決するかどうか確認してください。

  • 使用しているクラス名が、そのクラスのURLで使用されているリソース名に対応していることを確認してhttps://www.coursera.org/learn/<CLASS_NAME>/home/welcome : https://www.coursera.org/learn/<CLASS_NAME>/home/welcome / https://www.coursera.org/learn/<CLASS_NAME>/home/welcome / https://www.coursera.org/learn/<CLASS_NAME>/home/welcome

  • --clear-cacheオプションを--clear-cacheして、キャッシュされたCookie /認証情報を消去しようとしましたか?

  • 多くのコース(ほとんどの場合、おそらく?)は、コースが終了してからしばらくしてから材料を取り除くことができますが、他のコースは、次のセッション/同じコースの提供まで材料を保持することができます(学問的不誠実、明らかに)。

    要するに、コースが終了した後にダウンロードできることは保証されていません。残念なことに、お手伝いできるものはありません。

  • 上記のrequirements.txtファイルに従って、依存関係のすべてをインストールおよび/または更新していることを確認してください。

  • ブラウザの拡張子( 1,2 )でNetscape形式のクッキーファイルをエクスポートし、 -cオプションとともに使用することができます。 これは、パスワードによる認証が機能していない場合(認証プロセスが今すぐ変更された場合)に便利です。

  • 結果に0のセクションが表示される場合は、無効な資格情報(コマンドラインまたは.netrcファイルまたはcoursera-dl.confファイルにユーザー名とパスワードが表示されている可能性があります)。

  • まだ開始されていないが以前の繰り返しがあったコースでは、最後のコースからのすべてのクラスを含むプレビューが利用可能な場合があります。 これらのファイルは、– --previewパラメーターを渡すことでダウンロードできます。

  • Could not find class: <CLASS_NAME>ようなエラーが表示された場合は、

    • コースの名前が正しいことを確認します。 コースラの現在のクラス名は、 classとコースの現在のバージョン(番号)のような短いコース名で構成されています。 たとえば、classという名前のclass場合は、 class-001class-002などを使用する必要があります。
    • 次に、あなたがコースに登録されていることを確認します。 正式に登録されておらず、ウェブサイトから名誉コースに合意していない場合、コースの教材にアクセスすることはできません。
  • 次の場合:

    • -nを使用して.netrcファイルを使用することを指定するとエラーが発生し、

    • スクリプトでデフォルトのnetrcファイルを使用し、

    • coursera-dl: error: too few argumentsというメッセージが表示され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をご覧ください)。

このページで0セクションと0講義が見つかりました

まず、あなたがダウンロードしたいコースに登録されていることを確認してください。

多くの古いコースではすでに登録が閉鎖されているため、オプションではありません。 この場合、– --previewオプションを--previewダウンロードしてみてください。 コースによっては、登録せずに講義資料をダウンロードできるコースもありますが、それは一般的ではなく、すべてのコースで働くことが保証されていません。

最後に、すべての教材をリストするインデックスファイルがあれば、ビデオをダウンロードできます。 登録されているあなたの友人があなたのコースページを保存するかもしれません。 この場合、 – --process_local_pageオプションを使用して--process_local_page

また、このChrome拡張機能を試してみることもできます: https : //chrome.google.com/webstore/detail/coursera-materials-downlo/ijkboagofaehocnjacacdhdcbbcpilih

上記のいずれにも該当しない場合は、私たちができることはありません。

Windows:プロキシサポート

プロキシの背後にあるWindowsの場合は、次のようにスクリプトを実行する前に環境変数を設定します。

set HTTP_PROXY=http://host:port
set HTTPS_PROXY=http://host:port

関連する議論: #205

Windows:プロセスの作成に失敗しました

C:\Users\<user>\AppData\Local\Programs\Python\Python35-32\ScriptsまたはPythonがインストールされている場所(Windowsではデフォルトです)で、以下のファイルをアイドル状態で編集します(スクリプト名を右クリックして ‘editメニューでアイドル状態)

coursera-dl-script

から

#!c:\users\<user>\appdata\local\programs\python\python35-32\python.exe

#"!c:\users\<user>\appdata\local\programs\python\python35-32\python.exe"

(引用符を付ける)。 これは既知のピップバグです。

出典: Issue #500 StackOverflow

SSLError:[Errno 1] _ssl.c:504:エラー:14094410:SSLルーチン:SSL3_READ_BYTES:sslv3アラートハンドシェイクエラー

これは既知のエラーです。このエラーメッセージについて報告しないでください! あなたの環境に問題があります。 これを修正するには、次のようにします。

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 URLを使用する

コースページを保存するときに、ヘッダーにMathJax.jsすることで、 MathJaxレンダリングを有効にしました。 このスクリプトは、 mathjax.orgが提供するcdnサービスを使用しています。 ただし、一部の国/地域ではURLにアクセスできない場合は、– --mathjax-cdn <MATHJAX_CDN>パラメータを指定して、地域でアクセス可能なMathJax.jsファイルを指定できます。

レポートの問題

問題を報告する前に、以下の手順に従ってください:

  1. スクリプトの最新バージョンとその依存関係の推奨バージョンを実行していることを確認してください(ファイルrequirements.txt参照)。 不確かな場合は、次のコマンドを使用します。

     pip install --upgrade coursera-dl
    
  2. 問題が解決しない場合は、バグトラッカーで問題開いてください。 できるだけ多くの情報を問題テンプレートに記入してください。

問題の報告/バグの報告

coursera-dlに対するバグを報告する際には、私たちがあなたを助けるために十分な情報を含めることを忘れないでください。

  • 問題は最新バージョンのスクリプトで起こっていますか?
  • どのオペレーティングシステムを使用していますか?
  • モジュールのすべての推奨バージョンがありますか? ファイルrequirements.txtそれらを参照してください。
  • アクセスしようとしているコースは何ですか?
  • あなたが使用している正確なコマンドラインは何ですか(あなたのユーザー名とパスワードをアスタリスクで非表示にしておきますが、他のすべての情報は変更しないでください)。
  • あなたが得る正確なメッセージは何ですか? メッセージをバグレポートとして投稿する前に、– --debugオプションを使用してください。 コピーして貼り付けてください。 メッセージの言い直し/言い換えをしないでください。

フィードバック

私はフィードバックを得ることを楽しむ。 ここに私が受け取ったコメントのいくつかがあります:

  • “良い仕事をありがとう!知識はあなたのスクリプトのおかげでもう少し世界をあふれさせるだろう!”
    Guillaume V. 11/8/2012

  • 「ちょうどあなたのPythonスクリプトの小道具を送信してコースセラコースをダウンロードしたいと思っていました。ケニアで非営利のためにインターネットを使って、インターネットが本当に高価で信頼性の低い場所に通っています。高校に通って、通常の方法でこれらのクラスの1つをダウンロードすると、平均家族が1週間で稼ぐよりも多くの費用がかかります。
    Jay L.、 Tunapanda 3/20/2013

  • 「私はコースセラの大ファンであり、さまざまなコースに参加しています。時間制約は、同時に私が必要とするすべてのコースに参加することを許可していません。これをGithubで利用できるようにしてくれてありがとう。
    William G. 2/18/2013

  • “このスクリプトはすばらしいです!私は徹底的に各ビデオとpptを手作業でダウンロードしていましたが、wgetを見ただけでHTMLでワイルドカードの問題が発生しました。あなたがパリ/ストックホルムにいるなら、私はあなたにビールを買うことが絶対に必須です:) “
    Razvan T. 11/26/2012

  • “どうもありがとう! :)”
    Viktor V. 24/04/2013

接触

githubにバグや問題を投稿してください。 RogérioTheodoro de Brito(現メンテナー): rbrito@ime.usp.br (twitter: @rtdbrito )またはJohn Lehmann(元の著者):geemailドットコム(twitter: @jplehmann )で最後のコメント







-coursera-dl
-, , , , , , , ,

執筆者: