jikan.rb 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|