使用 mpv 播放

通过 mpv 和 youtube-dl 播放网页上的视频和歌曲

当前为 2020-11-17 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Play with mpv
  3. // @name:en-US Play with mpv
  4. // @name:zh-CN 使用 mpv 播放
  5. // @name:zh-TW 使用 mpv 播放
  6. // @description Play website videos and songs with mpv & youtube-dl
  7. // @description:en-US Play website videos and songs with mpv & youtube-dl
  8. // @description:zh-CN 通过 mpv 和 youtube-dl 播放网页上的视频和歌曲
  9. // @description:zh-TW 通過 mpv 和 youtube-dl 播放網頁上的視頻和歌曲
  10. // @namespace play-with-mpv-handler
  11. // @version 2020.11.17
  12. // @author Akatsuki Rui
  13. // @license MIT License
  14. // @grant GM_info
  15. // @run-at document-end
  16. // @match *://www.youtube.com/watch?v=*
  17. // @match *://www.bilibili.com/video/*
  18. // ==/UserScript==
  19.  
  20. "use strict";
  21.  
  22. function buttonAppend() {
  23. let head;
  24. let styl;
  25.  
  26. head = document.getElementsByTagName("head")[0];
  27. if (!head) {
  28. console.log("Not found head");
  29. return;
  30. }
  31.  
  32. styl = document.createElement("style");
  33. styl.innerHTML =
  34. ".play-with-mpv {\
  35. display: inline-block;\
  36. position: fixed;\
  37. left: 12px;\
  38. bottom: 12px;\
  39. width: 48px;\
  40. height: 48px;\
  41. border: 0;\
  42. border-radius: 50%;\
  43. background-size: 100%;\
  44. background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgdmVyc2lvbj0iMSI+CiA8Y2lyY2xlIHN0eWxlPSJvcGFjaXR5Oi4yIiBjeD0iMzIiIGN5PSIzMyIgcj0iMjgiLz4KIDxjaXJjbGUgc3R5bGU9ImZpbGw6IzhkMzQ4ZSIgY3g9IjMyIiBjeT0iMzIiIHI9IjI4Ii8+CiA8Y2lyY2xlIHN0eWxlPSJvcGFjaXR5Oi4zIiBjeD0iMzQuNSIgY3k9IjI5LjUiIHI9IjIwLjUiLz4KIDxjaXJjbGUgc3R5bGU9Im9wYWNpdHk6LjIiIGN4PSIzMiIgY3k9IjMzIiByPSIxNCIvPgogPGNpcmNsZSBzdHlsZT0iZmlsbDojZmZmZmZmIiBjeD0iMzIiIGN5PSIzMiIgcj0iMTQiLz4KIDxwYXRoIHN0eWxlPSJmaWxsOiM2OTFmNjkiIHRyYW5zZm9ybT0ibWF0cml4KDEuNTE1NTQ0NSwwLDAsMS41LC0zLjY1Mzg3OSwtNC45ODczODQ4KSIgZD0ibTI3LjE1NDUxNyAyNC42NTgyNTctMy40NjQxMDEgMi0zLjQ2NDEwMiAxLjk5OTk5OXYtNC0zLjk5OTk5OWwzLjQ2NDEwMiAyeiIvPgogPHBhdGggc3R5bGU9ImZpbGw6I2ZmZmZmZjtvcGFjaXR5Oi4xIiBkPSJNIDMyIDQgQSAyOCAyOCAwIDAgMCA0IDMyIEEgMjggMjggMCAwIDAgNC4wMjE0ODQ0IDMyLjU4NTkzOCBBIDI4IDI4IDAgMCAxIDMyIDUgQSAyOCAyOCAwIDAgMSA1OS45Nzg1MTYgMzIuNDE0MDYyIEEgMjggMjggMCAwIDAgNjAgMzIgQSAyOCAyOCAwIDAgMCAzMiA0IHoiLz4KPC9zdmc+Cgo=');\
  45. background-repeat: no-repeat;\
  46. }";
  47.  
  48. head.appendChild(styl);
  49.  
  50. let body;
  51. let button;
  52.  
  53. body = document.getElementsByTagName("body")[0];
  54. if (!body) {
  55. console.log("Not found body");
  56. return;
  57. }
  58.  
  59. button = document.createElement("a");
  60. button.className = "play-with-mpv";
  61. button.href = "mpv://" + btoa(location.href);
  62.  
  63. body.appendChild(button);
  64. }
  65.  
  66. buttonAppend();