Github APIを使用して、Githubを安定した便利なネットワークデータ転送ステーションにします

序文

安定したコードホスティングライブラリとして、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」パラメーターに接続できます。このパラメーターの関数は、ファイルがどのブランチとタグであるかを示すことです。デフォルトはマスターブランチです。

コミット/ブランチ/タグの名前。デフォルト:リポジトリのデフォルトブランチ(通常はマスター)

おすすめ

転載: blog.csdn.net/jmh1996/article/details/109327334