shikimori-api 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +20 -0
- data/lib/shikimori/api/client.rb +34 -0
- data/lib/shikimori/api/errors.rb +21 -0
- data/lib/shikimori/api/rest.rb +115 -0
- data/lib/shikimori/api/uri.rb +18 -0
- data/lib/shikimori/api/v1/achievements.rb +32 -0
- data/lib/shikimori/api/v1/animes.rb +252 -0
- data/lib/shikimori/api/v1/appear.rb +40 -0
- data/lib/shikimori/api/v1/bans.rb +31 -0
- data/lib/shikimori/api/v1/calendars.rb +32 -0
- data/lib/shikimori/api/v1/characters.rb +52 -0
- data/lib/shikimori/api/v1/clubs.rb +329 -0
- data/lib/shikimori/api/v1/comments.rb +161 -0
- data/lib/shikimori/api/v1/constants.rb +107 -0
- data/lib/shikimori/api/v1/dialogs.rb +78 -0
- data/lib/shikimori/api/v1/favorites.rb +148 -0
- data/lib/shikimori/api/v1/forums.rb +31 -0
- data/lib/shikimori/api/v1/friends.rb +57 -0
- data/lib/shikimori/api/v1/genres.rb +31 -0
- data/lib/shikimori/api/v1/ignores.rb +62 -0
- data/lib/shikimori/api/v1/mangas.rb +211 -0
- data/lib/shikimori/api/v1/messages.rb +168 -0
- data/lib/shikimori/api/v1/people.rb +53 -0
- data/lib/shikimori/api/v1/publishers.rb +31 -0
- data/lib/shikimori/api/v1/ranobe.rb +206 -0
- data/lib/shikimori/api/v1/reviews.rb +89 -0
- data/lib/shikimori/api/v1/stats.rb +31 -0
- data/lib/shikimori/api/v1/studios.rb +31 -0
- data/lib/shikimori/api/v1/styles.rb +112 -0
- data/lib/shikimori/api/v1/topic_ignores.rb +63 -0
- data/lib/shikimori/api/v1/topics.rb +237 -0
- data/lib/shikimori/api/v1/user_images.rb +36 -0
- data/lib/shikimori/api/v1/user_rates.rb +194 -0
- data/lib/shikimori/api/v1/users.rb +310 -0
- data/lib/shikimori/api/v1/videos.rb +85 -0
- data/lib/shikimori/api/v1.rb +77 -0
- data/lib/shikimori/api/v2/abuse_requests.rb +103 -0
- data/lib/shikimori/api/v2/episode_notifications.rb +54 -0
- data/lib/shikimori/api/v2/topic_ignore.rb +54 -0
- data/lib/shikimori/api/v2/user_ignore.rb +54 -0
- data/lib/shikimori/api/v2/user_rates.rb +171 -0
- data/lib/shikimori/api/v2.rb +27 -0
- data/lib/shikimori/api/version.rb +8 -0
- data/lib/shikimori/api.rb +14 -0
- data/lib/shikimori-api.rb +3 -0
- data/shikimori-api.gemspec +40 -0
- data/sig/shikimori/api/client.rbs +12 -0
- data/sig/shikimori/api/rest.rbs +30 -0
- data/sig/shikimori/api/uri.rbs +10 -0
- data/sig/shikimori/api/v1/achievements.rbs +15 -0
- data/sig/shikimori/api/v1/animes.rbs +23 -0
- data/sig/shikimori/api/v1/appear.rbs +15 -0
- data/sig/shikimori/api/v1/bans.rbs +15 -0
- data/sig/shikimori/api/v1/calendars.rbs +15 -0
- data/sig/shikimori/api/v1/characters.rbs +16 -0
- data/sig/shikimori/api/v1/clubs.rbs +29 -0
- data/sig/shikimori/api/v1/comments.rbs +19 -0
- data/sig/shikimori/api/v1/constants.rbs +19 -0
- data/sig/shikimori/api/v1/dialogs.rbs +17 -0
- data/sig/shikimori/api/v1/favorites.rbs +23 -0
- data/sig/shikimori/api/v1/forums.rbs +15 -0
- data/sig/shikimori/api/v1/friends.rbs +16 -0
- data/sig/shikimori/api/v1/genres.rbs +15 -0
- data/sig/shikimori/api/v1/ignores.rbs +16 -0
- data/sig/shikimori/api/v1/mangas.rbs +23 -0
- data/sig/shikimori/api/v1/messages.rbs +20 -0
- data/sig/shikimori/api/v1/people.rbs +16 -0
- data/sig/shikimori/api/v1/publishers.rbs +15 -0
- data/sig/shikimori/api/v1/ranobe.rbs +23 -0
- data/sig/shikimori/api/v1/reviews.rbs +19 -0
- data/sig/shikimori/api/v1/stats.rbs +15 -0
- data/sig/shikimori/api/v1/studios.rbs +15 -0
- data/sig/shikimori/api/v1/styles.rbs +18 -0
- data/sig/shikimori/api/v1/topic_ignores.rbs +16 -0
- data/sig/shikimori/api/v1/topics.rbs +40 -0
- data/sig/shikimori/api/v1/user_images.rbs +15 -0
- data/sig/shikimori/api/v1/user_rates.rbs +44 -0
- data/sig/shikimori/api/v1/users.rbs +28 -0
- data/sig/shikimori/api/v1/videos.rbs +23 -0
- data/sig/shikimori/api/v1.rbs +41 -0
- data/sig/shikimori/api/v2/abuse_requests.rbs +18 -0
- data/sig/shikimori/api/v2/episode_notifications.rbs +25 -0
- data/sig/shikimori/api/v2/topic_ignore.rbs +16 -0
- data/sig/shikimori/api/v2/user_ignore.rbs +16 -0
- data/sig/shikimori/api/v2/user_rates.rbs +43 -0
- data/sig/shikimori/api/v2.rbs +16 -0
- data/sig/shikimori/api/version.rbs +5 -0
- data/sig/shikimori/api.rbs +18 -0
- metadata +137 -0
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Shikimori
|
|
4
|
+
module API
|
|
5
|
+
class V1
|
|
6
|
+
# Methods for the Users API
|
|
7
|
+
#
|
|
8
|
+
# @see https://shikimori.one/api/doc/1.0/users Shikimori's API documentation
|
|
9
|
+
module Users
|
|
10
|
+
# Get list of users
|
|
11
|
+
#
|
|
12
|
+
# @option headers [Hash] Request headers
|
|
13
|
+
# @option query [Hash] Query string parameters for request
|
|
14
|
+
# @option query [Integer] :page Number of page. Must be between 1 and 100000
|
|
15
|
+
# @option query [Integer] :limit Number of titles per page. Must be a lower or equal that 50
|
|
16
|
+
# @option query [String] :search Find user by name
|
|
17
|
+
#
|
|
18
|
+
# @return [Array<Hash>] Array of hashes representing users
|
|
19
|
+
#
|
|
20
|
+
# @see https://shikimori.one/api/doc/1.0/users/index Shikimori's API documentation
|
|
21
|
+
# @example Search users with by name "ivan"
|
|
22
|
+
# client = Shikimori::API::Client.new(
|
|
23
|
+
# app_name: 'Api Test',
|
|
24
|
+
# aceess_token: '****',
|
|
25
|
+
# refresh_token: '****'
|
|
26
|
+
# )
|
|
27
|
+
#
|
|
28
|
+
# client.v1.users(search: 'ivan')
|
|
29
|
+
def users(headers: nil, **query)
|
|
30
|
+
rest.get base_url.join('users').url, headers: headers, query: query
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Get an user
|
|
34
|
+
#
|
|
35
|
+
# @option id [#to_s] User id
|
|
36
|
+
# @option headers [Hash] Request headers
|
|
37
|
+
# @option query [Hash] Query string parameters for request
|
|
38
|
+
#
|
|
39
|
+
# @return [Hash] Hash representing user
|
|
40
|
+
#
|
|
41
|
+
# @see https://shikimori.one/api/doc/1.0/users/show Shikimori's API documentation
|
|
42
|
+
# @example Get a user with id equal to 1
|
|
43
|
+
# client = Shikimori::API::Client.new(
|
|
44
|
+
# app_name: 'Api Test',
|
|
45
|
+
# aceess_token: '****',
|
|
46
|
+
# refresh_token: '****'
|
|
47
|
+
# )
|
|
48
|
+
#
|
|
49
|
+
# client.v1.user(1)
|
|
50
|
+
def user(id, headers: nil, **query)
|
|
51
|
+
rest.get base_url.join('users', id.to_s).url, headers: headers, query: query
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Get an user's brief info
|
|
55
|
+
#
|
|
56
|
+
# @option id [#to_s] User id
|
|
57
|
+
# @option headers [Hash] Request headers
|
|
58
|
+
# @option query [Hash] Query string parameters for request
|
|
59
|
+
#
|
|
60
|
+
# @return [Hash] Hash representing user
|
|
61
|
+
#
|
|
62
|
+
# @see https://shikimori.one/api/doc/1.0/users/info Shikimori's API documentation
|
|
63
|
+
# @example Get a user info with id equal to 1
|
|
64
|
+
# client = Shikimori::API::Client.new(
|
|
65
|
+
# app_name: 'Api Test',
|
|
66
|
+
# aceess_token: '****',
|
|
67
|
+
# refresh_token: '****'
|
|
68
|
+
# )
|
|
69
|
+
# client.v1.user_info(1)
|
|
70
|
+
def user_info(id, headers: nil, **query)
|
|
71
|
+
rest.get base_url.join('users', id.to_s, 'info').url, headers: headers, query: query
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Get an current user's brief info
|
|
75
|
+
#
|
|
76
|
+
# @option headers [Hash] Request headers
|
|
77
|
+
# @option query [Hash] Query string parameters for request
|
|
78
|
+
#
|
|
79
|
+
# @return [Hash] Hash representing user
|
|
80
|
+
#
|
|
81
|
+
# @see https://shikimori.one/api/doc/1.0/users/whoami Shikimori's API documentation
|
|
82
|
+
# @example Get a current user info
|
|
83
|
+
# client = Shikimori::API::Client.new(
|
|
84
|
+
# app_name: 'Api Test',
|
|
85
|
+
# aceess_token: '****',
|
|
86
|
+
# refresh_token: '****'
|
|
87
|
+
# )
|
|
88
|
+
# client.v1.whoami
|
|
89
|
+
def whoami(headers: nil, **query)
|
|
90
|
+
rest.get base_url.join('users', 'whoami').url, headers: headers, query: query
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Sign out the user
|
|
94
|
+
#
|
|
95
|
+
# @option headers [Hash] Request headers
|
|
96
|
+
# @option query [Hash] Query string parameters for request
|
|
97
|
+
#
|
|
98
|
+
# @return [Hash] Hash representing user
|
|
99
|
+
#
|
|
100
|
+
# @see https://shikimori.one/api/doc/1.0/users/sign_out Shikimori's API documentation
|
|
101
|
+
# @example Sign out current user
|
|
102
|
+
# client = Shikimori::API::Client.new(
|
|
103
|
+
# app_name: 'Api Test',
|
|
104
|
+
# aceess_token: '****',
|
|
105
|
+
# refresh_token: '****'
|
|
106
|
+
# )
|
|
107
|
+
# client.v1.sign_out
|
|
108
|
+
def sign_out(headers: nil, **query)
|
|
109
|
+
rest.get base_url.join('users', 'sign_out').url, headers: headers, query: query
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Get an user's friends
|
|
113
|
+
#
|
|
114
|
+
# @option id [#to_s] User id
|
|
115
|
+
# @option headers [Hash] Request headers
|
|
116
|
+
# @option query [Hash] Query string parameters for request
|
|
117
|
+
#
|
|
118
|
+
# @return [Array<Hash>] Array of hashes representing user's friends
|
|
119
|
+
#
|
|
120
|
+
# @see https://shikimori.one/api/doc/1.0/users/friends Shikimori's API documentation
|
|
121
|
+
# @example
|
|
122
|
+
# client = Shikimori::API::Client.new(
|
|
123
|
+
# app_name: 'Api Test',
|
|
124
|
+
# aceess_token: '****',
|
|
125
|
+
# refresh_token: '****'
|
|
126
|
+
# )
|
|
127
|
+
# client.v1.user_friends(1)
|
|
128
|
+
def user_friends(id, headers: nil, **query)
|
|
129
|
+
rest.get base_url.join('users', id.to_s, 'friends').url, headers: headers, query: query
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
# Get an user's clubs
|
|
133
|
+
#
|
|
134
|
+
# @option id [#to_s] User id
|
|
135
|
+
# @option headers [Hash] Request headers
|
|
136
|
+
# @option query [Hash] Query string parameters for request
|
|
137
|
+
#
|
|
138
|
+
# @return [Array<Hash>] Array of hashes representing user's clubs
|
|
139
|
+
#
|
|
140
|
+
# @see https://shikimori.one/api/doc/1.0/users/clubs Shikimori's API documentation
|
|
141
|
+
# @example
|
|
142
|
+
# client = Shikimori::API::Client.new(
|
|
143
|
+
# app_name: 'Api Test',
|
|
144
|
+
# aceess_token: '****',
|
|
145
|
+
# refresh_token: '****'
|
|
146
|
+
# )
|
|
147
|
+
# client.v1.user_clubs(1)
|
|
148
|
+
def user_clubs(id, headers: nil, **query)
|
|
149
|
+
rest.get base_url.join('users', id.to_s, 'clubs').url, headers: headers, query: query
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# Get an user's anime rates
|
|
153
|
+
#
|
|
154
|
+
# @option id [#to_s] User id
|
|
155
|
+
# @option headers [Hash] Request headers
|
|
156
|
+
# @option query [Hash] Query string parameters for request
|
|
157
|
+
# @option query [Integer] :page Number of page. Must be between 1 and 100000
|
|
158
|
+
# @option query [Integer] :limit Number of titles per page. Must be a lower or equal that 5000
|
|
159
|
+
# @option query [TrueClass, FalseClass] :censored Set to true to discard hentai, yaoi and yuri
|
|
160
|
+
# @option query ['planned', 'watching', 'rewatching', 'completed', 'on_hold', 'dropped'] :status Watching status
|
|
161
|
+
#
|
|
162
|
+
# @return [Array<Hash>] Array of hashes representing user's anime rates
|
|
163
|
+
#
|
|
164
|
+
# @see https://shikimori.one/api/doc/1.0/users/anime_rates Shikimori's API documentation
|
|
165
|
+
# @example
|
|
166
|
+
# client = Shikimori::API::Client.new(
|
|
167
|
+
# app_name: 'Api Test',
|
|
168
|
+
# aceess_token: '****',
|
|
169
|
+
# refresh_token: '****'
|
|
170
|
+
# )
|
|
171
|
+
# client.v1.user_anime_rates(1)
|
|
172
|
+
def user_anime_rates(id, headers: nil, **query)
|
|
173
|
+
rest.get base_url.join('users', id.to_s, 'anime_rates').url, headers: headers, query: query
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# Get an user's manga rates
|
|
177
|
+
#
|
|
178
|
+
# @option id [#to_s] User id
|
|
179
|
+
# @option headers [Hash] Request headers
|
|
180
|
+
# @option query [Hash] Query string parameters for request
|
|
181
|
+
# @option query [Integer] :page Number of page. Must be between 1 and 100000
|
|
182
|
+
# @option query [Integer] :limit Number of titles per page. Must be a lower or equal that 5000
|
|
183
|
+
# @option query [TrueClass, FalseClass] :censored Set to true to discard hentai, yaoi and yuri
|
|
184
|
+
#
|
|
185
|
+
# @return [Array<Hash>] Array of hashes representing user's manga rates
|
|
186
|
+
#
|
|
187
|
+
# @see https://shikimori.one/api/doc/1.0/users/manga_rates Shikimori's API documentation
|
|
188
|
+
# @example
|
|
189
|
+
# client = Shikimori::API::Client.new(
|
|
190
|
+
# app_name: 'Api Test',
|
|
191
|
+
# aceess_token: '****',
|
|
192
|
+
# refresh_token: '****'
|
|
193
|
+
# )
|
|
194
|
+
# client.v1.user_manga_rates(1)
|
|
195
|
+
def user_manga_rates(id, headers: nil, **query)
|
|
196
|
+
rest.get base_url.join('users', id.to_s, 'manga_rates').url, headers: headers, query: query
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
# Get an user's favorites
|
|
200
|
+
#
|
|
201
|
+
# @option id [#to_s] User id
|
|
202
|
+
# @option headers [Hash] Request headers
|
|
203
|
+
# @option query [Hash] Query string parameters for request
|
|
204
|
+
#
|
|
205
|
+
# @return [Hash] Hash representing user's favorites
|
|
206
|
+
#
|
|
207
|
+
# @see https://shikimori.one/api/doc/1.0/users/favourites Shikimori's API documentation
|
|
208
|
+
# @example
|
|
209
|
+
# client = Shikimori::API::Client.new(
|
|
210
|
+
# app_name: 'Api Test',
|
|
211
|
+
# aceess_token: '****',
|
|
212
|
+
# refresh_token: '****'
|
|
213
|
+
# )
|
|
214
|
+
# client.v1.user_favorites(1)
|
|
215
|
+
def user_favorites(id, headers: nil, **query)
|
|
216
|
+
rest.get base_url.join('users', id.to_s, 'favourites').url, headers: headers, query: query
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
# Get an user's messages
|
|
220
|
+
# Requires `messages` oauth scope
|
|
221
|
+
#
|
|
222
|
+
# @option id [#to_s] User id
|
|
223
|
+
# @option headers [Hash] Request headers
|
|
224
|
+
# @option query [Hash] Query string parameters for request
|
|
225
|
+
# @option query [Integer] :page Number of page. Must be between 1 and 100000
|
|
226
|
+
# @option query [Integer] :limit Number of titles per page. Must be a lower or equal that 100
|
|
227
|
+
# @option query ['inbox', 'private', 'sent', 'news', 'notifications'] :type Type of messages
|
|
228
|
+
#
|
|
229
|
+
# @return [Array<Hash>] Array of hashes representing user's messages
|
|
230
|
+
#
|
|
231
|
+
# @see https://shikimori.one/api/doc/1.0/users/messages Shikimori's API documentation
|
|
232
|
+
# @example Get user's messages from inbox
|
|
233
|
+
# client = Shikimori::API::Client.new(
|
|
234
|
+
# app_name: 'Api Test',
|
|
235
|
+
# aceess_token: '****',
|
|
236
|
+
# refresh_token: '****'
|
|
237
|
+
# )
|
|
238
|
+
# client.v1.user_messages(1, type: 'inbox', limit: 10)
|
|
239
|
+
def user_messages(id, headers: nil, **query)
|
|
240
|
+
rest.get base_url.join('users', id.to_s, 'messages').url, headers: headers, query: query
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
# Get an user's unread messages
|
|
244
|
+
# Requires `messages` oauth scope
|
|
245
|
+
#
|
|
246
|
+
# @option id [#to_s] User id
|
|
247
|
+
# @option headers [Hash] Request headers
|
|
248
|
+
# @option query [Hash] Query string parameters for request
|
|
249
|
+
#
|
|
250
|
+
# @return [Hash] Hash representing user's messages
|
|
251
|
+
#
|
|
252
|
+
# @see https://shikimori.one/api/doc/1.0/users/unread_messages Shikimori's API documentation
|
|
253
|
+
# @example Get user's unread messages
|
|
254
|
+
# client = Shikimori::API::Client.new(
|
|
255
|
+
# app_name: 'Api Test',
|
|
256
|
+
# aceess_token: '****',
|
|
257
|
+
# refresh_token: '****'
|
|
258
|
+
# )
|
|
259
|
+
# client.v1.user_unread_messages(1, type: 'inbox', limit: 10)
|
|
260
|
+
def user_unread_messages(id, headers: nil, **query)
|
|
261
|
+
rest.get base_url.join('users', id.to_s, 'unread_messages').url, headers: headers, query: query
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
# Get an user's history
|
|
265
|
+
#
|
|
266
|
+
# @option id [#to_s] User id
|
|
267
|
+
# @option headers [Hash] Request headers
|
|
268
|
+
# @option query [Hash] Query string parameters for request
|
|
269
|
+
# @option query [Integer] :page Number of page. Must be between 1 and 100000
|
|
270
|
+
# @option query [Integer] :limit Number of titles per page. Must be a lower or equal that 100
|
|
271
|
+
# @option query [Integer] :target_id Target ID
|
|
272
|
+
# @option query ['Anime', 'Manga'] :target_type Target type
|
|
273
|
+
#
|
|
274
|
+
# @return [Array<Hash>] Array of hashes representing user's history
|
|
275
|
+
#
|
|
276
|
+
# @see https://shikimori.one/api/doc/1.0/users/history Shikimori's API documentation
|
|
277
|
+
# @example Get user's manga history
|
|
278
|
+
# client = Shikimori::API::Client.new(
|
|
279
|
+
# app_name: 'Api Test',
|
|
280
|
+
# aceess_token: '****',
|
|
281
|
+
# refresh_token: '****'
|
|
282
|
+
# )
|
|
283
|
+
# client.v1.user_history(1, type: 'manga', limit: 10)
|
|
284
|
+
def user_history(id, headers: nil, **query)
|
|
285
|
+
rest.get base_url.join('users', id.to_s, 'history').url, headers: headers, query: query
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
# Get an user's bans
|
|
289
|
+
#
|
|
290
|
+
# @option id [#to_s] User id
|
|
291
|
+
# @option headers [Hash] Request headers
|
|
292
|
+
# @option query [Hash] Query string parameters for request
|
|
293
|
+
#
|
|
294
|
+
# @return [Array<Hash>] Array of hashes representing user's bans
|
|
295
|
+
#
|
|
296
|
+
# @see https://shikimori.one/api/doc/1.0/users/bans Shikimori's API documentation
|
|
297
|
+
# @example Get user's manga bans
|
|
298
|
+
# client = Shikimori::API::Client.new(
|
|
299
|
+
# app_name: 'Api Test',
|
|
300
|
+
# aceess_token: '****',
|
|
301
|
+
# refresh_token: '****'
|
|
302
|
+
# )
|
|
303
|
+
# client.v1.user_bans
|
|
304
|
+
def user_bans(id, headers: nil, **query)
|
|
305
|
+
rest.get base_url.join('users', id.to_s, 'bans').url, headers: headers, query: query
|
|
306
|
+
end
|
|
307
|
+
end
|
|
308
|
+
end
|
|
309
|
+
end
|
|
310
|
+
end
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Shikimori
|
|
4
|
+
module API
|
|
5
|
+
class V1
|
|
6
|
+
# Methods for the Videos API
|
|
7
|
+
#
|
|
8
|
+
# @see https://shikimori.one/api/doc/1.0/videos Shikimori's API documentation
|
|
9
|
+
module Videos
|
|
10
|
+
# Get anime videos
|
|
11
|
+
#
|
|
12
|
+
# @param anime_id [#to_s] Anime id
|
|
13
|
+
# @param headers [Hash] Request headers
|
|
14
|
+
# @param query [Hash] Query string parameters for request
|
|
15
|
+
#
|
|
16
|
+
# @return [Array<Hash>] Array of hashes representing videos
|
|
17
|
+
#
|
|
18
|
+
# @see https://shikimori.one/api/doc/1.0/videos/index Shikimori's API documentation
|
|
19
|
+
# @example Get videos for anime with id equal to 1
|
|
20
|
+
# client = Shikimori::API::Client.new(
|
|
21
|
+
# app_name: 'Api Test',
|
|
22
|
+
# aceess_token: '****',
|
|
23
|
+
# refresh_token: '****'
|
|
24
|
+
# )
|
|
25
|
+
# client.v1.anime_videos(1)
|
|
26
|
+
def anime_videos(anime_id, headers: nil, **query)
|
|
27
|
+
rest.get base_url.join('animes', anime_id.to_s, 'videos').url, headers: headers, query: query
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Create Video
|
|
31
|
+
#
|
|
32
|
+
# @param video [Hash] Video data for creating
|
|
33
|
+
# @option video [String] :name Name of video
|
|
34
|
+
# @option video ['pv', 'character_trailer', 'cm', 'op',
|
|
35
|
+
# 'ed', 'op_ed_clip', 'clip', 'other', 'episode_preview'] :kind Type of video
|
|
36
|
+
# @option video [String] :url URL to video.
|
|
37
|
+
# Supported hostings: youtube, vk, ok, coub, rutube, vimeo, sibnet,
|
|
38
|
+
# yandex, streamable, smotret_anime, myvi, youmite, viuly, stormo, mediafile
|
|
39
|
+
# @param headers [Hash] Request headers
|
|
40
|
+
# @param query [Hash] Query string parameters for request
|
|
41
|
+
#
|
|
42
|
+
# @return [Hash] Hash representing created video
|
|
43
|
+
#
|
|
44
|
+
# @see https://shikimori.one/api/doc/1.0/videos/create Shikimori's API documentation
|
|
45
|
+
# @example
|
|
46
|
+
# client = Shikimori::API::Client.new(
|
|
47
|
+
# app_name: 'Api Test',
|
|
48
|
+
# aceess_token: '****',
|
|
49
|
+
# refresh_token: '****'
|
|
50
|
+
# )
|
|
51
|
+
# video = { name: 'Funny cat!', kind: 'ed', url: 'https://youtu.be/dQw4w9WgXcQ' }
|
|
52
|
+
# client.v1.create_anime_video(1, video)
|
|
53
|
+
def create_anime_video(anime_id, video, headers: nil, **query)
|
|
54
|
+
rest.post base_url.join('animes', anime_id.to_s, 'videos').url,
|
|
55
|
+
{ video: video },
|
|
56
|
+
headers: headers, query: query
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Delete Video
|
|
60
|
+
#
|
|
61
|
+
# @param anime_id [#to_s] Anime id
|
|
62
|
+
# @param video_id [#to_s] Video id
|
|
63
|
+
# @param headers [Hash] Request headers
|
|
64
|
+
# @param query [Hash] Query string parameters for request
|
|
65
|
+
#
|
|
66
|
+
# @return [Boolean] True if deletion successful, false otherwise.
|
|
67
|
+
#
|
|
68
|
+
# @see https://shikimori.one/api/doc/1.0/videos/destroy Shikimori's API documentation
|
|
69
|
+
# @example
|
|
70
|
+
# client = Shikimori::API::Client.new(
|
|
71
|
+
# app_name: 'Api Test',
|
|
72
|
+
# aceess_token: '****',
|
|
73
|
+
# refresh_token: '****'
|
|
74
|
+
# )
|
|
75
|
+
#
|
|
76
|
+
# client.v1.delete_anime_video(anime_id: 1, video_id: 1)
|
|
77
|
+
def delete_anime_video(anime_id:, video_id:, headers: nil, **query)
|
|
78
|
+
rest.delete base_url.join('animes', anime_id.to_s, 'videos', video_id.to_s).url,
|
|
79
|
+
headers: headers,
|
|
80
|
+
query: query
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'v1/achievements'
|
|
4
|
+
require_relative 'v1/animes'
|
|
5
|
+
require_relative 'v1/appear'
|
|
6
|
+
require_relative 'v1/bans'
|
|
7
|
+
require_relative 'v1/calendars'
|
|
8
|
+
require_relative 'v1/characters'
|
|
9
|
+
require_relative 'v1/clubs'
|
|
10
|
+
require_relative 'v1/comments'
|
|
11
|
+
require_relative 'v1/constants'
|
|
12
|
+
require_relative 'v1/dialogs'
|
|
13
|
+
require_relative 'v1/favorites'
|
|
14
|
+
require_relative 'v1/forums'
|
|
15
|
+
require_relative 'v1/friends'
|
|
16
|
+
require_relative 'v1/genres'
|
|
17
|
+
require_relative 'v1/ignores'
|
|
18
|
+
require_relative 'v1/mangas'
|
|
19
|
+
require_relative 'v1/messages'
|
|
20
|
+
require_relative 'v1/people'
|
|
21
|
+
require_relative 'v1/publishers'
|
|
22
|
+
require_relative 'v1/ranobe'
|
|
23
|
+
require_relative 'v1/reviews'
|
|
24
|
+
require_relative 'v1/stats'
|
|
25
|
+
require_relative 'v1/studios'
|
|
26
|
+
require_relative 'v1/styles'
|
|
27
|
+
require_relative 'v1/topic_ignores'
|
|
28
|
+
require_relative 'v1/topics'
|
|
29
|
+
require_relative 'v1/user_images'
|
|
30
|
+
require_relative 'v1/user_rates'
|
|
31
|
+
require_relative 'v1/users'
|
|
32
|
+
require_relative 'v1/videos'
|
|
33
|
+
|
|
34
|
+
module Shikimori
|
|
35
|
+
module API
|
|
36
|
+
# Methods for first version of shikimori's API
|
|
37
|
+
class V1
|
|
38
|
+
include Achievements
|
|
39
|
+
include Animes
|
|
40
|
+
include Appear
|
|
41
|
+
include Bans
|
|
42
|
+
include Calendars
|
|
43
|
+
include Characters
|
|
44
|
+
include Clubs
|
|
45
|
+
include Comments
|
|
46
|
+
include Constants
|
|
47
|
+
include Dialogs
|
|
48
|
+
include Favorites
|
|
49
|
+
include Forums
|
|
50
|
+
include Friends
|
|
51
|
+
include Genres
|
|
52
|
+
include Ignores
|
|
53
|
+
include Mangas
|
|
54
|
+
include Messages
|
|
55
|
+
include People
|
|
56
|
+
include Publishers
|
|
57
|
+
include Ranobe
|
|
58
|
+
include Reviews
|
|
59
|
+
include Stats
|
|
60
|
+
include Studios
|
|
61
|
+
include Styles
|
|
62
|
+
include TopicIgnores
|
|
63
|
+
include Topics
|
|
64
|
+
include UserImages
|
|
65
|
+
include UserRates
|
|
66
|
+
include Users
|
|
67
|
+
include Videos
|
|
68
|
+
|
|
69
|
+
attr_reader :rest, :base_url
|
|
70
|
+
|
|
71
|
+
def initialize(base_url:, rest:)
|
|
72
|
+
@rest = rest
|
|
73
|
+
@base_url = base_url
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Shikimori
|
|
4
|
+
module API
|
|
5
|
+
class V2
|
|
6
|
+
# Methods for the Abuse requests API
|
|
7
|
+
#
|
|
8
|
+
# @see https://shikimori.one/api/doc/2.0/abuse_requests Shikimori's API documentation
|
|
9
|
+
module AbuseRequests
|
|
10
|
+
# Abuse offtopic request
|
|
11
|
+
#
|
|
12
|
+
# @param abuse_request [Hash] Abuse request data for creating
|
|
13
|
+
# @option abuse_request [Integer] :comment_id Comment id
|
|
14
|
+
# @param headers [Hash] Request headers
|
|
15
|
+
# @param query [Hash] Query string parameters for request
|
|
16
|
+
#
|
|
17
|
+
# @return [Hash] Hash representing abuse request
|
|
18
|
+
#
|
|
19
|
+
# @see https://shikimori.one/api/doc/2.0/abuse_requests/offtopic Shikimori's API documentation
|
|
20
|
+
# @example
|
|
21
|
+
# client = Shikimori::API::Client.new(
|
|
22
|
+
# app_name: 'Api Test',
|
|
23
|
+
# aceess_token: '****',
|
|
24
|
+
# refresh_token: '****'
|
|
25
|
+
# )
|
|
26
|
+
# client.v2.abuse_offtopic_request({ comment_id: 1, topic_id: 1, reason: 'Nani?!' })
|
|
27
|
+
def abuse_offtopic_request(abuse_request, headers: nil, **query)
|
|
28
|
+
rest.post base_url.join('abuse_requests', 'offtopic').url, abuse_request.to_h, headers: headers, query: query
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Abuse review request
|
|
32
|
+
#
|
|
33
|
+
# @param abuse_request [Hash] Abuse request data for creating
|
|
34
|
+
# @option abuse_request [Integer] :comment_id Comment id
|
|
35
|
+
# @option abuse_request [Integer] :topic_id Comment id
|
|
36
|
+
# @param headers [Hash] Request headers
|
|
37
|
+
# @param query [Hash] Query string parameters for request
|
|
38
|
+
#
|
|
39
|
+
# @return [Hash] Hash representing abuse request
|
|
40
|
+
#
|
|
41
|
+
# @see https://shikimori.one/api/doc/2.0/abuse_requests/convert_review Shikimori's API documentation
|
|
42
|
+
# @example
|
|
43
|
+
# client = Shikimori::API::Client.new(
|
|
44
|
+
# app_name: 'Api Test',
|
|
45
|
+
# aceess_token: '****',
|
|
46
|
+
# refresh_token: '****'
|
|
47
|
+
# )
|
|
48
|
+
# client.v2.abuse_review_request({ topic_id: 1 })
|
|
49
|
+
def abuse_review_request(abuse_request, headers: nil, **query)
|
|
50
|
+
rest.post base_url.join('abuse_requests', 'convert_review').url,
|
|
51
|
+
abuse_request.to_h,
|
|
52
|
+
headers: headers, query: query
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Abuse abuse request
|
|
56
|
+
#
|
|
57
|
+
# @param abuse_request [Hash] Abuse request data for creating
|
|
58
|
+
# @option abuse_request [Integer] :comment_id Comment id
|
|
59
|
+
# @option abuse_request [Integer] :topic_id Comment id
|
|
60
|
+
# @option abuse_request [String] :reason Reason to abuse
|
|
61
|
+
# @param headers [Hash] Request headers
|
|
62
|
+
# @param query [Hash] Query string parameters for request
|
|
63
|
+
#
|
|
64
|
+
# @return [Hash] Hash representing abuse request
|
|
65
|
+
#
|
|
66
|
+
# @see https://shikimori.one/api/doc/2.0/abuse_requests/abuse Shikimori's API documentation
|
|
67
|
+
# @example
|
|
68
|
+
# client = Shikimori::API::Client.new(
|
|
69
|
+
# app_name: 'Api Test',
|
|
70
|
+
# aceess_token: '****',
|
|
71
|
+
# refresh_token: '****'
|
|
72
|
+
# )
|
|
73
|
+
# client.v2.abuse_request({ topic_id: 1, reason: 'Nani?!' })
|
|
74
|
+
def abuse_request(abuse_request, headers: nil, **query)
|
|
75
|
+
rest.post base_url.join('abuse_requests', 'abuse').url, abuse_request.to_h, headers: headers, query: query
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Abuse spoiler request
|
|
79
|
+
#
|
|
80
|
+
# @param abuse_request [Hash] Abuse request data for creating
|
|
81
|
+
# @option abuse_request [Integer] :comment_id Comment id
|
|
82
|
+
# @option abuse_request [Integer] :topic_id Comment id
|
|
83
|
+
# @option abuse_request [String] :reason Reason to abuse
|
|
84
|
+
# @param headers [Hash] Request headers
|
|
85
|
+
# @param query [Hash] Query string parameters for request
|
|
86
|
+
#
|
|
87
|
+
# @return [Hash] Hash representing abuse request
|
|
88
|
+
#
|
|
89
|
+
# @see https://shikimori.one/api/doc/2.0/abuse_requests/spoiler Shikimori's API documentation
|
|
90
|
+
# @example
|
|
91
|
+
# client = Shikimori::API::Client.new(
|
|
92
|
+
# app_name: 'Api Test',
|
|
93
|
+
# aceess_token: '****',
|
|
94
|
+
# refresh_token: '****'
|
|
95
|
+
# )
|
|
96
|
+
# client.v2.abuse_spoiler_request({ comment_id: 1, reason: 'Nani?!' })
|
|
97
|
+
def abuse_spoiler_request(abuse_request, headers: nil, **query)
|
|
98
|
+
rest.post base_url.join('abuse_requests', 'spoiler').url, abuse_request.to_h, headers: headers, query: query
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Shikimori
|
|
4
|
+
module API
|
|
5
|
+
class V2
|
|
6
|
+
# Methods for the Episode notifications API
|
|
7
|
+
#
|
|
8
|
+
# @see https://shikimori.one/api/doc/2.0/episode_notifications Shikimori's API documentation
|
|
9
|
+
module EpisodeNotifications
|
|
10
|
+
# Notify shikimori about anime episode release
|
|
11
|
+
#
|
|
12
|
+
# @param episode_notification [Hash] Episode notification data for creating
|
|
13
|
+
# @option episode_notification [Integer] :anime_id Anime id
|
|
14
|
+
# @option episode_notification [Integer] :episode Episode number
|
|
15
|
+
# @option episode_notification [String] :aired_at Date and time of aired
|
|
16
|
+
# @option episode_notification ['true', 'false', 1, 0] :is_fandub Is fandub?
|
|
17
|
+
# @option episode_notification ['true', 'false', 1, 0] :is_raw Is raw?
|
|
18
|
+
# @option episode_notification ['true', 'false', 1, 0] :is_subtitles Is with subtitles?
|
|
19
|
+
# @option episode_notification ['true', 'false', 1, 0] :is_anime365 Is Anime365?
|
|
20
|
+
# @param token [String] Private token required to access this api
|
|
21
|
+
# @param headers [Hash] Request headers
|
|
22
|
+
# @param query [Hash] Query string parameters for request
|
|
23
|
+
#
|
|
24
|
+
# @return [Hash] Hash representing created episode notification
|
|
25
|
+
#
|
|
26
|
+
# @see https://shikimori.one/api/doc/2.0/episode_notifications/create Shikimori's API documentation
|
|
27
|
+
# @example
|
|
28
|
+
# client = Shikimori::API::Client.new(
|
|
29
|
+
# app_name: 'Api Test',
|
|
30
|
+
# aceess_token: '****',
|
|
31
|
+
# refresh_token: '****'
|
|
32
|
+
# )
|
|
33
|
+
#
|
|
34
|
+
# notification = {
|
|
35
|
+
# aired_at: "2022-11-19T17:19:31+03:00",
|
|
36
|
+
# anime_id: "35",
|
|
37
|
+
# episode: "3",
|
|
38
|
+
# is_anime365: "true",
|
|
39
|
+
# is_fandub: "true",
|
|
40
|
+
# is_raw: "false",
|
|
41
|
+
# is_subtitles: "false"
|
|
42
|
+
# }
|
|
43
|
+
# token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
|
44
|
+
#
|
|
45
|
+
# client.v2.create_episode_notification(notification, token: token)
|
|
46
|
+
def create_episode_notification(episode_notification, token:, headers: nil, **query)
|
|
47
|
+
rest.post base_url.join('episode_notifications').url,
|
|
48
|
+
{ episode_notification: episode_notification, token: token },
|
|
49
|
+
headers: headers, query: query
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Shikimori
|
|
4
|
+
module API
|
|
5
|
+
class V2
|
|
6
|
+
# Methods for the Topic ignores API
|
|
7
|
+
#
|
|
8
|
+
# @see https://shikimori.one/api/doc/2.0/Topic%20Ignore Shikimori's API documentation
|
|
9
|
+
module TopicIgnore
|
|
10
|
+
# Add topic to ignore by id.
|
|
11
|
+
# Requires `topics` oauth scope
|
|
12
|
+
#
|
|
13
|
+
# @param topic_id [#to_s] Topic id
|
|
14
|
+
# @param headers [Hash] Request headers
|
|
15
|
+
# @param query [Hash] Query string parameters for request
|
|
16
|
+
#
|
|
17
|
+
# @return [Hash] Hash representing created topic ignore
|
|
18
|
+
#
|
|
19
|
+
# @see https://shikimori.one/api/doc/2.0/Topic%20Ignore/create Shikimori's API documentation
|
|
20
|
+
# @example Add to ignore a topic with id equal to 1
|
|
21
|
+
# client = Shikimori::API::Client.new(
|
|
22
|
+
# app_name: 'Api Test',
|
|
23
|
+
# aceess_token: '****',
|
|
24
|
+
# refresh_token: '****'
|
|
25
|
+
# )
|
|
26
|
+
# client.v2.create_topic_ignore(1)
|
|
27
|
+
def create_topic_ignore(topic_id, headers: nil, **query)
|
|
28
|
+
rest.post base_url.join('topics', topic_id.to_s, 'ignore').url, {}, headers: headers, query: query
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Delete a topic ignore by id.
|
|
32
|
+
# Requires `ignores` oauth scope
|
|
33
|
+
#
|
|
34
|
+
# @param topic_id [#to_s] Topic id
|
|
35
|
+
# @param headers [Hash] Request headers
|
|
36
|
+
# @param query [Hash] Query string parameters for request
|
|
37
|
+
#
|
|
38
|
+
# @return [Boolean] True if deletion successful, false otherwise.
|
|
39
|
+
#
|
|
40
|
+
# @see https://shikimori.one/api/doc/2.0/Topic%20Ignore/destroy Shikimori's API documentation
|
|
41
|
+
# @example Delete a topic ignore
|
|
42
|
+
# client = Shikimori::API::Client.new(
|
|
43
|
+
# app_name: 'Api Test',
|
|
44
|
+
# aceess_token: '****',
|
|
45
|
+
# refresh_token: '****'
|
|
46
|
+
# )
|
|
47
|
+
# client.v2.delete_topic_ignore(1)
|
|
48
|
+
def delete_topic_ignore(topic_id, headers: nil, **query)
|
|
49
|
+
rest.delete base_url.join('topics', topic_id.to_s, 'ignore').url, headers: headers, query: query
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|