More stuff please #11

Merged
dali99 merged 4 commits from more_cli_features into master 2024-05-19 12:48:15 +02:00
2 changed files with 35 additions and 6 deletions

View File

@ -57,14 +57,28 @@
nativeBuildInputs = [ poetry-core ]; nativeBuildInputs = [ poetry-core ];
propagatedBuildInputs = [ setuptools flakes.self.pkgs.remi requests typer rich urllib3 ]; propagatedBuildInputs = [ setuptools flakes.self.pkgs.remi requests typer rich urllib3 ];
}; };
default = flakes.self.pkgs.grzegorz-clients; grzegorzctl = pkgs.runCommandNoCCLocal "grzegorzctl" (
{
nativeBuildInputs = [ pkgs.installShellFiles ];
} //
{ inherit (flakes.self.pkgs.grzegorz-clients) meta; } //
{ meta.mainProgram = "grzegorzctl"; }
)''
mkdir -p $out/bin
ln -s "${flakes.self.pkgs.grzegorz-clients}/bin/grzegorzctl" $out/bin/grzegorzctl
installShellCompletion --cmd grzegorzctl \
--bash <($out/bin/grzegorzctl --show-completion bash) \
--zsh <($out/bin/grzegorzctl --show-completion zsh) \
--fish <($out/bin/grzegorzctl --show-completion fish)
'';
default = flakes.self.pkgs.grzegorzctl;
}); });
apps = forAllSystems ({ system, ...}: rec { apps = forAllSystems ({ system, ...}: rec {
grzegorz-webui.type = "app"; grzegorz-webui.type = "app";
grzegorz-webui.program = "${self.packages.${system}.grzegorz-clients}/bin/grzegorz-webui"; grzegorz-webui.program = "${self.packages.${system}.grzegorz-clients}/bin/grzegorz-webui";
grzegorzctl.type = "app"; grzegorzctl.type = "app";
grzegorzctl.program = "${self.packages.${system}.grzegorz-clients}/bin/grzegorzctl"; grzegorzctl.program = "${self.packages.${system}.grzegorzctl}/bin/grzegorzctl";
default = grzegorzctl; default = grzegorzctl;
}); });

View File

@ -64,7 +64,7 @@ def _add(
api.playlist_goto(current_index if put_pre else current_index + 1) api.playlist_goto(current_index if put_pre else current_index + 1)
api.set_playing(True) api.set_playing(True)
@cli.command(help="Add one ore more items to the playlist") @cli.command(help="Add one or more items to the playlist")
def play( def play(
urls: list[str], urls: list[str],
pre: bool = False, pre: bool = False,
@ -72,14 +72,14 @@ def play(
): ):
_add(urls, put_post=not pre, put_pre=pre, play=True, api_base=api_base) _add(urls, put_post=not pre, put_pre=pre, play=True, api_base=api_base)
@cli.command(help="Add one ore more items to the playlist") @cli.command(help="Add one or more items to the playlist")
def next( def next(
urls: list[str], urls: list[str],
api_base: str = DEFAULT_API_BASE, api_base: str = DEFAULT_API_BASE,
): ):
_add(urls, put_post=True, api_base=api_base) _add(urls, put_post=True, api_base=api_base)
@cli.command(help="Add one ore more items to the playlist") @cli.command(help="Add one or more items to the playlist")
def queue( def queue(
urls: list[str], urls: list[str],
play: bool = True, play: bool = True,
@ -107,6 +107,12 @@ def pause( api_base: str = DEFAULT_API_BASE ):
api.set_endpoint(api_base) api.set_endpoint(api_base)
rich.print(api.set_playing(False), file=sys.stderr) rich.print(api.set_playing(False), file=sys.stderr)
@cli.command(help="Toggle playback")
def toggle(api_base: str = DEFAULT_API_BASE):
api.set_endpoint(api_base)
playing = api.is_playing()
rich.print(api.set_playing(not playing), file=sys.stderr)
@cli.command(help="Goto next item in playlist") @cli.command(help="Goto next item in playlist")
def skip( api_base: str = DEFAULT_API_BASE ): def skip( api_base: str = DEFAULT_API_BASE ):
api.set_endpoint(api_base) api.set_endpoint(api_base)
@ -154,10 +160,19 @@ def status(
@cli.command(help="Set the playback volume") @cli.command(help="Set the playback volume")
def set_volume( def set_volume(
volume: int, volume: str,
api_base: str = DEFAULT_API_BASE, api_base: str = DEFAULT_API_BASE,
): ):
api.set_endpoint(api_base) api.set_endpoint(api_base)
volume = volume.removesuffix("%")
if volume.startswith("+") or volume.startswith("-"):
current_volume = api.get_volume()
new_volume = max(0, min(100, current_volume + int(volume)))
else:
new_volume = int(volume)
rich.print(api.set_volume(volume), file=sys.stderr) rich.print(api.set_volume(volume), file=sys.stderr)