Spotify Has a Free API — Search Tracks, Get Audio Features, and Build Playlists Programmatically

від

у

Spotify має безкоштовний API — пошук треків, отримання аудіоособливостей та створення плейлістів програмно

https://ift.tt/8pfSzZT

Spotify має понад 100 мільйонів треків. І їх API безкоштовний, добре документований і надзвичайно потужний.

Ви можете шукати треки, аналізувати аудіоособливості (танцювальність, енергія, темп), отримувати дані про виконавців і навіть створювати плейлісти — все програмно.

Ось як це зробити.

Крок 1: Отримайте свої облікові дані API (2 хвилини)

  1. Перейдіть на developer.spotify.com/dashboard
  2. Створіть застосунок (будь-яку назву)
  3. Скопіюйте ваш Client ID та Client Secret

Крок 2: Отримайте токен доступу

import requests
import base64

CLIENT_ID = 'your_client_id'
CLIENT_SECRET = 'your_client_secret'

# Отримати токен
auth_string = base64.b64encode(f'{CLIENT_ID}:{CLIENT_SECRET}'.encode()).decode()
response = requests.post('https://accounts.spotify.com/api/token', 
    headers={'Authorization': f'Basic {auth_string}'},
    data={'grant_type': 'client_credentials'}
)
token = response.json()['access_token']
headers = {'Authorization': f'Bearer ?{token}'}

Цей токен діє 1 годину. Для пошуку та публічних даних входу користувача не потрібно.

Пошук треків

def search_tracks(query, limit=5):
    response = requests.get('https://api.spotify.com/v1/search', 
        headers=headers,
        params={'q': query, 'type': 'track', 'limit': limit}
    )
    tracks = response.json()['tracks']['items']
    return [{
        'name': t['name'],
        'artist': t['artists'][0]['name'],
        'album': t['album']['name'],
        'popularity': t['popularity'],
        'preview_url': t['preview_url'],
        'spotify_url': t['external_urls']['spotify']
    } for t in tracks]

results = search_tracks('lofi hip hop')
for track in results:
    print(f"{track['name']}{track['artist']} (popularity: {track['popularity']})")

Отримати аудіоособливості (класна частина)

Spotify аналізує кожен трек і надає такі властивості, як:

def get_audio_features(track_id):
    response = requests.get(
        f'https://api.spotify.com/v1/audio-features/{track_id}',
        headers=headers
    )
    features = response.json()
    return {
        'danceability': features['danceability'],  # 0.0 до 1.0
        'energy': features['energy'],              # 0.0 до 1.0
        'tempo': features['tempo'],                # BPM
        'valence': features['valence'],            # 0.0 (сумний) до 1.0 (щасливий)
        'acousticness': features['acousticness'],  # 0.0 до 1.0
        'instrumentalness': features['instrumentalness']
    }

Реальний приклад використання: я створив генератор плейлістів за настроєм. Користувач обирає «енергетичний» або «розслаблений», і застосунок фільтрує треки за оцінками енергії та валентності.

Отримати топ-треки артиста

def get_artist_top_tracks(artist_id, market='US'):
    response = requests.get(
        f'https://api.spotify.com/v1/artists/{artist_id}/top-tracks',
        headers=headers,
        params={'market': market}
    )
    return [{
        'name': t['name'],
        'popularity': t['popularity']
    } for t in response.json()['tracks'][:5]]

Отримати рекомендації

def get_recommendations(seed_tracks, limit=10):
    response = requests.get('https://api.spotify.com/v1/recommendations',
        headers=headers,
        params={
            'seed_tracks': ','.join(seed_tracks[:5]),
            'limit': limit,
            'target_energy': 0.8,
            'target_danceability': 0.7
        }
    )
    return [{
        'name': t['name'],
        'artist': t['artists'][0]['name']
    } for t in response.json()['tracks']]

Можна встановлювати цілі для будь-якої аудіоособливості — знаходити треки з конкретним BPM, енергією або настроєм.

Що ви можете створити

  1. Генератор плейлістів за настроєм — фільтрація за валентністю та енергією
  2. Інструмент відкриття музики — знаходити схожі треки за допомогою API рекомендацій
  3. Допомога діджея — знаходити треки з певним BPM для плавних переходів
  4. Аналітична панель — візуалізація ваших звичок прослуховування
  5. Конструктор плейлістів для тренувань — тільки треки з високою енергією та високим BPM

Обмеження API

  • Безкоштовний тариф: без жорсткого ліміту, але Spotify може обмежувати приблизно до 100 запитів за 30 секунд
  • Потік облікових даних клієнта: доступ до всіх відкритих даних (без даних користувача)
  • Потік аутентифікації користувача: доступ до приватних плейлістів, історії прослуховування, збережених треків

Що б ви побудували з API Spotify?

Я завжди шукаю креативні ідеї для проектів. Чи ви щось будували з музичних даних? А може є функція Spotify, якої вам не вистачає? Напишіть у коментарях.

Я пишу про безкоштовні API, автоматизацію на Python та інструменти для розробників. Підписуйтеся для щотижневих відкриттів.

Більше API: 8 безкоштовних API, які дійсно корисні | ARXIV API Guide

HI-FI News

через DEV Community: javascript https://ift.tt/9aq0gIZ

26 березня 2026 р. о 12:05 ранку

March 26, 2026 at 12:05AM