kgmusic 0.1.0pre4 → 0.1.0pre20160509

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: ffecb0c3212801f6e8c1ae897cd2e7f2c4d84065
4
- data.tar.gz: 1a09a8b4ab6fbb7bc87bf0a4fcb84cb8c0d55abb
3
+ metadata.gz: 68d83609da57a5345ed4495de570a8bad9b753e2
4
+ data.tar.gz: a8c5eadffc0386bd494f1f0888eb5f1e2c50736a
5
5
  SHA512:
6
- metadata.gz: ab437cc7d8f544f47fcd5c6054fa473f5e3cdedab5c8c71a1f43906148ab9153252c44a2b9e7d27a1f641d297530196a699620af0c7de36424d4ea3a1af01786
7
- data.tar.gz: c72283cb0b640a93e4200d72a7dff0e3fcaa370209fec35f4dc973a9c75647a4b3dab1c2ac2a7d9758a0477b83d54e6bd223ef3604f9adc7fc6d6be7adcd44a6
6
+ metadata.gz: 5497d4f10b77b737dd778b0ea94346fe8902b7e2470181ce8b63d29ae1343210921de8120598e6b42a854cedbe5b4bcfa25bb7f09f2faa853ee01e2334ec9b59
7
+ data.tar.gz: 4cadfde95394b8924378812c69354f4944e47876092bf35889605e8a9c412eb3d836b63825563480654fea7f7512f8c90adc7a43ffab502203f712964f67dfa3
data/Gemfile CHANGED
@@ -1,5 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'unicode_utils', '1.4.0'
3
+ #gem 'unicode_utils', '1.4.0'
4
4
  gem 'rest-client', '~> 1.8', '>= 1.8.0'
5
5
  gem 'nokogiri', '~> 1.6', '>= 1.6.0'
6
+ gem 'progressbar', '0.21.0'
data/kgmusic.gemspec CHANGED
@@ -17,9 +17,10 @@ Gem::Specification.new do |spec|
17
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_runtime_dependency "unicode_utils", "1.4.0"
20
+ #spec.add_runtime_dependency "unicode_utils", "1.4.0"
21
21
  spec.add_runtime_dependency "rest-client", "~> 1.8", ">= 1.8.0"
22
22
  spec.add_runtime_dependency "nokogiri", "~> 1.6", ">= 1.6.0"
23
+ spec.add_runtime_dependency "progressbar", "0.21.0"
23
24
  spec.add_development_dependency "bundler", "~> 1.11"
24
25
  spec.add_development_dependency "rake", "~> 10.0"
25
26
  spec.add_development_dependency "rspec", "~> 3.0"
data/lib/kgmusic.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "kgmusic/basemod"
2
+ require "progressbar"
2
3
 
3
4
  module KgMusic
4
5
 
@@ -55,18 +56,66 @@ module KgMusic
55
56
  @direct_link = link.to_s
56
57
  end
57
58
 
58
- def get_album
59
- @archive = "#{@artist} - #{@album}.zip"
59
+ def obtain_final_url
60
60
  begin
61
- @content = RestClient::Request.execute ({
62
- :method => :get,
63
- :url => @direct_link,
64
- :timeout => 3600
65
- })
66
- File.open(File.join(ENV['HOME'], @archive), 'w') do |f|
67
- f.write @content
61
+ uri = uri_parse @direct_link
62
+ response = Net::HTTP.start(uri.host) { |http| http.request_get(uri.path) }
63
+ @final_uri = response['location']
64
+ rescue
65
+ end
66
+ end
67
+
68
+ def get_album
69
+
70
+ result = obtain_final_url
71
+ uri = uri_parse result
72
+ host, path = uri.host, uri.path
73
+ @outfile = File.join(ENV['HOME'], "#{@artist} - #{@album}.zip")
74
+
75
+ counter = 0
76
+
77
+ unless File.exist? @outfile
78
+ Net::HTTP.start(host) do |http|
79
+ get_content_length @final_uri
80
+ @progress_bar = ProgressBar.new("Progress", @content_length)
81
+ File.open(@outfile, 'w') do |f|
82
+ http.read_timeout = 3
83
+ http.request_get(path) do |response|
84
+ response.read_body do |body|
85
+ f.write body
86
+ counter += body.length
87
+ @progress_bar.set counter
88
+ end
89
+ end
90
+ end
91
+ end
92
+ @progress_bar.finish
93
+ puts "Ok, Done."
94
+ else
95
+ Net::HTTP.start(host) do |http|
96
+ get_content_length @final_uri
97
+ @progress_bar = ProgressBar.new("Progress", @content_length)
98
+ fsize = File.size @outfile
99
+ counter += fsize
100
+ @progress_bar.set counter
101
+ while @content_length > File.size(@outfile) do
102
+ File.open(@outfile, 'a+') do |f|
103
+ partial_size = File.size(@outfile)
104
+ __range = Range.new(partial_size, @content_length)
105
+ __headers = {"Range" => "bytes=#{__range.first}-#{__range.last}"}
106
+ http.read_timeout = 3
107
+ http.request_get(path, __headers) do |response|
108
+ response.read_body do |body|
109
+ f.write body
110
+ counter += body.length
111
+ @progress_bar.set counter
112
+ end
113
+ end
114
+ end
115
+ end
68
116
  end
69
- rescue IOError
117
+ @progress_bar.finish
118
+ puts "Ok, Done."
70
119
  end
71
120
  end
72
121
 
@@ -77,7 +126,11 @@ module KgMusic
77
126
  end
78
127
 
79
128
  def download_album
80
- get_album
129
+ begin
130
+ get_album
131
+ rescue => e
132
+ puts e.message
133
+ end
81
134
  end
82
135
  end
83
136
  end
@@ -1,11 +1,11 @@
1
1
  require 'kgmusic/version'
2
- require 'unicode_utils/titlecase'
2
+ #require 'unicode_utils/titlecase'
3
3
  require 'rest-client'
4
4
  require 'nokogiri'
5
5
 
6
6
  module KgMusic
7
7
  module BaseMod
8
- include UnicodeUtils
8
+ #include UnicodeUtils
9
9
 
10
10
  UNALLOWED_SYMBOLS = [
11
11
  "`", "~", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", ",", "_", "=",
@@ -29,9 +29,8 @@ module KgMusic
29
29
  counter.size > 0 ? true : false
30
30
  end
31
31
 
32
- def strip_unallowed_symbols(key)
33
- UNALLOWED_SYMBOLS.map {|s| key.delete!(s)}
34
- key
32
+ def strip_unallowed_symbols!(key)
33
+ UNALLOWED_SYMBOLS.map! {|s| key.delete(s)}
35
34
  end
36
35
 
37
36
  def parse_html doc
@@ -39,13 +38,30 @@ module KgMusic
39
38
  end
40
39
 
41
40
  def validate(key)
42
- strip_unallowed_symbols(key) if has_unallowed_symbols?(key)
43
- words = key.split
44
- if words.size == 1
45
- key[0] =~ /^[[:lower:]]$/ ? titlecase(key) : key
46
- elsif words.size > 1
47
- words.map {|w| titlecase(w) unless (w[0].ord === w[0])}.join(" ")
41
+ strip_unallowed_symbols!(key) if has_unallowed_symbols?(key)
42
+ key
43
+ #words = key.split
44
+ #if words.size == 1
45
+ # key[0] =~ /^[[:lower:]]$/ ? titlecase(key) : key
46
+ #elsif words.size > 1
47
+ # words.map {|w| titlecase(w) unless (w[0].ord === w[0])}.join(" ")
48
+ #end
49
+ end
50
+
51
+ def uri_parse __uri
52
+ URI.parse __uri
53
+ end
54
+
55
+ def __head_request __url
56
+ uri = uri_parse __url
57
+ Net::HTTP.start(uri.host) do |http|
58
+ http.request_head(uri.path)
48
59
  end
49
60
  end
61
+
62
+ def get_content_length __uri
63
+ response = __head_request __uri
64
+ @content_length = response['content-length'].to_i
65
+ end
50
66
  end
51
67
  end
@@ -1,3 +1,3 @@
1
1
  module KgMusic
2
- VERSION = "0.1.0pre4"
2
+ VERSION = "0.1.0pre20160509"
3
3
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kgmusic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0pre4
4
+ version: 0.1.0pre20160509
5
5
  platform: ruby
6
6
  authors:
7
7
  - vitvegl
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-29 00:00:00.000000000 Z
11
+ date: 2016-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: unicode_utils
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '='
18
- - !ruby/object:Gem::Version
19
- version: 1.4.0
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - '='
25
- - !ruby/object:Gem::Version
26
- version: 1.4.0
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rest-client
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -64,6 +50,20 @@ dependencies:
64
50
  - - ">="
65
51
  - !ruby/object:Gem::Version
66
52
  version: 1.6.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: progressbar
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - '='
58
+ - !ruby/object:Gem::Version
59
+ version: 0.21.0
60
+ type: :runtime
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - '='
65
+ - !ruby/object:Gem::Version
66
+ version: 0.21.0
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: bundler
69
69
  requirement: !ruby/object:Gem::Requirement
@@ -145,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
145
  version: 1.3.1
146
146
  requirements: []
147
147
  rubyforge_project:
148
- rubygems_version: 2.5.1
148
+ rubygems_version: 2.6.4
149
149
  signing_key:
150
150
  specification_version: 4
151
151
  summary: Find music albums on kibergrad.fm