diff options
| -rw-r--r-- | bard-elisp/bard-web.el | 32 | ||||
| -rw-r--r-- | bard-emacs-modules/bard-emacs-emms.el | 7 | ||||
| -rw-r--r-- | bard-emacs-modules/bard-emacs-web.el | 8 |
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 |
