💀

githubから1つのディレクトリだけをダウンロードするPythonスクリプト(遅くて意味なし)

2022/08/28に公開

以下のようなシェルスクリプトを作ったけど、gitなしでPythonのrequestでダウンロードできないかと思ってやってみました。
https://zenn.dev/shimo_s3/articles/c3c00ec33fd952

結論

できるけど、遅い。gitより早くなるかもと思ったけど、遅くなりました。git 23秒 python 183秒。(https://github.com/aws-samples/aws-cdk-examples.gitpython/ で比較)


やりたいこと

gir repositoryから、1つのディレクトリ(フォルダ)だけをダウンロードしたい

やっていること

パスを調べて、pythonのrequestで全部ファイルをダウンロード

前提

  • tqdm
  • beautifulsoup

が使えること。pipか何かでインストールしてください。

使い方

以下のコードをdownload_github_directory.py(任意)として保存する。

ダウンロードしたいリポジトリのフォルダのURLを引数にする

https://github.com/aws-samples/aws-cdk-examples.gitpython/フォルダだけをダウンロードしたい場合は以下のように。

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