vk_music 3.1.6 → 3.1.7
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.lock +70 -70
- data/lib/vk_music/client.rb +34 -4
- data/lib/vk_music/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 49d94fb81d001d5d050d274f14ab6a3931467097adb46aa84601444fba4ac312
|
|
4
|
+
data.tar.gz: b8b6433c2373a1229bf5e27e31d8bc5c7d4ae01840b0620f99e715707ddc665e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ee9d28c4ef87b6fc12865ec267aeca8ddb24a9275c6c231f42fc68c6390b8fb9bfa8759f3d0f3b6f17e1d8e4ba8880b32976f987c0bde5edb4c1c3856a0a2ab1
|
|
7
|
+
data.tar.gz: 48451ee22f080a93a0d8fea4fbb468f1c45b97bc089dc87675663d602092ba2fb255826ef3b127129b7d6fe8855751ee6bc3869e0c59ccc8e5e4c413eb9be45d
|
data/Gemfile.lock
CHANGED
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
PATH
|
|
2
|
-
remote: .
|
|
3
|
-
specs:
|
|
4
|
-
vk_music (3.1.
|
|
5
|
-
execjs (~> 2.7)
|
|
6
|
-
json (~> 2.0)
|
|
7
|
-
logger (~> 1.4)
|
|
8
|
-
mechanize (~> 2.7)
|
|
9
|
-
net-http-persistent (= 2.9.4)
|
|
10
|
-
|
|
11
|
-
GEM
|
|
12
|
-
remote: https://rubygems.org/
|
|
13
|
-
specs:
|
|
14
|
-
coderay (1.1.3)
|
|
15
|
-
domain_name (0.5.20190701)
|
|
16
|
-
unf (>= 0.0.5, < 1.0.0)
|
|
17
|
-
execjs (2.7.0)
|
|
18
|
-
http-cookie (1.0.3)
|
|
19
|
-
domain_name (~> 0.5)
|
|
20
|
-
json (2.3.1)
|
|
21
|
-
logger (1.4.2)
|
|
22
|
-
mechanize (2.7.6)
|
|
23
|
-
domain_name (~> 0.5, >= 0.5.1)
|
|
24
|
-
http-cookie (~> 1.0)
|
|
25
|
-
mime-types (>= 1.17.2)
|
|
26
|
-
net-http-digest_auth (~> 1.1, >= 1.1.1)
|
|
27
|
-
net-http-persistent (>= 2.5.2)
|
|
28
|
-
nokogiri (~> 1.6)
|
|
29
|
-
ntlm-http (~> 0.1, >= 0.1.1)
|
|
30
|
-
webrobots (>= 0.0.9, < 0.2)
|
|
31
|
-
method_source (0.9.2)
|
|
32
|
-
mime-types (3.3.1)
|
|
33
|
-
mime-types-data (~> 3.2015)
|
|
34
|
-
mime-types-data (3.2020.0512)
|
|
35
|
-
mini_portile2 (2.4.0)
|
|
36
|
-
minitest (5.14.1)
|
|
37
|
-
net-http-digest_auth (1.4.1)
|
|
38
|
-
net-http-persistent (2.9.4)
|
|
39
|
-
nokogiri (1.10.10)
|
|
40
|
-
mini_portile2 (~> 2.4.0)
|
|
41
|
-
nokogiri (1.10.10-x64-mingw32)
|
|
42
|
-
mini_portile2 (~> 2.4.0)
|
|
43
|
-
ntlm-http (0.1.1)
|
|
44
|
-
pry (0.12.2)
|
|
45
|
-
coderay (~> 1.1.0)
|
|
46
|
-
method_source (~> 0.9.0)
|
|
47
|
-
rake (13.0.1)
|
|
48
|
-
unf (0.1.4)
|
|
49
|
-
unf_ext
|
|
50
|
-
unf_ext (0.0.7.7)
|
|
51
|
-
unf_ext (0.0.7.7-x64-mingw32)
|
|
52
|
-
webrobots (0.1.2)
|
|
53
|
-
yard (0.9.25)
|
|
54
|
-
|
|
55
|
-
PLATFORMS
|
|
56
|
-
ruby
|
|
57
|
-
x64-mingw32
|
|
58
|
-
|
|
59
|
-
DEPENDENCIES
|
|
60
|
-
bundler (~> 2.0)
|
|
61
|
-
logger (~> 1.4)
|
|
62
|
-
mechanize (~> 2.7)
|
|
63
|
-
minitest (~> 5.0)
|
|
64
|
-
pry (~> 0.12.2)
|
|
65
|
-
rake (~> 13.0)
|
|
66
|
-
vk_music!
|
|
67
|
-
yard (~> 0.9)
|
|
68
|
-
|
|
69
|
-
BUNDLED WITH
|
|
70
|
-
2.1.4
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
vk_music (3.1.7)
|
|
5
|
+
execjs (~> 2.7)
|
|
6
|
+
json (~> 2.0)
|
|
7
|
+
logger (~> 1.4)
|
|
8
|
+
mechanize (~> 2.7)
|
|
9
|
+
net-http-persistent (= 2.9.4)
|
|
10
|
+
|
|
11
|
+
GEM
|
|
12
|
+
remote: https://rubygems.org/
|
|
13
|
+
specs:
|
|
14
|
+
coderay (1.1.3)
|
|
15
|
+
domain_name (0.5.20190701)
|
|
16
|
+
unf (>= 0.0.5, < 1.0.0)
|
|
17
|
+
execjs (2.7.0)
|
|
18
|
+
http-cookie (1.0.3)
|
|
19
|
+
domain_name (~> 0.5)
|
|
20
|
+
json (2.3.1)
|
|
21
|
+
logger (1.4.2)
|
|
22
|
+
mechanize (2.7.6)
|
|
23
|
+
domain_name (~> 0.5, >= 0.5.1)
|
|
24
|
+
http-cookie (~> 1.0)
|
|
25
|
+
mime-types (>= 1.17.2)
|
|
26
|
+
net-http-digest_auth (~> 1.1, >= 1.1.1)
|
|
27
|
+
net-http-persistent (>= 2.5.2)
|
|
28
|
+
nokogiri (~> 1.6)
|
|
29
|
+
ntlm-http (~> 0.1, >= 0.1.1)
|
|
30
|
+
webrobots (>= 0.0.9, < 0.2)
|
|
31
|
+
method_source (0.9.2)
|
|
32
|
+
mime-types (3.3.1)
|
|
33
|
+
mime-types-data (~> 3.2015)
|
|
34
|
+
mime-types-data (3.2020.0512)
|
|
35
|
+
mini_portile2 (2.4.0)
|
|
36
|
+
minitest (5.14.1)
|
|
37
|
+
net-http-digest_auth (1.4.1)
|
|
38
|
+
net-http-persistent (2.9.4)
|
|
39
|
+
nokogiri (1.10.10)
|
|
40
|
+
mini_portile2 (~> 2.4.0)
|
|
41
|
+
nokogiri (1.10.10-x64-mingw32)
|
|
42
|
+
mini_portile2 (~> 2.4.0)
|
|
43
|
+
ntlm-http (0.1.1)
|
|
44
|
+
pry (0.12.2)
|
|
45
|
+
coderay (~> 1.1.0)
|
|
46
|
+
method_source (~> 0.9.0)
|
|
47
|
+
rake (13.0.1)
|
|
48
|
+
unf (0.1.4)
|
|
49
|
+
unf_ext
|
|
50
|
+
unf_ext (0.0.7.7)
|
|
51
|
+
unf_ext (0.0.7.7-x64-mingw32)
|
|
52
|
+
webrobots (0.1.2)
|
|
53
|
+
yard (0.9.25)
|
|
54
|
+
|
|
55
|
+
PLATFORMS
|
|
56
|
+
ruby
|
|
57
|
+
x64-mingw32
|
|
58
|
+
|
|
59
|
+
DEPENDENCIES
|
|
60
|
+
bundler (~> 2.0)
|
|
61
|
+
logger (~> 1.4)
|
|
62
|
+
mechanize (~> 2.7)
|
|
63
|
+
minitest (~> 5.0)
|
|
64
|
+
pry (~> 0.12.2)
|
|
65
|
+
rake (~> 13.0)
|
|
66
|
+
vk_music!
|
|
67
|
+
yard (~> 0.9)
|
|
68
|
+
|
|
69
|
+
BUNDLED WITH
|
|
70
|
+
2.1.4
|
data/lib/vk_music/client.rb
CHANGED
|
@@ -43,13 +43,12 @@ module VkMusic
|
|
|
43
43
|
def find(query = "", type: :audio)
|
|
44
44
|
raise ArgumentError if query.empty?
|
|
45
45
|
uri = URI(Constants::URL::VK[:audios])
|
|
46
|
+
search_page = load_ajax(uri, { "q" => query })
|
|
46
47
|
case type
|
|
47
48
|
when :audio
|
|
48
|
-
|
|
49
|
-
audios_from_page(uri)
|
|
49
|
+
audios_from_ajax(search_page)
|
|
50
50
|
when :playlist
|
|
51
|
-
|
|
52
|
-
urls = playlist_urls_from_page(uri)
|
|
51
|
+
urls = playlist_urls_from_page(search_page)
|
|
53
52
|
urls.map { |url| playlist(url: url, up_to: 0, use_web: false) }
|
|
54
53
|
else
|
|
55
54
|
raise ArgumentError
|
|
@@ -363,6 +362,23 @@ module VkMusic
|
|
|
363
362
|
raise Exceptions::ParseError, error.message, caller
|
|
364
363
|
end
|
|
365
364
|
end
|
|
365
|
+
##
|
|
366
|
+
# Load response to AJAX post request.
|
|
367
|
+
# @param url [String, URI]
|
|
368
|
+
# @return [Nokogiri::XML::Document]
|
|
369
|
+
def load_ajax(url, query = {})
|
|
370
|
+
uri = URI(url) if url.class != URI
|
|
371
|
+
query["_ajax"] = 1
|
|
372
|
+
headers = { "Content-Type" => "application/x-www-form-urlencoded", "x-requested-with" => "XMLHttpRequest" }
|
|
373
|
+
VkMusic.debug("Loading #{uri} with query #{query}")
|
|
374
|
+
begin
|
|
375
|
+
page = @agent.post(uri, query, headers)
|
|
376
|
+
str = JSON.parse(page.body.strip)["data"][2]
|
|
377
|
+
Nokogiri::XML("<body>#{CGI.unescapeElement(str)}</body>")
|
|
378
|
+
rescue
|
|
379
|
+
raise Exceptions::RequestError
|
|
380
|
+
end
|
|
381
|
+
end
|
|
366
382
|
|
|
367
383
|
##
|
|
368
384
|
# Load playlist web page.
|
|
@@ -458,6 +474,20 @@ module VkMusic
|
|
|
458
474
|
raise Exceptions::ParseError
|
|
459
475
|
end
|
|
460
476
|
end
|
|
477
|
+
##
|
|
478
|
+
# Load audios from AJAX data.
|
|
479
|
+
# @param page [Nokogiri::XML::Document]
|
|
480
|
+
# @return [Array<Audio>]
|
|
481
|
+
def audios_from_ajax(page)
|
|
482
|
+
begin
|
|
483
|
+
page.css(".audio_item.ai_has_btn").map do |elem|
|
|
484
|
+
data = JSON.parse(elem.attribute("data-audio"))
|
|
485
|
+
Audio.from_data(data, @id)
|
|
486
|
+
end
|
|
487
|
+
rescue
|
|
488
|
+
raise Exceptions::ParseError
|
|
489
|
+
end
|
|
490
|
+
end
|
|
461
491
|
|
|
462
492
|
##
|
|
463
493
|
# Load playlist through web page requests.
|
data/lib/vk_music/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: vk_music
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.1.
|
|
4
|
+
version: 3.1.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Fizvlad
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-11-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -186,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
186
186
|
- !ruby/object:Gem::Version
|
|
187
187
|
version: '0'
|
|
188
188
|
requirements: []
|
|
189
|
-
rubygems_version: 3.1.
|
|
189
|
+
rubygems_version: 3.1.4
|
|
190
190
|
signing_key:
|
|
191
191
|
specification_version: 4
|
|
192
192
|
summary: Provides interface to work with VK music via HTTP requests
|