Obtén música VK a través de una API de terceros

Esta vez, el negocio comenzó después de cerrar los métodos de audio en el método de ejecución.


Decidí ver cómo los sitios que ofrecen la posibilidad de descargarlo reciben música. Estaba interesado en el sitio vrit.me.

Subí a la pestaña de red y vi una solicitud interesante:

foto




Es decir, puede falsificar una solicitud POST a este sitio y utilizarla como una API para música vk, que implementé de inmediato:

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) 

Como resultado, recibí la siguiente respuesta:

 {'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'}]}} 

PERO! porque cualquier enlace al audio VK se adjunta a la dirección IP de la computadora,



Luego, cuando lo abrí en mi PC, recibí un error:



Además, aún decidí ver cómo se genera el enlace en el sitio web vrit.me. Resultó que este enlace se sustituye por otro enlace y, como resultado, la salida es un enlace de la forma

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



Es decir, solo necesitamos ingresar el enlace recibido en otro enlace. Implementación

 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) 

Otros métodos con audio


También intenté llamar a métodos como "audio.getById", "audio.search", "audio.getCount", "audio.getLyrics", "audio.getAlbums", pero solo uno de ellos funciona "audio.search", y entonces, no puede buscar la música del usuario, solo es posible en la búsqueda global. Código:

 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) 

Código final
 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 


Puedes llamar a esta clase así:

 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") 

PD Este artículo presenta un ejemplo de cómo obtener música de uno de los sitios. Hay muchos más sitios similares desde los cuales también puede hacer una "API". Lo más probable es que el sitio vrit.me pronto deje de ser válido, y será necesario usar otros sitios.
ATENCION! El autor de esta publicación no es responsable de ninguna de sus acciones. ¡Esta publicación fue creada solo con fines educativos!

Source: https://habr.com/ru/post/es429942/


All Articles