Compare commits
2 Commits
e6997a76c4
...
1c160d5ccb
| Author | SHA1 | Date | |
|---|---|---|---|
|
1c160d5ccb
|
|||
|
b7e539de3b
|
+1
-1
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
||||
|
||||
[project]
|
||||
name = "lrx-cli"
|
||||
version = "0.7.1"
|
||||
version = "0.7.2"
|
||||
description = "Fetch line-synced lyrics for your music player."
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.13"
|
||||
|
||||
+13
-3
@@ -390,24 +390,34 @@ def pipe(
|
||||
before: Annotated[
|
||||
int,
|
||||
cyclopts.Parameter(
|
||||
name="--before",
|
||||
name=["--before", "-b"],
|
||||
help="Number of lyric lines to show before current line.",
|
||||
),
|
||||
] = 0,
|
||||
after: Annotated[
|
||||
int,
|
||||
cyclopts.Parameter(
|
||||
name="--after",
|
||||
name=["--after", "-a"],
|
||||
help="Number of lyric lines to show after current line.",
|
||||
),
|
||||
] = 0,
|
||||
no_newline: Annotated[
|
||||
bool,
|
||||
cyclopts.Parameter(
|
||||
name=["--no-newline", "-n"],
|
||||
negative="",
|
||||
help="Do not append a new line after the lyric output.",
|
||||
),
|
||||
] = False,
|
||||
):
|
||||
"""Watch active player and continuously print lyric window to stdout."""
|
||||
logger.info(
|
||||
"Starting watch pipe (player filter: {})",
|
||||
_player or "<none>",
|
||||
)
|
||||
output = PipeOutput(before=max(0, before), after=max(0, after))
|
||||
output = PipeOutput(
|
||||
before=max(0, before), after=max(0, after), no_newline=no_newline
|
||||
)
|
||||
try:
|
||||
session = WatchCoordinator(
|
||||
manager,
|
||||
|
||||
@@ -292,6 +292,12 @@ class WatchCoordinator:
|
||||
started_fetch = False
|
||||
if track is not None and (player_changed or track_changed):
|
||||
started_fetch = self._request_fetch_for_active_track("track-changed")
|
||||
elif (
|
||||
track is not None
|
||||
and self._model.lyrics is None
|
||||
and self._model.status == "paused"
|
||||
):
|
||||
started_fetch = self._request_fetch_for_active_track("resume-playing")
|
||||
|
||||
if self._model.lyrics is not None:
|
||||
self._model.status = "ok"
|
||||
|
||||
@@ -13,6 +13,7 @@ class PipeOutput(BaseOutput):
|
||||
|
||||
before: int = 0
|
||||
after: int = 0
|
||||
no_newline: bool = False
|
||||
|
||||
def _window_size(self) -> int:
|
||||
"""Return rendered lyric window size."""
|
||||
@@ -81,5 +82,5 @@ class PipeOutput(BaseOutput):
|
||||
lines = self._render_lyrics(state)
|
||||
|
||||
for line in lines:
|
||||
print(line)
|
||||
sys.stdout.write(line + ("\n" if not self.no_newline else ""))
|
||||
sys.stdout.flush()
|
||||
|
||||
Reference in New Issue
Block a user