diff options
Diffstat (limited to 'users/tazjin')
-rw-r--r-- | users/tazjin/emacs/config/bindings.el | 3 | ||||
-rw-r--r-- | users/tazjin/emacs/config/functions.el | 27 |
2 files changed, 30 insertions, 0 deletions
diff --git a/users/tazjin/emacs/config/bindings.el b/users/tazjin/emacs/config/bindings.el index a2f7369348ea..4e1f341e32c2 100644 --- a/users/tazjin/emacs/config/bindings.el +++ b/users/tazjin/emacs/config/bindings.el @@ -41,6 +41,9 @@ ;; Insert TODO comments (global-set-key (kbd "C-c t") 'insert-todo-comment) +;; Make sharing music easier +(global-set-key (kbd "s-s w") #'songwhip-lookup-url) + ;; Add subthread collapsing to notmuch-show. ;; ;; C-, closes a thread, C-. opens a thread. This mirrors stepping diff --git a/users/tazjin/emacs/config/functions.el b/users/tazjin/emacs/config/functions.el index d4d0c0d603e0..9bb6772a27d9 100644 --- a/users/tazjin/emacs/config/functions.el +++ b/users/tazjin/emacs/config/functions.el @@ -296,4 +296,31 @@ (magit-read-file-from-rev "HEAD" "Find file") #'pop-to-buffer-same-window)) +(defun songwhip--handle-result (status &optional cbargs) + ;; TODO(tazjin): Inspect status, which looks different in practice + ;; than the manual claims. + (if-let* ((response (json-parse-string + (buffer-substring url-http-end-of-headers (point-max)))) + (sw-path (ht-get* response "data" "path")) + (link (format "https://songwhip.com/%s" sw-path)) + (select-enable-clipboard t)) + (progn + (kill-new link) + (message "Copied Songwhip link (%s)" link)) + (warn "Something went wrong while retrieving Songwhip link!") + ;; For debug purposes, the buffer is persisted in this case. + (setq songwhip--debug-buffer (current-buffer)))) + +(defun songwhip-lookup-url (url) + "Look up URL on Songwhip and copy the resulting link to the clipboard." + (interactive "sEnter source URL: ") + (let ((songwhip-url "https://songwhip.com/api/") + (url-request-method "POST") + (url-request-extra-headers '(("Content-Type" . "application/json"))) + (url-request-data + (json-serialize `((country . "GB") + (url . ,url))))) + (url-retrieve "https://songwhip.com/api/" #'songwhip--handle-result nil t t) + (message "Requesting Songwhip URL ... please hold the line."))) + (provide 'functions) |