branch: elpa/subed commit e71a64b76642f67766f7cec609ab54ad633a8d6f Author: Sacha Chua <sa...@sachachua.com> Commit: Sacha Chua <sa...@sachachua.com>
Refactor common code into subed-mpv-play-video * subed/subed-mpv.el (subed-mpv--play): New function. (subed-mpv-play-video-from-url): Call subed-mpv--play. (subed-mpv-find-video): Call subed-mpv--play. --- subed/subed-mpv.el | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/subed/subed-mpv.el b/subed/subed-mpv.el index cf3a92f..bd706bc 100644 --- a/subed/subed-mpv.el +++ b/subed/subed-mpv.el @@ -335,15 +335,14 @@ See \"List of events\" in mpv(1)." (or (file-directory-p filepath) (member (file-name-extension filename) subed-video-extensions))))) -(defun subed-mpv-play-video-from-url (url) - "Open video file from URL in mpv." - (interactive "MURL: ") +(defun subed-mpv--play (video) + "Open VIDEO and play it in MPV." (when (subed-mpv--server-started-p) (subed-mpv-kill)) (when (apply #'subed-mpv--server-start subed-mpv-arguments) - (subed-debug "Opening video from URL: %s" url) + (subed-debug "Opening video: %s" video) (subed-mpv--client-connect subed-mpv--retry-delays) - (subed-mpv--client-send `(loadfile ,url replace)) + (subed-mpv--client-send `(loadfile ,video replace)) ;; mpv won't add the subtitles if the file doesn't exist yet, so we add it ;; via after-save-hook. (if (file-exists-p (buffer-file-name)) @@ -352,26 +351,21 @@ See \"List of events\" in mpv(1)." (subed-mpv--client-send `(observe_property 1 time-pos)) (subed-mpv-playback-speed subed-playback-speed-while-not-typing))) +(defun subed-mpv-play-video-from-url (url) + "Open video file from URL in mpv. +See the MPV manual for a list of supported URL types. If you have +youtube-dl installed, MPV can open videos from a variety of +hosting providers." + (interactive "MURL: ") + (subed-mpv--play url)) + (defun subed-mpv-find-video (file) "Open video file FILE in mpv. Video files are expected to have any of the extensions listed in `subed-video-extensions'." (interactive (list (read-file-name "Find video: " nil nil t nil #'subed-mpv--is-video-file-p))) - (let ((filepath (expand-file-name file))) - (when (subed-mpv--server-started-p) - (subed-mpv-kill)) - (when (apply #'subed-mpv--server-start subed-mpv-arguments) - (subed-debug "Opening video file: %s" filepath) - (subed-mpv--client-connect subed-mpv--retry-delays) - (subed-mpv--client-send `(loadfile ,filepath replace)) - ;; mpv won't add the subtitles if the file doesn't exist yet, so we add it - ;; via after-save-hook. - (if (file-exists-p (buffer-file-name)) - (subed-mpv-add-subtitles (buffer-file-name)) - (add-hook 'after-save-hook #'subed-mpv--add-subtitle-after-first-save :append :local)) - (subed-mpv--client-send `(observe_property 1 time-pos)) - (subed-mpv-playback-speed subed-playback-speed-while-not-typing)))) + (subed-mpv--play (expand-file-name file))) (defun subed-mpv--add-subtitle-after-first-save () "Tell mpv to load subtitles from function `buffer-file-name'.