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 +4 -4
- data/Gemfile +2 -1
- data/kgmusic.gemspec +2 -1
- data/lib/kgmusic.rb +64 -11
- data/lib/kgmusic/basemod.rb +27 -11
- data/lib/kgmusic/version.rb +1 -1
- metadata +17 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68d83609da57a5345ed4495de570a8bad9b753e2
|
4
|
+
data.tar.gz: a8c5eadffc0386bd494f1f0888eb5f1e2c50736a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5497d4f10b77b737dd778b0ea94346fe8902b7e2470181ce8b63d29ae1343210921de8120598e6b42a854cedbe5b4bcfa25bb7f09f2faa853ee01e2334ec9b59
|
7
|
+
data.tar.gz: 4cadfde95394b8924378812c69354f4944e47876092bf35889605e8a9c412eb3d836b63825563480654fea7f7512f8c90adc7a43ffab502203f712964f67dfa3
|
data/Gemfile
CHANGED
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
|
59
|
-
@archive = "#{@artist} - #{@album}.zip"
|
59
|
+
def obtain_final_url
|
60
60
|
begin
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
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
|
-
|
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
|
-
|
129
|
+
begin
|
130
|
+
get_album
|
131
|
+
rescue => e
|
132
|
+
puts e.message
|
133
|
+
end
|
81
134
|
end
|
82
135
|
end
|
83
136
|
end
|
data/lib/kgmusic/basemod.rb
CHANGED
@@ -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
|
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
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
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
|
data/lib/kgmusic/version.rb
CHANGED
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.
|
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-
|
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.
|
148
|
+
rubygems_version: 2.6.4
|
149
149
|
signing_key:
|
150
150
|
specification_version: 4
|
151
151
|
summary: Find music albums on kibergrad.fm
|