aboutsummaryrefslogtreecommitdiff
path: root/bard-elisp/bard-web.el
diff options
context:
space:
mode:
Diffstat (limited to 'bard-elisp/bard-web.el')
-rw-r--r--bard-elisp/bard-web.el32
1 files changed, 32 insertions, 0 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)