Internet Radio Music DB

Other

База данных интернет-радио потоков — сбор, хранение и управление базой музыкальных потоков с internet-radio.com. ~2000+ потоков, 29 жанров, автоматическое наполнение и проверка доступности. Работает совместно с скиллом Internet Radio Music Player — используйте их вместе для полноценного воспроизведения интернет-радио.

Install

openclaw skills install internet-radio-music-db

Internet Radio Music DB — База музыкальных потоков (интернет-радио)

Скилл для сбора и управления базой интернет-радио потоков.

Источник данных

https://www.internet-radio.com/ — крупнейший каталог интернет-радиостанций.

Как работает наполнение базы

  1. Параллельный сбор станций — 29 потоков одновременно (по одному на жанр), парсинг всех доступных страниц жанров (/stations/{genre}/) до 15 страниц на жанр, остановка при пустой странице (~2000+ станций)
  2. Извлечение плейлистов — из каждой станции извлекается ссылка на .pls плейлист
  3. Разрешение URL — из плейлиста формируется прямой URL потока (http://server:port/stream)
  4. Проверка скорости — параллельная проверка всех новых потоков (60 воркеров), скачивание 4 секунд, критерий ≥50 KB и ≥20 KB/s
  5. Сохранение — данные сохраняются в state.json

Проверка доступности

  • Параллельная проверка всех потоков (120 воркеров)
  • Потоки с failed_checks >= 3 автоматически удаляются
  • Критерий: ≥100 KB за 8 сек и ≥20 KB/s

Формат записи потока

{
  "url": "http://server:8000/stream",
  "name": "Station Name",
  "genre": "rock",
  "language": "en",
  "available": true,
  "source": "internet-radio.com",
  "station_url": "https://www.internet-radio.com/station/xxx/",
  "bitrate": 128,
  "listeners": 42,
  "audio_type": "mpeg",
  "genres": ["classic rock", "blues"],
  "added_at": "2026-05-23T18:00:00+00:00",
  "last_checked": "2026-05-23T19:00:00+00:00",
  "failed_checks": 0
}

Команды

# Наполнить базу (параллельно по 29 жанрам, ~2000+ потоков)
python ~/.openclaw/skills/internet-radio-music-db/scripts/build_db.py

# Проверить доступность всех потоков (120 воркеров)
python ~/.openclaw/skills/internet-radio-music-db/scripts/check_availability.py

# Показать статистику по базе (жанры, языки, скорость, топ)
python ~/.openclaw/skills/internet-radio-music-db/scripts/show_stats.py

# Статистика по жанрам (топ-10)
python ~/.openclaw/skills/internet-radio-music-db/scripts/show_stats.py --genres --top 10

# Распределение по языкам
python ~/.openclaw/skills/internet-radio-music-db/scripts/show_stats.py --lang

# Распределение по скорости
python ~/.openclaw/skills/internet-radio-music-db/scripts/show_stats.py --speed

# Топ-10 самых быстрых потоков
python ~/.openclaw/skills/internet-radio-music-db/scripts/show_stats.py --top-speed 10

# Список потоков (по жанру)
python ~/.openclaw/skills/internet-radio-music-db/scripts/cli.py list rock

# Добавить поток вручную
python ~/.openclaw/skills/internet-radio-music-db/scripts/cli.py add <url> <name> <genre> [lang]

# Удалить поток
python ~/.openclaw/skills/internet-radio-music-db/scripts/cli.py remove <url>

# Экспорт базы в JSON
python ~/.openclaw/skills/internet-radio-music-db/scripts/cli.py export backup.json

Файлы

ФайлНазначение
scripts/build_db.pyОсновной скрипт наполнения базы
scripts/check_availability.pyПериодическая проверка доступности (не удаляет потоки!)
scripts/cli.pyУправление потоками (list/add/remove/export)
scripts/show_stats.pyСтатистика по базе (жанры, языки, скорость, топ)
state.jsonБаза данных потоков (JSON)

Периодические задачи

  • Наполнение базы — каждые 3 часа (cron 0 */3 * * *)
  • Проверка доступности — запускать через heartbeat или cron

Особенности

  • При проверке доступности недоступные потоки отмечаются available: false, счётчик failed_checks увеличивается
  • Потоки с failed_checks >= 3 автоматически удаляются из базы
  • Первичная проверка скорости — все новые потоки (60 воркеров, 4 сек)
  • Язык определяется по ключевым словам в названии станции
  • Поддержка ~29 жанров, до 15 страниц на жанр