aboutsummaryrefslogtreecommitdiff
path: root/emacs/.emacs.d/lisp/my/my-emms.el
diff options
context:
space:
mode:
authorYuchen Pei <id@ypei.org>2023-08-19 18:16:32 +1000
committerYuchen Pei <id@ypei.org>2023-08-19 18:16:32 +1000
commit6f0796a53f2f8bd0027714796b9feac054bee313 (patch)
tree12a25942d33f160cbcb83736175580f3e3de1525 /emacs/.emacs.d/lisp/my/my-emms.el
parentb9fb53c365c64c66e3f7fea05b54bec7f7d68100 (diff)
Adding a file handling snes spc music files.
Also update emms random album mechanism to assign low weight to the discovery directory
Diffstat (limited to 'emacs/.emacs.d/lisp/my/my-emms.el')
-rw-r--r--emacs/.emacs.d/lisp/my/my-emms.el31
1 files changed, 26 insertions, 5 deletions
diff --git a/emacs/.emacs.d/lisp/my/my-emms.el b/emacs/.emacs.d/lisp/my/my-emms.el
index dadbb55..fa0ae17 100644
--- a/emacs/.emacs.d/lisp/my/my-emms.el
+++ b/emacs/.emacs.d/lisp/my/my-emms.el
@@ -39,7 +39,7 @@
(defun my-emms-mpv-toggle-video ()
(interactive)
(if (member "--no-video" emms-player-mpv-parameters)
- (progn
+ (progn
(setq emms-player-mpv-parameters
(remove "--no-video" emms-player-mpv-parameters))
(message "emms: video enabled!"))
@@ -126,6 +126,14 @@
playlist buffer-name)))
(and saved-buffer (emms-playlist-set-playlist-buffer saved-buffer))))
+(defun my-emms-add-directory-files-as-url (dir)
+ "Add all files under directory DIR as file:// url."
+ (mapc
+ (lambda (file)
+ (emms-add-url (format "file://%s" file)))
+ (directory-files-recursively (expand-file-name dir) ".*"))
+ )
+
(defun my-emms-add-all ()
(interactive)
(mapc 'my-emms-load-from-native my-emms-native-playlists)
@@ -147,13 +155,13 @@ either 'audio or 'video
(emms-playlist-set-playlist-buffer to)
(with-current-buffer to (emms-playlist-clear))
(let ((emms-track-initialize-functions nil))
- (my-emms-add-url-lists from
- (alist-get type my-extension-types)))
+ (my-emms-add-url-lists from
+ (alist-get type my-extension-types)))
(with-current-buffer to (emms-sort))))
(defvar my-emms-playlist-alist nil
"alist controlling playlists, where the cdr of each item is an also an alist,
-with possible keys 'source and 'type.
+with possible keys 'source and 'type.
'source is a list of files of url lists.
'type is one of 'audio, 'video, or 'audiovideo")
@@ -371,6 +379,19 @@ filter extensions from filter-exts."
(setq my-emms-albums-cache (vconcat album-list))
(message "Emms album cache updated.")))
+(defun my-emms-get-random-album ()
+ "Returns a random album from the current playlist.
+
+We put a low weight on discovery album, currently any directory
+under /zzz-seren/."
+ (let ((album
+ (elt my-emms-albums-cache (random (length my-emms-albums-cache)))))
+ (while (and (string-match "/zzz-seren/" album)
+ (>= (random 100) 4))
+ (setq album
+ (elt my-emms-albums-cache (random (length my-emms-albums-cache)))))
+ album))
+
(defun my-emms-random-album (update-album)
(interactive "P")
(with-current-emms-playlist
@@ -380,7 +401,7 @@ filter extensions from filter-exts."
(let ((saved-position (point)))
(goto-char (point-min))
(if (search-forward
- (elt my-emms-albums-cache (random (length my-emms-albums-cache)))
+ (my-emms-get-random-album)
nil t)
(emms-playlist-mode-play-current-track)
(goto-char saved-position)