making a yt-dlp to empv function
This commit is contained in:
parent
d0ff0b78ad
commit
2f23e73011
36
README.org
36
README.org
|
@ -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
36
init.el
|
@ -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"
|
||||||
|
|
Loading…
Reference in a new issue