diff options
author | Vincent Ambo <mail@tazj.in> | 2020-09-25T13·12+0100 |
---|---|---|
committer | tazjin <mail@tazj.in> | 2020-09-27T21·02+0000 |
commit | 48235517f67bd9aa92f2824e991fef62d00b41fa (patch) | |
tree | 1e85966c8eb3749378f6a07651315b664997d89d /users/tazjin/emacs | |
parent | 6bdc6c85cdf6b1e8ee99a44f0c1733d97f0abfa2 (diff) |
feat(tazjin/emacs): Add function for quick Songwhip lookups r/1817
Adds a function `songwhip-lookup-url` which looks up the supplied URL on Songwhip and copies the Songwhip link if a result was found. This is bound to `s-s w` for convenience. Change-Id: I3b529a058ee56f992942760910822490e6324259 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2002 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
Diffstat (limited to 'users/tazjin/emacs')
-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) |