From 17c9dcf0f9ef8b8c09f97694afeb274258f47d63 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Fri, 2 Feb 2024 13:34:45 -0500 Subject: add smudge function to save current song --- emacs/.config/emacs/lisp/kj-init.el | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/emacs/.config/emacs/lisp/kj-init.el b/emacs/.config/emacs/lisp/kj-init.el index 14ef1bd..4e28b84 100644 --- a/emacs/.config/emacs/lisp/kj-init.el +++ b/emacs/.config/emacs/lisp/kj-init.el @@ -743,6 +743,7 @@ ) (use-package smartparens + :disabled :init (kj/smartparens-config) :hook ((prog-mode lisp-mode) . smartparens-strict-mode) @@ -944,7 +945,8 @@ ;; Spotify (use-package smudge - :bind ("C-c a s" . 'smudge-command-map) + :bind (("C-c a s" . 'smudge-command-map) + ("C-c a s s" . 'kj/smudge-save-current-song)) :init (defvar kj/smudge-settings-file (expand-file-name ".smudge-credentials" kj/cache-dir)) (defvar kj/librespot-cache (expand-file-name "~/.cache/librespot")) @@ -990,7 +992,27 @@ (smudge-device-get-device-id device) (lambda (json) (setq smudge-selected-device-id (smudge-device-get-device-id device)) - (message "Device selected")))))))))) + (message "Device selected")))))))) + + ;;; Needed to save the current song. + (setq smudge-api-oauth2-scopes "playlist-read-private playlist-read-collaborative playlist-modify-public playlist-modify-private user-read-private user-read-playback-state user-modify-playback-state user-read-playback-state user-read-recently-played user-library-modify") + (defun kj/smudge-save-current-song () + (interactive) + (smudge-api-get-player-status + (lambda (status) + (when-let* ((status status) + (track (gethash 'item status)) + (id (gethash 'id track))) + (smudge-api-call-async + "PUT" + (concat "/me/tracks?" + (url-build-query-string `((ids ,id)) + nil t)) + nil + (lambda (json) + (message "Saved to library: %s - %s" + (gethash 'name (car (gethash 'artists track))) + (gethash 'name track)))))))))) ;; Enabled commands (put 'narrow-to-region 'disabled nil) -- cgit v1.2.3