上传源码
This commit is contained in:
59
osu_api_example.py
Normal file
59
osu_api_example.py
Normal file
@@ -0,0 +1,59 @@
|
||||
import requests
|
||||
import os
|
||||
|
||||
CLIENT_ID = os.environ.get('OSU_CLIENT_ID', '5')
|
||||
CLIENT_SECRET = os.environ.get('OSU_CLIENT_SECRET', 'FGc9GAtyHzeQDshWP5Ah7dega8hJACAJpQtw6OXk')
|
||||
API_URL = os.environ.get('OSU_API_URL', 'https://osu.ppy.sh')
|
||||
|
||||
|
||||
def authenticate(username: str, password: str):
|
||||
"""Authenticate via OAuth password flow and return the token dict."""
|
||||
url = f"{API_URL}/oauth/token"
|
||||
data = {
|
||||
"grant_type": "password",
|
||||
"username": username,
|
||||
"password": password,
|
||||
"client_id": CLIENT_ID,
|
||||
"client_secret": CLIENT_SECRET,
|
||||
"scope": "*",
|
||||
}
|
||||
response = requests.post(url, data=data)
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
|
||||
|
||||
def refresh_token(refresh: str):
|
||||
"""Refresh the OAuth token."""
|
||||
url = f"{API_URL}/oauth/token"
|
||||
data = {
|
||||
"grant_type": "refresh_token",
|
||||
"refresh_token": refresh,
|
||||
"client_id": CLIENT_ID,
|
||||
"client_secret": CLIENT_SECRET,
|
||||
"scope": "*",
|
||||
}
|
||||
response = requests.post(url, data=data)
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
|
||||
|
||||
def get_current_user(access_token: str, ruleset: str = "osu"):
|
||||
"""Retrieve the authenticated user's data."""
|
||||
url = f"{API_URL}/api/v2/me/{ruleset}"
|
||||
headers = {"Authorization": f"Bearer {access_token}"}
|
||||
response = requests.get(url, headers=headers)
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import getpass
|
||||
|
||||
username = input("osu! username: ")
|
||||
password = getpass.getpass()
|
||||
|
||||
token = authenticate(username, password)
|
||||
print("Access Token:", token["access_token"])
|
||||
user = get_current_user(token["access_token"])
|
||||
|
||||
print(user)
|
||||
Reference in New Issue
Block a user