yotsuba 0.1.1 → 0.1.2

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