aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bard-elisp/bard-web.el32
-rw-r--r--bard-emacs-modules/bard-emacs-emms.el7
-rw-r--r--bard-emacs-modules/bard-emacs-web.el8
3 files changed, 46 insertions, 1 deletions
diff --git a/bard-elisp/bard-web.el b/bard-elisp/bard-web.el
new file mode 100644
index 0000000..a0d667c
--- /dev/null
+++ b/bard-elisp/bard-web.el
@@ -0,0 +1,32 @@
+(defun bard/play-elfeed-video ()
+ "Play the URL of the entry at point in mpv if it's a YouTube video."
+ (interactive)
+ (let ((entry (elfeed-search-selected :single)))
+ (if entry
+ (let ((url (elfeed-entry-link entry)))
+ (if (and url (string-match-p "https?://\\(www\\.\\)?youtube\\.com\\|youtu\\.be" url))
+ (progn
+ (async-shell-command (format "mpv '%s'" url))
+ (elfeed-search-untag-all-unread))
+ (message "The URL is not a YouTube link: %s" url)))
+ (message "No entry selected in Elfeed."))))
+
+(defun bard/add-video-emms-queue ()
+ "Play the URL of the entry at point in mpv if it's a YouTube video. Add it to EMMS queue."
+ (interactive)
+ (let ((entry (elfeed-search-selected :single)))
+ (if entry
+ (let ((url (elfeed-entry-link entry)))
+ (if (and url (string-match-p "https?://\\(www\\.\\)?youtube\\.com\\|youtu\\.be" url))
+ (let* ((playlist-name "Watch Later")
+ (playlist-buffer (get-buffer (format " *%s*" playlist-name))))
+ (unless playlist-buffer
+ (setq playlist-buffer (emms-playlist-new (format " *%s*" playlist-name))))
+ (emms-playlist-set-playlist-buffer playlist-buffer)
+ (emms-add-url url)
+ (elfeed-search-untag-all-unread)
+ (message "Added YouTube video to EMMS playlist: %s" url))
+ (message "The URL is not a YouTube link: %s" url)))
+ (message "No entry selected in Elfeed."))))
+
+(provide 'bard-web)
diff --git a/bard-emacs-modules/bard-emacs-emms.el b/bard-emacs-modules/bard-emacs-emms.el
index fdc1782..5e69d89 100644
--- a/bard-emacs-modules/bard-emacs-emms.el
+++ b/bard-emacs-modules/bard-emacs-emms.el
@@ -13,6 +13,7 @@
:bind
(:map emms-playlist-mode-map
("A" . emms-add-directory)
+ ("l" . emms-add-playlist)
("T" . emms-add-directory-tree)
("F" . emms-add-file)
("U" . emms-add-url)
@@ -37,6 +38,12 @@
(setq emms-volume-amixer-card 0)
+ (require 'emms-player-simple)
+ (define-emms-simple-player mpv-video '(file url)
+ (regexp-opt '("mp4" "mkv" "webm" "youtube.com" "youtu.be"))
+ "mpv" "--quiet" "--no-audio-display" "--vid=1")
+ (add-to-list 'emms-player-list 'emms-player-mpv-video)
+
;; center line function
(defun bard/emms-recenter ()
(interactive)
diff --git a/bard-emacs-modules/bard-emacs-web.el b/bard-emacs-modules/bard-emacs-web.el
index d9a8e26..276f42d 100644
--- a/bard-emacs-modules/bard-emacs-web.el
+++ b/bard-emacs-modules/bard-emacs-web.el
@@ -27,8 +27,14 @@
(use-package elfeed
:ensure t
:config
+ (require 'bard-web)
(global-set-key (kbd "C-c r") 'elfeed)
- (setq elfeed-search-filter "+unread -academia"))
+ (setq elfeed-search-filter "+unread")
+
+ :bind
+ (:map elfeed-search-mode-map
+ ("C-c C-p" . bard/play-elfeed-video)
+ ("C-c C-e" . bard/add-video-emms-queue)))
(use-package elfeed-org
:ensure t