jikan.rb 0.0.5 → 0.0.6
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 +4 -4
- data/.gitignore +17 -14
- data/.rspec +3 -3
- data/.travis.yml +5 -5
- data/CODE_OF_CONDUCT.md +74 -74
- data/Gemfile +6 -6
- data/Gemfile.lock +11 -7
- data/LICENSE.txt +21 -21
- data/README.md +200 -175
- data/Rakefile +6 -6
- data/bin/console +19 -14
- data/bin/setup +8 -8
- data/jikan.gemspec +43 -42
- data/lib/jikan.rb +55 -38
- data/lib/jikan/api.rb +65 -59
- data/lib/jikan/{anime.rb → models/anime.rb} +74 -72
- data/lib/jikan/models/char_staff.rb +51 -0
- data/lib/jikan/models/character.rb +55 -0
- data/lib/jikan/models/club.rb +80 -0
- data/lib/jikan/{entity.rb → models/entity.rb} +115 -89
- data/lib/jikan/{manga.rb → models/manga.rb} +29 -27
- data/lib/jikan/models/news.rb +43 -0
- data/lib/jikan/models/person.rb +61 -0
- data/lib/jikan/models/picture.rb +14 -0
- data/lib/jikan/models/recommendation.rb +31 -0
- data/lib/jikan/models/review.rb +47 -0
- data/lib/jikan/{search.rb → models/search.rb} +50 -50
- data/lib/jikan/models/stat.rb +35 -0
- data/lib/jikan/models/user.rb +65 -0
- data/lib/jikan/models/userupdate.rb +38 -0
- data/lib/jikan/query.rb +137 -41
- data/lib/jikan/version.rb +3 -3
- metadata +31 -8
- data/lib/jikan/character.rb +0 -5
- data/lib/jikan/person.rb +0 -5
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'jikan/models/entity'
|
2
|
+
|
3
|
+
module Jikan
|
4
|
+
class News < BaseEntity
|
5
|
+
|
6
|
+
def url
|
7
|
+
raw['url']
|
8
|
+
end
|
9
|
+
|
10
|
+
def title
|
11
|
+
raw['title']
|
12
|
+
end
|
13
|
+
|
14
|
+
def date
|
15
|
+
raw['date']
|
16
|
+
end
|
17
|
+
|
18
|
+
def author_name
|
19
|
+
raw['author_name']
|
20
|
+
end
|
21
|
+
|
22
|
+
def author_url
|
23
|
+
raw['author_url']
|
24
|
+
end
|
25
|
+
|
26
|
+
def forum_url
|
27
|
+
raw['forum_url']
|
28
|
+
end
|
29
|
+
|
30
|
+
def image_url
|
31
|
+
raw['image_url']
|
32
|
+
end
|
33
|
+
|
34
|
+
def comments
|
35
|
+
raw['comments']
|
36
|
+
end
|
37
|
+
|
38
|
+
def intro
|
39
|
+
raw['intro']
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Jikan
|
2
|
+
class Person < BaseEntity
|
3
|
+
def mal_id
|
4
|
+
raw['mal_id']
|
5
|
+
end
|
6
|
+
|
7
|
+
def url
|
8
|
+
raw['url']
|
9
|
+
end
|
10
|
+
|
11
|
+
def image_url
|
12
|
+
raw['image_url']
|
13
|
+
end
|
14
|
+
|
15
|
+
def website_url
|
16
|
+
raw['website_url']
|
17
|
+
end
|
18
|
+
|
19
|
+
def name
|
20
|
+
raw['name']
|
21
|
+
end
|
22
|
+
|
23
|
+
def given_name
|
24
|
+
raw['given_name']
|
25
|
+
end
|
26
|
+
|
27
|
+
def family_name
|
28
|
+
raw['famly_name']
|
29
|
+
end
|
30
|
+
|
31
|
+
def alternate_name
|
32
|
+
raw['alternate_name']
|
33
|
+
end
|
34
|
+
|
35
|
+
def birthday
|
36
|
+
raw['birthday']
|
37
|
+
end
|
38
|
+
|
39
|
+
def member_fav
|
40
|
+
raw['member_favorites']
|
41
|
+
end
|
42
|
+
|
43
|
+
def about
|
44
|
+
raw['about']
|
45
|
+
end
|
46
|
+
|
47
|
+
def va_roles
|
48
|
+
raw['voice_acting_roles']
|
49
|
+
end
|
50
|
+
|
51
|
+
def staff_position
|
52
|
+
raw['anime_staff_position']
|
53
|
+
end
|
54
|
+
|
55
|
+
def published_manga
|
56
|
+
raw['published_manga']
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
class BasicPerson < Entityography; end
|
61
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'jikan/models/entity'
|
2
|
+
|
3
|
+
module Jikan
|
4
|
+
class Recommendation < BaseEntity
|
5
|
+
|
6
|
+
def mal_id
|
7
|
+
raw['mal_id']
|
8
|
+
end
|
9
|
+
|
10
|
+
def url
|
11
|
+
raw['url']
|
12
|
+
end
|
13
|
+
|
14
|
+
def image_url
|
15
|
+
raw['image_url']
|
16
|
+
end
|
17
|
+
|
18
|
+
def recommendation_url
|
19
|
+
raw['recommendation_url']
|
20
|
+
end
|
21
|
+
|
22
|
+
def title
|
23
|
+
raw['title']
|
24
|
+
end
|
25
|
+
|
26
|
+
def count
|
27
|
+
raw['recommendation_count']
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'jikan/models/entity'
|
2
|
+
|
3
|
+
module Jikan
|
4
|
+
class Review < BaseEntity
|
5
|
+
|
6
|
+
def mal_id
|
7
|
+
raw['mal_id']
|
8
|
+
end
|
9
|
+
|
10
|
+
def url
|
11
|
+
raw['url']
|
12
|
+
end
|
13
|
+
|
14
|
+
def helpful_count
|
15
|
+
raw['helpful_count']
|
16
|
+
end
|
17
|
+
|
18
|
+
def date
|
19
|
+
raw['date']
|
20
|
+
end
|
21
|
+
|
22
|
+
def reviewer_url
|
23
|
+
raw['reviewer']['url']
|
24
|
+
end
|
25
|
+
|
26
|
+
def reviewer_img
|
27
|
+
raw['reviewer']['image_url']
|
28
|
+
end
|
29
|
+
|
30
|
+
def reviewer_username
|
31
|
+
raw['reviewer']['username']
|
32
|
+
end
|
33
|
+
|
34
|
+
def reviewer_chapters_read
|
35
|
+
raw['reviewer']['chapters_read']
|
36
|
+
end
|
37
|
+
|
38
|
+
def reviewer_scores
|
39
|
+
raw['reviewer']['scores']
|
40
|
+
end
|
41
|
+
|
42
|
+
def content
|
43
|
+
raw['content']
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
@@ -1,50 +1,50 @@
|
|
1
|
-
module Jikan
|
2
|
-
class Search < BaseEntity
|
3
|
-
|
4
|
-
def initialize(json, type)
|
5
|
-
super(json)
|
6
|
-
@type = type
|
7
|
-
@search = true
|
8
|
-
end
|
9
|
-
|
10
|
-
def is_search?
|
11
|
-
@search
|
12
|
-
end
|
13
|
-
|
14
|
-
def id
|
15
|
-
iter { |i| i['id'] || i['mal_id'] }
|
16
|
-
end
|
17
|
-
|
18
|
-
def title
|
19
|
-
iter { |i| i['title'] }
|
20
|
-
end
|
21
|
-
|
22
|
-
def url
|
23
|
-
iter { |i| i['url'] }
|
24
|
-
end
|
25
|
-
|
26
|
-
# returns each result items wrapped in their respective objects
|
27
|
-
def result
|
28
|
-
case @type
|
29
|
-
when :anime
|
30
|
-
iter { |i| Jikan::AnimeResult.new(i) }
|
31
|
-
when :manga
|
32
|
-
iter { |i| Jikan::MangaResult.new(i) }
|
33
|
-
when :character
|
34
|
-
raise NoMethodError, "Character only return raw result for now."
|
35
|
-
when :person
|
36
|
-
raise NoMethodError, "Person only return raw result for now."
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
def iter
|
43
|
-
@raw['
|
44
|
-
if block_given?
|
45
|
-
yield item
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
1
|
+
module Jikan
|
2
|
+
class Search < BaseEntity
|
3
|
+
|
4
|
+
def initialize(json, type)
|
5
|
+
super(json)
|
6
|
+
@type = type
|
7
|
+
@search = true
|
8
|
+
end
|
9
|
+
|
10
|
+
def is_search?
|
11
|
+
@search
|
12
|
+
end
|
13
|
+
|
14
|
+
def id
|
15
|
+
iter { |i| i['id'] || i['mal_id'] }
|
16
|
+
end
|
17
|
+
|
18
|
+
def title
|
19
|
+
iter { |i| i['title'] }
|
20
|
+
end
|
21
|
+
|
22
|
+
def url
|
23
|
+
iter { |i| i['url'] }
|
24
|
+
end
|
25
|
+
|
26
|
+
# returns each result items wrapped in their respective objects
|
27
|
+
def result
|
28
|
+
case @type
|
29
|
+
when :anime
|
30
|
+
iter { |i| Jikan::AnimeResult.new(i) }
|
31
|
+
when :manga
|
32
|
+
iter { |i| Jikan::MangaResult.new(i) }
|
33
|
+
when :character
|
34
|
+
raise NoMethodError, "Character only return raw result for now."
|
35
|
+
when :person
|
36
|
+
raise NoMethodError, "Person only return raw result for now."
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def iter
|
43
|
+
@raw['results'].map do |item|
|
44
|
+
if block_given?
|
45
|
+
yield item
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'jikan/models/entity'
|
2
|
+
|
3
|
+
module Jikan
|
4
|
+
class Stat < BaseEntity
|
5
|
+
|
6
|
+
def watching
|
7
|
+
raw['watching']
|
8
|
+
end
|
9
|
+
|
10
|
+
def completed
|
11
|
+
raw['completed']
|
12
|
+
end
|
13
|
+
|
14
|
+
def on_hold
|
15
|
+
raw['on_hold']
|
16
|
+
end
|
17
|
+
|
18
|
+
def dropped
|
19
|
+
raw['dropped']
|
20
|
+
end
|
21
|
+
|
22
|
+
def ptw
|
23
|
+
raw['plan_to_watch']
|
24
|
+
end
|
25
|
+
|
26
|
+
def total
|
27
|
+
raw['total']
|
28
|
+
end
|
29
|
+
|
30
|
+
def scores
|
31
|
+
raw['scores']
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'jikan/models/entity'
|
2
|
+
|
3
|
+
module Jikan
|
4
|
+
class User < BaseEntity
|
5
|
+
def name
|
6
|
+
raw['username']
|
7
|
+
end
|
8
|
+
|
9
|
+
def url
|
10
|
+
raw['url']
|
11
|
+
end
|
12
|
+
|
13
|
+
def image_url
|
14
|
+
raw['image_url']
|
15
|
+
end
|
16
|
+
|
17
|
+
def birthday
|
18
|
+
raw['birthday']
|
19
|
+
end
|
20
|
+
|
21
|
+
def location
|
22
|
+
raw['location']
|
23
|
+
end
|
24
|
+
|
25
|
+
def joined
|
26
|
+
raw['joined']
|
27
|
+
end
|
28
|
+
|
29
|
+
def about
|
30
|
+
raw['about']
|
31
|
+
end
|
32
|
+
|
33
|
+
def anime_stats
|
34
|
+
raw['anime_stats']
|
35
|
+
end
|
36
|
+
|
37
|
+
def manga_stats
|
38
|
+
raw['manga_stats']
|
39
|
+
end
|
40
|
+
|
41
|
+
def fav_anime
|
42
|
+
raw['favorites']['anime'].map do |fa|
|
43
|
+
Jikan::BasicAnime.new(fa)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def fav_manga
|
48
|
+
raw['favorites']['manga'].map do |fm|
|
49
|
+
Jikan::BasicManga.new(fm)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def fav_char
|
54
|
+
raw['favorites']['characters'].map do |fc|
|
55
|
+
Jikan::BasicCharacter.new(fc)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def fav_people
|
60
|
+
raw['favorites']['people'].map do |fp|
|
61
|
+
Jikan::BasicPerson.new(fp)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'jikan/models/entity'
|
2
|
+
|
3
|
+
module Jikan
|
4
|
+
class UserUpdate < BaseEntity
|
5
|
+
|
6
|
+
def username
|
7
|
+
raw['username']
|
8
|
+
end
|
9
|
+
|
10
|
+
def url
|
11
|
+
raw['url']
|
12
|
+
end
|
13
|
+
|
14
|
+
def image_url
|
15
|
+
raw['image_url']
|
16
|
+
end
|
17
|
+
|
18
|
+
def score
|
19
|
+
raw['score']
|
20
|
+
end
|
21
|
+
|
22
|
+
def status
|
23
|
+
raw['status']
|
24
|
+
end
|
25
|
+
|
26
|
+
def eps_seen
|
27
|
+
raw['episodes_seen']
|
28
|
+
end
|
29
|
+
|
30
|
+
def eps_total
|
31
|
+
raw['episodes_total']
|
32
|
+
end
|
33
|
+
|
34
|
+
def date
|
35
|
+
raw['date']
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/jikan/query.rb
CHANGED
@@ -1,41 +1,137 @@
|
|
1
|
-
require '
|
2
|
-
|
3
|
-
require 'jikan/
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
end
|
1
|
+
require 'require_all'
|
2
|
+
require_all 'lib/jikan/models'
|
3
|
+
require 'jikan/api'
|
4
|
+
|
5
|
+
module Jikan
|
6
|
+
class Query
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@json = nil
|
10
|
+
end
|
11
|
+
|
12
|
+
def anime_id(id, flag=nil)
|
13
|
+
@json = Jikan::API.new.get(endpoint: "anime", id: id, flag: flag)
|
14
|
+
if flag == nil
|
15
|
+
Jikan::Anime.new(@json)
|
16
|
+
elsif flag == :episodes
|
17
|
+
Jikan::Anime.new(@json)
|
18
|
+
elsif flag == :reviews
|
19
|
+
@json['reviews'].map do |review|
|
20
|
+
Jikan::Review.new(review)
|
21
|
+
end
|
22
|
+
elsif flag == :news
|
23
|
+
@json['articles'].map do |news|
|
24
|
+
Jikan::News.new(news)
|
25
|
+
end
|
26
|
+
elsif flag == :recommendations
|
27
|
+
@json['recommendations'].map do |rec|
|
28
|
+
Jikan::Recommendation.new(rec)
|
29
|
+
end
|
30
|
+
elsif flag == :userupdates
|
31
|
+
@json['users'].map do |user|
|
32
|
+
Jikan::UserUpdate.new(user)
|
33
|
+
end
|
34
|
+
elsif flag == :pictures
|
35
|
+
@json['pictures'].map do |pic|
|
36
|
+
Jikan::Picture.new(pic)
|
37
|
+
end
|
38
|
+
elsif flag == :characters_staff
|
39
|
+
@json['characters'].map do |cs|
|
40
|
+
Jikan::CharacterStaff.new(cs)
|
41
|
+
end
|
42
|
+
elsif flag == :stats
|
43
|
+
Jikan::Stat.new(@json)
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
def manga_id(id, flag=nil)
|
49
|
+
@json = Jikan::API.new.get(endpoint: "manga", id: id, flag: flag)
|
50
|
+
if flag == nil
|
51
|
+
Jikan::Manga.new(@json)
|
52
|
+
elsif flag == :reviews
|
53
|
+
@json['reviews'].map do |review|
|
54
|
+
Jikan::Review.new(review)
|
55
|
+
end
|
56
|
+
elsif flag == :news
|
57
|
+
@json['articles'].map do |news|
|
58
|
+
Jikan::News.new(news)
|
59
|
+
end
|
60
|
+
elsif flag == :recommendations
|
61
|
+
@json['recommendations'].map do |rec|
|
62
|
+
Jikan::Recommendation.new(rec)
|
63
|
+
end
|
64
|
+
elsif flag == :userupdates
|
65
|
+
@json['users'].map do |user|
|
66
|
+
Jikan::UserUpdate.new(user)
|
67
|
+
end
|
68
|
+
elsif flag == :pictures
|
69
|
+
@json['pictures'].map do |pic|
|
70
|
+
Jikan::Picture.new(pic)
|
71
|
+
end
|
72
|
+
elsif flag == :stats
|
73
|
+
Jikan::Stat.new(@json)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def character_id(id, flag=nil)
|
78
|
+
@json = Jikan::API.new.get(endpoint: "character", id: id, flag: flag)
|
79
|
+
if flag == nil
|
80
|
+
Jikan::Character.new(@json)
|
81
|
+
elsif flag == :pictures
|
82
|
+
@json['pictures'].map do |pic|
|
83
|
+
Jikan::Picture.new(pic)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def person_id(id, flag=nil)
|
89
|
+
@json = Jikan::API.new.get(endpoint: "person", id: id, flag: flag)
|
90
|
+
if flag == nil
|
91
|
+
Jikan::Person.new(@json)
|
92
|
+
elsif flag == :pictures
|
93
|
+
@json['pictures'].map do |pic|
|
94
|
+
Jikan::Picture.new(pic)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
def club_id(id, flag=nil)
|
100
|
+
@json = Jikan::API.new.get(endpoint: "club", id: id, flag: flag)
|
101
|
+
if flag == nil
|
102
|
+
Jikan::Club.new(@json)
|
103
|
+
elsif flag == :members
|
104
|
+
@json['members'].map do |member|
|
105
|
+
Jikan::ClubMember.new(member)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def user(name, flag=:profile)
|
111
|
+
@json = Jikan::API.new.get(endpoint: "user", query: name, flag: flag)
|
112
|
+
if flag == :profile
|
113
|
+
Jikan::User.new(@json)
|
114
|
+
elsif(flag == :animelist)
|
115
|
+
Jikan::BaseEntity.new(@json)
|
116
|
+
elsif(flag == :mangalist)
|
117
|
+
Jikan::BaseEntity.new(@json)
|
118
|
+
elsif(flag == :friends)
|
119
|
+
Jikan::BaseEntity.new(@json)
|
120
|
+
elsif(flag == :history)
|
121
|
+
Jikan::BaseEntity.new(@json)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def search(title, type=:anime, page=1)
|
126
|
+
@json = Jikan::API.new.get(endpoint: "search", page: page, flag: type, query: title)
|
127
|
+
Jikan::Search.new(@json, type)
|
128
|
+
end
|
129
|
+
|
130
|
+
def season(season, year=Date.today.year)
|
131
|
+
@json = Jikan::API.new.get(endpoint: "season", year: year, flag: season.to_sym)
|
132
|
+
@json['anime'].map do |a|
|
133
|
+
Jikan::Anime.new(a)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|