From 1acb7b40df89093ad25c12a6dfee8fc568adee23 Mon Sep 17 00:00:00 2001 From: Thanos Apollo Date: Mon, 25 Sep 2023 02:35:02 +0300 Subject: [Rewrite] seperate yeetube-mpv functionality - Seperate yeetube-mpv - Make it easier to use other programs as yeetube-player, such as emms --- yeetube.el | 89 +++++--------------------------------------------------------- 1 file changed, 6 insertions(+), 83 deletions(-) (limited to 'yeetube.el') diff --git a/yeetube.el b/yeetube.el index 226f958..932bc26 100644 --- a/yeetube.el +++ b/yeetube.el @@ -4,9 +4,9 @@ ;; Author: Thanos Apollo ;; Keywords: extensions youtube videos invidious -;; URL: https://git.sr.ht/~thanosapollo/yeetube.el -;; Version: 1.5.0 -(defvar yeetube--version '2.0.0) +;; URL: https://git.thanosapollo.com/yeetube +;; Version: 2.0.1 +(defvar yeetube--version '2.0.1) ;; Package-Requires: ((emacs "27.2")) @@ -28,19 +28,12 @@ ;; This package provides the ability to scrape YouTube or any Invidious ;; instance, with the results displayed in a read-only org-mode buffer. -;; Key features: -;; - Search video query -;; - Play video URL, by default with mpv -;; - Save video URL with a custom name/label -;; - Download video, this package serves also as a front-end for -;; yt-dlp, thus supporting platforms beyond Youtube & Invidious. - ;;; Code: (require 'url) (require 'org-element) (require 'cl-lib) - +(require 'yeetube-mpv) (defgroup yeetube nil "Youtube & Invidious Front-end." @@ -81,18 +74,12 @@ Example Usage: :safe #'booleanp :group 'yeetube) -(defcustom yeetube-player 'mpv +(defcustom yeetube-player 'yeetube-mpv "Select video player." :type 'symbol :safe #'symbolp :group 'yeetube) -(defcustom yeetube-mpv-disable-video nil - "Add no-video flag when using mpv." - :type 'boolean - :safe #'booleanp - :group 'yeetube) - (defcustom yeetube-download-directory "~/Downloads" "Default directory to downlaod videos." :type 'string @@ -149,24 +136,12 @@ Example Usage: t nil)) -(defun yeetube-play-url (url) - "Open URL using yeetube-player." - (let ((media-player (executable-find (symbol-name yeetube-player)))) - (unless media-player - (error (format "%s not found." media-player))) - (when (string-prefix-p "http" url) - (setf yeetube-last-played url) - (if (eq yeetube-player 'mpv) - (yeetube-start-mpv-process url) - (yeetube-start-process - (format "%s '%s'" media-player url)))))) - (defun yeetube-play () "Open the url at point in an `'org-mode buffer using ='yeetube-player'." (interactive) (let ((url (org-element-property :raw-link (org-element-context)))) - (yeetube-play-url url))) + (funcall yeetube-player url))) (defun yeetube-load-saved-videos () "Load saved videos." @@ -210,58 +185,6 @@ Example Usage: (when clear-saved (setf yeetube-saved-videos nil)))) -(defun yeetube-start-process (command) - "Start yeetube process for shell COMMAND." - (let ((yeetube-process "yeetube")) - (dolist (process (process-list)) - (when (string-match yeetube-process (process-name process)) - (kill-process process))) - (sit-for 0.1) - (unless (get-process yeetube-process) - (start-process-shell-command - "yeetube" nil command)))) - -(defun yeetube-start-mpv-process (url) - "Start yeetube process to play URL using mpv." - (yeetube-start-process - (if yeetube-mpv-disable-video - (format "%s --no-video '%s'" (executable-find "mpv") url) - (format "%s '%s'" (executable-find "mpv") url))) - (message "yeetube: starting mpv process")) - -(defun yeetube-mpv-toggle-no-video-flag () - "Toggle no video flag for mpv player." - (interactive) - (if yeetube-mpv-disable-video - (progn (setf yeetube-mpv-disable-video nil) - (message "yeetube: mpv removed no-video flag")) - (setf yeetube-mpv-disable-video t) - (message "yeetube: mpv added no-video flag"))) - -(defun yeetube-mpv-send-keypress (key) - "Send KEY to yeetube-process." - (interactive "sKey: ") - (process-send-string "yeetube" key)) - -(defun yeetube-mpv-toggle-pause () - "Toggle pause mpv." - (interactive) - (yeetube-mpv-send-keypress "p") - (message "yeetube: toggle pause")) - -(defun yeetube-mpv-toggle-fullscreen () - "Toggle fullscreen." - (interactive) - (yeetube-mpv-send-keypress "f") - (message "toggle fullscreen")) - -(defun yeetube-mpv-toggle-video () - "Toggle video mpv." - (interactive) - (yeetube-mpv-send-keypress "_") - (message "yeetube: toggle video")) - - ;; Usually titles from youtube get messed up, ;; This should fix some of the common issues. (defun yeetube-fix-title (title) -- cgit v1.2.3