Soundcloud API: поиск трека как даты через API

Я пробовал искать в переполнении стека, а также в справочнике по Soundcloud API, но не смог найти ответа. Я пытаюсь получить дату, когда пользователю понравилась песня в Soundcloud. Я попробовал две части API:

- / users / {id} / favourites: вернут все треки, которые понравились пользователю, но без даты, когда они понравились.

- / me / Activities: возвращает репосты, комментарии и, казалось бы, треки, которые отображаются в потоке. К сожалению, похоже, что это не трек-подобный тип, но, возможно, я здесь что-то делаю не так или мне нужно передать дополнительные параметры.

У меня есть пользовательский вход в Soundcloud перед использованием API.

Есть ли вероятность того, что кто-нибудь знает, возможно ли получить трек, например дату, через API? Спасибо!

2 ответа

Решение

С общедоступным API, доступным прямо сейчас, это невозможно.

Вы должны создать его самостоятельно и отслеживать изменения в другой, вашей собственной базе данных.

Пример звонка с веб-сайта, когда вы ищите понравившиеся записи, я не знаю, что вы увидите с учетной записью Pro:

https://api-v2.soundcloud.com/users/soundcloud:users:1672444/stats/timeseries/likes?from=1442016000000&to=1442534400000&resolution=day&tracks=soundcloud%3Atracks%3A30984358&client_id=02gUJC0hH2ct1EGOcYXQIzRFU91c72Ea&app_version=39e9f65

Отклик:

[{ "User_urn":"SoundCloud: пользователи:1672444","таймсерия":[{"время":1442016000000,"счетчик":1},{"время":1442534400000,"счетчик":1}]},{"user_urn":"SoundCloud: пользователи:1672444","track_urn":"SoundCloud: следы:30984358","таймсерии":[{"время":1442016000000,"считать":1},{"время":1442534400000,"считать":1}]}]

Вот и более старый, связанный ответ о статистике воспроизведения: Как получить статистику воспроизведения

Это какой-то код Python, который попадет в недокументированнуюtrack_likesконечная точка, которая покажет похожую дату:

      import requests
import json
import pdb
from collections import defaultdict
from datetime import datetime

def get_next_page(url):
    headers = {
        'Authorization': 'OAuth YOUR_OAUTH_TOKEN_HERE',
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...',
        'Accept': 'application/json, text/javascript, */*; q=0.01',
        'Accept-Language': 'en-US,en;q=0.9',
        'Connection': 'keep-alive',
        'Origin': 'https://soundcloud.com',
        'Referer': 'https://soundcloud.com/',
    }

    response = requests.get(url, headers=headers)
    data = response.json()
    return data.get('next_href'), data.get('collection', [])

def construct_buckets():
    url = "https://api-v2.soundcloud.com/users/YOUR_USER_ID/track_likes?client_id=YOUR_CLIENT_ID&limit=1000&offset=0&linked_partitioning=1&app_version=1689322736&app_locale=en"
    _, collection = get_next_page(url)

    buckets = defaultdict(list)
    cutoff_date = datetime.strptime('April 2021', '%B %Y')

    for item in collection:
        track = item['track']
        liked_at = datetime.strptime(item['created_at'], '%Y-%m-%dT%H:%M:%SZ')

        if liked_at < cutoff_date:
            continue

        liked_at_bucket = liked_at.strftime("%B %Y")

        buckets[liked_at_bucket].insert(0, track)
        print(f"Added track '{track['title']}' to bucket '{liked_at_bucket}'")

    return buckets

buckets = construct_buckets()
Другие вопросы по тегам