System Gen89 @ 2025-07-25-01:02:05 by jonas@monolith
This commit is contained in:
parent
7857c36e1c
commit
87e526dec7
@ -2,6 +2,6 @@
|
|||||||
with python3Packages;
|
with python3Packages;
|
||||||
buildPythonApplication {
|
buildPythonApplication {
|
||||||
name = "spotify-shortcuts";
|
name = "spotify-shortcuts";
|
||||||
propagatedBuildInputs = [spotipy pyxdg];
|
propagatedBuildInputs = [spotipy pyxdg desktop-notifier];
|
||||||
src = ./.;
|
src = ./.;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,8 +1,15 @@
|
|||||||
{pkgs ? import <nixpkgs> {}}:
|
{pkgs ? import <nixpkgs> {}}: let
|
||||||
pkgs.mkShell {
|
drv = pkgs.callPackage ./derivation.nix {};
|
||||||
packages = [
|
in
|
||||||
pkgs.pyright
|
pkgs.mkShell {
|
||||||
pkgs.black
|
packages = [
|
||||||
];
|
pkgs.pyright
|
||||||
inputsFrom = [(pkgs.callPackage ./derivation.nix {})];
|
pkgs.black
|
||||||
}
|
];
|
||||||
|
|
||||||
|
inputsFrom = [drv];
|
||||||
|
|
||||||
|
shellHook = ''
|
||||||
|
export PYTHONPATH="$PYTHONPATH:$(pwd)"
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
|||||||
@ -13,6 +13,7 @@ class Config:
|
|||||||
cache_file: Path = Path(xdg_cache_home) / Path("spotify-shortcuts.json")
|
cache_file: Path = Path(xdg_cache_home) / Path("spotify-shortcuts.json")
|
||||||
client_id: str | None = None
|
client_id: str | None = None
|
||||||
client_secret: str | None = None
|
client_secret: str | None = None
|
||||||
|
notifications: bool = True
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_file(path: Path):
|
def from_file(path: Path):
|
||||||
@ -48,15 +49,26 @@ def load_config(args: List[str] = argv[1:]) -> Config:
|
|||||||
default=Config.client_secret,
|
default=Config.client_secret,
|
||||||
help="Spotify API Client Secret",
|
help="Spotify API Client Secret",
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--config-file",
|
||||||
|
type=str,
|
||||||
|
help="Path to a json configuration file with keys clientId and clientSecret",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--no-notifications",
|
||||||
|
action="store_true",
|
||||||
|
help="Disable desktop notifications",
|
||||||
|
)
|
||||||
|
|
||||||
ns = parser.parse_args(args)
|
ns = parser.parse_args(args)
|
||||||
|
|
||||||
cfg = Config()
|
cfg = Config()
|
||||||
if (cfg_file := getenv("SPOTIFY_SHORTCUTS_CONFIG", None)) != None:
|
if (cfg_file := ns.config_file or getenv("SPOTIFY_SHORTCUTS_CONFIG", None)) != None:
|
||||||
cfg = Config.from_file(Path(cfg_file))
|
cfg = Config.from_file(Path(cfg_file))
|
||||||
|
|
||||||
return Config(
|
return Config(
|
||||||
cache_file=ns.cache_file or cfg.cache_file,
|
cache_file=ns.cache_file or cfg.cache_file,
|
||||||
client_id=ns.client_id or cfg.client_id,
|
client_id=ns.client_id or cfg.client_id,
|
||||||
client_secret=ns.client_secret or cfg.client_secret,
|
client_secret=ns.client_secret or cfg.client_secret,
|
||||||
|
notifications=not ns.no_notifications or cfg.notifications,
|
||||||
)
|
)
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
from spotify_shortcuts.spotify_auth import authenticated_session
|
from spotify_shortcuts.spotify_auth import authenticated_session
|
||||||
from spotify_shortcuts.config import load_config
|
from spotify_shortcuts.config import load_config
|
||||||
|
from desktop_notifier import DesktopNotifierSync
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
@ -16,6 +17,15 @@ def main():
|
|||||||
|
|
||||||
sp.current_user_saved_tracks_add(tracks=[uri])
|
sp.current_user_saved_tracks_add(tracks=[uri])
|
||||||
|
|
||||||
|
if cfg.notifications:
|
||||||
|
dn = DesktopNotifierSync()
|
||||||
|
dn.send(
|
||||||
|
title="Track Liked",
|
||||||
|
message=f"Track \"{playback.get('item', {}).get('name', '<no-name>')}\" by \"{
|
||||||
|
", ".join(a.get('name', '<no-name>') for a in playback.get('item', {}).get('artists', []))
|
||||||
|
}\" has been liked.",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user