File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -49,7 +49,7 @@ def main():
4949 print ('\n Search for ' , most_common )
5050 tracks = vkaudio .search (q = most_common )
5151 for n , track in enumerate (tracks [:10 ]):
52- print ('{}. {}' .format (n + 1 , track ['title' ]))
52+ print ('{}. {}\n URL: {} ' .format (n + 1 , track ['title' ], track [ 'url ' ]))
5353
5454if __name__ == '__main__' :
5555 main ()
Original file line number Diff line number Diff line change 1+ # -*- coding: utf-8 -*-
12from bs4 import BeautifulSoup
23import re
4+ from .vk_audio_decoder import decode
35from .exceptions import AccessDenied
46
57RE_VALUE = re .compile (r'>(.*?)<' )
@@ -46,9 +48,12 @@ def scrap_data(html):
4648 for audio in soup .find_all ("div" , {"class" : "audio_item ai_has_btn" }):
4749 ai_artist = audio .select ('.ai_artist' )
4850 artist = ai_artist [0 ].text
51+ link = audio .select ('.ai_body' )[0 ].input ['value' ]
52+ url = decode (link )
4953 data = {'artist' : artist ,
5054 'title' : value (audio .select ('.ai_title' )),
5155 'dur' : value (audio .select ('.ai_dur' ), duration = True ),
52- 'id' : audio ['id' ]}
56+ 'id' : audio ['id' ],
57+ 'url' : url }
5358 songs .append (data )
5459 return songs
Original file line number Diff line number Diff line change 1+ # -*- coding: utf-8 -*-
2+ vk_str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN0PQRSTUVWXYZO123456789+/="
3+
4+
5+ def decode (string ):
6+ vals = string .split ("?extra=" )[1 ].split ("#" )
7+ tstr = vk_o (vals [0 ])
8+ ops = vk_o (vals [1 ])
9+ ops_arr = ops .split (chr (9 ))
10+ llen = len (ops_arr )
11+ i = llen - 1
12+ while i >= 0 :
13+ args_arr = ops_arr [i ].split (chr (11 ))
14+ op_ind = args_arr .pop (0 )
15+ if op_ind == 'v' :
16+ tstr = vk_v (tstr )
17+ elif op_ind == 'r' :
18+ tstr = vk_r (tstr , args_arr [0 ])
19+ elif op_ind == 'x' :
20+ tstr = vk_x (tstr , args_arr [0 ])
21+ i -= 1
22+ return tstr
23+
24+
25+ def vk_o (string ):
26+ global vk_str
27+ llen = len (string )
28+ result = ""
29+ s = 0
30+ index2 = 0
31+ while s < llen :
32+ sym_index = vk_str .find (string [s ])
33+ if sym_index != - 1 :
34+ if index2 % 4 != 0 :
35+ i = (i << 6 ) + sym_index
36+ else :
37+ i = sym_index
38+ if index2 % 4 != 0 :
39+ index2 += 1
40+ shift = - 2 * index2 & 6
41+ result += chr (0xFF & (i >> shift ))
42+ else :
43+ index2 += 1
44+ s += 1
45+ return result
46+
47+
48+ def vk_v (string ):
49+ return string [::- 1 ]
50+
51+
52+ def vk_r (string , i ):
53+ global vk_str
54+ vk_str2 = vk_str + vk_str
55+ vk_str2_len = len (vk_str2 )
56+ llen = len (string )
57+ result = ""
58+ s = 0
59+ while s < llen :
60+ index = vk_str2 .find (string [s ])
61+ if index != - 1 :
62+ offset = index - int (i )
63+ if offset < 0 :
64+ offset += vk_str2_len
65+ result += vk_str2 [offset ]
66+ else :
67+ result += string [s ]
68+ s += 1
69+ return result
70+
71+
72+ def vk_x (string , i ):
73+ xor_val = ord (i [0 ])
74+ str_len = len (string )
75+ result = ""
76+ i = 0
77+ while i < str_len :
78+ result += chr (ord (string [i ]) ^ xor_val )
79+ i += 1
80+ return result
You can’t perform that action at this time.
0 commit comments