;;; acdw-ytel.el --- bespoke functions for ytel -*- lexical-binding: t -*- ;;; Commentary: ;; Extra code for the ytel package: ;; https://github.com/gRastello/ytel ;;; Code: (require 'ytel nil t) (defun acdw/ytel-current-video-link () "Get the link of the video at point." (let* ((video (ytel-get-current-video)) (id (ytel-video-id video))) (concat "https://www.youtube.com/watch?v=" id))) (defun acdw/ytel-watch () ; This could possibly use `browse-url'. "Stream video at point in mpv." (interactive) (start-process "ytel mpv" nil "mpv" (acdw/ytel-current-video-link) "--ytdl-format=bestvideo[height<=?720]+bestaudio/best") (message "Starting streaming...")) (defun acdw/ytel-copy-link () "Copy link of the video at point." (interactive) (let ((link (acdw/ytel-current-video-link))) (kill-new link) (message "Copied %s to kill-ring" link))) ;;; YTDIOUS: https://github.com/spiderbit/ytdious ;; a fork of ytel that uses table-view or w/e. looks nicer (require 'ytdious nil t) (defun acdw/ytdious-current-video-link () "Get the link of the video at point." (let* ((video (ytdious-get-current-video)) (id (ytdious-video-id-fun video))) (concat "https://www.youtube.com/watch?v=" id))) (defun acdw/ytdious-watch () ; This could possibly use `browse-url'. "Stream video at point in mpv." (interactive) (let ((link (acdw/ytdious-current-video-link))) (start-process "ytdious mpv" nil "mpv" link "--ytdl-format=bestvideo[height<=?720]+bestaudio/best") (message "Streaming %s..." link))) (defun acdw/ytdious-copy-link () "Copy link of the video at point." (interactive) (let ((link (acdw/ytdious-current-video-link))) (kill-new link) (message "Copied %s to kill-ring" link))) (defun acdw/ytdious-quit () "Quit ytdious." ;; This corrects an error with `ytdious-quit' where it doesn't have the right ;; buffer setup. (interactive) (quit-window)) ;;; Ignore `ytdious-show-image-asyncron' because it's buggy. (defalias 'ytdious-show-image-asyncron #'ignore) (provide 'acdw-ytel) ;;; acdw-ytel.el ends here