making a yt-dlp to empv function

This commit is contained in:
Chris Cochrun 2025-03-26 10:55:46 -05:00
parent d0ff0b78ad
commit 2f23e73011
2 changed files with 168 additions and 148 deletions

View file

@ -5066,25 +5066,35 @@ With empv we can perhaps control mpv much more fine grainly and even search yout
(let* ((item (when (not file) (empv-youtube-results--current-item))) (let* ((item (when (not file) (empv-youtube-results--current-item)))
(video-id (when (not file) (alist-get 'videoId item))) (video-id (when (not file) (alist-get 'videoId item)))
(playlist-id (when (not file) (alist-get 'playlistId item))) (playlist-id (when (not file) (alist-get 'playlistId item)))
(title (if file (shell-command (title (if file (shell-command-to-string
(format "yt-dlp --get-title %s" file)) (format "yt-dlp --no-warnings --quiet --get-title %s" file))
(alist-get 'title item))) (alist-get 'title item)))
(url (if file file (url (if file file
(format (format
"https://youtube.com/%s=%s" "https://youtube.com/%s=%s"
(if video-id "watch?v" "playlist?list") (if video-id "watch?v" "playlist?list")
(or video-id playlist-id))))) (or video-id playlist-id))))
(output-buffer (generate-new-buffer "*yt-dlp*"))
(process (progn
(message "Starting to download %s at %s" title url)
(make-process
:name "yt-dlp"
:buffer output-buffer
:command `("yt-dlp" "-o"
"~/vids/%(title)s.%(ext)s"
;; "-f best[ext=mp4]"
,(cl-coerce url 'string)
"--embed-thumbnail"
"--sponsorblock-remove=sponsor,intro,outro"))
(get-buffer-process output-buffer)))
(enqueue `(lambda (process event)
(message "running %s because %s" process event)
(empv-enqueue (concat "/home/chris/vids/" (string-trim ,title) ".mp4")))))
(message url) (message url)
(async-start-process (if (process-live-p process)
"yt-dlp" "yt-dlp" (set-process-sentinel
(lambda () process enqueue)
(let ((file (format "/home/chris/vids/%s.%s" title "webm"))) (message "No process running"))))
(empv-play-or-enqueue file))
(message "here be the url %s" url))
"-o" "'/home/chris/vids/%(title)s.%(ext)s'" url)))
(get-process "yt-dlp")
(chris/empv-yt-dlp "https://inv.cochrun.xyz/watch?v=qRE6kf30u4g")
(defun chris/empv-yt-dlp-jellyfin () (defun chris/empv-yt-dlp-jellyfin ()
"Grabs the current video at point and downloads it to my jellyfin server" "Grabs the current video at point and downloads it to my jellyfin server"

36
init.el
View file

@ -3712,25 +3712,35 @@ targets."
(let* ((item (when (not file) (empv-youtube-results--current-item))) (let* ((item (when (not file) (empv-youtube-results--current-item)))
(video-id (when (not file) (alist-get 'videoId item))) (video-id (when (not file) (alist-get 'videoId item)))
(playlist-id (when (not file) (alist-get 'playlistId item))) (playlist-id (when (not file) (alist-get 'playlistId item)))
(title (if file (shell-command (title (if file (shell-command-to-string
(format "yt-dlp --get-title %s" file)) (format "yt-dlp --no-warnings --quiet --get-title %s" file))
(alist-get 'title item))) (alist-get 'title item)))
(url (if file file (url (if file file
(format (format
"https://youtube.com/%s=%s" "https://youtube.com/%s=%s"
(if video-id "watch?v" "playlist?list") (if video-id "watch?v" "playlist?list")
(or video-id playlist-id))))) (or video-id playlist-id))))
(output-buffer (generate-new-buffer "*yt-dlp*"))
(process (progn
(message "Starting to download %s at %s" title url)
(make-process
:name "yt-dlp"
:buffer output-buffer
:command `("yt-dlp" "-o"
"~/vids/%(title)s.%(ext)s"
;; "-f best[ext=mp4]"
,(cl-coerce url 'string)
"--embed-thumbnail"
"--sponsorblock-remove=sponsor,intro,outro"))
(get-buffer-process output-buffer)))
(enqueue `(lambda (process event)
(message "running %s because %s" process event)
(empv-enqueue (concat "/home/chris/vids/" (string-trim ,title) ".mp4")))))
(message url) (message url)
(async-start-process (if (process-live-p process)
"yt-dlp" "yt-dlp" (set-process-sentinel
(lambda () process enqueue)
(let ((file (format "/home/chris/vids/%s.%s" title "webm"))) (message "No process running"))))
(empv-play-or-enqueue file))
(message "here be the url %s" url))
"-o" "'/home/chris/vids/%(title)s.%(ext)s'" url)))
(get-process "yt-dlp")
(chris/empv-yt-dlp "https://inv.cochrun.xyz/watch?v=qRE6kf30u4g")
(defun chris/empv-yt-dlp-jellyfin () (defun chris/empv-yt-dlp-jellyfin ()
"Grabs the current video at point and downloads it to my jellyfin server" "Grabs the current video at point and downloads it to my jellyfin server"