summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2021-05-31 04:43:10 +0100
committerjao <jao@gnu.org>2021-05-31 04:43:10 +0100
commitd5fa86062b31179c268cb914266f0e646a244229 (patch)
tree76a9ef5f01ba5fc56a9d39334d92a25c17ad24fa
parente353321f6fe69846ab2345a36510ddcc8727e6b7 (diff)
downloadelibs-d5fa86062b31179c268cb914266f0e646a244229.tar.gz
elibs-d5fa86062b31179c268cb914266f0e646a244229.tar.bz2
losing weight: elmpd instead of emms
not only simpler, but also asynchronous
-rw-r--r--attic/jao-emms-info-track.el (renamed from lib/media/jao-emms-info-track.el)0
-rw-r--r--attic/jao-emms-lyrics.el (renamed from lib/media/jao-emms-lyrics.el)0
-rw-r--r--attic/jao-emms-random-album.el (renamed from lib/media/jao-emms-random-album.el)0
-rw-r--r--attic/jao-emms.el (renamed from lib/media/jao-emms.el)0
-rw-r--r--attic/misc.org133
-rw-r--r--init.org166
-rw-r--r--lib/media/jao-mpc.el224
-rw-r--r--lib/media/jao-random-album.el14
8 files changed, 389 insertions, 148 deletions
diff --git a/lib/media/jao-emms-info-track.el b/attic/jao-emms-info-track.el
index cf93625..cf93625 100644
--- a/lib/media/jao-emms-info-track.el
+++ b/attic/jao-emms-info-track.el
diff --git a/lib/media/jao-emms-lyrics.el b/attic/jao-emms-lyrics.el
index 0ea52e0..0ea52e0 100644
--- a/lib/media/jao-emms-lyrics.el
+++ b/attic/jao-emms-lyrics.el
diff --git a/lib/media/jao-emms-random-album.el b/attic/jao-emms-random-album.el
index 72e056b..72e056b 100644
--- a/lib/media/jao-emms-random-album.el
+++ b/attic/jao-emms-random-album.el
diff --git a/lib/media/jao-emms.el b/attic/jao-emms.el
index 53b3513..53b3513 100644
--- a/lib/media/jao-emms.el
+++ b/attic/jao-emms.el
diff --git a/attic/misc.org b/attic/misc.org
index 3a4df37..23336e0 100644
--- a/attic/misc.org
+++ b/attic/misc.org
@@ -1,5 +1,138 @@
#+title: Miscellaneous config bits that i don't use anymore
+* emms
+*** configuration
+ #+BEGIN_SRC emacs-lisp
+ (use-package emms
+ :pin gnu
+ :ensure t
+ :init
+ (setq emms-score-file "~/.emacs.d/score"
+ emms-stream-bookmarks-file "~/.emacs.d/streams"
+ emms-history-file "~/.emacs.d/cache/emms-history"
+ emms-cache-file "~/.emacs.d/cache/emms-cache"
+ emms-show-format "%s")
+
+ (setq emms-source-file-default-directory "~/var/lib/music/"
+ emms-player-list '(emms-player-mpd)
+ emms-player-mpd-server-name "localhost"
+ emms-player-mpd-server-port "6600"
+ emms-player-mpd-music-directory emms-source-file-default-directory)
+
+ (setq emms-volume-change-function 'emms-volume-mpd-change
+ emms-volume-change-amount 10
+ emms-info-ogginfo-coding-system 'utf-8)
+
+ ;; from http://www.shellarchive.co.uk/index.html#%20Prettify%20emms
+ (setq emms-browser-info-genre-format "%i· %n"
+ emms-browser-info-artist-format "%i· %n"
+ emms-browser-info-album-format "%i◨ %n"
+ emms-browser-info-title-format "%i♪ %n")
+
+ (setq emms-last-played-format-alist
+ '(((emms-last-played-seconds-today) . "Today at %H:%M")
+ (604800 . "%a at %H:%M")
+ ((emms-last-played-seconds-month) . "%d")
+ ((emms-last-played-seconds-year) . "%m-%d")
+ (t . "")))
+
+ :hook ((emms-player-started . emms-player-mpd-show))
+
+ :config
+ (eval-after-load "emms-info"
+ '(add-to-list 'emms-info-functions 'emms-info-mpd)))
+
+ (emms-all)
+ (emms-mode-line -1)
+ (emms-playing-time 1)
+ (emms-playing-time-disable-display)
+
+ (use-package jao-emms-random-album
+ :after emms
+ :commands (jao-emms-random-album-next)
+ :init (setq jao-emms-random-album-notify-icon jao-notify-audio-icon))
+
+ (use-package jao-emms-info-track
+ :after emms
+ :init (setq jao-emms-show-icon jao-notify-audio-icon)
+ :config (jao-emms-info-setup 50))
+
+ (use-package jao-emms-lyrics
+ :after emms
+ :init (setq jao-lyrics-info-function 'jao-emms-lyrics-track-data))
+
+ (defvar jao-emms-random-album-notify--pause-icon
+ "/usr/share/icons/Tango/scalable/actions/media-playback-pause.svg")
+
+ (defun jao-emms--show-status (s status)
+ (jao-notify (format "%s%s%s"
+ (cadr s)
+ (cdr (assoc (car s) status))
+ (caddr s))
+ "emms"
+ (if (string= "pause" (cdr (assoc "state" status)))
+ jao-emms-random-album-notify--pause-icon
+ jao-notify-audio-icon)))
+
+ (defun jao-emms--osd-status (s &optional pref suff)
+ (emms-player-mpd-get-status (list s (or pref "") (or suff ""))
+ 'jao-emms--show-status))
+
+ #+END_SRC
+*** helper functions
+ #+begin_src emacs-lisp
+ (defun jao-emms-volume-delta (d)
+ (funcall emms-volume-change-function d))
+
+ (defun jao-emms-show-volume ()
+ (jao-emms--osd-status "volume" "Volume " "%"))
+
+ (defalias 'jao-emms-update-cache 'emms-player-mpd-update-all-reset-cache)
+
+ (defun jao-emms-load-streams ()
+ (interactive)
+ (emms-play-playlist (expand-file-name "~/var/lib/music/streams.list")))
+
+ (defun jao-emms-search ()
+ (interactive)
+ (let ((by (completing-read "Search by: "
+ '("artist"
+ "composer"
+ "performer"
+ "title"
+ "album"
+ "names"))))
+ (if (string= "names" by)
+ (emms-browser-search-by-names)
+ (emms-browser-search (list (intern (concat "info-" by)))))))
+
+ (defun jao-emms-echo ()
+ (interactive)
+ (emms-show)
+ (jao-emms-update-echo-string)
+ (emms-show))
+ #+end_src
+*** Media global aliases
+ #+begin_src emacs-lisp
+ (defalias 'jao-player-connect 'emms-player-mpd-connect)
+ (defalias 'jao-player-toggle 'emms-pause)
+ (defalias 'jao-player-next 'emms-next)
+ (defalias 'jao-player-previous 'emms-previous)
+ (defalias 'jao-player-stop 'emms-stop)
+ (defalias 'jao-player-start 'emms-start)
+ (defalias 'jao-player-seek-forward 'emms-seek-forward)
+ (defalias 'jao-player-seek-backward 'emms-seek-backward)
+ (defalias 'jao-player-play 'emms-start)
+ (defalias 'jao-player-search 'jao-emms-search)
+ (defalias 'jao-player-vol-delta 'jao-emms-volume-delta)
+ (defalias 'jao-player-volume 'jao-emms-show-volume)
+ (defalias 'jao-player-osd 'jao-emms-show-osd)
+ (defalias 'jao-player-echo 'jao-emms-echo)
+ (defalias 'jao-player-list 'emms-playlist-mode-go)
+ (defalias 'jao-player-browse 'emms-browser)
+ (defalias 'jao-player-random-album 'jao-emms-random-album-next)
+ #+end_src
+
* enwc
#+BEGIN_SRC emacs-lisp
(use-package enwc
diff --git a/init.org b/init.org
index 41936d9..03cd9bc 100644
--- a/init.org
+++ b/init.org
@@ -2927,138 +2927,6 @@
(global-set-key (kbd "<f4>") #'jao-toggle-audio-applet)
#+end_src
-*** emms
-***** configuration
- #+BEGIN_SRC emacs-lisp
- (use-package emms
- :pin gnu
- :ensure t
- :init
- (setq emms-score-file "~/.emacs.d/score"
- emms-stream-bookmarks-file "~/.emacs.d/streams"
- emms-history-file "~/.emacs.d/cache/emms-history"
- emms-cache-file "~/.emacs.d/cache/emms-cache"
- emms-show-format "%s")
-
- (setq emms-source-file-default-directory "~/var/lib/music/"
- emms-player-list '(emms-player-mpd)
- emms-player-mpd-server-name "localhost"
- emms-player-mpd-server-port "6600"
- emms-player-mpd-music-directory emms-source-file-default-directory)
-
- (setq emms-volume-change-function 'emms-volume-mpd-change
- emms-volume-change-amount 10
- emms-info-ogginfo-coding-system 'utf-8)
-
- ;; from http://www.shellarchive.co.uk/index.html#%20Prettify%20emms
- (setq emms-browser-info-genre-format "%i· %n"
- emms-browser-info-artist-format "%i· %n"
- emms-browser-info-album-format "%i◨ %n"
- emms-browser-info-title-format "%i♪ %n")
-
- (setq emms-last-played-format-alist
- '(((emms-last-played-seconds-today) . "Today at %H:%M")
- (604800 . "%a at %H:%M")
- ((emms-last-played-seconds-month) . "%d")
- ((emms-last-played-seconds-year) . "%m-%d")
- (t . "")))
-
- :hook ((emms-player-started . emms-player-mpd-show))
-
- :config
- (eval-after-load "emms-info"
- '(add-to-list 'emms-info-functions 'emms-info-mpd)))
-
- (emms-all)
- (emms-mode-line -1)
- (emms-playing-time 1)
- (emms-playing-time-disable-display)
-
- (use-package jao-emms-random-album
- :after emms
- :commands (jao-emms-random-album-next)
- :init (setq jao-emms-random-album-notify-icon jao-notify-audio-icon))
-
- (use-package jao-emms-info-track
- :after emms
- :init (setq jao-emms-show-icon jao-notify-audio-icon)
- :config (jao-emms-info-setup 50))
-
- (use-package jao-emms-lyrics
- :after emms
- :init (setq jao-lyrics-info-function 'jao-emms-lyrics-track-data))
-
- (defvar jao-emms-random-album-notify--pause-icon
- "/usr/share/icons/Tango/scalable/actions/media-playback-pause.svg")
-
- (defun jao-emms--show-status (s status)
- (jao-notify (format "%s%s%s"
- (cadr s)
- (cdr (assoc (car s) status))
- (caddr s))
- "emms"
- (if (string= "pause" (cdr (assoc "state" status)))
- jao-emms-random-album-notify--pause-icon
- jao-notify-audio-icon)))
-
- (defun jao-emms--osd-status (s &optional pref suff)
- (emms-player-mpd-get-status (list s (or pref "") (or suff ""))
- 'jao-emms--show-status))
-
- #+END_SRC
-***** helper functions
- #+begin_src emacs-lisp
- (defun jao-emms-volume-delta (d)
- (funcall emms-volume-change-function d))
-
- (defun jao-emms-show-volume ()
- (jao-emms--osd-status "volume" "Volume " "%"))
-
- (defalias 'jao-emms-update-cache 'emms-player-mpd-update-all-reset-cache)
-
- (defun jao-emms-load-streams ()
- (interactive)
- (emms-play-playlist (expand-file-name "~/var/lib/music/streams.list")))
-
- (defun jao-emms-search ()
- (interactive)
- (let ((by (completing-read "Search by: "
- '("artist"
- "composer"
- "performer"
- "title"
- "album"
- "names"))))
- (if (string= "names" by)
- (emms-browser-search-by-names)
- (emms-browser-search (list (intern (concat "info-" by)))))))
-
- (defun jao-emms-echo ()
- (interactive)
- (emms-show)
- (jao-emms-update-echo-string)
- (emms-show))
- #+end_src
-***** Media global aliases
- #+begin_src emacs-lisp
- (defalias 'jao-player-connect 'emms-player-mpd-connect)
- (defalias 'jao-player-toggle 'emms-pause)
- (defalias 'jao-player-next 'emms-next)
- (defalias 'jao-player-previous 'emms-previous)
- (defalias 'jao-player-stop 'emms-stop)
- (defalias 'jao-player-start 'emms-start)
- (defalias 'jao-player-seek-forward 'emms-seek-forward)
- (defalias 'jao-player-seek-backward 'emms-seek-backward)
- (defalias 'jao-player-play 'emms-start)
- (defalias 'jao-player-search 'jao-emms-search)
- (defalias 'jao-player-vol-delta 'jao-emms-volume-delta)
- (defalias 'jao-player-volume 'jao-emms-show-volume)
- (defalias 'jao-player-osd 'jao-emms-show-osd)
- (defalias 'jao-player-echo 'jao-emms-echo)
- (defalias 'jao-player-list 'emms-playlist-mode-go)
- (defalias 'jao-player-browse 'emms-browser)
- (defalias 'jao-player-random-album 'jao-emms-random-album-next)
- #+end_src
*** mpris
#+begin_src emacs-lisp
(use-package jao-mpris
@@ -3156,6 +3024,28 @@
(define-key mpdel-browser-mode-map (kbd "n") #'next-line)
(define-key mpdel-browser-mode-map (kbd "p") #'previous-line)
#+END_SRC
+*** mpc
+ #+begin_src emacs-lisp
+ (use-package elmpd :ensure t)
+
+ (use-package jao-mpc
+ :demand t
+ :commands jao-mpc-setup)
+
+ (jao-mpc-setup)
+
+ (defalias 'jao-player-connect 'jao-mpc-connect)
+ (defalias 'jao-player-toggle 'jao-mpc-toggle)
+ (defalias 'jao-player-next 'jao-mpc-next)
+ (defalias 'jao-player-previous 'jao-mpc-previous)
+ (defalias 'jao-player-stop 'jao-mpc-stop)
+ (defalias 'jao-player-seek-forward 'jao-mpc-seek-forward)
+ (defalias 'jao-player-seek-backward 'jao-mpc-seek-backward)
+ (defalias 'jao-player-play 'jao-mpc-play)
+ (defalias 'jao-player-echo 'jao-mpc-echo-current)
+ (defalias 'jao-player-list 'jao-mpc-show-playlist)
+ (defalias 'jao-player-browse 'jao-mpc-show-albums)
+ #+end_src
*** hydras
#+begin_src emacs-lisp
(require 'jao-lyrics)
@@ -3163,7 +3053,7 @@
(defun jao-show-some-lyrics (arg)
(interactive "P")
(if (string-blank-p (or jao-mpris-track-string ""))
- (jao-show-lyrics arg 'jao-emms-lyrics-track-data)
+ (jao-show-lyrics arg 'jao-mpc-lyrics-track-data)
(jao-show-lyrics arg 'jao-mpris-artist-title)))
(defalias 'jao-player-show-lyrics 'jao-show-some-lyrics)
@@ -3185,7 +3075,7 @@
(interactive)
(jao-notify "Volume" (format "%s%%" (jao-player-volume))))
- (use-package jao-emms-random-album)
+ (use-package jao-random-album :demand t)
(pretty-hydra-define jao-hydra-spotify
(global-map "s-s" :color blue :quit-key "q")
@@ -3202,7 +3092,6 @@
"Browse"
(("b" mpdel-pop-to-browser "browser")
("l" mpdel-playlist-open "playing list")
- ;; ("m" jao-counsel-spotify-change-mpris "change mpris provider")
("c" (mpdel-core-replace-current-playlist) "clear list" :color red)
("s-s" jao-hydra-spotify/body nil))))
@@ -3230,11 +3119,8 @@
("U" jao-mixer-capture-up "capture up" :color red)
("V" (jao-mixer-get-level "Capture") "show"))
"Utilities"
- (("C" jao-emms-update-cache "refresh cache")
- ("c" jao-player-connect "reconnect to mpd")
- ("r" jao-emms-random-album-toggle "toggle random album"
- :toggle jao-emms-random-album-p)
- ("N" jao-player-random-album "random album")
+ (("c" jao-player-connect "reconnect to mpd")
+ ("N" jao-random-album-next "random album")
("s-m" jao-hydra-media/body nil))))
#+end_src
diff --git a/lib/media/jao-mpc.el b/lib/media/jao-mpc.el
new file mode 100644
index 0000000..512d21b
--- /dev/null
+++ b/lib/media/jao-mpc.el
@@ -0,0 +1,224 @@
+;;; jao-mpc-random-album.el --- random mpc albums -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2021 jao
+
+;; Author: jao <mail@jao.io>
+;; Keywords: convenience
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Simple mpd control using mpc commands.
+
+;;; Code:
+
+(require 'elmpd)
+(require 'jao-minibuffer)
+(require 'jao-lyrics)
+
+(defvar jao-mpc--connection nil)
+(defvar jao-mpc-host "localhost")
+(defvar jao-mpc-port 6600)
+
+(defun jao-mpc-disconnect ()
+ (interactive)
+ (when jao-mpc--connection
+ (delete-process (elmpd-connection--fd jao-mpc--connection))
+ (setq jao-mpc--connection nil)))
+
+(defun jao-mpc-connect (&optional force)
+ (interactive)
+ (when force (jao-mpc-disconnect))
+ (unless jao-mpc--connection
+ (setq jao-mpc--connection
+ (elmpd-connect :name "jao-mpc"
+ :host jao-mpc-host
+ :port jao-mpc-port
+ :subsystems '((player) . jao-mpc--watcher)))
+ (jao-mpc--watcher jao-mpc--connection 'player))
+ jao-mpc--connection)
+
+(defun jao-mpc--send (cmd cb)
+ (elmpd-send jao-mpc--connection cmd cb ))
+
+(defvar jao-mpc--play-status '())
+(defvar jao-mpc--current '())
+(defvar jao-mpc-minibuffer-str "")
+
+(defun jao-mpc--update-status (next)
+ (let ((cb (lambda (_c ok txt)
+ (when ok
+ (setq jao-mpc--play-status '())
+ (dolist (e (split-string txt "\n" t " "))
+ (let ((e (split-string e ": " t " ")))
+ (when (and (car e) (cadr e))
+ (push (cons (car e) (cadr e)) jao-mpc--play-status))))
+ (when next (funcall next))))))
+ (jao-mpc--send "status" cb)))
+
+(defun jao-mpc--current-get (x &optional def)
+ (alist-get x jao-mpc--current def nil #'string=))
+
+(defun jao-mpc--status-get (x &optional def)
+ (alist-get x jao-mpc--play-status def nil #'string=))
+
+(defun jao-mpc--playing-p ()
+ (string= (jao-mpc--status-get "state" "") "play"))
+
+(defun jao-mpc--current-str ()
+ (let ((title (jao-mpc--current-get "Title"))
+ (album (jao-mpc--current-get "Album"))
+ (no (string-to-number (jao-mpc--current-get "Track" "0")))
+ (len (string-to-number (jao-mpc--status-get "playlistlength" "1")))
+ (artist (jao-mpc--current-get "Artist"))
+ (composer (jao-mpc--current-get "Composer")))
+ (format " %s%s %s%s%s"
+ (jao--put-face (if (zerop no) "" (format "%02d/%s " no len))
+ 'jao-themes-f02)
+ (jao--put-face title 'jao-themes-f00)
+ (jao--put-face artist 'jao-themes-f01)
+ (jao--put-face (if composer (format " [%s]" composer) "")
+ 'jao-themes-f01)
+ (jao--put-face (if album (format " (%s)" album) "") 'jao-themes-f11))))
+
+(defun jao-mpc--update-minibuffer ()
+ (setq jao-mpc-minibuffer-str
+ (if (jao-mpc--playing-p) (jao-mpc--current-str) ""))
+ (jao-minibuffer-refresh))
+
+(defun jao-mpc--update-current ()
+ (let ((cb (lambda (_c ok txt)
+ (when ok
+ (setq jao-mpc--current '())
+ (dolist (e (split-string txt "\n" t " "))
+ (let ((e (split-string e ": " t " ")))
+ (when (and (car e) (cadr e))
+ (push (cons (car e) (cadr e)) jao-mpc--current))))
+ (jao-mpc--update-minibuffer)))))
+ (jao-mpc--send "currentsong" cb)))
+
+(defun jao-mpc--watcher (_conn _subsys)
+ (jao-mpc--update-status #'jao-mpc--update-current))
+
+
+
+(defconst jao-mpc--albums "*MPC Albums*")
+(defconst jao-mpc--playlist "*MPC Playlist*")
+
+(define-derived-mode jao-mpc-albums-mode fundamental-mode "MPC Albums"
+ "Mode to display the list of albums known by mpd."
+ (read-only-mode -1)
+ (delete-region (point-min) (point-max))
+ (insert (shell-command-to-string "mpc list album"))
+ (goto-char (point-min))
+ (read-only-mode 1))
+
+(define-key jao-mpc-albums-mode-map (kbd "n") #'next-line)
+(define-key jao-mpc-albums-mode-map (kbd "p") #'previous-line)
+(define-key jao-mpc-albums-mode-map (kbd "RET") #'jao-mpc-add-and-play)
+(define-key jao-mpc-albums-mode-map (kbd "q") #'bury-buffer)
+
+(defun jao-mpc--album-buffer ()
+ (if-let (b (get-buffer jao-mpc--albums))
+ b
+ (with-current-buffer (get-buffer-create jao-mpc--albums)
+ (jao-mpc-albums-mode)
+ (current-buffer))))
+
+(defun jao-mpc--add-and-play (&optional album)
+ (interactive)
+ (let* ((album (or album (string-trim (thing-at-point 'line))))
+ (cmd (format "mpc findadd album \"%s\" && mpc play" album)))
+ (shell-command-to-string "mpc clear")
+ (shell-command-to-string cmd)))
+
+(define-derived-mode jao-mpc-playlist-mode fundamental-mode "MPC Playlist"
+ "Mode to display the list of playlist known by mpd."
+ (read-only-mode -1)
+ (delete-region (point-min) (point-max))
+ (insert (shell-command-to-string "mpc playlist"))
+ (goto-char (point-min))
+ (read-only-mode 1))
+
+(define-key jao-mpc-playlist-mode-map (kbd "n") #'next-line)
+(define-key jao-mpc-playlist-mode-map (kbd "p") #'previous-line)
+(define-key jao-mpc-playlist-mode-map (kbd "q") #'bury-buffer)
+
+(defun jao-mpc--playlist-buffer ()
+ (if-let (b (get-buffer jao-mpc--playlist))
+ b
+ (with-current-buffer (get-buffer-create jao-mpc--playlist)
+ (jao-mpc-playlist-mode)
+ (current-buffer))))
+
+;;;###autoload
+(defun jao-mpc-stop ()
+ (interactive)
+ (shell-command-to-string "mpc stop"))
+
+;;;###autoload
+(defun jao-mpc-toggle ()
+ (interactive)
+ (jao-mpc--send "pause" nil))
+
+;;;###autoload
+(defun jao-mpc-play ()
+ (interactive)
+ (jao-mpc--send "play" nil))
+
+;;;###autoload
+(defun jao-mpc-next ()
+ (interactive)
+ (jao-mpc--send "next" nil))
+
+;;;###autoload
+(defun jao-mpc-previous ()
+ (interactive)
+ (jao-mpc--send "previous" nil))
+
+;;;###autoload
+(defun jao-mpc-echo-current ()
+ (interactive)
+ (jao-notify (jao-mpc--current-str)))
+
+;;;###autoload
+(defun jao-mpc-show-albums ()
+ "Show album list."
+ (interactive)
+ (pop-to-buffer (jao-mpc--album-buffer)))
+
+;;;###autoload
+(defun jao-mpc-show-playlist ()
+ "Show current playlist."
+ (interactive)
+ (pop-to-buffer (jao-mpc--playlist-buffer)))
+
+;;;###autoload
+(defun jao-mpc-lyrics-track-data ()
+ (when-let* ((title (jao-mpc--current-get "Title"))
+ (artist (jao-mpc--current-get "Artist")))
+ (cons (substring-no-properties title) (substring-no-properties artist))))
+
+;;;###autoload
+(defun jao-mpc-setup ()
+ (setq jao-lyrics-info-function #'jao-mpc-lyrics-track-data)
+ (jao-random-album-setup #'jao-mpc--album-buffer
+ #'jao-mpc--add-and-play
+ #'jao-mpc-stop)
+ (jao-mpc-connect)
+ (jao-minibuffer-add-msg-variable 'jao-mpc-minibuffer-str 1))
+
+(provide 'jao-mpc)
+;;; jao-mpc.el ends here
diff --git a/lib/media/jao-random-album.el b/lib/media/jao-random-album.el
index 7158417..791b241 100644
--- a/lib/media/jao-random-album.el
+++ b/lib/media/jao-random-album.el
@@ -1,6 +1,6 @@
;; jao-random-album.el -- play random albums
-;; Copyright (C) 2009, 2010, 2017, 2018, 2019 Jose Antonio Ortega Ruiz
+;; Copyright (C) 2009, 2010, 2017, 2018, 2019, 2021 Jose Antonio Ortega Ruiz
;; Author: Jose Antonio Ortega Ruiz <jao@gnu.org>
;; Start date: Sat Jul 04, 2009 13:06
@@ -77,13 +77,11 @@
(defun jao-random-album-next ()
(interactive)
(with-current-buffer (get-buffer (funcall jao-random-album-buffer))
- (save-excursion
- (jao-goto-random-album)
- (let ((album (string-trim
- (substring-no-properties (thing-at-point 'line) 0 -1))))
- (funcall jao-random-album-add-tracks-and-play)
- (when jao-random-album-notify-p
- (jao-notify album "Next album" jao-random-album-notify-icon))))))
+ (jao-goto-random-album)
+ (let ((album (string-trim (thing-at-point 'line))))
+ (funcall jao-random-album-add-tracks-and-play album)
+ (when jao-random-album-notify-p
+ (jao-notify album "Next album" jao-random-album-notify-icon)))))
(defun jao-random-album-reset ()
(interactive)