Отримуємо музику вк через сторонній API

В цей раз справа починалося після закриття методів audio в метод execute.

Я вирішив подивитися, як отримують музику сайти, які надають можливість її завантажити. Мене зацікавив сайт vrit.me.

Я заліз у вкладку network і побачив цікавий запит:

фото

Тобто, можна підробити POST запит до цього сайту, і використовувати його, як API для музики vk, що я відразу і реалізував:

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': 'Осіннє сум'яття [ЗС]', 'тривалість': 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': 'Записки божевільних [ЗС]', 'тривалість': 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'}]}}

АЛЕ! оскільки будь-яке посилання на аудіо вк прив’язується до 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")

УВАГА! Автор цього поста не несе відповідальності за будь-які Ваші дії. Цей пост створений тільки з ознайомлювальними цілями!

Читайте також  Замаскований під програміста бот виправляє помилки в коді

Степан Лютий

Обожнюю технології в сучасному світі. Хоча частенько і замислююся над тим, як далеко вони нас заведуть. Не те, щоб я прям і знаюся на ядрах, пікселях, коллайдерах і інших парсеках. Просто приходжу в захват від того, що може в творчому пориві вигадати людський розум.

You may also like...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *