[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 74358c2 070/348: Purge all dependency on helm-rhythmbox
From: |
Oleh Krehel |
Subject: |
[elpa] master 74358c2 070/348: Purge all dependency on helm-rhythmbox |
Date: |
Sat, 8 Apr 2017 11:03:29 -0400 (EDT) |
branch: master
commit 74358c2781353c80113fae0f5e27f3a857f8739e
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>
Purge all dependency on helm-rhythmbox
Got tired of a breaking interface change every two months.
* counsel.el (counsel-rhythmbox-play-song): New defun.
(counsel-rhythmbox-history): New defvar.
(counsel-rhythmbox): Update.
---
counsel.el | 50 +++++++++++++++++++++++++++++++++++---------------
1 file changed, 35 insertions(+), 15 deletions(-)
diff --git a/counsel.el b/counsel.el
index 30c8f96..4fce04d 100644
--- a/counsel.el
+++ b/counsel.el
@@ -2099,24 +2099,30 @@ And insert it into the minibuffer. Useful during
;;* Misc OS
;;** `counsel-rhythmbox'
-(defvar helm-rhythmbox-library)
-(declare-function helm-rhythmbox-load-library "ext:helm-rhythmbox")
(declare-function dbus-call-method "dbus")
(declare-function dbus-get-property "dbus")
-(declare-function helm-rhythmbox-song-uri "ext:helm-rhythmbox")
-(declare-function helm-rhythmbox-candidates "ext:helm-rhythmbox")
-(defun counsel-rhythmbox-enqueue-song (song)
+(defun counsel-rhythmbox-play-song (uri)
+ "Let Rhythmbox enqueue SONG."
+ (let ((service "org.gnome.Rhythmbox3")
+ (path "/org/mpris/MediaPlayer2")
+ (interface "org.mpris.MediaPlayer2.Player"))
+ (dbus-call-method :session service path interface
+ "OpenUri" uri)))
+
+(defun counsel-rhythmbox-enqueue-song (uri)
"Let Rhythmbox enqueue SONG."
(let ((service "org.gnome.Rhythmbox3")
(path "/org/gnome/Rhythmbox3/PlayQueue")
(interface "org.gnome.Rhythmbox3.PlayQueue"))
(dbus-call-method :session service path interface
- "AddToQueue" (helm-rhythmbox-song-uri song))))
+ "AddToQueue" uri)))
(defvar counsel-rhythmbox-history nil
"History for `counsel-rhythmbox'.")
+(defvar counsel-rhythmbox-songs nil)
+
(defun counsel-rhythmbox-current-song ()
"Return the currently playing song title."
(ignore-errors
@@ -2135,21 +2141,35 @@ And insert it into the minibuffer. Useful during
(defun counsel-rhythmbox ()
"Choose a song from the Rhythmbox library to play or enqueue."
(interactive)
- (unless (require 'helm-rhythmbox nil t)
- (error "Please install `helm-rhythmbox'"))
- (unless helm-rhythmbox-library
- (helm-rhythmbox-load-library)
- (while (null helm-rhythmbox-library)
- (sit-for 0.1)))
- (ivy-read "Rhythmbox: "
- (helm-rhythmbox-candidates)
+ (unless counsel-rhythmbox-songs
+ (let* ((service "org.gnome.Rhythmbox3")
+ (path "/org/gnome/UPnP/MediaServer2/Library/all")
+ (interface "org.gnome.UPnP.MediaContainer2")
+ (nb-songs (dbus-get-property
+ :session service path interface "ChildCount")))
+ (if (not nb-songs)
+ (error "Couldn't connect to Rhythmbox")
+ (setq counsel-rhythmbox-songs
+ (mapcar (lambda (x)
+ (cons
+ (format
+ "%s - %s - %s"
+ (cl-caadr (assoc "Artist" x))
+ (cl-caadr (assoc "Album" x))
+ (cl-caadr (assoc "DisplayName" x)))
+ (cl-caaadr (assoc "URLs" x))))
+ (dbus-call-method
+ :session service path interface "ListChildren"
+ 0 nb-songs '("*")))))))
+ (ivy-read "Rhythmbox: " counsel-rhythmbox-songs
:history 'counsel-rhythmbox-history
:preselect (counsel-rhythmbox-current-song)
:action
'(1
- ("p" helm-rhythmbox-play-song "Play song")
+ ("p" counsel-rhythmbox-play-song "Play song")
("e" counsel-rhythmbox-enqueue-song "Enqueue song"))
:caller 'counsel-rhythmbox))
+
;;** `counsel-linux-app'
(defvar counsel-linux-apps-alist nil
"List of data located in /usr/share/applications.")
- [elpa] master c30a6e2 046/348: ivy.el (ivy-minibuffer-map): Undo remap, (continued)
- [elpa] master c30a6e2 046/348: ivy.el (ivy-minibuffer-map): Undo remap, Oleh Krehel, 2017/04/08
- [elpa] master 3e1a940 045/348: counsel.el: Fix byte compile warnings, Oleh Krehel, 2017/04/08
- [elpa] master c960de5 047/348: counsel.el (counsel-grep-or-swiper): Don't grep on compressed files, Oleh Krehel, 2017/04/08
- [elpa] master 2776358 059/348: Show current value of the variable in the prompt, Oleh Krehel, 2017/04/08
- [elpa] master beee0b7 048/348: counsel.el (counsel-git): Add better error message, Oleh Krehel, 2017/04/08
- [elpa] master 65948fc 053/348: colir.el (colir-parse-color): Fix color parsing in terminal, Oleh Krehel, 2017/04/08
- [elpa] master e987cef 061/348: counsel.el (counsel-read-setq-expression): Fix Eldoc nag, Oleh Krehel, 2017/04/08
- [elpa] master 0091c8a 058/348: ivy.el (ivy-set-prompt-text-properties-function): New devar, Oleh Krehel, 2017/04/08
- [elpa] master 473c595 064/348: Facilitate the sorting of cons cell input to ivy-read, Oleh Krehel, 2017/04/08
- [elpa] master 23bd7a4 075/348: counsel.el (counsel-git): Add :caller, Oleh Krehel, 2017/04/08
- [elpa] master 74358c2 070/348: Purge all dependency on helm-rhythmbox,
Oleh Krehel <=
- [elpa] master 56aa605 076/348: ivy.el (ivy-add-prompt-count): Refactor from ivy--reset-state, Oleh Krehel, 2017/04/08
- [elpa] master 9c01abf 003/348: doc/Changelog.org: Add hlines, Oleh Krehel, 2017/04/08
- [elpa] master e53f256 087/348: ivy.el (ivy-minibuffer-map): Move ivy-toggle-regexp-quote from "M-q" to "M-r", Oleh Krehel, 2017/04/08
- [elpa] master af5f097 108/348: counsel.el (counsel-locate-action-extern): Make interactive, Oleh Krehel, 2017/04/08
- [elpa] master 0028c8c 106/348: counsel.el (counsel-outline): New command, Oleh Krehel, 2017/04/08
- [elpa] master 1d8b4f8 110/348: ivy.el (ivy-sort-matches-functions-alist): New sorting for ivy-switch-buffer, Oleh Krehel, 2017/04/08
- [elpa] master 027fbac 114/348: swiper.el (swiper-multi-action-2): Fix swiper-all, Oleh Krehel, 2017/04/08
- [elpa] master d6cf677 077/348: ivy.el (ivy-prompt): Add warning, Oleh Krehel, 2017/04/08
- [elpa] master 9bd79da 074/348: ivy.el (ivy-set-prompt): New API, Oleh Krehel, 2017/04/08
- [elpa] master 72dcca5 082/348: ivy.el (ivy-push-view): Work properly for dired-mode, Oleh Krehel, 2017/04/08