Клиент Spotify для терминала, написанный на Rust.
Терминал в приведенной выше демонстрации использует тему Rigel.
Spotify TUI
Домашнее пиво
Щелчок
АУР
Никс
Пустота Linux
Федора/CentOS
Груз
Окна
Руководство
Примечание по Linux
Совок-установщик
Установка
Подключение к API Spotify
Использование
Конфигурация
Требования высокого уровня еще не реализованы
Подсистема Windows для Linux
Ограничения
Использование со Spotifyd
Используемые библиотеки
Разработка
Авторы
Дорожная карта
Бинарный исполняемый файл — spt
.
Как для macOS, так и для Linux
заварить установку Spotify-Tui
Чтобы обновить, запустите
обновление Spotify-Tui
Для системы с установленным Snap запустите
моментальная установка spt
Стабильная версия будет установлена автоматически.
Если вы хотите установить ночную сборку, запустите
оснастка установки spt --edge
Те, кто использует Arch Linux, могут найти пакет на AUR здесь. Однако, если вы используете помощник AUR, вы можете установить его непосредственно из него, например (в случае yay), запустите
ура -S Spotify-Tui
Доступен в виде пакета spotify-tui
. Для установки запустите:
nix-env -iA nixpkgs.spotify-tui
Где nixpkgs
— имя канала в вашей конфигурации. Для более актуальной установки используйте нестабильный канал. Также можно добавить пакет в environment.systemPackages
(для NixOS) или home.packages
при использовании home-manager.
Доступно в официальных репозиториях. Для установки запустите
sudo xbps-install -Su Spotify-Tui
Доступен в репозиториях Copr. Для установки запустите
sudo dnf copr включить atim/spotify-tui -y && sudo dnf install Spotify-tui
Используйте этот вариант, если ваша архитектура не поддерживается предварительно созданными двоичными файлами, которые можно найти на странице выпусков.
Сначала установите Rust (используя рекомендуемый метод установки rustup
), а затем
грузовая установка Spotify-Tui
Этот метод создаст двоичный файл из исходного кода.
Для обновления выполните ту же команду еще раз.
Для компиляции в Linux требуются пакеты разработки для libssl
. Основные инструкции по установке см. в разделе Установка OpenSSL. Чтобы найти зависимости, компиляция также требует установки pkg-config
.
Если вы используете подсистему Windows для Linux, вам потребуется установить дополнительные зависимости.
Во-первых, убедитесь, что установщик Scoop установлен на вашем компьютере с Windows. Инструкции см. на сайте scoop.sh.
Затем откройте PowerShell и выполните следующие две команды:
ведро с совком добавить ведро с совком https://github.com/Rigellute/scoop-bucket совок установить Spotify-Tui
После этого программа доступна как: spt
или spt.exe
Загрузите последнюю версию двоичного файла для вашей ОС.
cd
к файлу, который вы только что скачали, и разархивируйте
cd
в spotify-tui
и запустите его с помощью ./spt
spotify-tui
необходимо подключиться к API Spotify, чтобы находить музыку по названию, воспроизводить треки и т. д.
Инструкции по настройке будут показаны при первом запуске приложения.
Но вот они снова:
Перейдите на панель управления Spotify
Нажмите Create an app
Теперь вы можете увидеть свой Client ID
и Client Secret
Теперь нажмите Edit Settings
Добавьте http://localhost:8888/callback
в URI перенаправления.
Прокрутите вниз и нажмите « Save
Теперь вы готовы пройти аутентификацию в Spotify!
Вернитесь к терминалу
Запустить spt
Введите свой Client ID
Введите свой Client Secret
Нажмите Enter, чтобы подтвердить порт по умолчанию (8888), или введите собственный порт.
Вы будете перенаправлены на официальную веб-страницу Spotify, чтобы запросить разрешения.
После принятия разрешений вы будете перенаправлены на локальный хост. Если все пойдет хорошо, URL-адрес перенаправления будет проанализирован автоматически, и все готово. Если по какой-то причине локальный веб-сервер выйдет из строя, вы будете перенаправлены на пустую веб-страницу, на которой может быть написано что-то вроде «Соединение отклонено», поскольку ни один сервер не работает. В любом случае скопируйте URL-адрес и вставьте его в командную строку терминала.
И теперь вы готовы использовать spotify-tui
?
Вы можете редактировать конфигурацию в любое время по адресу ${HOME}/.config/spotify-tui/client.yml
. (для оснастки ${HOME}/snap/spt/current/.config/spotify-tui/client.yml
)
Бинарный файл называется spt
.
Запуск spt
без аргументов вызовет пользовательский интерфейс. Нажимать ?
для вызова меню справки, в котором показаны реализованные в данный момент ключевые события и их действия. Существует также интерфейс командной строки, который может делать большую часть того, что делает пользовательский интерфейс. Используйте spt --help
чтобы узнать больше.
Вот несколько примеров, которые вас порадуют.
spt --completions zsh # Prints shell completions for zsh to stdout (bash, power-shell and more are supported) spt play --name "Your Playlist" --playlist --random # Plays a random song from "Your Playlist" spt play --name "A cool song" --track # Plays 'A cool song' spt playback --like --shuffle # Likes the current song and toggles shuffle mode spt playback --toggle # Plays/pauses the current playback spt list --liked --limit 50 # See your liked songs (50 is the max limit) # Looks for 'An even cooler song' and gives you the '{name} from {album}' of up to 30 matches spt search "An even cooler song" --tracks --format "%t from %b" --limit 30
Файл конфигурации находится по адресу ${HOME}/.config/spotify-tui/config.yml
, для snap ${HOME}/snap/spt/current/.config/spotify-tui/config.yml
(не путать). с client.yml, который обрабатывает аутентификацию Spotify)
Ниже приведен пример файла config.yml:
# Пример файла конфигурации # Цвета темы могут быть строкой RGB в форме «255, 255, 255» или строкой, которая ссылается на цвета из темы вашего терминала: Сброс, Черный, Красный, Зеленый, Желтый, Синий, Пурпурный, Голубой. , Серый, Темно-Серый, Светло-Красный, Светло-Зеленый, Светло-Желтый, Светло-Синий, Светло-Пурпурный, Светло-Голубой, Белый.тема: активна: Голубой # текущая воспроизводимая песня в списке баннер: LightCyan # баннер «spotify-tui» при запуске error_border: Красная # граница диалогового окна ошибки error_text: LightRed # текст сообщения об ошибке (например, «Spotify API сообщил об ошибке 404») подсказка: Желтый # текст подсказки в ошибках при наведении: Пурпурный # граница панели при наведении неактивно: серые # границы неактивных панелей. playbar_background: Черный # фон индикатора выполнения playbar_progress: LightCyan # заполненная часть индикатора выполнения playbar_progress_text: Голубой # длина песни и время воспроизведения/оставшийся индикатор на индикаторе выполнения playbar_text: Белый # имя исполнителя на панели проигрывателя выбрано: LightCyan # а) граница выбранной панели, б) наведенный элемент в списке и в) заголовок дорожки в плеере text: "255, 255, 255" # текст на панелях заголовок: белый # текст заголовка на панелях (например, «Название», «Исполнитель» и т. д.) поведение: Seek_milliсекунды: 5000 объем_инкремент: 10 # Чем меньше число, тем выше количество кадров в секунду. Вы можете уменьшить это число, чтобы аудиовизуализация была более плавной, но это может быть дорого! Ticket_rate_milliсекунды: 250 # Включить выделение текста (обычно курсив/жирный шрифт). Отключение этого параметра может быть важно, если конфигурация терминала иным образом ограничена, а отрисовка экранированных символов мешает работе пользовательского интерфейса. Enable_text_emphasis: правда # Определяет, показывать ли индикатор загрузки в правом верхнем углу пользовательского интерфейса при взаимодействии с API Spotify. show_loading_indicator: правда # Отключает адаптивный макет, который делает панель поиска меньше при увеличении # экранирует и обеспечивает широкую панель поиска Enforce_wide_search_bar: ложь # Определяет текстовый значок, который будет отображаться рядом с «понравившимися» элементами Spotify, например # понравились песни и альбомы или подписались на исполнителей. Может быть строкой любой длины. # Для этих значков требуется исправленный шрифт Nerd. понравился_значок: ♥ shuffle_icon: ? повтор_трек_иконка: ? повтор_контекст_значок: ? play_icon: ▶ пауза_значок: ⏸ # Устанавливает заголовок окна «spt — Spotify TUI» с помощью escape-кода ANSI. set_window_title: truekeybindings: # Нажатие клавиши можно использовать, если используются только две клавиши: # ctrl-q работает, # ctrl-alt-q нет. назад: «ctrl-q» jump_to_album: "а" # Модификаторы Shift используют заглавную букву (также применимо и к другим клавишам-модификаторам). # например Ctrl-A) jump_to_artist_album: "А" manage_devices: "д" уменьшение_объема: "-" увеличения_объема: "+" toggle_playback: " " search_backwards: "<" search_forwards: ">" next_track: "н" previous_track: "п" copy_song_url: "с" copy_album_url: "С" помощь: "?" перетасовать: «ctrl-s» повторите: «р» поиск: "/" audio_anaанализ: "в" jump_to_context: "о" Basic_view: "Б" add_item_to_queue: "z"
Это приложение использует веб-API от Spotify, который сам по себе не поддерживает потоковую передачу. Таким образом, вам понадобится либо официальный открытый клиент Spotify, либо более легкая альтернатива, такая как Spotifyd.
Если вы хотите воспроизводить треки, Spotify требует, чтобы у вас была премиум-учетная запись.
Следуйте документации Spotify для настройки.
После этого в этом нет ничего особенного.
Запустите демон Spotifyd.
spt
Нажмите d
, чтобы перейти в меню выбора устройства, и указанное «устройство» должно быть там — если нет, проверьте эти документы.
туи-рс
rspotify
Установить OpenSSL
Установить Руст
Установите xorg-dev
(требуется для поддержки буфера обмена)
Клонируйте или разветвите этот репозиторий и cd
к нему.
И затем cargo run
Вы можете получить ошибку связывания. Если это так, вам, вероятно, потребуется установить дополнительные зависимости, необходимые для пакета буфера обмена.
sudo apt-get install -y -qq pkg-config libssl-dev libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev
Спасибо этим замечательным людям (ключ смайлика):
Александр Келирис ? ? ? ? ? ? | Микаэль Маркес ? | Гжегож Копервас | Остин Гассерт | Кален Робинетт | М*К*О ? | Эндрю Чин |
Сэм Насер | Миша | нериглиссар | Тимон | эхоСайонара | Д-Ницца ? | Гжегож Павлик |
Леннарт Бернхардт | Арно Лефевр | тем1029 | Питер К. Мосс | Джефф Шеннон | Закари Мэйхью | Джфалтис |
Марсель Шрамм | Фанги Чжоу | Макс | Свен ван дер Влист | Джейкоб Крисмарш | Нильс Раух | Ник Стоктон ? ? |
Стюарт Хинсон | Сэм Калверт | Йерун Видженберг | Кимберли Кук | Одри Бакстер | Норман | Питер Маатман |
АлександрС | Финн Вос | Карлос Эрнандес ? | Педро Алвес | jtagcat | Бенджамин Китор | Алеш Найманн ? |
Джереми Стаки | (´⌣`ʃƪ) | Артем Полищук ? | Крис Соснин | Бен Бузе | Шон Ли | ТимотиГербер |
Фердинанд Ратайчак | Шил Чокси | Майкл Хеллвиг | Оливер Дэниел | Дрю Фишер | энкодер-1 | Макгуайр Ринтул |
Рикардо Ольгин | Кейсуке Тойота | Крейг Эстилл | Ониэльфа | УСРМЕ | Сергей А. | Хидеюки Окада |
кепае | Эрико Ногейра Ролим | Александр Мейнхардт Шерер | Ондржей Киншт | Крян90 | н-иванов | bi1yeu |
Может | Бруно А. Мучиньо | Финн Хедигер | дп304 | Марко Мичера | Марко Йени ? | Артур Ковач |
Энтони Келлерманн | Расмус Педерсен | нуар-Z | Дэвид Бэйли | овчарня | Что это было | Джесси |
Санг | Юки Такахаши | Алехандро Ангуло | Антон Костин | Джастин Секстон | Цзяти Ле | Мэтью Коббинг |
Майло ? | Диего Вералли | Майя Боярска |
Этот проект соответствует спецификации всех участников. Любой вклад приветствуется!
Цель состоит в том, чтобы в конечном итоге реализовать почти все функции Spotify.
Добавить песни в плейлист
Возможность прокручивать страницы результатов в каждом представлении.
В этой таблице показано все, что возможно с помощью Spotify API, что уже реализовано и важно ли это.
API-метод | Уже реализовано? | Объяснение | Существенный? |
---|---|---|---|
отслеживать | Нет | возвращает одну дорожку с учетом ее идентификатора, URI или URL-адреса. | Нет |
треки | Нет | возвращает список треков, учитывая список идентификаторов треков, URI или URL-адресов | Нет |
художник | Нет | возвращает одного исполнителя с учетом его идентификатора, URI или URL-адреса. | Да |
художники | Нет | возвращает список исполнителей с учетом их идентификаторов, URI или URL-адресов. | Нет |
Artist_albums | Да | Получите информацию из каталога Spotify об альбомах исполнителя. | Да |
Artist_top_tracks | Да | Получите информацию из каталога Spotify о 10 лучших треках исполнителя по странам. | Да |
Artist_related_artists | Да | Получите информацию из каталога Spotify об исполнителях, похожих на определенного исполнителя. Сходство основано на анализе истории прослушивания сообщества Spotify. | Да |
альбом | Да | возвращает один альбом с учетом его идентификатора, URI или URL-адреса. | Да |
альбомы | Нет | возвращает список альбомов с учетом идентификаторов альбомов, URI или URL-адресов | Нет |
поиск_альбома | Да | Поиск альбома по запросу | Да |
search_artist | Да | Поиск исполнителя по запросу | Да |
search_track | Да | Поиск трека по запросу | Да |
search_playlist | Да | Поиск плейлиста по запросу | Да |
альбом_трек | Да | Получите информацию из каталога Spotify о треках альбома. | Да |
пользователь | Нет | Получает базовую информацию о профиле пользователя Spotify. | Нет |
список воспроизведения | Да | Получите полную информацию о плейлисте Spotify | Да |
current_user_playlists | Да | Получайте плейлисты текущего пользователя без необходимости получения его профиля. | Да |
user_playlists | Нет | Получает плейлисты пользователя | Нет |
user_playlist | Нет | Получает плейлист пользователя | Нет |
user_playlist_tracks | Да | Получите полную информацию о треках плейлиста, принадлежащего пользователю. | Да |
user_playlist_create | Нет | Создает список воспроизведения для пользователя | Да |
user_playlist_change_detail | Нет | Изменяет имя плейлиста и/или общедоступный/частный статус. | Да |
user_playlist_unfollow | Да | Отменяет подписку (удаляет) плейлист для пользователя | Да |
user_playlist_add_track | Нет | Добавляет треки в плейлист | Да |
user_playlist_replace_track | Нет | Заменить все треки в плейлисте | Нет |
user_playlist_recorder_tracks | Нет | Изменение порядка треков в плейлисте | Нет |
user_playlist_remove_all_occurrences_of_track | Нет | Удаляет все вхождения данных треков из данного списка воспроизведения. | Нет |
user_playlist_remove_специфические_occurrenes_of_track | Нет | Удаляет все вхождения данных треков из данного списка воспроизведения. | Нет |
user_playlist_follow_playlist | Да | Добавьте текущего аутентифицированного пользователя в качестве подписчика плейлиста. | Да |
user_playlist_check_follow | Нет | Проверьте, следуют ли данные пользователи данному плейлисту. | Да |
мне | Нет | Получите подробную информацию о профиле текущего пользователя. | Да |
текущий_пользователь | Нет | псевдоним для me | Да |
current_user_playing_track | Да | Получите информацию о текущих пользователях, воспроизводящих трек. | Да |
current_user_saved_albums | Да | Получает список альбомов, сохраненных в библиотеке «Ваша музыка» текущего авторизованного пользователя. | Да |
current_user_saved_tracks | Да | Получает сохраненные треки пользователя или «Понравившиеся песни». | Да |
current_user_followed_artists | Да | Получает список исполнителей, за которыми следит текущий авторизованный пользователь. | Да |
current_user_saved_tracks_delete | Да | Удалите одну или несколько дорожек из библиотеки «Ваша музыка» текущего пользователя. | Да |
current_user_saved_tracks_contain | Нет | Проверьте, сохранены ли уже один или несколько треков в библиотеке «Ваша музыка» текущего пользователя Spotify. | Да |
current_user_saved_tracks_add | Да | Сохраните один или несколько треков в библиотеке «Ваша музыка» текущего пользователя. | Да |
current_user_top_artists | Нет | Получите лучших исполнителей текущего пользователя | Да |
current_user_top_tracks | Нет | Получить лучшие треки текущего пользователя | Да |
current_user_recently_played | Да | Получить недавно воспроизведенные треки текущего пользователя | Да |
current_user_saved_albums_add | Да | Добавьте один или несколько альбомов в библиотеку «Ваша музыка» текущего пользователя. | Да |
current_user_saved_albums_delete | Да | Удалите один или несколько альбомов из библиотеки «Ваша музыка» текущего пользователя. | Да |
user_follow_artists | Да | Подпишитесь на одного или нескольких исполнителей | Да |
user_unfollow_artists | Да | Отписаться от одного или нескольких исполнителей | Да |
user_follow_users | Нет | Следуйте за одним или несколькими пользователями | Нет |
user_unfollow_users | Нет | Отписаться от одного или нескольких пользователей | Нет |
Featured_playlists | Нет | Получите список избранных плейлистов Spotify. | Да |
новые_релизы | Нет | Получите список релизов новых альбомов, представленных в Spotify. | Да |
категории | Нет | Получите список категорий, используемых для пометки элементов в Spotify. | Да |
рекомендации | Да | Получите рекомендации на основе семян | Да |
audio_features | Нет | Получение аудиофункций для трека | Нет |
audios_features | Нет | Получите аудиофункции для нескольких треков | Нет |
audio_anaанализ | Да | Получить аудиоанализ трека | Да |
устройство | Да | Получить доступные устройства пользователя | Да |
current_playback | Да | Получить информацию о текущем воспроизведении пользователя | Да |
current_playing | Нет | Получить текущий воспроизводимый трек пользователя | Нет |
Transfer_playback | Да | Передача воспроизведения пользователя | Да |
start_playback | Да | Запуск/возобновление воспроизведения пользователя | Да |
пауза_воспроизведение | Да | Приостановить воспроизведение пользователя | Да |
следующий_трек | Да | Пропустить воспроизведение пользователя на следующую дорожку | Да |
предыдущий_трек | Да | Пропустить воспроизведение пользователя на предыдущую дорожку | Да |
искать_трек | Да | Поиск позиции на воспроизводимой в данный момент дорожке | Да |
повторить | Да | Установить режим повтора при воспроизведении пользователя | Да |
объем | Да | Установить громкость для воспроизведения пользователя | Да |
перетасовать | Да | Переключить случайное воспроизведение для пользовательского воспроизведения | Да |