yotsuba 0.1.1 → 0.1.2
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/lib/yotsuba.rb +8 -135
- data/lib/yotsuba/anime.rb +60 -0
- data/lib/yotsuba/dependencies.rb +1 -0
- data/lib/yotsuba/file.rb +25 -0
- data/lib/yotsuba/methods.rb +47 -0
- data/lib/yotsuba/serial.rb +3 -0
- data/lib/yotsuba/version.rb +1 -1
- metadata +6 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 068f3385ec421837d2f387fbc637b9777280b319
|
4
|
+
data.tar.gz: 73d81300f15625bbd79ff4f28284f1c5e9f83b74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cbec9826839e3d3069a143b0376516e179c3af171d7b5c657ad2344993189a4cfa26ee316795bc3c352cda12822b9c0df89f4dcbf90632b144c54eed8c58e10c
|
7
|
+
data.tar.gz: 3d00822f56699a562a87f1e771edebf0dece977623e1418e038e7a3325200b5e61d4cf6c5ba79d549df5ca34195246f3b58401301d64a87f7a59b36e5190b5e6
|
data/lib/yotsuba.rb
CHANGED
@@ -1,135 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
attr_reader :id, :title, :num_files
|
10
|
-
|
11
|
-
@@all_animes = []
|
12
|
-
|
13
|
-
def initialize(options = {id: nil, title: nil, num_files: nil})
|
14
|
-
@id = options[:id]
|
15
|
-
@title = options[:title]
|
16
|
-
@num_files = options[:num_files]
|
17
|
-
@@all_animes << self if self.valid?
|
18
|
-
return self
|
19
|
-
end
|
20
|
-
|
21
|
-
def valid?
|
22
|
-
self.id != nil && self.title != nil && self.num_files != nil
|
23
|
-
end
|
24
|
-
|
25
|
-
def files
|
26
|
-
@files ||= Yotsuba.get_files(self)
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.clear_anime_list!
|
30
|
-
@@all_animes = []
|
31
|
-
end
|
32
|
-
|
33
|
-
def self.all
|
34
|
-
Yotsuba.get_animes if @@all_animes.length == 0
|
35
|
-
@@all_animes
|
36
|
-
end
|
37
|
-
|
38
|
-
def self.[](key)
|
39
|
-
Yotsuba.get_animes if @@all_animes.length == 0
|
40
|
-
results = []
|
41
|
-
single = false
|
42
|
-
|
43
|
-
search = Proc.new { |a|
|
44
|
-
single = true
|
45
|
-
results << a if a.title == key
|
46
|
-
} if key.is_a?(String)
|
47
|
-
|
48
|
-
search = Proc.new { |a|
|
49
|
-
single = true
|
50
|
-
results << a if a.id == key
|
51
|
-
} if key.is_a?(Fixnum)
|
52
|
-
|
53
|
-
search = Proc.new { |a|
|
54
|
-
single = false
|
55
|
-
results << a if a.title.match(key)
|
56
|
-
} if key.is_a?(Regexp)
|
57
|
-
|
58
|
-
raise(ArgumentError, "Argument should be a String (title), Fixnum (id), or Regexp.") if search.nil?
|
59
|
-
|
60
|
-
@@all_animes.each &search
|
61
|
-
return single ? results[0] : results
|
62
|
-
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
66
|
-
|
67
|
-
class File
|
68
|
-
|
69
|
-
attr_reader :id, :name, :size, :first_downloaded, :times_downloaded, :anime_id
|
70
|
-
|
71
|
-
def initialize(options = {id: nil, name: nil, size: nil, first_downloaded: nil, times_downloaded: nil, anime_id: nil})
|
72
|
-
@id = options[:id]
|
73
|
-
@name = options[:name]
|
74
|
-
@size = options[:size]
|
75
|
-
@first_downloaded = options[:first_downloaded]
|
76
|
-
@times_downloaded = options[:times_downloaded]
|
77
|
-
@anime_id = options[:anime_id]
|
78
|
-
return self
|
79
|
-
end
|
80
|
-
|
81
|
-
def anime
|
82
|
-
@anime ||= Yotsuba::Anime[self.anime_id]
|
83
|
-
end
|
84
|
-
|
85
|
-
def download_links
|
86
|
-
@download_links ||= Yotsuba.get_download_links(self)
|
87
|
-
end
|
88
|
-
|
89
|
-
end
|
90
|
-
|
91
|
-
def self.setup_savon
|
92
|
-
@client ||= Savon.client(wsdl: 'http://anime.domdomsoft.com/Services/MainService.asmx?wsdl')
|
93
|
-
end
|
94
|
-
|
95
|
-
def self.get_animes
|
96
|
-
setup_savon
|
97
|
-
Anime.clear_anime_list!
|
98
|
-
response = @client.call(:get_anime_list)
|
99
|
-
animes = response.body[:get_anime_list_response][:get_anime_list_result][:anime]
|
100
|
-
animes.each do |a|
|
101
|
-
Anime.new({
|
102
|
-
id: a[:id].to_i,
|
103
|
-
title: a[:title],
|
104
|
-
num_files: a[:num_file].to_i
|
105
|
-
})
|
106
|
-
end
|
107
|
-
return animes.length > 0
|
108
|
-
end
|
109
|
-
|
110
|
-
def self.get_files(anime)
|
111
|
-
setup_savon
|
112
|
-
response = @client.call(:get_list_episode, message: { animeTitle: anime.title, serial: Serial })
|
113
|
-
files = response.body[:get_list_episode_response][:get_list_episode_result][:episode_file]
|
114
|
-
results = []
|
115
|
-
files = [files] unless files.is_a?(Array)
|
116
|
-
files.each do |f|
|
117
|
-
results << File.new({
|
118
|
-
id: f[:id].to_i,
|
119
|
-
name: f[:name],
|
120
|
-
size: f[:file_size].to_i,
|
121
|
-
first_downloaded: f[:first_download_time_in_day],
|
122
|
-
times_downloaded: f[:download_times].to_i,
|
123
|
-
anime_id: anime.id
|
124
|
-
})
|
125
|
-
end
|
126
|
-
return results
|
127
|
-
end
|
128
|
-
|
129
|
-
def self.get_download_links(file)
|
130
|
-
setup_savon
|
131
|
-
response = @client.call :request_link_download2, message: { animeTitle: file.anime.title, episodeName: file.name, serial: Serial }
|
132
|
-
links = response.body[:request_link_download2_response][:request_link_download2_result].split('|||')
|
133
|
-
end
|
134
|
-
|
135
|
-
end
|
1
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/yotsuba'
|
2
|
+
|
3
|
+
require 'dependencies'
|
4
|
+
require 'version'
|
5
|
+
require 'serial'
|
6
|
+
require 'anime'
|
7
|
+
require 'file'
|
8
|
+
require 'methods'
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module Yotsuba
|
2
|
+
class Anime
|
3
|
+
attr_reader :id, :title, :num_files
|
4
|
+
|
5
|
+
@@all_animes = []
|
6
|
+
|
7
|
+
def initialize(options = {id: nil, title: nil, num_files: nil})
|
8
|
+
@id = options[:id]
|
9
|
+
@title = options[:title]
|
10
|
+
@num_files = options[:num_files]
|
11
|
+
@@all_animes << self if self.valid?
|
12
|
+
return self
|
13
|
+
end
|
14
|
+
|
15
|
+
def valid?
|
16
|
+
self.id != nil && self.title != nil && self.num_files != nil
|
17
|
+
end
|
18
|
+
|
19
|
+
def files
|
20
|
+
@files ||= Yotsuba.get_files(self)
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.clear_anime_list!
|
24
|
+
@@all_animes = []
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.all
|
28
|
+
Yotsuba.get_animes if @@all_animes.length == 0
|
29
|
+
@@all_animes
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.[](key)
|
33
|
+
Yotsuba.get_animes if @@all_animes.length == 0
|
34
|
+
results = []
|
35
|
+
single = false
|
36
|
+
|
37
|
+
search = Proc.new { |a|
|
38
|
+
single = true
|
39
|
+
results << a if a.title == key
|
40
|
+
} if key.is_a?(String)
|
41
|
+
|
42
|
+
search = Proc.new { |a|
|
43
|
+
single = true
|
44
|
+
results << a if a.id == key
|
45
|
+
} if key.is_a?(Fixnum)
|
46
|
+
|
47
|
+
search = Proc.new { |a|
|
48
|
+
single = false
|
49
|
+
results << a if a.title.match(key)
|
50
|
+
} if key.is_a?(Regexp)
|
51
|
+
|
52
|
+
raise(ArgumentError, "Argument should be a String (title), Fixnum (id), or Regexp (matches title).") if search.nil?
|
53
|
+
|
54
|
+
@@all_animes.each &search
|
55
|
+
return single ? results[0] : results
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'savon'
|
data/lib/yotsuba/file.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
module Yotsuba
|
2
|
+
class File
|
3
|
+
|
4
|
+
attr_reader :id, :name, :size, :first_downloaded, :times_downloaded, :anime_id
|
5
|
+
|
6
|
+
def initialize(options = {id: nil, name: nil, size: nil, first_downloaded: nil, times_downloaded: nil, anime_id: nil})
|
7
|
+
@id = options[:id]
|
8
|
+
@name = options[:name]
|
9
|
+
@size = options[:size]
|
10
|
+
@first_downloaded = options[:first_downloaded]
|
11
|
+
@times_downloaded = options[:times_downloaded]
|
12
|
+
@anime_id = options[:anime_id]
|
13
|
+
return self
|
14
|
+
end
|
15
|
+
|
16
|
+
def anime
|
17
|
+
@anime ||= Yotsuba::Anime[self.anime_id]
|
18
|
+
end
|
19
|
+
|
20
|
+
def download_links
|
21
|
+
@download_links ||= Yotsuba.get_download_links(self)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Yotsuba
|
2
|
+
|
3
|
+
def self.setup_savon
|
4
|
+
@client ||= Savon.client(wsdl: 'http://anime.domdomsoft.com/Services/MainService.asmx?wsdl')
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.get_animes
|
8
|
+
setup_savon
|
9
|
+
Anime.clear_anime_list!
|
10
|
+
response = @client.call(:get_anime_list)
|
11
|
+
animes = response.body[:get_anime_list_response][:get_anime_list_result][:anime]
|
12
|
+
animes.each do |a|
|
13
|
+
Anime.new({
|
14
|
+
id: a[:id].to_i,
|
15
|
+
title: a[:title],
|
16
|
+
num_files: a[:num_file].to_i
|
17
|
+
})
|
18
|
+
end
|
19
|
+
return animes.length > 0
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.get_files(anime)
|
23
|
+
setup_savon
|
24
|
+
response = @client.call(:get_list_episode, message: { animeTitle: anime.title, serial: Serial })
|
25
|
+
files = response.body[:get_list_episode_response][:get_list_episode_result][:episode_file]
|
26
|
+
results = []
|
27
|
+
files = [files] unless files.is_a?(Array)
|
28
|
+
files.each do |f|
|
29
|
+
results << File.new({
|
30
|
+
id: f[:id].to_i,
|
31
|
+
name: f[:name],
|
32
|
+
size: f[:file_size].to_i,
|
33
|
+
first_downloaded: f[:first_download_time_in_day],
|
34
|
+
times_downloaded: f[:download_times].to_i,
|
35
|
+
anime_id: anime.id
|
36
|
+
})
|
37
|
+
end
|
38
|
+
return results
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.get_download_links(file)
|
42
|
+
setup_savon
|
43
|
+
response = @client.call :request_link_download2, message: { animeTitle: file.anime.title, episodeName: file.name, serial: Serial }
|
44
|
+
links = response.body[:request_link_download2_response][:request_link_download2_result].split('|||')
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
data/lib/yotsuba/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yotsuba
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Suchipi Izumi
|
@@ -83,6 +83,11 @@ files:
|
|
83
83
|
- bin/console
|
84
84
|
- bin/setup
|
85
85
|
- lib/yotsuba.rb
|
86
|
+
- lib/yotsuba/anime.rb
|
87
|
+
- lib/yotsuba/dependencies.rb
|
88
|
+
- lib/yotsuba/file.rb
|
89
|
+
- lib/yotsuba/methods.rb
|
90
|
+
- lib/yotsuba/serial.rb
|
86
91
|
- lib/yotsuba/version.rb
|
87
92
|
- yotsuba.gemspec
|
88
93
|
homepage: https://github.com/suchipi/yotsuba
|