Wir erhalten Vk-Musik über eine Drittanbieter-API

    Diesmal wurde es gestartet, nachdem die Audiomethoden in der Ausführungsmethode geschlossen wurden .


    Ich entschied mich zu sehen, wie die Sites, die Musik bereitstellen, heruntergeladen werden können. Ich war an der Website vrit.me interessiert.

    Ich kletterte in den Netzwerk-Tab und sah eine interessante Frage:

    Foto




    Das heißt, Sie können eine POST-Anfrage an diese Site fälschen und als API für Music vk verwenden, die ich sofort implementierte:

    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)
    

    Als Ergebnis erhielt ich die folgende Antwort:

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

    ABER! weil Jeder Link zum Audio ist mit der IP-Adresse des Computers verbunden.



    Als ich ihn auf meinem PC öffnete, erhielt ich eine Fehlermeldung:



    Dann habe ich beschlossen, zu sehen, wie der Link auf der vrit.me-Website selbst generiert wird. Es stellte sich heraus, dass dieser Link in einen anderen Link eingesetzt wird und die Ausgabe somit ein Link des Formulars ist

    https://vrit.me/download?artist=Егор Крид&title=ЭТОМОЕ&url=https://cs1-60v4.vkuseraudio.net/p20/6d11e54193b7e0.mp3?extra=CZi_FWKxxoYdOTg7Sz4cksgJ_l12bqsxH8wZFPRoN6t7qf4at_MDouTA6MDmsLiaoFrDJDswVzKozagVNVCskf3LiR3ry-JvP9WHgisWn7nq7BradXYcffgAlQH2VTWoTFDgpVwhdRZMUV6ATpr6KQ



    Das heißt, wir brauchen nur den resultierenden Link, um in einen anderen Link einzutreten. Umsetzung:

    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)
    

    Andere Methoden mit Audio


    Ich habe auch versucht, solche Methoden wie "audio.getById", "audio.search", "audio.getCount", "audio.getLyrics", "audio.getAlbums" aufzurufen, aber nur eine davon funktioniert "audio.search" und Sie können die Musik nicht nur nach Benutzern suchen, sondern nur in der globalen Suche. Code:

    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)

    Endgültiger Code
    import requests,json
    classaudio():defget(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
        defsearch(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


    Sie können diese Klasse folgendermaßen aufrufen:

    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 Dieser Artikel enthält ein Beispiel für den Empfang von Musik von einer der Sites. Es gibt viele weitere ähnliche Websites, auf denen Sie auch eine "API" erstellen können. Höchstwahrscheinlich wird die Website vrit.me bald ungültig und Sie müssen andere Websites verwenden.
    ACHTUNG! Der Autor dieses Beitrags ist für keine Ihrer Handlungen verantwortlich. Dieser Beitrag dient nur zu Informationszwecken!

    Jetzt auch beliebt: