From 6f0796a53f2f8bd0027714796b9feac054bee313 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Sat, 19 Aug 2023 18:16:32 +1000 Subject: Adding a file handling snes spc music files. Also update emms random album mechanism to assign low weight to the discovery directory --- emacs/.emacs.d/lisp/my/my-emms.el | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'emacs/.emacs.d/lisp/my/my-emms.el') 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) -- cgit v1.2.3