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,148 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Shikimori
|
|
4
|
+
module API
|
|
5
|
+
class V1
|
|
6
|
+
# Methods for the Favorites API
|
|
7
|
+
#
|
|
8
|
+
# @see https://shikimori.one/api/doc/1.0/favorites Shikimori's API documentation
|
|
9
|
+
module Favorites
|
|
10
|
+
# Add object to favorites
|
|
11
|
+
#
|
|
12
|
+
# @param id [#to_s] Favorite's object id
|
|
13
|
+
# @param type ['person', 'anime', 'manga', 'ranobe', 'character'] Favorite's object type
|
|
14
|
+
# @param person_type ['common', 'seyu', 'mangaka', 'producer', 'person'] Person type.
|
|
15
|
+
# Required for :type equal to person
|
|
16
|
+
# @param headers [Hash] Request headers
|
|
17
|
+
# @param query [Hash] Query string parameters for request
|
|
18
|
+
#
|
|
19
|
+
# @return [Bool] True if create a new favorite is successful
|
|
20
|
+
#
|
|
21
|
+
# @see https://shikimori.one/api/doc/1.0/favorites/create Shikimori's API documentation
|
|
22
|
+
# @example Add mangaka with id equal to 1 to favorites
|
|
23
|
+
# client = Shikimori::API::Client.new(
|
|
24
|
+
# app_name: 'Api Test',
|
|
25
|
+
# aceess_token: '****',
|
|
26
|
+
# refresh_token: '****'
|
|
27
|
+
# )
|
|
28
|
+
# client.v1.create_favorite(1, type: 'person', person_type: 'mangaka')
|
|
29
|
+
# @example Add anime with id equal to 1 to favorites
|
|
30
|
+
# client = Shikimori::API::Client.new(
|
|
31
|
+
# app_name: 'Api Test',
|
|
32
|
+
# aceess_token: '****',
|
|
33
|
+
# refresh_token: '****'
|
|
34
|
+
# )
|
|
35
|
+
# client.v1.create_favorite(1, type: 'anime') #=> { success: true, notice: '...' }
|
|
36
|
+
def create_favorite(id, type:, person_type: 'person', headers: nil, **query)
|
|
37
|
+
path = creation_favorite_path_by(type.to_s.downcase, id.to_s, person_type)
|
|
38
|
+
rest.post base_url.join('favorites', *path).url, {}, headers: headers, query: query
|
|
39
|
+
|
|
40
|
+
true
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Delete Favorite
|
|
44
|
+
#
|
|
45
|
+
# @param id [String, Integer] Favorite id
|
|
46
|
+
# @param type ['person', 'anime', 'manga', 'ranobe', 'character'] Favorite's object type
|
|
47
|
+
# @param headers [Hash] Request headers
|
|
48
|
+
# @param query [Hash] Query string parameters for request
|
|
49
|
+
#
|
|
50
|
+
# @return [Boolean] True if deletion successful, false otherwise.
|
|
51
|
+
#
|
|
52
|
+
# @see https://shikimori.one/api/doc/1.0/favorites/destroy Shikimori's API documentation
|
|
53
|
+
# @example Delete person with id equal to 1 from favorites
|
|
54
|
+
# client = Shikimori::API::Client.new(
|
|
55
|
+
# app_name: 'Api Test',
|
|
56
|
+
# aceess_token: '****',
|
|
57
|
+
# refresh_token: '****'
|
|
58
|
+
# )
|
|
59
|
+
# client.v1.delete_favorite(1, type: 'person')
|
|
60
|
+
# @example Delete anime with id equal to 1 from favorites
|
|
61
|
+
# client = Shikimori::API::Client.new(
|
|
62
|
+
# app_name: 'Api Test',
|
|
63
|
+
# aceess_token: '****',
|
|
64
|
+
# refresh_token: '****'
|
|
65
|
+
# )
|
|
66
|
+
# client.v1.delete_favorite(1, type: 'anime') #=> true
|
|
67
|
+
def delete_favorite(id, type:, headers: nil, **query)
|
|
68
|
+
path = deletion_favorite_path_by(type.to_s.downcase, id.to_s)
|
|
69
|
+
rest.delete base_url.join('favorites', *path).url, headers: headers, query: query
|
|
70
|
+
|
|
71
|
+
true
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Reorder favorite
|
|
75
|
+
#
|
|
76
|
+
# @param id [#to_s] Favorite's id
|
|
77
|
+
# @param position [Integer] New position for favroite. Must be greater or equal than 0
|
|
78
|
+
# @param headers [Hash] Request headers
|
|
79
|
+
# @param query [Hash] Query string parameters for request
|
|
80
|
+
#
|
|
81
|
+
# @return [Bool] True if reordering is successful
|
|
82
|
+
#
|
|
83
|
+
# @see https://shikimori.one/api/doc/1.0/favorites/reorder Shikimori's API documentation
|
|
84
|
+
# @example Reorder favorite with id equal to 1 to 10 position
|
|
85
|
+
# client = Shikimori::API::Client.new(
|
|
86
|
+
# app_name: 'Api Test',
|
|
87
|
+
# aceess_token: '****',
|
|
88
|
+
# refresh_token: '****'
|
|
89
|
+
# )
|
|
90
|
+
# client.v1.reorder_favorite(1, position: 10)
|
|
91
|
+
def reorder_favorite(id, position:, headers: nil, **query)
|
|
92
|
+
rest.post(
|
|
93
|
+
base_url.join('favorites', id.to_s, 'reorder').url,
|
|
94
|
+
{ new_index: position },
|
|
95
|
+
headers: headers, query: query
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
true
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
private
|
|
102
|
+
|
|
103
|
+
# Generate path for adding to favorites
|
|
104
|
+
#
|
|
105
|
+
# @param type [String] Type of favorite
|
|
106
|
+
# @param id [String] Favorite's object id
|
|
107
|
+
# @param person_type [String] Person type
|
|
108
|
+
#
|
|
109
|
+
# @return [Array<String>] Array of path to adding object to favorites
|
|
110
|
+
def creation_favorite_path_by(type, id, person_type = 'person')
|
|
111
|
+
case type
|
|
112
|
+
when 'person'
|
|
113
|
+
['Person', id, person_type]
|
|
114
|
+
when 'manga'
|
|
115
|
+
['Manga', id]
|
|
116
|
+
when 'ranobe'
|
|
117
|
+
['Ranobe', id]
|
|
118
|
+
when 'character'
|
|
119
|
+
['Character', id]
|
|
120
|
+
else
|
|
121
|
+
['Anime', id]
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
# Generate path for deletion from favorites
|
|
126
|
+
#
|
|
127
|
+
# @param type [String] Type of favorite
|
|
128
|
+
# @param id [String] Favorite's object id
|
|
129
|
+
#
|
|
130
|
+
# @return [Array<String>] Array of path to delete object from favorites
|
|
131
|
+
def deletion_favorite_path_by(type, id)
|
|
132
|
+
case type
|
|
133
|
+
when 'person'
|
|
134
|
+
['Person', id]
|
|
135
|
+
when 'manga'
|
|
136
|
+
['Manga', id]
|
|
137
|
+
when 'ranobe'
|
|
138
|
+
['Ranobe', id]
|
|
139
|
+
when 'character'
|
|
140
|
+
['Character', id]
|
|
141
|
+
else
|
|
142
|
+
['Anime', id]
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Shikimori
|
|
4
|
+
module API
|
|
5
|
+
class V1
|
|
6
|
+
# Methods for the Forums API
|
|
7
|
+
#
|
|
8
|
+
# @see https://shikimori.one/api/doc/1.0/forums Shikimori's API documentation
|
|
9
|
+
module Forums
|
|
10
|
+
# Get list of Forums
|
|
11
|
+
#
|
|
12
|
+
# @param headers [Hash] Request headers
|
|
13
|
+
# @param query [Hash] Query string parameters for request
|
|
14
|
+
#
|
|
15
|
+
# @return [Array<Hash>] Array of hashes representing forums
|
|
16
|
+
#
|
|
17
|
+
# @see https://shikimori.one/api/doc/1.0/forums/index Shikimori's API documentation
|
|
18
|
+
# @example Get list of forums
|
|
19
|
+
# client = Shikimori::API::Client.new(
|
|
20
|
+
# app_name: 'Api Test',
|
|
21
|
+
# aceess_token: '****',
|
|
22
|
+
# refresh_token: '****'
|
|
23
|
+
# )
|
|
24
|
+
# client.v1.forums #=> [{ id: 1, ... }, ...]
|
|
25
|
+
def forums(headers: nil, **query)
|
|
26
|
+
rest.get base_url.join('forums').url, headers: headers, query: query
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Shikimori
|
|
4
|
+
module API
|
|
5
|
+
class V1
|
|
6
|
+
# Methods for the Friends API
|
|
7
|
+
#
|
|
8
|
+
# @see https://shikimori.one/api/doc/1.0/friends Shikimori's API documentation
|
|
9
|
+
module Friends
|
|
10
|
+
# Create friend by user_id.
|
|
11
|
+
# Requires `friends` oauth scope
|
|
12
|
+
#
|
|
13
|
+
# @param user_id [#to_s] User id that add to friends
|
|
14
|
+
# @param headers [Hash] Request headers
|
|
15
|
+
# @param query [Hash] Query string parameters for request
|
|
16
|
+
#
|
|
17
|
+
# @return [Boolean] True if added to friends
|
|
18
|
+
#
|
|
19
|
+
# @see https://shikimori.one/api/doc/1.0/friends/create Shikimori's API documentation
|
|
20
|
+
# @example Add to friends a user 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.v1.create_friend(1)
|
|
27
|
+
def create_friend(user_id, headers: nil, **query)
|
|
28
|
+
rest.post base_url.join('friends', user_id.to_s).url, {}, headers: headers, query: query
|
|
29
|
+
|
|
30
|
+
true
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Delete friend by user id.
|
|
34
|
+
# Requires `friends` oauth scope
|
|
35
|
+
#
|
|
36
|
+
# @param user_id [#to_s] Friend id
|
|
37
|
+
# @param headers [Hash] Request headers
|
|
38
|
+
# @param query [Hash] Query string parameters for request
|
|
39
|
+
#
|
|
40
|
+
# @return [Boolean] True if deletion successful, false otherwise.
|
|
41
|
+
#
|
|
42
|
+
# @see https://shikimori.one/api/doc/1.0/friends/destroy Shikimori's API documentation
|
|
43
|
+
# @example Delete a user from friends by id equal to 1
|
|
44
|
+
# client = Shikimori::API::Client.new(
|
|
45
|
+
# app_name: 'Api Test',
|
|
46
|
+
# aceess_token: '****',
|
|
47
|
+
# refresh_token: '****'
|
|
48
|
+
# )
|
|
49
|
+
#
|
|
50
|
+
# client.v1.delete_friend(1)
|
|
51
|
+
def delete_friend(user_id, headers: nil, **query)
|
|
52
|
+
rest.delete base_url.join('friends', user_id.to_s).url, headers: headers, query: query
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Shikimori
|
|
4
|
+
module API
|
|
5
|
+
class V1
|
|
6
|
+
# Methods for the Genres API
|
|
7
|
+
#
|
|
8
|
+
# @see https://shikimori.one/api/doc/1.0/genres Shikimori's API documentation
|
|
9
|
+
module Genres
|
|
10
|
+
# Get list of genres
|
|
11
|
+
#
|
|
12
|
+
# @param headers [Hash] Request headers
|
|
13
|
+
# @param query [Hash] Query string parameters for request
|
|
14
|
+
#
|
|
15
|
+
# @return [Array<Hash>] Array of hashes representing genres
|
|
16
|
+
#
|
|
17
|
+
# @see https://shikimori.one/api/doc/1.0/genres/index Shikimori's API documentation
|
|
18
|
+
# @example Get list of genres
|
|
19
|
+
# client = Shikimori::API::Client.new(
|
|
20
|
+
# app_name: 'Api Test',
|
|
21
|
+
# aceess_token: '****',
|
|
22
|
+
# refresh_token: '****'
|
|
23
|
+
# )
|
|
24
|
+
# client.v1.genres #=> [{ id: 1, ... }, ...]
|
|
25
|
+
def genres(headers: nil, **query)
|
|
26
|
+
rest.get base_url.join('genres').url, headers: headers, query: query
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Shikimori
|
|
4
|
+
module API
|
|
5
|
+
class V1
|
|
6
|
+
# Methods for the Ignores API
|
|
7
|
+
#
|
|
8
|
+
# @deprecated Use {Shikimori::API::V2::UserIgnore} instead
|
|
9
|
+
#
|
|
10
|
+
# @see https://shikimori.one/api/doc/1.0/ignores Shikimori's API documentation
|
|
11
|
+
module Ignores
|
|
12
|
+
# Add user to ignore by user id.
|
|
13
|
+
# Requires `ignores` oauth scope
|
|
14
|
+
#
|
|
15
|
+
# @param user_id [#to_s] User id that add to ignores
|
|
16
|
+
# @param headers [Hash] Request headers
|
|
17
|
+
# @param query [Hash] Query string parameters for request
|
|
18
|
+
#
|
|
19
|
+
# @return [Hash] Hash representing created user ignore
|
|
20
|
+
#
|
|
21
|
+
# @see https://shikimori.one/api/doc/1.0/ignores/create Shikimori's API documentation
|
|
22
|
+
# @example Add to ignore a user with id equal to 1
|
|
23
|
+
# client = Shikimori::API::Client.new(
|
|
24
|
+
# app_name: 'Api Test',
|
|
25
|
+
# aceess_token: '****',
|
|
26
|
+
# refresh_token: '****'
|
|
27
|
+
# )
|
|
28
|
+
# client.v1.create_ignore(1)
|
|
29
|
+
#
|
|
30
|
+
# @deprecated Use {Shikimori::API::V2::UserIgnore#create_user_ignore} instead
|
|
31
|
+
def create_ignore(user_id, headers: nil, **query)
|
|
32
|
+
rest.post base_url.join('ignores', user_id.to_s).url, {}, headers: headers, query: query
|
|
33
|
+
|
|
34
|
+
true
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Delete a user from ignores by user id.
|
|
38
|
+
# Requires `ignores` oauth scope
|
|
39
|
+
#
|
|
40
|
+
# @param user_id [#to_s] User id that remove from ignores
|
|
41
|
+
# @param headers [Hash] Request headers
|
|
42
|
+
# @param query [Hash] Query string parameters for request
|
|
43
|
+
#
|
|
44
|
+
# @return [Boolean] True if deletion successful, false otherwise.
|
|
45
|
+
#
|
|
46
|
+
# @see https://shikimori.one/api/doc/1.0/ignores/destroy Shikimori's API documentation
|
|
47
|
+
# @example Delete a ignore
|
|
48
|
+
# client = Shikimori::API::Client.new(
|
|
49
|
+
# app_name: 'Api Test',
|
|
50
|
+
# aceess_token: '****',
|
|
51
|
+
# refresh_token: '****'
|
|
52
|
+
# )
|
|
53
|
+
# client.v1.delete_ignore(1)
|
|
54
|
+
#
|
|
55
|
+
# @deprecated Use {Shikimori::API::V2::UserIgnore#delete_user_ignore} instead
|
|
56
|
+
def delete_ignore(user_id, headers: nil, **query)
|
|
57
|
+
rest.delete base_url.join('ignores', user_id.to_s).url, headers: headers, query: query
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Shikimori
|
|
4
|
+
module API
|
|
5
|
+
class V1
|
|
6
|
+
# Methods for the Mangas API
|
|
7
|
+
#
|
|
8
|
+
# @see https://shikimori.one/api/doc/1.0/mangas Shikimori's API documentation
|
|
9
|
+
module Mangas
|
|
10
|
+
# Get list of manga titles
|
|
11
|
+
#
|
|
12
|
+
# @param headers [Hash] Request headers
|
|
13
|
+
# @param query [Hash] Filters and pagination for mangas
|
|
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 ["id", "id_desc", "ranked", "chapters",
|
|
17
|
+
# "kind", "popularity", "name",
|
|
18
|
+
# "aired_on", "volumes", "status",
|
|
19
|
+
# "random", "ranked_random",
|
|
20
|
+
# "ranked_shiki", "created_at", "created_at_desc"] :order Sorting type.
|
|
21
|
+
# @option query [String, Symbol] :type Type of title. Deprecated! use :kind instead
|
|
22
|
+
# @option query ["manga", "manhwa", "manhua",
|
|
23
|
+
# "light_novel", "novel",
|
|
24
|
+
# "one_shot", "doujin"] :kind Type of manga title
|
|
25
|
+
# @option query ["anons", "ongoing", "released", "paused", "discontinued"] :status Manga title status
|
|
26
|
+
# @option query [String] :season Manga season. Examples: "summer_2017", "2016", "2014_2016", "199x"
|
|
27
|
+
# @option query [Integer] :score Minimal manga score
|
|
28
|
+
# @option query [String] :genre List of genre ids separated by comma
|
|
29
|
+
# @option query [String] :genre_v2 List of genre v2 ids separated by comma
|
|
30
|
+
# @option query [String] :publisher List of publisher ids separated by comma
|
|
31
|
+
# @option query [String] :franchise List of franchises separated by comma
|
|
32
|
+
# @option query [TrueClass, FalseClass] :censored Set to false to allow hentai, yaoi and yuri
|
|
33
|
+
# @option query ["planned", "watching", "rewatching",
|
|
34
|
+
# "completed", "on_hold", "dropped"] :mylist Status of anime in current user list
|
|
35
|
+
# @option query [String] :ids List of anime ids separated by comma
|
|
36
|
+
# @option query [String] :exclude_ids List of anime ids separated by comma
|
|
37
|
+
# @option query [String] :search Search phrase to filter mangas by name
|
|
38
|
+
#
|
|
39
|
+
# @return [Array<Hash>] Array of hashes representing mangas
|
|
40
|
+
#
|
|
41
|
+
# @see https://shikimori.one/api/doc/1.0/mangas/index Shikimori's API documentation
|
|
42
|
+
# @example Get 20 manga titles on second page
|
|
43
|
+
# client = Shikimori::API::Client.new(
|
|
44
|
+
# app_name: 'Api Test',
|
|
45
|
+
# aceess_token: '****',
|
|
46
|
+
# refresh_token: '****'
|
|
47
|
+
# )
|
|
48
|
+
# client.v1.mangas(page: 2, limit: 20) #=> [{ id: 1, ... }, { id: 2, ... }, ...]
|
|
49
|
+
# @example Get top 50 ongoing manga titles
|
|
50
|
+
# client = Shikimori::API::Client.new(
|
|
51
|
+
# app_name: 'Api Test',
|
|
52
|
+
# aceess_token: '****',
|
|
53
|
+
# refresh_token: '****'
|
|
54
|
+
# )
|
|
55
|
+
# client.v1.mangas(limit: 50, status: 'ongoing', order: 'ranked') #=> [{ id: 1, ... }, { id: 2, ... }, ...]
|
|
56
|
+
# @example Get 10 random manga titles released in the 90s
|
|
57
|
+
# client = Shikimori::API::Client.new(
|
|
58
|
+
# app_name: 'Api Test',
|
|
59
|
+
# aceess_token: '****',
|
|
60
|
+
# refresh_token: '****'
|
|
61
|
+
# )
|
|
62
|
+
# client.v1.mangas(limit: 10, order: 'random', season: '199x') #=> [{ id: 1, ... }, { id: 2, ... }, ...]
|
|
63
|
+
def mangas(headers: nil, **query)
|
|
64
|
+
rest.get base_url.join('mangas').url, headers: headers, query: query
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Get an manga by id
|
|
68
|
+
#
|
|
69
|
+
# @param id [#to_s] Manga id
|
|
70
|
+
# @param headers [Hash] Request headers
|
|
71
|
+
# @param query [Hash] Query string parameters for request
|
|
72
|
+
#
|
|
73
|
+
# @return [Hash] Hash representing Manga
|
|
74
|
+
#
|
|
75
|
+
# @see https://shikimori.one/api/doc/1.0/mangas/show Shikimori's API documentation
|
|
76
|
+
# @example Get manga with id equal to 1
|
|
77
|
+
# client = Shikimori::API::Client.new(
|
|
78
|
+
# app_name: 'Api Test',
|
|
79
|
+
# aceess_token: '****',
|
|
80
|
+
# refresh_token: '****'
|
|
81
|
+
# )
|
|
82
|
+
# client.v1.manga(1) #=> { id: 1, ... }
|
|
83
|
+
def manga(id, headers: nil, **query)
|
|
84
|
+
rest.get base_url.join('mangas', id.to_s).url, headers: headers, query: query
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Get an manga roles
|
|
88
|
+
#
|
|
89
|
+
# @param id [#to_s] manga id
|
|
90
|
+
# @param headers [Hash] Request headers
|
|
91
|
+
# @param query [Hash] Query string parameters for request
|
|
92
|
+
#
|
|
93
|
+
# @return [Hash] Hash representing manga roles
|
|
94
|
+
#
|
|
95
|
+
# @see https://shikimori.one/api/doc/1.0/mangas/roles Shikimori's API documentation
|
|
96
|
+
# @example Get a first manga roles
|
|
97
|
+
# client = Shikimori::API::Client.new(
|
|
98
|
+
# app_name: 'Api Test',
|
|
99
|
+
# aceess_token: '****',
|
|
100
|
+
# refresh_token: '****'
|
|
101
|
+
# )
|
|
102
|
+
# client.v1.manga_roles(1) #=> { roles: [...], roles_russian: [...], character: {...}, person: {...} }
|
|
103
|
+
def manga_roles(id, headers: nil, **query)
|
|
104
|
+
rest.get base_url.join('mangas', id.to_s, 'roles').url, headers: headers, query: query
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# Get an manga similar
|
|
108
|
+
#
|
|
109
|
+
# @param id [#to_s] Manga id
|
|
110
|
+
# @param headers [Hash] Request headers
|
|
111
|
+
# @param query [Hash] Query string parameters for request
|
|
112
|
+
#
|
|
113
|
+
# @return [Array<Hash>] Array of hashes representing similar mangas
|
|
114
|
+
#
|
|
115
|
+
# @see https://shikimori.one/api/doc/1.0/mangas/similar Shikimori's API documentation
|
|
116
|
+
# @example Get a similar manga titles for manga with id equal to 1
|
|
117
|
+
# client = Shikimori::API::Client.new(
|
|
118
|
+
# app_name: 'Api Test',
|
|
119
|
+
# aceess_token: '****',
|
|
120
|
+
# refresh_token: '****'
|
|
121
|
+
# )
|
|
122
|
+
# client.v1.manga_similar(1) #=> { id: 2, ... }
|
|
123
|
+
def manga_similar(id, headers: nil, **query)
|
|
124
|
+
rest.get base_url.join('mangas', id.to_s, 'similar').url, headers: headers, query: query
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Get an related mangas
|
|
128
|
+
#
|
|
129
|
+
# @param id [#to_s] Manga id
|
|
130
|
+
# @param headers [Hash] Request headers
|
|
131
|
+
# @param query [Hash] Query string parameters for request
|
|
132
|
+
#
|
|
133
|
+
# @return [Array<Hash>] Array of hashes representing related mangas
|
|
134
|
+
#
|
|
135
|
+
# @see https://shikimori.one/api/doc/1.0/mangas/related Shikimori's API documentation
|
|
136
|
+
# @example Get a related anime, manga and ranobe titles for anime with id equal to 1
|
|
137
|
+
# client = Shikimori::API::Client.new(
|
|
138
|
+
# app_name: 'Api Test',
|
|
139
|
+
# aceess_token: '****',
|
|
140
|
+
# refresh_token: '****'
|
|
141
|
+
# )
|
|
142
|
+
# client.v1.manga_related(1)
|
|
143
|
+
# #=> [{ relation: "...", relation_russian: "...", anime: { id: 3, ... }, manga: { id: 1, ... } }]
|
|
144
|
+
def manga_related(id, headers: nil, **query)
|
|
145
|
+
rest.get base_url.join('mangas', id.to_s, 'related').url, headers: headers, query: query
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
# Get an manga franchise
|
|
149
|
+
#
|
|
150
|
+
# @param id [#to_s] Manga id
|
|
151
|
+
# @param headers [Hash] Request headers
|
|
152
|
+
# @param query [Hash] Query string parameters for request
|
|
153
|
+
#
|
|
154
|
+
# @return [Hash] Hash representing of manga's franchise tree
|
|
155
|
+
#
|
|
156
|
+
# @see https://shikimori.one/api/doc/1.0/mangas/franchise Shikimori's API documentation
|
|
157
|
+
# @example Get manga franchise tree for manga with id equal to 1
|
|
158
|
+
# client = Shikimori::API::Client.new(
|
|
159
|
+
# app_name: 'Api Test',
|
|
160
|
+
# aceess_token: '****',
|
|
161
|
+
# refresh_token: '****'
|
|
162
|
+
# )
|
|
163
|
+
# client.v1.manga_franchise(1) #=> { links: [{ id: 1, ... }], nodes: [{ id: 1, ... }], current_id: 1 }
|
|
164
|
+
def manga_franchise(id, headers: nil, **query)
|
|
165
|
+
rest.get base_url.join('mangas', id.to_s, 'franchise').url, headers: headers, query: query
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
# Get an manga external links
|
|
169
|
+
#
|
|
170
|
+
# @param id [#to_s] Manga id
|
|
171
|
+
# @param headers [Hash] Request headers
|
|
172
|
+
# @param query [Hash] Query string parameters for request
|
|
173
|
+
#
|
|
174
|
+
# @return [Array<Hash>] Array of hashes representing manga's extenal links
|
|
175
|
+
#
|
|
176
|
+
# @see https://shikimori.one/api/doc/1.0/mangas/external_links Shikimori's API documentation
|
|
177
|
+
# @example Get related external links for manga with id equal 1
|
|
178
|
+
# client = Shikimori::API::Client.new(
|
|
179
|
+
# app_name: 'Api Test',
|
|
180
|
+
# aceess_token: '****',
|
|
181
|
+
# refresh_token: '****'
|
|
182
|
+
# )
|
|
183
|
+
# client.v1.manga_external_links(1) #=> [{ id: 1, ... }, { id: nil, ... }]
|
|
184
|
+
def manga_external_links(id, headers: nil, **query)
|
|
185
|
+
rest.get base_url.join('mangas', id.to_s, 'external_links').url, headers: headers, query: query
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
# Get an manga topics
|
|
189
|
+
#
|
|
190
|
+
# @param id [#to_s] Manga id
|
|
191
|
+
# @param headers [Hash] Request headers
|
|
192
|
+
# @param query [Hash] Query string parameters for request
|
|
193
|
+
# @option query [Integer] :page Number of page. Must be between 1 and 100000
|
|
194
|
+
# @option query [Integer] :limit Number of titles per page. Must be a lower or equal that 50
|
|
195
|
+
# @return [Array<Hash>] Array of hashes representing manga's topics
|
|
196
|
+
#
|
|
197
|
+
# @see https://shikimori.one/api/doc/1.0/mangas/topics Shikimori's API documentation
|
|
198
|
+
# @example Get topics for manga with id equal 1
|
|
199
|
+
# client = Shikimori::API::Client.new(
|
|
200
|
+
# app_name: 'Api Test',
|
|
201
|
+
# aceess_token: '****',
|
|
202
|
+
# refresh_token: '****'
|
|
203
|
+
# )
|
|
204
|
+
# client.v1.manga_topics(1) #=> [{ id: 1, ... }]
|
|
205
|
+
def manga_topics(id, headers: nil, **query)
|
|
206
|
+
rest.get base_url.join('mangas', id.to_s, 'topics').url, headers: headers, query: query
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
end
|