Files
Twitch-Drops-Miner/claim_bonus.py
2020-10-21 00:27:07 +03:00

44 lines
2.1 KiB
Python

import requests
from exceptions import StreamerDoesNotExistException
from twitch_data import get_auth_token, get_channel_id, USER_AGENT, get_client_id
# For documentation on Twitch GraphQL API see:
# https://www.apollographql.com/docs/
# https://github.com/mauricew/twitch-graphql-api
# Full list of available methods: https://azr.ivr.fi/schema/query.doc.html (a bit outdated)
def claim_channel_points_bonus(streamer_login, claim_id):
print(f"Claiming the bonus for {streamer_login}!")
json_data = {"operationName": "ClaimCommunityPoints",
"variables": {"input": {"channelID": get_channel_id(streamer_login), "claimID": claim_id}},
"extensions": {"persistedQuery": {"version": 1, "sha256Hash": "46aaeebe02c99afdf4fc97c7c0cba964124bf6b0af229395f1f6d1feed05b3d0"}}}
post_gql_request(json_data)
# Load the amount of current points for a channel, check if a bonus is available
def load_channel_points_context(streamer_login):
json_data = {"operationName": "ChannelPointsContext",
"variables": {"channelLogin": streamer_login},
"extensions": {"persistedQuery": {"version": 1, "sha256Hash": "9988086babc615a918a1e9a722ff41d98847acac822645209ac7379eecb27152"}}}
response = post_gql_request(json_data)
if response["data"]["community"] is None:
raise StreamerDoesNotExistException
community_points = response["data"]["community"]["channel"]["self"]["communityPoints"]
initial_balance = community_points["balance"]
print(f"{initial_balance} channel points for {streamer_login}!")
available_claim = community_points["availableClaim"]
if available_claim is not None:
claim_id = available_claim["id"]
claim_channel_points_bonus(streamer_login, claim_id)
def post_gql_request(json_data):
r = requests.post("https://gql.twitch.tv/gql",
json=json_data,
headers={"Authorization": "OAuth " + get_auth_token(),
"Client-Id": get_client_id(),
"User-Agent": USER_AGENT})
return r.json()