SouthFox's Garden

Search IconA magnifying glass icon. 搜索
种植日期: 2026-01-18 上次照料: 2026-01-19

2026-01-18

折腾网易云

在听歌这件事上,在 Emacs 里的 scratch-buffer 慢慢一点点折腾去实现自己想要的功能,你赢了, Emacs 。

论 Emacs 的易折腾性

(defun my/direct-download-netease-music (link)
  (interactive (list (org-cliplink-clipboard-content)))
  (let ((music-id (car (last (string-split link "id=")))))
    (enep-download-music music-id)
    ))

(setq emms-source-file-default-directory (expand-file-name "~/Music/NeteaseMusic/"))

(setq emms-player-next-function
      (lambda ()
        (run-at-time
         3 nil
         (lambda ()
           (emms-next)))
        ))

(defun my/emms-info-track-description (track)
  (let ((artist (emms-track-get track 'info-artist))
        (album (emms-track-get track 'info-album))
        (title (emms-track-get track 'info-title))
        (mtime (emms-track-get track 'info-playing-time)))
    (format "%s - %s - %s - %02d:%02d"
            (or artist "Unknown")
            (or album "Unknown")
            (or title "Unknown")
            (/ mtime 60) (% mtime 60))))

(setq emms-track-description-function 'my/emms-info-track-description)

(defun my/emms-playlist-sum-duration (beg end)
  (interactive "r")
  (let ((total-seconds 0)
        (gap-seconds 3))
    (save-excursion
      (goto-char beg)
      (while (< (point) end)
        (let* ((track (emms-playlist-track-at (point)))
               (duration (and track (emms-track-get track 'info-playing-time))))
          (when duration
            (setq total-seconds (+ total-seconds duration gap-seconds))))
        (forward-line 1)))
    (let ((hours (/ total-seconds 3600))
          (minutes (/ (% total-seconds 3600) 60))
          (seconds (% total-seconds 60)))
      (message "Total Time: %02d:%02d:%02d"
               hours minutes seconds)))))

评论