about summary refs log tree commit diff stats
path: root/lisp/acdw-ytel.el
blob: 276323d56a38e5bc1bf9331b03702d225c716084 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
;;; 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