Soundcloud API: поиск трека как даты через API
Я пробовал искать в переполнении стека, а также в справочнике по Soundcloud API, но не смог найти ответа. Я пытаюсь получить дату, когда пользователю понравилась песня в Soundcloud. Я попробовал две части API:
- / users / {id} / favourites: вернут все треки, которые понравились пользователю, но без даты, когда они понравились.
- / me / Activities: возвращает репосты, комментарии и, казалось бы, треки, которые отображаются в потоке. К сожалению, похоже, что это не трек-подобный тип, но, возможно, я здесь что-то делаю не так или мне нужно передать дополнительные параметры.
У меня есть пользовательский вход в Soundcloud перед использованием API.
Есть ли вероятность того, что кто-нибудь знает, возможно ли получить трек, например дату, через API? Спасибо!
2 ответа
С общедоступным API, доступным прямо сейчас, это невозможно.
Вы должны создать его самостоятельно и отслеживать изменения в другой, вашей собственной базе данных.
Пример звонка с веб-сайта, когда вы ищите понравившиеся записи, я не знаю, что вы увидите с учетной записью Pro:
Отклик:
[{ "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()