В этой статье мы расскажем, как создать простой скрипт на Python, который будет собирать данные об онлайн-радиостанциях из открытых источников и воспроизводить их эфир прямо в терминале Linux. Мы будем использовать API RadioBrowser для получения списка радиостанций и утилиту mpv для воспроизведения потокового аудио.
Что понадобится:
- Linux-система (Ubuntu, Debian или любой дистрибутив).
- Python 3.
- Установленные пакеты:
requests(для работы с HTTP-запросами) иmpv(для воспроизведения аудио).
Шаг 1: Установка необходимых инструментов
Для начала установим все необходимые зависимости:
sudo apt update sudo apt install python3 python3-pip mpv
Теперь установим библиотеку requests, которая поможет нам работать с API:
pip3 install requests
Шаг 2: Создание скрипта
Создайте новый файл с именем radio_player.py и вставьте в него следующий код:
#!/usr/bin/env python3
import requests
import random
import subprocess
import sys
# Функция для получения списка радиостанций через API RadioBrowser
def get_radio_stations(limit=10):
url = f"https://de1.api.radio-browser.info/json/stations?limit={limit}"
try:
response = requests.get(url)
response.raise_for_status()
stations = response.json()
return stations
except requests.exceptions.RequestException as e:
print(f"Ошибка при получении данных: {e}")
sys.exit(1)
# Функция для воспроизведения потока с помощью mpv
def play_stream(stream_url):
try:
print(f"Воспроизводится: {stream_url}")
subprocess.run(["mpv", stream_url], check=True)
except subprocess.CalledProcessError as e:
print(f"Ошибка при воспроизведении: {e}")
sys.exit(1)
def main():
# Получаем список радиостанций
stations = get_radio_stations(limit=20) # Ограничим до 20 станций для быстродействия
if not stations:
print("Не удалось получить список радиостанций.")
sys.exit(1)
# Выводим список станций
print("Доступные радиостанции:")
for i, station in enumerate(stations):
print(f"{i + 1}. {station['name']} ({station['country']})")
# Выбираем случайную радиостанцию
random_station = random.choice(stations)
print(f"\nВыбрана случайная радиостанция: {random_station['name']} ({random_station['country']})")
# Получаем URL потока
stream_url = random_station.get('url_resolved', None)
if not stream_url:
print("URL потока недоступен.")
sys.exit(1)
# Воспроизводим поток
play_stream(stream_url)
if __name__ == "__main__":
main()
Шаг 3: Как работает скрипт?
1. Получение данных о радиостанциях:
— Скрипт отправляет запрос к API RadioBrowser, который предоставляет информацию о тысячах онлайн-радиостанций по всему миру. Мы ограничиваем количество станций до 20 для ускорения работы.
2. Случайный выбор радиостанции:
— Из полученного списка радиостанций выбирается одна случайная станция.
3. Воспроизведение потока:
— Для воспроизведения выбранного потока используется утилита mpv. Если вы предпочитаете использовать другой медиаплеер, например, vlc, замените "mpv" на "vlc" в вызове subprocess.run.
Шаг 4: Запуск скрипта
- Сохраните скрипт в файл, например,
radio_player.py. - Сделайте его исполняемым:
chmod +x radio_player.py
- Запустите скрипт:
./radio_player.py

Возможные улучшения
Этот скрипт можно расширить, добавив больше функциональности:
- Фильтрация по жанрам: Вы можете модифицировать запрос к API, чтобы фильтровать радиостанции по жанрам, странам или языкам.
- Ручной выбор радиостанции: Вместо случайного выбора можно позволить пользователю выбрать радиостанцию из списка.
- Использование других медиаплееров: Если вам не нравится
mpv, вы можете использовать другие медиаплееры, такие какvlcилиmplayer.
Заключение
Теперь вы знаете, как создать простой скрипт для прослушивания онлайн-радио в Linux. Этот проект можно легко адаптировать под свои нужды, добавив новые функции или изменив логику работы.