emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master 5f4bc14 058/272: counsel.el (counsel-rhythmbox-current-son


From: Oleh Krehel
Subject: [elpa] master 5f4bc14 058/272: counsel.el (counsel-rhythmbox-current-song): Preselect the current song
Date: Mon, 25 Apr 2016 10:13:16 +0000

branch: master
commit 5f4bc14db005ccf422fc64d8b0f9415b02f0f3d8
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>

    counsel.el (counsel-rhythmbox-current-song): Preselect the current song
    
    * counsel.el (counsel-rhythmbox-current-song): New defun.
---
 counsel.el |   16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/counsel.el b/counsel.el
index 9a3adcc..8ace5ba 100644
--- a/counsel.el
+++ b/counsel.el
@@ -973,6 +973,7 @@ Usable with `ivy-resume', `ivy-next-line-and-call' and
 (defvar rhythmbox-library)
 (declare-function rhythmbox-load-library "ext:helm-rhythmbox")
 (declare-function dbus-call-method "dbus")
+(declare-function dbus-get-property "dbus")
 (declare-function rhythmbox-song-uri "ext:helm-rhythmbox")
 (declare-function helm-rhythmbox-candidates "ext:helm-rhythmbox")
 
@@ -987,6 +988,20 @@ Usable with `ivy-resume', `ivy-next-line-and-call' and
 (defvar counsel-rhythmbox-history nil
   "History for `counsel-rhythmbox'.")
 
+(defun counsel-rhythmbox-current-song ()
+  "Return the currently playing song title."
+  (ignore-errors
+    (let* ((entry (dbus-get-property
+                   :session
+                   "org.mpris.MediaPlayer2.rhythmbox"
+                   "/org/mpris/MediaPlayer2"
+                   "org.mpris.MediaPlayer2.Player"
+                   "Metadata"))
+           (artist (caar (cadr (assoc "xesam:artist" entry))))
+           (album (cl-caadr (assoc "xesam:album" entry)))
+           (title (cl-caadr (assoc "xesam:title" entry))))
+      (format "%s - %s - %s" artist album title))))
+
 ;;;###autoload
 (defun counsel-rhythmbox ()
   "Choose a song from the Rhythmbox library to play or enqueue."
@@ -1000,6 +1015,7 @@ Usable with `ivy-resume', `ivy-next-line-and-call' and
   (ivy-read "Rhythmbox: "
             (helm-rhythmbox-candidates)
             :history 'counsel-rhythmbox-history
+            :preselect (counsel-rhythmbox-current-song)
             :action
             '(1
               ("p" helm-rhythmbox-play-song "Play song")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]