通过第三方API获取VK音乐

这次,在关闭execute方法中音频方法之后,业务开始了。


我决定看看提供下载功能的网站如何接收音乐。 我对网站vrit.me感兴趣。

我进入“网络”标签,看到了一个有趣的请求:

照片




也就是说,您可以伪造对该站点的POST请求,并将其用作vk音乐的API,我立即实现了该API:

import json,requests s = requests.post("https://vrit.me/data.php",data={ "method": "audio.get", "count": 1000000000, "offset": 0, "user_id":-52922518}) s = json.loads(s.text) print(s) 

结果,我收到以下答案:

 {'response': {'count': 2, 'items': [{'id': 456239018, 'owner_id': -52922518, 'artist': 'CORVUS', 'title': '  []', 'duration': 126, 'date': 1474194635, 'url': 'https://cs1-81v4.vkuseraudio.net/p18/894f30b49d3571.mp3?extra=5xovvbyqXrdr0Ixl9FLteg-pRRC29pGr_yO8mDgqNN_4kLlxJe1gHST8S8bVy2IQt0wYFAC1tMCnF7p5ujeB7K1jFPfYSCaEuxjh5P92VT81AMd9AlIJx2GQp613xHxCRbXCynv6fqdhFcPwvyZaRvg', 'lyrics_id': 370291093, 'genre_id': 18, 'is_licensed': True, 'is_hq': True, 'track_genre_id': 11, 'access_key': '7b762a5b22b452d0ca'}, {'id': 456239017, 'owner_id': -52922518, 'artist': 'CORVUS', 'title': '  []', 'duration': 132, 'date': 1470474699, 'url': 'https://cs1-81v4.vkuseraudio.net/p4/7f6c08b134e0a7.mp3?extra=MgBr8oDpO-7f2l_qmtHZGAMD608vcqWxA8OLNgcyZDdA8aVc2Jlj9bDW48FW8S5zDA9jO-geAEUaF_LvFUP_DFiGZEFo-5B92YhcMYMpyuvi6tFt_nO4QVwjJjNhG-Ln3dOfkC4KY2Cywk_attG5fSQ', 'lyrics_id': 370291112, 'genre_id': 18, 'is_licensed': True, 'is_hq': True, 'track_genre_id': 11, 'access_key': '8717a672801e7a15fa'}]}} 

但是! 因为 音频VK的任何链接都附加在计算机的IP地址上,



然后当我在电脑上打开它时,出现错误:



此外,我仍然决定查看如何在vrit.me网站本身上生成链接。 原来, 链接被替换为另一个链接,结果,输出为以下形式的链接

 https://vrit.me/download?artist= &title=&url=https://cs1-60v4.vkuseraudio.net/p20/6d11e54193b7e0.mp3?extra=CZi_FWKxxoYdOTg7Sz4cksgJ_l12bqsxH8wZFPRoN6t7qf4at_MDouTA6MDmsLiaoFrDJDswVzKozagVNVCskf3LiR3ry-JvP9WHgisWn7nq7BradXYcffgAlQH2VTWoTFDgpVwhdRZMUV6ATpr6KQ 



也就是说,我们只需要将接收到的链接输入另一个链接即可。 实现方式:

 for i in range(len(data["response"]["items"])): url = data["response"]["items"][i]["url"] title = data["response"]["items"][i]["title"] artist = data["response"]["items"][i]["artist"] data["response"]["items"][i]["url"] = "https://vrit.me/download?title={title}&artist={artist}&url={url}".format(url=url,title=title,artist=artist) 

其他带声音的方法


我还尝试了调用诸如“ audio.getById”,“ audio.search”,“ audio.getCount”,“ audio.getLyrics”,“ audio.getAlbums”之类的方法,但是其中只有一种可以工作于“ audio.search”,并且然后,您将无法搜索用户的音乐,这只能在全局搜索中进行。 代码:

 s = requests.post("https://vrit.me/data.php",data={ "method": "audio.search", "count": 3, "offset": 0, "q":q}) data = json.loads(s.text) if "response" in data: data = data["response"] for i in range(len(data["items"])): url = data["items"][i]["url"] title = data["items"][i]["title"] artist = data["items"][i]["artist"] data["items"][i]["url"] = "https://vrit.me/download?title={title}&artist={artist}&url={url}".format(url=url,title=title,artist=artist) 

最终代码
 import requests,json class audio(): def get(owner_id): s = requests.post("https://vrit.me/data.php",data={ "method": "audio.get", "count": 1000000000, "offset": 0, "user_id": owner_id}) data = json.loads(s.text) if "response" in data: data = data["response"] for i in range(len(data["items"])): url = data["items"][i]["url"] title = data["items"][i]["title"] artist = data["items"][i]["artist"] data["items"][i]["url"] = "https://vrit.me/download?title={title}&artist={artist}&url={url}".format( url=url, title=title,artist=artist) return data def search(q): s = requests.post("https://vrit.me/data.php",data={ "method": "audio.search", "count": 300, "offset": 0, "q":q}) data = json.loads(s.text) if "response" in data: data = data["response"] for i in range(len(data["items"])): url = data["items"][i]["url"] title = data["items"][i]["title"] artist = data["items"][i]["artist"] data["items"][i]["url"] = "https://vrit.me/download?title={title}&artist={artist}&url={url}".format( url=url, title=title,artist=artist) return data 


您可以像这样调用此类:

 import bot_vk#pip install bot_vk==1.7 info1 = bot_vk.audio.get(owner_id=1234567) info2 = bot_vk.audio.search(q="imagine dragons") 

PS:本文提供了一个从一个站点获取音乐的示例。 还有更多类似的站点,您也可以从这些站点创建“ API”。 该网站vrit.me很可能很快将不再有效,并且有必要使用其他网站。
注意! 这篇文章的作者不对您的任何行为负责。 此帖仅用于教育目的!

Source: https://habr.com/ru/post/zh-CN429942/


All Articles