Skip to content

Commit b9dd86b

Browse files
committed
add collections to v5
1 parent 30c0b57 commit b9dd86b

2 files changed

Lines changed: 96 additions & 0 deletions

File tree

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# -*- encoding: utf-8 -*-
2+
# https://dev.twitch.tv/docs/v5/reference/collections/
3+
4+
from twitch import keys
5+
from twitch.queries import V5Query as Qry
6+
from twitch.queries import query
7+
from twitch.api.parameters import Boolean
8+
from twitch import methods
9+
10+
11+
@query
12+
def get_collection_metadata(collection_id):
13+
q = Qry('collections/{collection_id}')
14+
q.add_urlkw(keys.COLLECTION_ID, collection_id)
15+
return q
16+
17+
18+
@query
19+
def get_collection(collection_id, include_all=Boolean.FALSE):
20+
q = Qry('collections/{collection_id}/items')
21+
q.add_urlkw(keys.COLLECTION_ID, collection_id)
22+
q.add_param(keys.INCLUDE_ALL_ITEMS, Boolean.validate(include_all), Boolean.FALSE)
23+
return q
24+
25+
26+
@query
27+
def get_collections(channel_id, limit=10, cursor=0, containing_item=None):
28+
q = Qry('channels/{channel_id}/collections')
29+
q.add_urlkw(keys.CHANNEL_ID, channel_id)
30+
q.add_param(keys.LIMIT, limit, 10)
31+
q.add_param(keys.CURSOR, cursor, 0)
32+
q.add_param(keys.CONTAINING_ITEM, containing_item, None) # 'video:<video_id>'
33+
return q
34+
35+
36+
@query
37+
def create_collection(channel_id, title):
38+
q = Qry('channels/{channel_id}/collections', method=methods.POST)
39+
q.add_urlkw(keys.CHANNEL_ID, channel_id)
40+
q.add_data(keys.TITLE, title)
41+
return q
42+
43+
44+
@query
45+
def update_collection(collection_id, title):
46+
q = Qry('collections/{collection_id}', method=methods.PUT)
47+
q.add_urlkw(keys.COLLECTION_ID, collection_id)
48+
q.add_data(keys.TITLE, title)
49+
return q
50+
51+
52+
@query
53+
def create_collection_thumbnail(collection_id, item_id):
54+
q = Qry('collections/{collection_id}/thumbnail', method=methods.PUT)
55+
q.add_urlkw(keys.COLLECTION_ID, collection_id)
56+
q.add_data(keys.ITEM_ID, item_id)
57+
return q
58+
59+
60+
@query
61+
def create_collection(collection_id):
62+
q = Qry('collections/{collection_id}', method=methods.DELETE)
63+
q.add_urlkw(keys.COLLECTION_ID, collection_id)
64+
return q
65+
66+
67+
@query
68+
def add_to_collection(collection_id, video_id):
69+
q = Qry('collections/{collection_id}/items', method=methods.POST)
70+
q.add_urlkw(keys.COLLECTION_ID, collection_id)
71+
q.add_data(keys.ID, video_id)
72+
q.add_data(keys.TYPE, 'video') # must be 'video'
73+
return q
74+
75+
76+
@query
77+
def delete_from_collection(collection_id, item_id):
78+
q = Qry('collections/{collection_id}/items/{item_id}', method=methods.DELETE)
79+
q.add_urlkw(keys.COLLECTION_ID, collection_id)
80+
q.add_urlkw(keys.ITEM_ID, item_id)
81+
return q
82+
83+
84+
@query
85+
def move_in_collection(collection_id, item_id, position):
86+
q = Qry('collections/{collection_id}/items/{item_id}', method=methods.PUT)
87+
q.add_urlkw(keys.COLLECTION_ID, collection_id)
88+
q.add_urlkw(keys.ITEM_ID, item_id)
89+
q.add_data(keys.POSITION, position)
90+
return q

resources/lib/twitch/keys.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@
1111
BROADCASTS = 'broadcasts'
1212
CHANNEL = 'channel'
1313
CHANNEL_ID = 'channel_id'
14+
COLLECTION_ID = 'collection_id'
1415
COMMENT_ID = 'comment_id'
1516
COMMENTS = 'comments'
1617
COMMUNITIES = 'communities'
1718
COMMUNITY_ID = 'community_id'
19+
CONTAINING_ITEM = 'containing_item'
1820
CONTENT = 'content'
1921
CURSOR = 'cursor'
2022
CLIENT_ID = 'client_id'
@@ -27,6 +29,8 @@
2729
GAME = 'game'
2830
HLS = 'hls'
2931
ID = 'id'
32+
INCLUDE_ALL_ITEMS = 'include_all_items'
33+
ITEM_ID = 'item_id'
3034
LANGUAGE = 'language'
3135
LIMIT = 'limit'
3236
LIVE = 'live'
@@ -38,6 +42,7 @@
3842
NOTIFICATION = 'notification'
3943
OFFSET = 'offset'
4044
PERIOD = 'period'
45+
POSITION = 'position'
4146
POST_ID = 'post_id'
4247
QUERY = 'query'
4348
SHARE = 'share'
@@ -46,6 +51,7 @@
4651
STREAM_TYPE = 'stream_type'
4752
TARGET = 'target'
4853
TEAM = 'team'
54+
TITLE = 'title'
4955
TOKEN = 'token'
5056
TYPE = 'type'
5157
USER = 'user'

0 commit comments

Comments
 (0)