Skip to content

Commit 30c0b57

Browse files
committed
add channel_feed to v5
1 parent a3c9c4e commit 30c0b57

2 files changed

Lines changed: 116 additions & 0 deletions

File tree

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
# -*- encoding: utf-8 -*-
2+
# https://dev.twitch.tv/docs/v5/reference/channel-feed/
3+
4+
from twitch import keys
5+
from twitch.api.parameters import Boolean
6+
from twitch import methods
7+
from twitch.queries import V5Query as Qry
8+
from twitch.queries import query
9+
10+
11+
@query
12+
def get_posts(channel_id, limit=10, cursor=0, comments=5):
13+
q = Qry('feed/{channel_id}/posts')
14+
q.add_urlkw(keys.CHANNEL_ID, channel_id)
15+
q.add_param(keys.LIMIT, limit, 10)
16+
q.add_param(keys.CURSOR, cursor, 0)
17+
q.add_param(keys.COMMENTS, comments, 5)
18+
return q
19+
20+
21+
@query
22+
def get_post(channel_id, post_id, comments=5):
23+
q = Qry('feed/{channel_id}/posts/{post_id}')
24+
q.add_urlkw(keys.CHANNEL_ID, channel_id)
25+
q.add_urlkw(keys.POST_ID, post_id)
26+
q.add_param(keys.COMMENTS, comments, 5)
27+
return q
28+
29+
30+
@query
31+
def create_post(channel_id, content, share=Boolean.FALSE):
32+
q = Qry('feed/{channel_id}/posts/', method=methods.POST)
33+
q.add_urlkw(keys.CHANNEL_ID, channel_id)
34+
q.add_param(keys.SHARE, Boolean.validate(share))
35+
q.add_data(keys.CONTENT, content)
36+
return q
37+
38+
39+
@query
40+
def delete_post(channel_id, post_id):
41+
q = Qry('feed/{channel_id}/posts/{post_id}', method=methods.DELETE)
42+
q.add_urlkw(keys.CHANNEL_ID, channel_id)
43+
q.add_urlkw(keys.POST_ID, post_id)
44+
return q
45+
46+
47+
@query
48+
def create_post_reaction(channel_id, post_id, emote_id):
49+
q = Qry('feed/{channel_id}/posts/{post_id}/reactions', method=methods.POST)
50+
q.add_urlkw(keys.CHANNEL_ID, channel_id)
51+
q.add_urlkw(keys.POST_ID, post_id)
52+
q.add_param(keys.EMOTE_ID, emote_id)
53+
return q
54+
55+
56+
@query
57+
def delete_post_reaction(channel_id, post_id, emote_id):
58+
q = Qry('feed/{channel_id}/posts/{post_id}/reactions', method=methods.DELETE)
59+
q.add_urlkw(keys.CHANNEL_ID, channel_id)
60+
q.add_urlkw(keys.POST_ID, post_id)
61+
q.add_param(keys.EMOTE_ID, emote_id)
62+
return q
63+
64+
65+
@query
66+
def get_comments(channel_id, post_id, limit=10, cursor=0):
67+
q = Qry('feed/{channel_id}/posts/{post_id}/comments')
68+
q.add_urlkw(keys.CHANNEL_ID, channel_id)
69+
q.add_urlkw(keys.POST_ID, post_id)
70+
q.add_param(keys.LIMIT, limit, 10)
71+
q.add_param(keys.CURSOR, cursor, 0)
72+
return q
73+
74+
75+
@query
76+
def comment(channel_id, post_id, content):
77+
q = Qry('feed/{channel_id}/posts/{post_id}/comments', method=methods.POST)
78+
q.add_urlkw(keys.CHANNEL_ID, channel_id)
79+
q.add_urlkw(keys.POST_ID, post_id)
80+
q.add_data(keys.CONTENT, content)
81+
return q
82+
83+
84+
@query
85+
def delete_comment(channel_id, post_id, comment_id):
86+
q = Qry('feed/{channel_id}/posts/{post_id}/comments/{comment_id}', method=methods.DELETE)
87+
q.add_urlkw(keys.CHANNEL_ID, channel_id)
88+
q.add_urlkw(keys.POST_ID, post_id)
89+
q.add_urlkw(keys.COMMENT_ID, comment_id)
90+
return q
91+
92+
93+
@query
94+
def create_comment_reaction(channel_id, post_id, comment_id, emote_id):
95+
q = Qry('feed/{channel_id}/posts/{post_id}/comments/{comment_id}/reactions', method=methods.POST)
96+
q.add_urlkw(keys.CHANNEL_ID, channel_id)
97+
q.add_urlkw(keys.POST_ID, post_id)
98+
q.add_urlkw(keys.COMMENT_ID, comment_id)
99+
q.add_param(keys.EMOTE_ID, emote_id)
100+
return q
101+
102+
103+
@query
104+
def delete_comment_reaction(channel_id, post_id, comment_id, emote_id):
105+
q = Qry('feed/{channel_id}/posts/{post_id}/comments/{comment_id}/reactions', method=methods.DELETE)
106+
q.add_urlkw(keys.CHANNEL_ID, channel_id)
107+
q.add_urlkw(keys.POST_ID, post_id)
108+
q.add_urlkw(keys.COMMENT_ID, comment_id)
109+
q.add_param(keys.EMOTE_ID, emote_id)
110+
return q

resources/lib/twitch/keys.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,15 @@
1111
BROADCASTS = 'broadcasts'
1212
CHANNEL = 'channel'
1313
CHANNEL_ID = 'channel_id'
14+
COMMENT_ID = 'comment_id'
15+
COMMENTS = 'comments'
1416
COMMUNITIES = 'communities'
1517
COMMUNITY_ID = 'community_id'
18+
CONTENT = 'content'
1619
CURSOR = 'cursor'
1720
CLIENT_ID = 'client_id'
1821
DIRECTION = 'direction'
22+
EMOTE_ID = 'emote_id'
1923
EMOTESETS = 'emotesets'
2024
ERROR = 'error'
2125
FEATURED = 'featured'
@@ -34,7 +38,9 @@
3438
NOTIFICATION = 'notification'
3539
OFFSET = 'offset'
3640
PERIOD = 'period'
41+
POST_ID = 'post_id'
3742
QUERY = 'query'
43+
SHARE = 'share'
3844
SIG = 'sig'
3945
SORT_BY = 'sortby'
4046
STREAM_TYPE = 'stream_type'

0 commit comments

Comments
 (0)