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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5b28f01f8b4db25431c4590754691323f7d4f881
4
- data.tar.gz: 397c79a7ca989a1df525d040df3949189a79a622
3
+ metadata.gz: 068f3385ec421837d2f387fbc637b9777280b319
4
+ data.tar.gz: 73d81300f15625bbd79ff4f28284f1c5e9f83b74
5
5
  SHA512:
6
- metadata.gz: 9474df00dbfda878f3da038a666e1a40d4c49b7c486be6c5efb2364bc8e726e2753e37ecffa2a1291d90510659d354046bd50990de1ecc022e2a1f8a72260c48
7
- data.tar.gz: 900d4b07e303893ae0232a17c7266b83f8b50f168027d9f9dce01013e2c038ce0a7c6218e468b58e4727042932330400eb0e07ed35d2b62917cfb125ea706091
6
+ metadata.gz: cbec9826839e3d3069a143b0376516e179c3af171d7b5c657ad2344993189a4cfa26ee316795bc3c352cda12822b9c0df89f4dcbf90632b144c54eed8c58e10c
7
+ data.tar.gz: 3d00822f56699a562a87f1e771edebf0dece977623e1418e038e7a3325200b5e61d4cf6c5ba79d549df5ca34195246f3b58401301d64a87f7a59b36e5190b5e6
@@ -1,135 +1,8 @@
1
- require 'yotsuba/version'
2
- require 'savon'
3
-
4
- module Yotsuba
5
-
6
- Serial = ENV['DOMDOM_KEY']
7
-
8
- class Anime
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'
@@ -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
@@ -0,0 +1,3 @@
1
+ module Yotsuba
2
+ Serial = ENV['DOMDOM_KEY']
3
+ end
@@ -1,3 +1,3 @@
1
1
  module Yotsuba
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
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.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