序文
安定したコードホスティングライブラリとして、githubは実際には無料のデータ転送ステーションとして使用でき、データストレージ、自動更新、アクセスなどを実現できます。
さらに満足できるのは、github apiカプセル化を完了するための既製のPythonライブラリがあり、カプセル化されたライブラリを直接使用できることです。
私が使用しているもの:Pygithub、プロジェクトドキュメント:https://pygithub.readthedocs.io/en/latest/introduction.html
このメソッドは、githubクローラーとして使用してgithubのパブリックプロジェクトのコンテンツに自動的にアクセスすることもできます。
ライブラリのインストール方法:
pip3 install pygithub
ライブラリの使用方法:
アクセストークンを申請する
github APIを使用するには、最初にgithubアカウントまたはgithubアクセストークンが必要です。githubアカウントのパスワードは簡単に取得できますが、これは安全ではなく、誤ってユーザー名とパスワードを他人に漏らしやすいため、アクセストークンを使用してgitHub APIにアクセスすることをお勧めします。また、このaccess_tokenも管理が簡単です。
まずgithubの設定インターフェースに入り、「開発者設定」をクリックします
次に、パーソナルアクセストークンを選択し、
[新しいトークンの生成]をクリックして新しいaccess_tokenを作成します。
必要な権限を選択し、名前を付けます。ここでは、コードリポジトリのすべての権限のみを選択します。
選択後、下部にある生成ボタンをクリックすると、生成されたaccess_tokenが表示されます。
このaccess_tokenを保存します。githubを再度更新すると、この文字列は表示されなくなります。忘れた場合は、再度適用する必要があります。
APIを使用する
Githubにログインします
__author__ = 'jmh081701'
from github import Github
import config
git = Github(login_or_token=config.config['access_token'])
Githubリポジトリにアクセスします
##得到指定仓库
repo = git.get_repo("jmhIcoding/datastore")
##输出仓库的一些信息
##输出主题
print(repo.get_topics())
##显示这个仓库的stars数目
print(repo.stargazers_count)
[チェック]指定されたGithubリポジトリの指定されたファイル
contents= repo.get_contents(path="README.md")
ファイルが存在しない場合、この関数を実行すると例外がスローされます。
github.GithubException.UnknownObjectException: 404 {
"message": "Not Found", "documentation_url": "https://docs.github.com/rest/reference/repos#get-repository-content"}
それ以外の場合、戻り値はgithub.ContentFile.ContentFile
オブジェクトです。
このオブジェクトのいくつかの重要なメソッドとプロパティ:
属性名 | 意味 |
---|---|
タイプ | ファイルの種類、値:ファイルまたはディレクトリ |
サイズ | ファイルサイズ |
名前 | ファイル名 |
道 | ファイルパス |
コンテンツ | ファイルコンテンツ、base64エンコーディングの結果 |
decode_content | ファイルコンテンツ、base64デコードの結果 |
download_url | ファイルダウンロードリンク |
訪問:
print(contents.type)
print(contents.size)
print(contents.name)
print(contents.path)
print(contents.content)
print(contents.decoded_content)
print(contents.download_url)
出力結果:
file
40
README.md
README.md
IyBkYXRhc3RvcmUK5Z+65LqOZ2l0aHVi55qE5pWw5o2u5Lit6L2sCg==
b'# datastore\n\xe5\x9f\xba\xe4\xba\x8egithub\xe7\x9a\x84\xe6\x95\xb0\xe6\x8d\xae\xe4\xb8\xad\xe8\xbd\xac\n'
https://raw.githubusercontent.com/jmhIcoding/datastore/main/README.md?token=AESR3WOCTZT5A4OAY5637W27TDPYK
ファイルの内容が中国語の場合、base64デコード後、utfを使用して1回デコードするように注意してください。
print(base64.b64decode(contents.content).decode('utf8'))
出力:
# datastore
基于github的数据中转
[追加]新しいGithubファイルを追加します
ファイルパスパス、送信された情報(メッセージ、コンテンツ)を入力します。
メッセージにスペースを入れないことが最善であることに注意してください
repo.create_file(path="test.txt",message="commit_msg",content='test content')
実行後、ウェアハウスにはすでにこのファイルがあることがわかります。
別のファイルパスは新しいフォルダーの作成をサポートしていません。
[変更] Githubファイルの内容を変更する
最初にファイルを取得してから、update_file関数を呼び出します。
content = repo.get_contents('test.txt')
repo.update_file(path=content.path,message='update_msg',content='new content',sha=content.sha)
内部のshaパラメータに注意し、content.shaを使用して取得します。このshaには、置き換えられたファイルのハッシュ値が入力されます。これは、さらに確認するためのものです。
[削除] Githubファイルを削除します
最初にファイルを取得してから削除します
content = repo.get_contents("text.txt")
repo.delete_file(path=content.path,message='delete',sha=content.sha)
上記のget_contents関数は、「ref」パラメーターに接続できます。このパラメーターの関数は、ファイルがどのブランチとタグであるかを示すことです。デフォルトはマスターブランチです。
コミット/ブランチ/タグの名前。デフォルト:リポジトリのデフォルトブランチ(通常はマスター)