aboutsummaryrefslogtreecommitdiff
path: root/bard-elisp/bard-media.el
diff options
context:
space:
mode:
authorBardofSprites <[email protected]>2025-04-04 11:21:13 -0400
committerBardofSprites <[email protected]>2025-04-04 11:21:13 -0400
commitb44a03de044ca07d84ce5c924a4c308ce5294174 (patch)
tree3a684114d62d99e513edb14aa39631c80ee57036 /bard-elisp/bard-media.el
parent49a3ce51b13b09804166e021dc8ce8cbaa2e3dbc (diff)
media library
Diffstat (limited to 'bard-elisp/bard-media.el')
-rw-r--r--bard-elisp/bard-media.el69
1 files changed, 69 insertions, 0 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)