9
февраля
2022
Консольный "облачный" плеер Tizonia - ключ к миру музыки и подкастов
14:08

Консольный "облачный" плеер Tizonia - ключ к миру музыки и подкастов

9 февраля 2022 14:08

Современный www перегружен рекламой, политикой, счётчиками, аналитикой, тизерными объявлениями и тяжелыми видео. Удачная попытка возвращения в 2020-2022 годам к корням Интернет (gopher, lynx, mosaik) - минималистский аудио плеер Tizonia для консоли Linux.

В чём преимущество tizonia - подключается к популярным сервисам

  • запускается из командной строки. Управление с клавиатуры (клавиши всегда быстрее мыши)
  • Spotify (лидер, около 25% рынка музыкального контента)
  • SoundCloud (есть поддержка учётной записи, личных предпочтений и плейлистов)
  • Tune-In (бесплатные музыкальные подкасты с наиболее актуальными музыкальными стилями и передачами, которые собирают миллионные аудитории слушателей - например, Armin Van Buuren "ASOT")
  • возможность поиска Интернет радиостанции на iHeart по песне или по произвольному слову или предложению
  • может выступать как сервер для передачи MP3 файлов по протоколу Icecast/SHOUTcast (сервер Интернет-радиостанции)
  • умеет воспроизводить звук с HTTP Интернет радиостанций: подключаться как клиент к серверу Icecast/SHOUTcast
  • может выступать кодировщиком на другое устройство Chromecast с указанным IP-адресом
  • GNU приложение с исходными кодами - можно собрать из исходных кодов, при желании, на Raspberry PI (сделать Интернет-радиоприёмник) или запустить Tizonia в контейнере Docker.
    Автором программы tizonia является программист Juan A. Rubio "juanrubio".

Удалось собрать и запустить Tizonia под Linux Ubuntu 20.04.3 LTS российской версии Runtu Lite.

Три способа установки Tizonia

1. Установка изолированного компонента "tizonia" с помощью менеджера пакетов snap.**

Установка snap, затем в нём tizonia
sudo apt install snapd
sudo ln -s /var/lib/snapd/snap /snap
sudo snap install tizonia

Данный способ нерабочий, так как приводит к следующим проблемам:

  • конфигурационный файл tizonia.conf находится в доступной только для чтения файловой системе snap (решается копированием файла tizonia.conf из папки snap в каталог ~/.config/tizonia рабочей папки пользователя
  • не решаемая проблема: ошибка player: OMX_ErrorInsufficientResources вызвана невозможностью получения из пакетов "snap" доступа к звуковой карте в некоторых дистрибутивах, о чем пишет разработчик.

2. Установка с помощью скрипта, который выполняется в интерпретаторе Shell.

Это рекомендованный способ установки tizonia для Debian и Ubuntu. Однако оказалось, что DEB-файлы для установки (репозиторий tizonia) находятся на сторонем сервере Bintray. То-ли срок хранения закончился, то-ли срок оплаты, но репозиторий tizonia на Bintray недоступен.

Можно загрузить и запустить скрипт с сервера github, хуже от этого не будет (установятся зависимости), но и пользы мало:

  • на заключительном этапе пакет tizonia-all не найден.
  • Также, в исходном тексте скрипта видно, что автор подстраивает установку к различным операционным системам, наиболее известным, таким как Debain "buster", Debian "bullseye". Очевидно, что все варианты ОС учесть нельзя, и в редких версиях Linux скрипт может оказаться неработоспособным.
    curl -kL https://github.com/tizonia/tizonia-openmax-il/raw/master/tools/install.sh > install.sh
    bash install.sh

или так:
curl -kL https://github.com/tizonia/tizonia-openmax-il/raw/master/tools/install.sh | bash

Этот путь ошибочный по причине недоступности репозитория на Bintray.

3. Компиляция и сборка приложения из исходных текстов программ.**

Это правильный путь, который опрадвал себя и работает. Кроме того, можно скомпилировать программу для любые операционные системы семейства Linux.

Порядок сборки плеера tizonia из исходных кодов:

Сборка из исходных кодов прошла успешна в операционной системе Runtu Lite (пакетная база Ubuntu 20.04 LTS). Рекомендую проводить компиляцию также в Ubuntu-подобных ОС, т.к. в Debian значительно больше проблем при сборке.

Первый способ компиляции Tizonia

1. Сменил версию интерпретатора python по умолчанию.

python -V

Если данная команда выдала версию 2.7.x (или ничего не показала), следует переключить python на версию 3.x:

установил python3 самой новой версии (и дополнительный пакет "python3-testresources" к нему):

sudo apt-get update
sudo apt install python3 python3-testresources

определил каталог установки:

whereis python3

в выводе программы надо глазами найти папку с упоминанием бинарного исполняемого файла (/bin/):

Например:
/usr/bin/python3.8

Переключил версию интерпретатора

sudo ln -sfn /usr/bin/python3.8 /usr/bin/python

Теперь команда python -V показала версию 3.8.

Более новая версия python 3.9 тоже подходит. Команда создания символьной ссылки:

sudo ln -sfn /usr/bin/python3.9 /usr/bin/python

2. Создал в домашней папке каталоги tizonia (рабочая папка назначения при сборке программы) и папку для файла конфигурации:

mkdir ~/tizonia
mkdir ~/.config/tizonia

3. Клонирование проект tizonia из git на локальный компьютер:

sudo apt-get install git
cd ~
git clone https://github.com/tizonia/tizonia-openmax-il

4. После этого переходим в папку 'tizonia-openmax-il', затем в папку tools:

cd ~/tizonia-openmax-il/tools

5. Выполняем компиляцию зависимостей

Сделал всё по инструкции автора:

export TIZONIA_REPO_DIR=/home/vladimir/tizonia-openmax-il/
export TIZONIA_INSTALL_DIR=/home/vladimir/tizonia
export PATH=$TIZONIA_REPO_DIR/tools:$PATH
export PYTHONPATH=$TIZONIA_INSTALL_DIR/lib/python3.8/site-packages:$PYTHONPATH

Примечание: в конкретной системе уточнить 3.8 или 3.9 при помощи python -V.

Дополнение: Перед началом компиляции нужно в систему добавить ключ 78FD980E271D2943 от репозитория archive@mopidy.com, т.к. иначе во время компиляции будет ошибка что источник не может быть проверен
(W: Ошибка GPG: https://apt.mopidy.com buster InRelease: Следующие подписи не могут быть проверены, так как недоступен открытый ключ: NO_PUBKEY 78FD980E271D2943
E: Репозиторий «https://apt.mopidy.com buster InRelease» не подписан.).

Поэтому перед компиляцией выполнил команду:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 78FD980E271D2943

В каталоге "~/tizonia-openmax-il/tools" выполняем скрипт для компиляции зависимостей:

bash tizonia-dev-build --deps

На SSD диске время компиляции небольшое (10 минут 30 секунд).

6. Установка libspotify
Библиотека libspotify исключена из большинства дистрибутивов как устаревшая (перемещена в архив).
Зависимость: libspotify >= 12.1.51.
К счастью, существуют простой способ установки libspotify при помощи пакета из архива Mopidy APT:

Добавляем команды

sudo wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/stretch.list
sudo apt-get update
sudo apt-get install libspotify12 libspotify-dev

7. Основной этап компиляции - всё из той же папки
~/tizonia-openmax-il/tools

До компиляции желательно установить ccache с целью ускорения процесса:

sudo apt install ccache

Запуск компиляции tizonia производится командой по инструкции:

cd ~/tizonia-openmax-il/tools
bash tizonia-dev-build --release --install

Время выполнения компиляции на быстром SSD диске значительное, составляет 45 минут и дольше.


Замечание: В некоторых дистрибутивах при компиляции основной программы (следующий шаг) может возникать ошибка "/usr/bin/ld: cannot find -lboost_python3". В таких ОС нужно установить пакет "libboost-python-dev" и создать символьную ссылку на библиотеку "libboost_python38.so". источник информации о способе решения:

Устанавливаем нужные для работы программы библиотеки "libboost-python-dev", "libboost-program-options" и "libboost-filesystem-dev", "libboost-thread-dev", "libmediainfo-dev", "libev-dev и liblog4c-dev":

sudo apt-get install libboost-python-dev libboost-program-options-dev libboost-filesystem-dev libboost-thread-dev libmediainfo-dev libev-dev liblog4c-dev

Ищем от пользователя root файл который может называться "libboost_python3":

su -
find / -name "libboost_python3*.*" -type f

будет найдена строка вида:

/usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0

или

/usr/lib/x86_64-linux-gnu/libboost_python39.so.1.74.0

теперь создаём мягкую символьную ссылку:

ln -s /usr/lib/x86_64-linux-gnu/libboost_python38.so.1.71.0 /usr/lib/libboost_python3.so

или

ln -s //usr/lib/x86_64-linux-gnu/libboost_python39.so.1.74.0 /usr/lib/libboost_python3.so

Обязательно выходим из сеанса root:

logout

Для работы программы нужны библиотеки python:

sudo apt-get install  python3-joblib python3-fuzzywuzzy

Выполняем под обычным пользователем компиляцию программы tizonia.

Теперь при компиляции ошибок выдаваться не должно.

Окончание компиляции следующее:
[code]CXX mpris/tizonia-tizmprismgr.o
CXX mpris/tizonia-tizmprisprops.o
CXX mpris/tizonia-tizmprisif.o
CXX services/iheart/tizonia-tiziheartgraph.o
CXX services/iheart/tizonia-tiziheartgraphops.o
CXX services/iheart/tizonia-tiziheartmgr.o
CXXLD tizonia
/usr/bin/mkdir -p '/home/vladimir/tizonia/bin'
/bin/bash ../libtool --mode=install /usr/bin/install -c tizonia '/home/vladimir/tizonia/bin'
libtool: install: /usr/bin/install -c .libs/tizonia /home/vladimir/tizonia/bin/tizonia


Elapsed time: 00:47:43[/code]

Второй способ компиляции программы Tizonia

Применяется в случае ошибки "No package 'libspotify' found" и невозможности установить пакет libspotify из архива mopidy.com.

checking for SPOTIFY... no
configure: error: Package requirements (libspotify >= 12.1.51) were not met:

No package 'libspotify' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables SPOTIFY_CFLAGS
and SPOTIFY_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
configure: error: ./configure failed for spotify_source
configure: error: ./configure failed for plugins

решается следующим образом:

cd ~/tizonia-openmax-il
autoreconf -ifs 
./configure --without-libspotify
make
make install

или одной командой:

cd ~/tizonia-openmax-il && autoreconf -ifs && ./configure --without-libspotify && make && make install

(Источник, инструкция)

Примечание от 20.04.2022: на этапе "make" под ОС Debian происходит "зависание" сборки с ростом потребления оперативной памяти свыше 10 Гбайт. На Ubuntu Linux рекомендую способ №1 (запуск ).

8. Готовый настроенный конфигурационный файл извлечь из архива и положить в каталог ~/.config/tizonia:
tizonia.conf.zip

В нём исправляем пути на свои (изменить имя пользователя):

# A comma-separated list of paths to be scanned by the Tizonia IL Core when
# searching for component plugins
component-paths = /home/vladimir/tizonia/lib/tizonia0-plugins12

Также проверяем и исправляем пусть к базе данных программы:

# This is the path to the Resource Manager database
rmdb = /home/vladimir/tizonia/share/tizrmd/tizrm.db

8. Запуск программы производить при подключенном Интернете:

/home/vladimir/tizonia/bin/tizonia --tunein-search bobina -b 3

где -b 3 - число секунд буферизации звука,
bobina - строка поиска.

Должно начаться воспроизведение на русском языке - шоу "Digital Emotions" от автора DJ Fonarev (Владимир Фонарёв):

bobina

Управление плеером:

n - следующий подкаст
p - предыдущий подкаст
вверх - увеличить громкость
вниз - уменьшить громкость и т.д.
пробел - остановить / возобновить музыку.

Полный список команд есть в описании здесь.

Проблемы и решения

Если плеер tizonia перестал работать, с ошибкой

tizonia 0.22.0. Copyright (C) 2020 Juan A. Rubio and contributors
This software is part of the Tizonia project <https://tizonia.org>

ModuleNotFoundError: No module named 'tiztuneinproxy'

tizonia exiting (OMX_ErrorInsufficientResources).

[OMX.Aratelia.audio_source.http:port:0]
[OMX_ErrorInsufficientResources]

Нужно выполнить указанные выше команды export перед вызовом программы.

Написал короткий скрипт "tizonia.sh", который нужно поместить в домашний каталог (~) пользователя и дать права на выполнение "chmod +x tizonia.sh":

#!/bin/sh
# Wrapper script for tizonia
export TIZONIA_INSTALL_DIR=/home/vladimir/tizonia
export PATH=$TIZONIA_REPO_DIR/tools:$PATH
export PYTHONPATH=$TIZONIA_INSTALL_DIR/lib/python3.8/site-packages:$PYTHONPATH

exec /home/vladimir/tizonia/bin/tizonia "$@"

solution

Запуск программы нужно выполнять через wrapper-скрипт следующим образом:

~/tizonia.sh --tunein-search ASOT -b 5

(Вместо "ASOT" подставляем ключевые слова для поиска подкаста).

Полный список подкастов на Tune-In:

https://tunein.com/podcasts/.

Использование tizonia для воспроизведения звука с Интернет-радиостанции

  1. Радиостанции можно найти здесь: https://directory.shoutcast.com/Search
  2. Воспроизведение звука с Интернет-радиостанции:

    ~/tizonia.sh http://81.92.237.83:80/eldo80s


Сборка клиента Spotify

Клиент Spotify для командной строки написан на языке программирования Rust другим разработчиком. Хотя клиент Spotify не имеет отношения к Tizonia, у них много общего - вызов из командной строки Мне удалось собрать клиента Spotify:

Энтузиаст создал проект на замену ей - https://github.com/librespot-org/librespot.

Порядок компиляции программы "LibreSpot":

cd ~
git clone https://github.com/librespot-org/librespot.git
sudo apt-get install build-essential libasound2-dev pkg-config
curl https://sh.rustup.rs -sSf | sh

Перезапуск окна терминала.

rustup component add rustfmt
rustup component add clippy
cd librespot/
cargo build --release --no-default-features --features "alsa-backend"


Похожие публикации