💀
githubから1つのディレクトリだけをダウンロードするPythonスクリプト(遅くて意味なし)
以下のようなシェルスクリプトを作ったけど、gitなしでPythonのrequestでダウンロードできないかと思ってやってみました。
結論
できるけど、遅い。gitより早くなるかもと思ったけど、遅くなりました。git 23秒 python 183秒。(https://github.com/aws-samples/aws-cdk-examples.git のpython/
で比較)
やりたいこと
gir repositoryから、1つのディレクトリ(フォルダ)だけをダウンロードしたい
やっていること
パスを調べて、pythonのrequestで全部ファイルをダウンロード
前提
- tqdm
- beautifulsoup
が使えること。pipか何かでインストールしてください。
使い方
以下のコードをdownload_github_directory.py
(任意)として保存する。
ダウンロードしたいリポジトリのフォルダのURLを引数にする
https://github.com/aws-samples/aws-cdk-examples.git のpython/
フォルダだけをダウンロードしたい場合は以下のように。
python download_github_directory.py https://github.com/aws-samples/aws-cdk-examples/tree/master/python
こんな感じで出力されるはず。
注意点
- 時間はかかります。Checking...が出てから固まったように見えるかも。
コード
やっていること
- beautifulsoupでhtmlを見る
- リンクを見て、/tree/ならディレクトリと判断して再帰的に見る
- /blob/がファイルなのでリストにする
- /blog/を全部requestsでダウンロードする
- tqdmでプログレスバー表示
Discussion