TaskSphere:GitHubプロジェクトの認証と情報取得

ソフトウェア開発

こんにちは、皆さん!今日は、TaskSphereプロジェクトの最初のステップとして、GitHubプロジェクトの認証と情報取得について説明します。

TaskSphereの特徴

  1. GitHubとの統合:TaskSphereは、GitHubのプロジェクトにタスクを記録することで、シンプルで直感的なタスク管理を可能にします。

  2. Intelligent AI:Pythonベースのインテリジェントなアルゴリズムが、記録されたタスクをGoogle Calendarなどのスケジュールツールに自動的に同期します。

  3. シームレスなスケジューリング:TaskSphereは、タスク管理とスケジューリングのプロセスを自動化し、ユーザーが時間をより効果的に管理できるようにします。

  4. ストレス軽減:シンプルさと自動化の力を組み合わせることで、ユーザーはより多くのことを達成し、ストレスを軽減することができます。

デモ動画

必要なライブラリのインポート

まず、必要なPythonライブラリをインポートします。osはシステム関連の操作を行うためのモジュール、requestsはHTTPリクエストを送信するためのライブラリ、termcolorartは出力を装飾するためのライブラリです。

import os
import requests
from termcolor import colored
from art import *

実行中のスクリプト名の表示

os.path.basename(__file__)を使って、現在実行中のスクリプトのファイル名を取得し、artライブラリのtprint()関数でアスキーアートとして表示します。

script_name = os.path.basename(__file__)
tprint(script_name)

環境変数からの認証情報の取得

GitHubのPersonal Access Token、ユーザーログイン名、プロジェクト番号を環境変数から取得します。これらの情報は、GitHubのAPIにアクセスするために必要です。

token = os.environ.get("GITHUB_PERSONAL_ACCESS_TOKEN")
user_login = os.environ.get("GITHUB_USER_LOGIN")
project_number = os.environ.get("GITHUB_PROJECT_NUMBER")

環境変数が設定されていない場合は、エラーメッセージを表示してスクリプトを終了します。

if token is None or user_login is None or project_number is None:
    print("Error: Required environment variables are not set.")
    exit(1)

GraphQLクエリの作成

GitHubのGraphQL APIを使用して、プロジェクトの情報を取得するためのクエリを作成します。このクエリは、ユーザーログイン名とプロジェクト番号をプレースホルダーとして使用しています。

query = """
query {
  user(login: "USER_LOGIN") {
    projectV2(number: NUMBER) {
      title
      id
    }
  }
}
"""

プレースホルダーを実際の値に置き換えます。

query = query.replace("USER_LOGIN", user_login)
query = query.replace("NUMBER", project_number)

APIリクエストの準備

APIリクエストを送信するために、ヘッダーとデータを準備します。ヘッダーには、認証用のPersonal Access Tokenと、データ形式を指定するContent-Typeが含まれます。データには、先ほど作成したGraphQLクエリを含めます。

headers = {
    "Authorization": f"Bearer {token}",
    "Content-Type": "application/json"
}

data = {
    "query": query
}

APIリクエストの送信と応答の処理

requests.post()を使って、GitHubのGraphQL APIにPOSTリクエストを送信します。応答にエラーがある場合は、エラーメッセージを表示してスクリプトを終了します。

response = requests.post("https://api.github.com/graphql", headers=headers, json=data)

if "errors" in response.json():
    print(f"Error: {response.json()['errors'][0]['message']}")
    exit(1)

プロジェクト情報の取得と表示

応答からプロジェクトのタイトルとIDを取得し、termcolorライブラリを使って色付きで表示します。

project_title = response.json()["data"]["user"]["projectV2"]["title"]
project_id = response.json()["data"]["user"]["projectV2"]["id"]

print(colored(f"Project Title: {project_title}", "green"))
print(colored(f"Project ID: {project_id[:4]}XXXXXXXXXX", "cyan"))

以上が、TaskSphereプロジェクトの最初のステップ、GitHubプロジェクトの認証と情報取得の流れです。次のステップでは、取得したプロジェクト情報を使って、タスクの管理と同期を行っていきます。お楽しみに!

リポジトリ

GitHub - Sunwood-ai-labs/TaskSphere
Contribute to Sunwood-ai-labs/TaskSphere development by creating an account on GitHub.

参考サイト

API を使用して Projects を管理する - GitHub Docs
GraphQL API を使用して、プロジェクトを自動化できます。
GitHub GraphQL APIを利用し、複数リポジトリが紐づくGitHub ProjectsのIssueリストを取得する - いいものを広め隊
はじめに 今回想定するGitHub Projects GitHub GraphQL APIを使うまでの準備 1. アクセストークンの登録 2. Issueを取得したいGitHub Projectsのidを取得する 今回はPythonで実行します GitHub Projectsに紐づくIssue一覧を取得する 特定のステ...
個人用アクセス トークンを管理する - GitHub Docs
コマンド ラインまたは API を使用して GitHub への認証を行うときに、パスワードの代わりに personal access token を使用することができます。

コメント

タイトルとURLをコピーしました