diff options
| author | BardofSprites <[email protected]> | 2025-04-04 11:21:13 -0400 |
|---|---|---|
| committer | BardofSprites <[email protected]> | 2025-04-04 11:21:13 -0400 |
| commit | b44a03de044ca07d84ce5c924a4c308ce5294174 (patch) | |
| tree | 3a684114d62d99e513edb14aa39631c80ee57036 | |
| parent | 49a3ce51b13b09804166e021dc8ce8cbaa2e3dbc (diff) | |
media library
| -rw-r--r-- | bard-elisp/bard-media.el | 69 | ||||
| -rw-r--r-- | bard-elisp/bard-videos.el | 20 | ||||
| -rw-r--r-- | bard-emacs-modules/bard-emacs-media.el | 9 |
3 files changed, 78 insertions, 20 deletions
diff --git a/bard-elisp/bard-media.el b/bard-elisp/bard-media.el new file mode 100644 index 0000000..22d54c9 --- /dev/null +++ b/bard-elisp/bard-media.el @@ -0,0 +1,69 @@ +(require 'cl-lib) +(require 'seq) +(require 'emms) +(require 'image-dired) +(require 'dired-x) + +(defun bard/play-youtube-video () + "Prompt for a YouTube URL and play it in mpv." + (interactive) + (let ((url (read-string "Enter YouTube URL: "))) + (if (and url (string-match-p "https?://\\(www\\.\\)?youtube\\.com\\|youtu\\.be" url)) + (async-shell-command (format "mpv '%s'" url)) + (message "The URL is not a valid YouTube link: %s" url)))) + +(defun bard/save-emms-watch-later () + "Save the current EMMS playlist to `bard/watch-later-file` using `bard/emms-playlist-format`." + (interactive) + (when (and bard/watch-later-file bard/emms-playlist-format) + (emms-playlist-save bard/emms-playlist-format bard/watch-later-file) + (message "Playlist saved to %s" bard/watch-later-file))) + +;; (defun bard/image-browser (directory) +;; "Open nsxiv in thumbnail mode on DIRECTORY. +;; Asks the user whether to enable recursive mode." +;; (interactive "DSelect directory: ") +;; (let ((recursive (if (y-or-n-p "Recursive searching? ") "-r" ""))) +;; (start-process "nsxiv" "nsxiv" "-t" "-o" recursive (expand-file-name directory)))) + +;; (defun bard/image-browser (directory) +;; "Open nsxiv in thumbnail mode on DIRECTORY. +;; Asks the user whether to enable recursive mode." +;; (interactive "DSelect directory: ") +;; (let ((recursive (if (y-or-n-p "Recursive searching? ") "-r" ""))) +;; (start-process "nsxiv" "*nsxiv*" "nsxiv" "-t" "-o" recursive (expand-file-name directory)) +;; (pop-to-buffer "*nsxiv*"))) + +;; (defun bard/image-browser (directory) +;; "Open nsxiv in thumbnail mode on DIRECTORY. +;; Asks the user whether to enable recursive mode." +;; (interactive "DSelect directory: ") +;; (let ((recursive (if (y-or-n-p "Recursive searching? ") "-r" "")) +;; (stdout (if (y-or-n-p "Output marked files to buffer? ") "-o" ""))) +;; (start-process "nsxiv" "*nsxiv*" "nsxiv" "-t" stdout recursive (expand-file-name directory)) +;; (if (string= stdout "-o") +;; (progn (with-current-buffer "*nsxiv*" +;; (read-only-mode nil) +;; (erase-buffer)) +;; (pop-to-buffer "*nsxiv*") +;; ) +;; nil))) + +(defun bard/image-browser (directory) + "Open nsxiv in thumbnail mode on DIRECTORY. +Asks the user whether to enable recursive mode." + (interactive "DSelect directory: ") + (let ((recursive (if (y-or-n-p "Recursive searching? ") "-r" "")) + (stdout (if (y-or-n-p "Output marked files to buffer? ") "-o" ""))) + (let ((process (start-process "nsxiv" "*nsxiv*" "nsxiv" "-t" stdout recursive (expand-file-name directory)))) + (when (string= stdout "-o") + (set-process-sentinel + process + (lambda (proc event) + (when (string= event "finished\n") + (with-current-buffer "*nsxiv*" + (read-only-mode nil) + (erase-buffer))))) + (pop-to-buffer "*nsxiv*"))))) + +(provide 'bard-media.el) diff --git a/bard-elisp/bard-videos.el b/bard-elisp/bard-videos.el deleted file mode 100644 index ae1fadc..0000000 --- a/bard-elisp/bard-videos.el +++ /dev/null @@ -1,20 +0,0 @@ -(require 'cl-lib) -(require 'seq) -(require 'emms) - -(defun bard/play-youtube-video () - "Prompt for a YouTube URL and play it in mpv." - (interactive) - (let ((url (read-string "Enter YouTube URL: "))) - (if (and url (string-match-p "https?://\\(www\\.\\)?youtube\\.com\\|youtu\\.be" url)) - (async-shell-command (format "mpv '%s'" url)) - (message "The URL is not a valid YouTube link: %s" url)))) - -(defun bard/save-emms-watch-later () - "Save the current EMMS playlist to `bard/watch-later-file` using `bard/emms-playlist-format`." - (interactive) - (when (and bard/watch-later-file bard/emms-playlist-format) - (emms-playlist-save bard/emms-playlist-format bard/watch-later-file) - (message "Playlist saved to %s" bard/watch-later-file))) - -(provide 'bard-videos.el) diff --git a/bard-emacs-modules/bard-emacs-media.el b/bard-emacs-modules/bard-emacs-media.el index 352e0d1..b84d2c9 100644 --- a/bard-emacs-modules/bard-emacs-media.el +++ b/bard-emacs-modules/bard-emacs-media.el @@ -58,4 +58,13 @@ (pdf-tools-install) (add-to-list 'pdf-tools-enabled-modes #'pdf-view-themed-minor-mode)) +(use-package bard-media + :ensure nil + :config + (require 'bard-media) + :bind + (("C-c o p" . bard/play-youtube-video) + ("C-c o i" . bard/image-browser)) + ) + (provide 'bard-emacs-media) |
