从 Genius 获取歌词并保存。支持 emms 。
emms 自带的歌词功能只支持 lrc 格式,比较难批量下载。所以最近翻 Melpa 时看到一个新包,完美符合需要。
使用时要设置代理:
(setq request-curl-options
(nconc '("--proxy" "http://127.0.0.1:xxxx")))
从 Genius 获取歌词并保存。支持 emms 。
emms 自带的歌词功能只支持 lrc 格式,比较难批量下载。所以最近翻 Melpa 时看到一个新包,完美符合需要。
使用时要设置代理:
(setq request-curl-options
(nconc '("--proxy" "http://127.0.0.1:xxxx")))
现在 lyrics-fetcher 已经支持爬取 lrc 格式的歌词了,用的是网易云的 api。
最近发现 emms 在歌词跳转方面不够精确,无法跳到想要的歌词,于是写个了函数,利用 lyrics-fetcher 爬取的 lrc 歌词里的时间戳来获取精确的时间,这样就可以在看歌词的时候让 emms 快速播放目标歌词了。
(use-package lyrics-fetcher
:ensure t
:after emms
:bind (:map lyrics-fetcher-view-mode-map
("RET" . lyrics-fetcher-neteasecloud-lyrics-jump))
:config
(lyrics-fetcher-use-backend 'neteasecloud)
(defun lyrics-fetcher-neteasecloud-lyrics-jump ()
(interactive)
(if (derived-mode-p 'lyrics-fetcher-view-mode)
(let* ((timestamp (save-excursion
(beginning-of-line)
(thing-at-point 'sexp ':no-properties)))
(minutes (string-to-number
(progn
(string-match "\\([[:digit:]]\\{2\\}\\):\\([[:digit:]]\\{2\\}\\).\\([[:digit:]]\\{2\\}\\)" timestamp)
(match-string 1 timestamp))))
(seconds (string-to-number
(match-string 2 timestamp)))
(jiffies (string-to-number
(match-string 3 timestamp))))
(if timestamp
(emms-seek-to (+ (* 60 minutes) seconds (* 0.01 jiffies)))
(message "No timestamp found!")))
(message "This function must be called in lyrics-fetcher-view-mode!"))))
现在用 emms 听歌就很舒服了
有点意思,能实现歌词滚动么?
歌词滚动是 emms 自带的,可以显示在 modeline 或 minibuffer(见上图的 minibuffer)。
Cool!对你的歌曲专辑很感兴趣啊
我主要听音乐剧,本地上都是一些经典的音乐剧,比如《Cats》《The Phantom of the Opera》《Hamilton》(强推)等,还有就是 Queen 的 CD 全集。
emms 就很适合我这种以专辑听歌的模式。
敢问哪里下载的?比如 Lion King