summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2024-02-02 13:34:45 -0500
committerKjetil Orbekk <kj@orbekk.com>2024-02-02 13:34:45 -0500
commit17c9dcf0f9ef8b8c09f97694afeb274258f47d63 (patch)
tree7f876b8a9b184efaa1ac7452a6b15425e1bf3214
parent2700c69c559c31332296c9d40af012b6103b0439 (diff)
add smudge function to save current song
-rw-r--r--emacs/.config/emacs/lisp/kj-init.el26
1 files 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)