Skip to content

Commit 4a971be

Browse files
committed
add hidden and gql queries to helix
1 parent 9ab8deb commit 4a971be

2 files changed

Lines changed: 87 additions & 0 deletions

File tree

resources/lib/twitch/api/helix/games.py

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
from ... import keys
1414
from ...api.parameters import Cursor, IntRange, ItemCount
1515
from ...queries import HelixQuery as Qry
16+
from ...queries import GQLQuery as GQLQry
17+
from ...queries import HiddenApiQuery as HQry
1618
from ...queries import query
1719

1820

@@ -35,3 +37,78 @@ def get_top(after='MA==', before='MA==', first=20, use_app_token=False):
3537
q.add_param(keys.FIRST, IntRange(1, 100).validate(first), 20)
3638

3739
return q
40+
41+
42+
# required scope: none
43+
# undocumented / unsupported
44+
@query
45+
def _check_follows(username, name, headers={}):
46+
q = HQry('users/{username}/follows/games/isFollowing', headers=headers, use_token=False)
47+
q.add_urlkw(keys.USERNAME, username)
48+
q.add_param(keys.NAME, name)
49+
return q
50+
51+
52+
# required scope: none
53+
# undocumented / unsupported
54+
@query
55+
def _get_followed(limit=100, headers={}):
56+
data = [{
57+
"operationName": "FollowingGames_CurrentUser",
58+
"variables": {
59+
"limit": limit,
60+
"type": "LIVE"
61+
},
62+
"extensions": {
63+
"persistedQuery": {
64+
"version": 1,
65+
"sha256Hash": "8446d4d234005813dc1f024f487ce95434c3e4202f451dd42777935b5ed035ce"
66+
}
67+
}
68+
}]
69+
q = GQLQry('', headers=headers, data=data, use_token=False)
70+
return q
71+
72+
73+
# required scope: user_follows_edit
74+
# undocumented / unsupported
75+
@query
76+
def _follow(game_id, headers={}):
77+
data = [{
78+
"operationName": "FollowGameButton_FollowGame",
79+
"variables": {
80+
"input": {
81+
"gameID": str(game_id)
82+
}
83+
},
84+
"extensions": {
85+
"persistedQuery": {
86+
"version": 1,
87+
"sha256Hash": "b846b65ba4bc9a3561dbe2d069d95deed9b9e031bcfda2482d1bedd84a1c2eb3"
88+
}
89+
}
90+
}]
91+
q = GQLQry('', headers=headers, data=data, use_token=False)
92+
return q
93+
94+
95+
# required scope: user_follows_edit
96+
# undocumented / unsupported
97+
@query
98+
def _unfollow(game_id, headers={}):
99+
data = [{
100+
"operationName": "FollowGameButton_UnfollowGame",
101+
"variables": {
102+
"input": {
103+
"gameID": str(game_id)
104+
}
105+
},
106+
"extensions": {
107+
"persistedQuery": {
108+
"version": 1,
109+
"sha256Hash": "811e02e396ebba0664f21ff002f2eff3c6f57e8af9aedb4f4dfa77cefd0db43d"
110+
}
111+
}
112+
}]
113+
q = GQLQry('', headers=headers, data=data, use_token=False)
114+
return q

resources/lib/twitch/api/helix/videos.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from ... import keys
1414
from ...api.parameters import Cursor, Language, BroadcastTypeHelix, VideoSortHelix, PeriodHelix, IntRange, ItemCount
1515
from ...queries import HelixQuery as Qry
16+
from ...queries import HiddenApiQuery as HQry
1617
from ...queries import query
1718

1819

@@ -38,3 +39,12 @@ def get_videos(video_id=list(), game_id='', user_id='',
3839
q.add_param(keys.ID, ItemCount().validate(video_id), list())
3940

4041
return q
42+
43+
44+
# required scope: none
45+
# undocumented / unsupported
46+
@query
47+
def _by_id(video_id, headers={}):
48+
q = HQry('videos/{video_id}', headers=headers, use_token=False)
49+
q.add_urlkw(keys.VIDEO_ID, video_id)
50+
return q

0 commit comments

Comments
 (0)