mirror of
https://github.com/SqrtMinusOne/lyrics-fetcher.el.git
synced 2025-12-10 17:03:03 +03:00
feat: switch backends
This commit is contained in:
parent
fc0c4731b6
commit
3455a44bfa
1 changed files with 48 additions and 1 deletions
|
|
@ -35,9 +35,10 @@
|
||||||
;; - `lyrics-fetcher-show-lyrics-query' - show lyrics by a
|
;; - `lyrics-fetcher-show-lyrics-query' - show lyrics by a
|
||||||
;; text query.
|
;; text query.
|
||||||
;; - `lyrics-fetcher-emms-browser-show-at-point' - show lyrics
|
;; - `lyrics-fetcher-emms-browser-show-at-point' - show lyrics
|
||||||
;; for the current point in EMMS browser,
|
;; for the current point in EMMS browser.
|
||||||
;; - `lyrics-fetcher-emms-browser-fetch-covers-at-point' - fetch
|
;; - `lyrics-fetcher-emms-browser-fetch-covers-at-point' - fetch
|
||||||
;; album covers for the current point in the EMMS browser.
|
;; album covers for the current point in the EMMS browser.
|
||||||
|
;; - `lyrics-fetcher-use-backend' - select a backend.
|
||||||
;;
|
;;
|
||||||
;; Take a look at the package README.org at
|
;; Take a look at the package README.org at
|
||||||
;; <https://github.com/SqrtMinusOne/lyrics-fetcher.el> for more
|
;; <https://github.com/SqrtMinusOne/lyrics-fetcher.el> for more
|
||||||
|
|
@ -49,6 +50,7 @@
|
||||||
(require 'f)
|
(require 'f)
|
||||||
(require 'emms)
|
(require 'emms)
|
||||||
(require 'emms-browser)
|
(require 'emms-browser)
|
||||||
|
(require 'emms-lyrics)
|
||||||
|
|
||||||
(defgroup lyrics-fetcher ()
|
(defgroup lyrics-fetcher ()
|
||||||
"Fetch song and album covers."
|
"Fetch song and album covers."
|
||||||
|
|
@ -255,6 +257,51 @@ See `lyrics-fetcher-show-lyrics' for behavior."
|
||||||
(interactive "sEnter query: ")
|
(interactive "sEnter query: ")
|
||||||
(lyrics-fetcher-show-lyrics query))
|
(lyrics-fetcher-show-lyrics query))
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun lyrics-fetcher-use-backend (backend)
|
||||||
|
"Select a backend to use with lyrics-fetcher.
|
||||||
|
|
||||||
|
As of now, the supported backends are:
|
||||||
|
- `genius'
|
||||||
|
- `neteasecloud'
|
||||||
|
|
||||||
|
`genius' fetches lyrics in a text format, more suitable for
|
||||||
|
viewing in a text buffer.
|
||||||
|
|
||||||
|
`neteasecloud' fetches in the LRC format, which contains
|
||||||
|
timestamps for every line in the lyric text. This function also
|
||||||
|
sets up EMMS variables so that the default
|
||||||
|
`emms-lyrics-find-lyric-function' could find lyrics."
|
||||||
|
(interactive
|
||||||
|
(list (intern
|
||||||
|
(completing-read "Select backend: " '("genius" "neteasecloud")
|
||||||
|
nil t))))
|
||||||
|
(pcase backend
|
||||||
|
('genius
|
||||||
|
(setq lyrics-fetcher-fetch-method #'lyrics-fetcher-genius-do-search
|
||||||
|
lyrics-fetcher-format-file-name-method #'lyrics-fetcher-format-file-name
|
||||||
|
lyrics-fetcher-format-song-name-method #'lyrics-fetcher-format-song-name
|
||||||
|
lyrics-fetcher-lyrics-file-extension ".txt"))
|
||||||
|
('neteasecloud
|
||||||
|
(setq lyrics-fetcher-fetch-method #'lyrics-fetcher-neteasecloud-do-search
|
||||||
|
lyrics-fetcher-format-file-name-method #'lyrics-fetcher-neteasecloud-format-file-name
|
||||||
|
lyrics-fetcher-format-song-name-method #'lyrics-fetcher-neteasecloud-format-song-name
|
||||||
|
lyrics-fetcher-lyrics-file-extension ".lrc"
|
||||||
|
emms-lyrics-dir lyrics-fetcher-lyrics-folder))
|
||||||
|
(_ (user-error "Backend %s not found" (symbol-name backend)))))
|
||||||
|
|
||||||
|
(defun lyrics-fetcher-lyrics-catchup ()
|
||||||
|
"Feed the LRC file for the current track to EMMS."
|
||||||
|
(interactive)
|
||||||
|
(let* ((track (emms-playlist-current-selected-track))
|
||||||
|
(name (emms-track-get track 'name))
|
||||||
|
(lrc (funcall emms-lyrics-find-lyric-function
|
||||||
|
(emms-replace-regexp-in-string
|
||||||
|
(concat "\\." (file-name-extension name) "\\'")
|
||||||
|
".lrc"
|
||||||
|
(file-name-nondirectory name)))))
|
||||||
|
(emms-lyrics-catchup lrc)))
|
||||||
|
|
||||||
(cl-defun lyrics-fetcher--fetch-many (tracks &optional &key start force-fetch sync edit)
|
(cl-defun lyrics-fetcher--fetch-many (tracks &optional &key start force-fetch sync edit)
|
||||||
"Fetch lyrics for every track in the TRACKS list.
|
"Fetch lyrics for every track in the TRACKS list.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue