Function: shr-tag-video

shr-tag-video is a byte-compiled function defined in shr.el.gz.

Signature

(shr-tag-video DOM)

Source Code

;; Defined in /usr/src/emacs/lisp/net/shr.el.gz
(defun shr-tag-video (dom)
  (let ((image (dom-attr dom 'poster))
        (url (dom-attr dom 'src))
        (start (point)))
    (unless url
      (setq url (car (shr--extract-best-source dom))))
    (if (and shr-use-xwidgets-for-media
             (fboundp 'make-xwidget))
        ;; Play the video.
        (progn
          (require 'xwidget)
          (let ((widget (make-xwidget
                         'webkit
			 "Video"
                         (truncate (* (window-pixel-width) 0.8))
                         (truncate (* (window-pixel-width) 0.8 0.75)))))
            (insert
             (propertize
              " [video] "
              'display (list 'xwidget :xwidget widget)))
            (xwidget-webkit-execute-script
             widget (format "document.body.innerHTML = %S;"
                            (format
                             "<style>body { margin: 0px; }</style><div style='background: black; height: 100%%; display: flex; align-items: center; justify-content: center;'><video autoplay loop muted controls style='max-width: 100%%; max-height: 100%%;'><source src=%S type='video/mp4'></source></video></div>"
                             url)))))
      ;; No xwidgets.
      (if (> (length image) 0)
	  (shr-indirect-call 'img nil image)
        (shr-insert " [video] "))
      (shr-urlify start (shr-expand-url url)))))