19 ноября 2023

Установка в Linux и использование консольно-терминальной утилиты RADIOACTIVE - прослушивание и запись радио станций со всего мира

Консольно-терминальная утилита RADIOACTIVE - это отличный, мощный, простой инструмент для прослушивания и записи радио станций со всего мира прямо из вашего Терминала.
Простая навигация, понятные команды, отличное качество звука, регулируемая громкость трансляций радио-станций, добавление в Закладки, поиск станций по коду страны/штату (области)/тэгу/языку/названию станции и мн. другое...
Минимальное потребление ресурсов системы.
Работает во всех операционных системах (вкл. Windows) при установленных предварительно в них Python 3 и FFmpeg.
Невероятно огромная база радио-станций со всего мира на любой вкус...



СОДЕРЖАНИЕ СТАТЬИ:

Интерфейс утилиты
Установка

  Установка -> Установка дополнительных пакетов:

  Установка FFmpeg
  Установка pip

    Установка -> 2 (два) способа установки pip:

    Первый способ установки pip
    Второй способ установки pip
  Установка RADIOACTIVE

    Установка -> 2 (два) способа установки RADIOACTIVE:

    Первый способ установки RADIOACTIVE
    Второй способ установки RADIOACTIVE
Как это работает?
Аргументы
Синтаксис использования
Поиск по названию
Поиск станции по её UUID
Закладки/Избранное
Поиск по коду страны
Полезные ссылки


Интерфейс утилиты в Терминале (Ctrl+Alt+T) выглядит так:
- здесь скрин GNOME-Terminal в Arch Linux
- а это скрин GNOME-Terminal в Ubuntu


Итак приступим к Установке...

Прежде всего, чтобы RADIOACTIVE заработала, нам обязательно нужно установить (а может у вас уже установлено) дополнительно некоторые пакеты:
FFmpeg - набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровые аудио- и видеозаписи в различных форматах
(если у вас уже установлено, то просто пропустите этот шаг)

Открываем Терминал (Ctrl+Alt+T), вписываем следующую команду и жмём на Enter:
- в дистрибутивах на базе Debian (Debian, Ubuntu, Linux Mint, Kali Linux и пр...)
sudo apt install ffmpeg
или
sudo apt-get install ffmpeg

- в дистрибутивах на базе Arch Linux (Arch Linux, Manjaro, Ctlos Linux и пр...)
sudo pacman -S ffmpeg
или
(если установлен yay - вспомогательный инструмент Arch Linux AUR, написанный на Go. Помогает автоматически устанавливать пакеты из PKGBUILD)
yay -S ffmpeg

pip (тут имеется в виду pip3) - система управления пакетами для установки и управления программным обеспечением, написанным на языке программирования Python 3 (установлен по умолчанию во всех дистрибутивах Linux), работающая через командную строку
(если у вас уже установлено, то просто пропустите этот шаг)

Существует 2 способа установки pip:

1. Установка одним пакетом из репозитория Linux-дистрибутива

- в дистрибутивах на базе Debian (Debian, Ubuntu, Linux Mint, Kali Linux и пр...)
sudo apt install python3-pip
или
sudo apt-get install python3-pip

- в дистрибутивах на базе Arch Linux (Arch Linux, Manjaro, Ctlos Linux и пр...)
sudo pacman -S python-pip
или
(если установлен yay - вспомогательный инструмент Arch Linux AUR, написанный на Go. Помогает автоматически устанавливать пакеты из PKGBUILD)
yay -S python-pip

2. Ручное скачивание скрипта установки, его запуск на Установку, принудительное обновление pip и удаление отработавшего скрипта установки

Скачиваем скрипт установки pip через Терминал (Ctrl+Alt+T) и для этого вписываем следующую команду и жмём на Enter:
(для любого дистрибутива Linux)
wget https://bootstrap.pypa.io/get-pip.py

А теперь устанавливаем pip командой:
python get-pip.py
или
(если ругнётся на отказ в доступе)
sudo python get-pip.py


Далее для любых Linux-дистрибутивов.

Обязательно выполняем принудительное обновление pip командой:
(она же является командой принудительного обновления в будущем)
pip install --upgrade pip
или
(если ругнётся на отказ в доступе)
sudo pip install --upgrade pip

И вероятнее всего, после выполнения предыдущей команды принудительного обновления или попытки установить какой-либо пакет с помощью pip вы можете, а скорее всего столкнётесь с такой вот проблемой/ошибкой:
(опять же, если такой ошибки у вас не выдаст, то просто пропустите этот шаг и сразу переходите к установке RADIOACTIVE)
error: externally-managed-environment

Чтобы исправить эту ошибку выполняем поочерёдно следующие команды:

Это может понадобиться для дистрибутивов на базе Arch Linux (Arch Linux, Manjaro, Ctlos Linux и пр...), но не факт...
- создаём виртуальное окружение Python 3
python -m venv venv

Далее для всех дистрибутивов
- узнаём и запоминаем/записываем точную версию установленного по умолчанию в системе Python 3
python -V
и видим вывод с версией Python, что-то наподобие:
(нам нужна только комбинация из первой и двух после точки цифр. Конкретно здесь 3.11)
Python 3.11.5
- удаляем следующую секцию, вписав правильно в код версию, установленного в вашей системе Python 3:
sudo rm /usr/lib/python3.11/EXTERNALLY-MANAGED

И снова выполняем принудительное обновление pip командой:
pip install --upgrade pip
или
(если ругнётся на отказ в доступе)
sudo pip install --upgrade pip
и видим по выводу, что pip успешно обновился до самой последней версии:
Successfully installed pip-XX.X.X

Ну и, дабы не захламлять Домашнюю папку/каталог, после установки pip 2-м способом (установка скриптом), удаляем не нужный более нам скрипт установки pip, скачанный нами (он по умолчанию скачался именно в Домашнюю папку/каталог) командой:
rm get-pip.py


И теперь, после установки всех необходимых для работы RADIOACTIVE пакетов, мы можем смело переходить к его устанавке.

Также существует 2 способа установки RADIOACTIVE:

1. Установка рекомендованным автором RADIOACTIVE способом установки с помощью pipx - инструмент, позволяющий устанавливать «толстые» Python-пакеты сразу в отдельное Python-окружение, перенося при этом все точки входа (сценарии, приложения и т. п.) в:
~/.local/bin

- устанавливаем pipx поочерёдно командами:
(если у вас он уже установлен, то просто пропустите этот шаг)
python -m pip install --user pipx
python -m userpath append ~/.local/bin

- ну и устанавливаем RADIOACTIVE посредством pipx командой:
pipx install radio-active

Обновлять в будущем RADIOACTIVE посредством pipx можно командой:
pipx upgrade radio-active


2. Установка с помощью pip
(его - pip - мы с вами установили ранее или он у вас уже был установлен)

- устанавливаем RADIOACTIVE командой:
pip install --upgrade radio-active
или
pip3 install --upgrade radio-active

Если ругнётся на отказ в доступе
sudo pip install --upgrade radio-active
или
sudo pip3 install --upgrade radio-active

Все эти команды установки RADIOACTIVE являются и командами её обновления в будущем, о чём, при выходе очередного обновления, вам она всегда будет выводить уведомление/сигнализировать в выводе во время её работы.


Теперь ОБЯЗАТЕЛЬНО ПЕРЕЗАГРУЖАЕМ систему!!!


После перезагрузки системы мы можем приступать к прослушиванию наших любимых радио-станций/каналов в RADIOACTIVE.

Как это работает?

Т.к. данная утилита является консольно-терминальной, то для её работы нам естественно понадобится Терминал (Ctrl+Alt+T).
Открываем его, вводим следуюую команду, жмём на Enter:
radio
и видим его вывод, как на первых 2-х скринах данной статьи, что говорит об успешной установке и рабочем состоянии RADIOACTIVE.

Давайте сразу же выведим Справку (Help) RADIOACTIVE, чтобы ознакомиться с алгоритмом работы с данной утилитой, командой:
radio --help

В результате отработки данной команды мы получаем вот такой список применяемых в утилите параметров (команд)/аргументов (arguments):
Аргументы:
╭──────────────────────────────── RADIOACTIVE ─────────────────────────────────╮
│                                                                              │
│         📻 Play any radios around the globe right from this Terminal ⚡!     |
│         😄 Author: Dipankar Pal                                              │
│         ❓ Type '--help' for more details on available commands              │
│         🐛 Visit: https://github.com/deep5050/radio-active to submit issues  │
│         ⭐ Show some love by starring the project on GitHub ❤                │
│         💵 You can donate me at https://deep5050.github.io/payme/            │
│         ❌ Press Ctrl+C to quit                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
┏━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Arguments       ┃ Description                  ┃           Default           ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ --search, -S    │ A station name to search on  │                             │
│                 │ the internet                 │                             │
│ --uuid, -U      │ A station UUID to play it    │                             │
│                 │ directly                     │                             │
│ --country, -C   │ Discover stations by country │                             │
│                 │ code                         │                             │
│ --state         │ Discover stations by country │                             │
│                 │ state                        │                             │
│ --tag           │ Discover stations by         │                             │
│                 │ tags/genre                   │                             │
│ --language      │ Discover stations by         │                             │
│                 │ language                     │                             │
│ --play, -P      │ A station name from fav list │                             │
│                 │ or a stream url              │                             │
│ --last          │ Play last played station     │            False            │
│ --add, -A       │ Add a station to your        │            False            │
│                 │ favorite list                │                             │
│ --favorite, -F  │ Add current station to       │            False            │
│                 │ favorite list                │                             │
│ --list          │ Show your favorite list      │            False            │
│ --remove        │ Remove stations from         │            False            │
│                 │ favorite list                │                             │
│ --flush         │ Clear your favorite list     │            False            │
│ --limit, -L     │ Limit the number of station  │             100             │
│                 │ results                      │                             │
│ --sort          │ Sort the results page, see   │         clickcount          │
│                 │ documentation                │                             │
│ --volume, -V    │ Volume of the radio between  │             80              │
│                 │ 0 and 100                    │                             │
│ --record, -R    │ Record current stations      │            False            │
│                 │ audio                        │                             │
│ --filepath      │ Path to save the recorded    │ /home/fin/Music/radioactive │
│                 │ audio                        │                             │
│ --filename, -N  │ Filename to save the         │     <station-date@time>     │
│                 │ recorded audio               │                             │
│ --filetype, -T  │ Type/codec of target         │             mp3             │
│                 │ recording. (mp3/auto)        │                             │
│ --kill, -K      │ Stop background radios       │            False            │
│ --loglevel      │ Log level of the program:    │            info             │
│                 │ info,warning,error,debug     │                             │
└─────────────────┴──────────────────────────────┴─────────────────────────────┘
For more details : https://github.com/deep5050/radio-active/blob/main/README.md
В шапке (как правило она появляется всегда при каких-либо маниупляциях с утилитой) вывода аргументов общая информация об утилите, её авторе, адресе на GitHub-е, конечно просьбе о донате и о двух самых нужных и используемых командах:
radio --help - вызов Справки
и
Ctrl+C - выход из утилиты/приложения


А теперь переведём этот список на наш Могучий, Родной, Русский язык:

    --search, -S — поиск станции по имени
    --uuid, -U — прямое воспроизведение станции по её UUID
    --country, -C — поиск станций по региону страны
    --state — поиск станций по тегу/жанру
    --language — поиск станций по языку
    --play, -P — воспроизведение по названию станции из списка избранных (Закладки) или URL-адрес потока
    --add, -A — добавление станции в Закладки по названию
    --favorite, -F — добавление текущей, прослушиваемой станции в Закладки
    --list — показ/отображение вашего листа станций в Закладках
    --remove — удаление станции из Закладок
    --flush — очистка вашего листа Закладок от всех сохранённых в него станций
    --limit, -L — лимит количества отображаемых по поиску станций (по умолчанию 100)
    --sort — сортировка итоговой страницы, смотреть ниже синтаксис использования
    --volume, -V — громкоксть воспроизведения радио-станции между 0 и 100 (по умолчанию 80)
    --record, -R — запись текущей, прослушиваемой станции в аудио-файл
    --filepath — путь для сохранения аудио-файла текущей, прослушиваемой станции
    (например в /home/user/Музыка/radioactive. Вместо user - ваше имя Пользователя)
    --filename, -N — имя сохраняемого/записываемого аудио-файла (например название_станции-дата@время)
    --filetype, -T — тип/формат/кодек записываемого аудио-файла (по умолчанию mp3)
    --kill, -K — остановка всех станций в фоновом звучании
    --loglevel — режима логирования утилиты: info (информация), warning (предупреждение), error (ошибка), debug (отладка)
    (по умолчанию info (информация))

И для полного понимания, как всем этим пользоваться, синтаксис использования всех этих аргументов/команд:
usage: radio-active [--version] [--help] [--search SEARCH_STATION_NAME]
                    [--play DIRECT_PLAY] [--last] [--uuid SEARCH_STATION_UUID]
                    [--loglevel LOG_LEVEL] [--country DISCOVER_COUNTRY_CODE]
                    [--tag DISCOVER_TAG] [--state DISCOVER_STATE]
                    [--language DISCOVER_LANGUAGE] [--limit LIMIT]
                    [--sort STATIONS_SORT_BY] [--add]
                    [--favorite ADD_TO_FAVORITE] [--list] [--remove] [--flush]
                    [--volume {0,10,20,30,40,50,60,70,80,90,100}] [--kill]
                    [--record] [--filepath RECORD_FILE_PATH]
                    [--filename RECORD_FILE] [--filetype RECORD_FILE_FORMAT]
  

И давайте разберём подробно неокторые из наиболее часто-используемых аргументов/команд.

Например, давайте найдём станцию Ретро ФМ и для этого воспользуемся аргументом/командой --search, -S.
Вводим такую команду и жмём на Enter:
radio --search Ретро
или
radio -S Ретро

и видим такой вывод с результатом поиска по названию станции:
Поиск по названию:
╭──────────────────────────────── RADIOACTIVE ─────────────────────────────────╮
│                                                                              │
│         📻 Play any radios around the globe right from this Terminal ⚡!     │
│         😄 Author: Dipankar Pal                                              │
│         ❓ Type '--help' for more details on available commands              │
│         🐛 Visit: https://github.com/deep5050/radio-active to submit issues  │
│         ⭐ Show some love by starring the project on GitHub ❤                │
│         💵 You can donate me at https://deep5050.github.io/payme/            │
│         ❌ Press Ctrl+C to quit                                              │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
┏━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ID ┃ Station                ┃ Country               ┃ Tags                   ┃
┡━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 1  │ радио ретро сан ремо   │ The Russian           │ myzic                  │
│    │                        │ Federati...           │                        │
│ 2  │ радио ретро сан ремо   │ The Russian           │ myzic                  │
│    │                        │ Federati...           │                        │
│ 3  │ Радио Ретроклуб        │ The Russian           │ retro,talk             │
│    │                        │ Federati...           │                        │
│ 4  │ Ретро                  │ Ukraine               │ pop                    │
│ 5  │ Ретро FM               │ The Russian           │ classic                │
│    │                        │ Federati...           │ hits,moscow,...        │
│ 6  │ Ретро FM — Вечеринка   │ The Russian           │ disco,pop,retro        │
│    │                        │ Federati...           │                        │
│ 7  │ РЕТРО FM 320k          │ The Russian           │ pop                    │
│    │                        │ Federati...           │                        │
│ 8  │ Ретро FM 70e           │ The Russian           │                        │
│    │                        │ Federati...           │                        │
│ 9  │ Ретро FM 70e           │ The Russian           │ 70s                    │
│    │                        │ Federati...           │                        │
│ 10 │ Ретро FM 90e           │ The Russian           │ 90s                    │
│    │                        │ Federati...           │                        │
│ 11 │ Ретро FM ВЛ            │ Afghanistan           │ classical              │
│ 12 │ Ретро FM Рига (Retro   │ Latvia                │ classic hits,hits      │
│    │ FM)                    │                       │                        │
│ 13 │ Ретро FM               │ The Russian           │ disco,pop,rock         │
│    │ Санкт-Петербург (128   │ Federati...           │                        │
│    │ ...                    │                       │                        │
│ 14 │ Ретро ФМ               │ The Russian           │                        │
│    │                        │ Federati...           │                        │
│ 15 │ Ретро Хит              │ The Russian           │ misc                   │
│    │                        │ Federati...           │                        │
│ 16 │ Ретро Хит              │ The Russian           │                        │
│    │                        │ Federati...           │                        │
│ 17 │ РЕТРО ХИТ - RETRO HIT  │ The Russian           │ adult,amg,gold,pop,r.… │
│    │                        │ Federati...           │                        │
│ 18 │ РетроФМ                │ The Russian           │                        │
│    │                        │ Federati...           │                        │
└────┴────────────────────────┴───────────────────────┴────────────────────────┘
      i     | Type 'r' to play a random station
Type the result ID to play:
  
Сразу под списком мы видим информационную строку, что если нажать на клавиатуре на клавишу/букву - r, то тогда будет рандомно (случайным выбором) проигрываться весь этот список найденных станций, в названиях которых присутствует слово Ретро.

Но т.к. нам нужна конкретная станция, то как раз последняя строка под списком нам предлагат ввести/напечатать - ID (номер станции из левой колонки - ID списка результата поиска), что мы с вами и сделаем, выбрав например из этогой колонки списка ID (номер) - 5 (станция Ретро FM).
Вписываем его и жмём на Enter.

Результатом этого будет начавшаяся трансляция и прослушивание данной радио-станции:

Под названием прослушиваемой станции Ретро FM мы видим информационную строку:
      i     | Press '?' to see available commands
говорящую нам, что если мы на клавиатуре нажмём на клавишу/букву - ? (знак вопроса), то мы увидим список доступрых команд для управления разными функциями с прослушиваемой станцией.

Вписываем/вводим этот знак - ? (знак вопроса), жмём на Enter и видим список доступных команд:
      i     | t/track: Current track info
      i     | i/info: Station information
      i     | r/record: Record a station
      i     | rf/recordfile: Specify a filename for the recording
      i     | f/fav: Add station to favorite list
      i     | h/help/?: Show this help message
      i     | q/quit: Quit radioactive
  
    t/track: Current track info — информация о текущем трэке/песне
    i/info: Station information — информация о прослушиваемой станции
    r/record: Record a station — записать прослушиваемую станцию
    rf/recordfile: Specify a filename for the recording — указать имя файла для записей
    f/fav: Add station to favorite list — добавить станцие в Закладки
    h/help/?: Show this help message — показать это сообщение со списком команд
    q/quit: Quit radioactive — выйти из RADIOACTIVE

Давайте воспользуемся одной из команд, а конкретнее воспользуемся командой - f (добавление станции в Закладки).
Вписываем/вводим эту букву f и жмём на Enter и видим информационную строку, говорящую нам, что станция успешно добавлена в Закладки:
Теперь воспользуемся командой - i (информация о прослушиваемой станции).
Вписываем/вводим букву i и жмём на Enter и видим список разного рода информации о прослушиваемой станции:

Выходим из RADIOACTIVE вписав/введя q и жмём на Enter:

Теперь попробуем осуществить поиск станции по её UUID и для этого вписываем/вводим следующую команду (после U делаем пробел):
radio -U

И теперь воспользуемся информацией из 2-й (второй) строки:
'uuid': '964fade0-0601-11e8-ae97-52543be04c81'

А именно нам нужна конкретно эта запись:
964fade0-0601-11e8-ae97-52543be04c81 без кавычек - это UUID станции

Копируем (выделяем мышкой и по нажатию по выделенному ЛКМ в выпавшем меню жмём на Копировать) её и вставляем (ПКМ и в выпавшем меню на Вставить) её после U через пробел, чтобы у нас получилось так, как на скрине и жмём на Enter:
radio -U 964fade0-0601-11e8-ae97-52543be04c81



И в результате видим, что поиск по UUID станции успешно осущетвился и станция звучит и прослушивается:


И на последок, т.к. мы добавили нашу станцию (вероятно вы добавите не одну...) в Закладки/Избранное, то при каждом старте RADIOACTIVE командой:
radio
мы будем первым получать вывод со списком добавленных нами в Закладки/Избранное станций и последней прослушанной станции где просто можно стрелками Вверх ⬆|▲ / Вниз ⬇|▼ на клавиатуре выбрать нужное и нажать на Enter тем самым начав прослушивать любимую станцию, выбранную из списка Закладки/Избранное:


Осуществить поиск по коду страны можно так:
radio -C ru -L 2000

В этой команде мы выставили лимит по кол-ву станций в 2000.
Объясню почему...

Дело в том, что опытным путём было установлено, что кол-во российских станций в базе утилиты чуть меньше 2000 и следовательно, выставив такой лимит, вы гарантированно получите полный список российских станций.
Ну и по умолчанию лимит в утилите в 100 станций, т.е. если лимит не указывать, то максимальное кол-во вам выдаст вывод только в 100 станций, а их около 2000...

Единственное неудобство состоит в том, что листать в Терминале такой огромный список не совсем удобно и поэтому я предлагаю вам просто записать его в файл и использовать его в будущем для выбора ID (номера) станции, открыв данный файл в любом текстовом редакторе.

Чтобы записать результат поиска по стране в файл выполняем следующую команду:
(этой же командой всегда можно обновить список)
radio -C ru -L 2000 > Документы/list-ru

И теперь всегда можно открыть этот файлик и выбрать нужное из списка...

Т.е. осуществили поиск по стране с лимитом, в заранее открытом файле находите нужную станцию, запоминаете его или копируете, возвращаетесь в Терминал и вписываете/вводите её ID (номер) и жмёте на Enter.

И наслаждаетесь прослушиванием любимой станции.


Полезные ссылки.

Ссылка на GitHub проекта:
Посмотреть

Прекрасный видео-обзор и инструкция (только на Английском! Пользуйтесь русскими субтитрами):



В принципе и всё.

Главное - Не бойтесь!
Эксперементируйте с аргументами/командами и у вас всё получится!


Всем удачи и приятного пользования!

P.S. Если у вас появились вопросы или мнения по данной статье, обсудить их можно на нашем форуме:

5 комментариев :

  1. спасибо Владимир..очень познавательно,пишу под му зыку ретро https://2.bp.blogspot.com/_ebKrCj8TLPk/TMnmvZ7w_HI/AAAAAAAAA2k/Dz7p2b5PSBQ/s1600/podmignut-smailik.gif

    ОтветитьУдалить
  2. " python -m pip install --user pipx
    python -m userpath append ~/.local/bin "

    У меня терминал ругнулся, что вместо «python -m ...» надо «python3 -m...» ; с python3 pipx без ошибок установился.
    LM 21.2x86_64

    ОтветитьУдалить
    Ответы
    1. У вас ещё в системе не установлен ли и python 2 и сделан по умолчанию?
      У меня в 23.04, 22.04, в Arch Linux работает python -m...
      В них по умолчанию python 3.
      Но у меня есть и python2 (я его руками устанавлилвал), но по умолчанию у меня именно python 3 и естественно, что команда python, что и команда python3 вызывают именно 3-го питона.
      А, чтобы работать со 2-м, то уже надо указывать принудительно python2.

      Удалить
    2. Владимир, вряд ли: поиск в Synaptic «python2» нашёл только неустановленные пакеты. Я написал больше для того, что может кому-нибудь пригодится.
      Большое спасибо за руководство, всё работает; станции на заблокированных ресурсах — через VPN, иначе просто закрывается утилита. Но это — совсем другая история...

      Удалить
    3. За замечание спасибо, я добавлю в статью.
      Уточните, какой у вас дистр?

      Удалить

Если у Вас появились вопросы или мнения, вы можете задать или оставить их здесь.
Спам и флуд будут жёстко караться вечной блокировкой их оставляющих!



If You have any questions or opinions about, just leave'em here.
Spamers & flooders will be blocked forever!!!