LINUX.ORG.RU

Prismriver Lyrics 1.0.0: CLI и TUI для поиска текстов песен

 , , , ,

Prismriver Lyrics 1.0.0: CLI и TUI для поиска текстов песен

0

1

Вышла первая версия v1.0.0 проекта Prismriver Lyrics — набора инструментов для поиска текстов песен из различных источников.

prismriver-lyrics-tui отслеживает состояние плеера через MPRIS, автоматически запускает поиск при смене трека и подсвечивает текущую строку для синхронизированных по времени (LRC) текстов.

Основные возможности:

  • 30+ плагинов для поиска текстов песен (prismriver_lyrics.plugins);
  • фильтрация результатов по плагину, языку, оригинал/перевод и синхронизированный/обычный текст, а также ограничение числа результатов (--limit/-l);
  • синхронизированные по времени (LRC) тексты с подсветкой текущей строки в TUI; по мере воспроизведения трека;
  • ручной поиск по названию и исполнителю в CLI и TUI;
  • Vim-style навигация в TUI;
  • выбор темы оформления (стандартные из Textual);
  • дисковый кэш результатов на SQLite с настраиваемым временем жизни (--cache-ttl) и возможностью его отключить (--no-cache);
  • пакет prismriver-lyrics можно использовать как библиотеку в своих Python-проектах (search_lyrics, LyricsResult, LyricsPlugin).

Проект написан на Python и состоит из двух пакетов на общем движке поиска: консольной утилиты prismriver-lyrics и TUI prismriver-lyrics-tui на базе фреймворка Textual. Лицензия: MIT.

Установка (доступны оба пакета, можно ставить по отдельности):

$ pipx install prismriver-lyrics
$ pipx install prismriver-lyrics-tui
$ pip install prismriver-lyrics
$ pip install prismriver-lyrics-tui
$ uv tool install prismriver-lyrics
$ uv tool install prismriver-lyrics-tui

Поиск текста песни из командной строки:

$ prismriver-lyrics --artist "The Clash" --title "Police and Thieves"

Или запуск TUI, который сам следит за проигрывателем:

$ prismriver-lyrics-tui

>>> Репозиторий на GitHub



Проверено: CrX ()
Последнее исправление: CrX (всего исправлений: 3)
Ответ на: комментарий от anlar

Хм.. По странному стечению обстоятельств это именно та песня текст, которой я искал в последний раз.

unDEFER ★★★★★
()
Ответ на: комментарий от MoldAndLimeHoney

Примерно всем:

  1. Не нужно запускать тяжёлый браузер или даже переключаться на него, открывать там новую вкладку…
  2. Не нужен гугл.
  3. Не нужно добавлять «Lyrics» к тексту запроса (просто по артисту и названию песни хрен ты сразу текст найдёшь обычно).
  4. Умеет автоматом брать проигрываемый сейчас трек (хотя это можно заскриптовать и для копипасты по хоткею, да).

Жаль только, что судя по списку файлов в plugins на гитхабе, в metal-archives не умеет таки — куча всего есть, а этого нет.

CrX ★★★★★
()

Проект создан 5 дней назад. Все коммиты содержат сообщения «Refactor: full rewrite», которые невозможно отследить. Весь проект — один большой ИИ slop. Почему модератор это одобрил??

cyrusmsk
()
Ответ на: комментарий от CrX

Не нужно запускать тяжёлый браузер или даже переключаться на него, открывать там новую вкладку…

У всех нормальных людей он и так запущен.

Не нужен гугл.

Отлично, давай ты ответишь за слова и перестанешь пользоваться поисковиками.

Умеет автоматом брать проигрываемый сейчас трек

С этого можно было начать, этим же и закончить. Хорошая фича. Еще бы было какое-нибудь OSD, чтобы строчки с текстом отображались где-нибудь поверх всего.

MoldAndLimeHoney ★★★
()

Всегда отключаю такое во всех плеерах. Нефиг мутным серверам в интернете знать что и когда я слушаю. И остальным того же советую.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от cyrusmsk

Ну смотри. Я если в одно рыло софт делаю, то тоже самую первую версию заливаю одним коммитом по факту (даже если локально у меня уродец какой-то, просто всё в отдельной ветке). Потому что а какой смысл эту историю держать, пока программа даже собраться не может? Вот когда она собирается, то да, гит расцветает и начинает для одного разработчика быть полезным. Пока собирающегося кода нет и смысла в гите мало.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 2)
Ответ на: комментарий от MoldAndLimeHoney

У всех нормальных людей он и так запущен.

Прекращай делать такие обобщения, выглядит глупо. Нет, не у всех. Хотя я уже знаю, что дальше будет аргумент про настоящего ирландца…

Отлично, давай ты ответишь за слова и перестанешь пользоваться поисковиками.

А давай ты не будешь мне указывать, чем мне пользоваться?

Слова мои не противоречат действиям, и гуглом я не пользуюсь и так. О поисковиках вообще в принципе я ничего не говорил.

И даже если бы я пользовался гуглом, это бы ничего не изменило. Из моих слов никак не следует, что им пользоваться не следует никогда. Хотя я правда близок к тому, чтобы с таким посылом тоже согласиться, я всё же ничего подобного не заявлял. Подтягивай логику.

С этого можно было начать, этим же и закончить. Хорошая фича. Еще бы было какое-нибудь OSD, чтобы строчки с текстом отображались где-нибудь поверх всего.

Если он может вернуть текст тупо в stdout, должно быть весьма просто перенаправить это в любой желаемый способ вывода (osdcat, notify-send, или что-то ещё). Сам не делал, да и сабж не пробовал пока (нет нужного мне плагина), но по идее можно буквально в пару строчек скриптик накидать для подобного вывода.

CrX ★★★★★
()

А сразу скачивать файл с текстом он может? Или, еще лучше, сразу в аудиофайл их сохранять? Хз, кстати, какие форматы умеют такое, еще и с синком по времени…

skyman ★★★★★
()
Ответ на: комментарий от cyrusmsk

Весь проект — один большой ИИ slop

Для проектов с ИИ надо тег в обязательном порядке, чтобы сразу это видно было.

skyman ★★★★★
()
Ответ на: комментарий от peregrine

Конечно, есть смысл в том, чтобы иметь всю историю Git. Людям хотелось бы видеть изменения проекта — что они будут запускать на своих локальных машинах. Запускать проект с 10000 строками кода вслепую рискованно. В этом проекте более 80 коммитов, но многие из них содержат одно и то же бесполезное сообщение. Ещё один момент — указание версии проекта 1.0.0 за 5 дней. В лучшем случае это 0.0.1

cyrusmsk
()
Ответ на: комментарий от cyrusmsk

Эм, нет. Версия проекта обычно имеет формат:

Major.Minor.Patch

Так что если проект делается по всему феншую, то формируется ROADMAP с указанными в нём MILESTONE. А дальше как только ты получаешь первую версию, которая делает что-то полезное, пусть она просто собирается, то версия делается 0.1.0, когда ты исправляешь ошибки, то меняется последняя цифра, когда добавляешь фичи меняется вторая цифра, когда полностью пересматриваешь проект или достигаешь MILESTONE - меняешь первую цифру. Есть ещё один момент (обычно он не противоречит вышесказанному, но я стараюсь придерживаться именно его трактовки в спорных моментах). Если совместимость ломается, то меняется Major, если расширяется, то меняется Minor, если ускорили алгоритм, исправили ошибку или пофикслили комментарии в коде, то меняется Patch (да, даже от точки в комментарии, потому что не весь софт бинарный и версия не столько про бинари, сколько про код). Некоторые серьёзные проекты отказались от Patch в виде цифры и тянут его в виде строки на основе гита. Кто-то делает хешом от коммита, кто-то делает тегами в гите. Тут зоопарк большой.

Так что софт на гитхабе с версиями 0.0.x это чисто от безграмотности или он не может собраться у значительной части ожидаемой ЦА. Если вдаваться в подробности и исторические детали, то сначала вообще была одна цифра, потом стало 2, а в 90-ых сложился формат с 3 цифрами. У цифр есть плюс - в бинарных форматах зачастую версию путём сдвигов пакуют в одну переменную (не строковую а просто в число, например 32 или 64 бита, беззнаковое). Что позволяет легко сравнивать версии в клиент-серверной архитектуре или засовывать её в бинарные сетевые пакеты. С хешом удобнее для понимания и поиска истории разработчику, работающему над кодом основного проекта.

А вообще я так призываю: когда ты довёл софт до того что им можно пользоваться пользователю (а не разработчикам потыкаться), то версия должна быть не меньше 1.0.0, всё остальное это чистый маркетинг и булшит, как с дотой которая все ещё бета? Когда разраб просто говорит что он рукожоп и отстаньте от меня.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 7)
Ответ на: комментарий от MoldAndLimeHoney

Давайте без демагогии про «всех нормальных людей», это скрытое 5.2. И без выдирания из контекста, очевидно, что «не нужен гугл» относилось к конкретной задаче, а не «не нужен вообще».

hobbit ★★★★★
()
Ответ на: комментарий от peregrine

не обязательно душнить - и также необязательно поддерживать SemVer пусть будет 0.1.0 - но 1.0.0 это признак что оно проверено и работает и протестировано как следует вон Zig до сих пор не 1.0 также правила хорошего тона - указывать в readmeчто проект сделан с ЛЛМ А еще необязательно везде рассказывать о своем мини проекте наvibecodеном везде на лоре и опеннете Скромнее надо быть - скромнее

cyrusmsk
()
Ответ на: комментарий от BruteForce

Есть поддержка не-кверти раскладок?

Nope. Напиши раскладку по клавишам - если оно не конфликтует с существующими, можно добавить.

anlar
() автор топика
Ответ на: комментарий от skyman

cli просто выводит текст - сохраняй в файл. Потом ещё вывод в lrc добавлю.

anlar
() автор топика
Ответ на: комментарий от cyrusmsk

Это так, потому что доказать обратного (отсутствия ИИ в коде) ты не сможешь и придётся доверять всем кто коммитит. Т.е. лично в твоём собственном коде лично для тебя это может и так, но если хоть кто-то со стороны прислал тебе патч, то это уже не так.

peregrine ★★★★★
()
Ответ на: комментарий от cyrusmsk

Проект создан 5 дней назад. Все коммиты содержат сообщения «Refactor: full rewrite», которые невозможно отследить. Весь проект — один большой ИИ slop. Почему модератор это одобрил??

Если тебе это зачем-то нужно: https://api.github.com/repos/anlar/prismriver-lyrics

created_at «2015-06-28T10:10:29Z»

Версию 10-летний давности можешь в форках посмотреть - https://github.com/odrling/prismriver-lyrics

Это переписанный мой старинный проект. Нет смысла хранить историю в первые несколько дней проекта, когда каждый коммит затрагивает много частей.

anlar
() автор топика
Ответ на: комментарий от cyrusmsk

Но это не мой проект, я думаю модерация сможет это подтвердить.

Zig

Поделка, которую нельзя использовать ни в одном серьёзном софте, если даже автор утверждает что её API/ABI может меняться как угодно. Но да, у zig-а две цифры в нумерации. Они не используют 3. Это стандарт из 80-ых

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от anlar

об этом тогда стоило бы рассказать старое описание кстати норм выглядит лучше нового

раз Claude теперь помогает писать быстро - можно было бы и функционал раширить не просто d-bus и linux-specific - но добавить Windows с маком

cyrusmsk
()
Ответ на: комментарий от gagarin0

вопрос не в том что проект сделан с ИИ хоть об этом и хорошо было бы сказать а в том что не стоит любой скрипт нести на лор вчера сделанный

но это оказывается старый проект и за 10 лет даже 20 звездочек набрал

cyrusmsk
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.