YouTube: Plain Video Player (Alternative)

To force Low Resource

  1. // ==UserScript==
  2. // @name YouTube: Plain Video Player (Alternative)
  3. // @namespace UserScripts
  4. // @match https://www.youtube.com/*
  5. // @exclude /^https?://\S+\.(txt|png|jpg|jpeg|gif|xml|svg|manifest|log|ini)[^\/]*$/
  6. // @grant none
  7. // @version 0.2.3
  8. // @author CY Fung
  9. // @license MIT
  10. // @description To force Low Resource
  11. // @run-at document-start
  12. // @inject-into page
  13. // @unwrap
  14. // @license MIT
  15. // @compatible chrome
  16. // @compatible firefox
  17. // @compatible opera
  18. // @compatible edge
  19. // @compatible safari
  20. // @allFrames true
  21. // ==/UserScript==
  22.  
  23.  
  24. (() => {
  25.  
  26.  
  27. const debug22 = new Set();
  28.  
  29. const WITH_NAVBAR = true;
  30. const WITH_SIDEBAR = true;
  31. const WITH_COMMENT = true;
  32. const WITH_TOP_RIGHT_BUTTONS = true;
  33. const WITH_VIDEO_INFO = true;
  34. const WITH_VIDEO_INFO_TRADITIONAL = true;
  35.  
  36. window.debug22 = debug22;
  37. const whitelist = new Set([
  38.  
  39. ...(WITH_NAVBAR ? [
  40.  
  41. "ytd-masthead",
  42. ] : []),
  43.  
  44. ...(WITH_SIDEBAR ? [
  45.  
  46.  
  47. "ytd-topbar-logo-renderer",
  48. "ytd-mini-guide-renderer",
  49. "ytd-permission-role-bottom-bar-renderer",
  50. "ytd-logo",
  51.  
  52.  
  53. "ytd-guide-renderer",
  54. "ytd-guide-section-renderer",
  55.  
  56. "ytd-guide-entry-renderer",
  57. "ytd-guide-collapsible-section-entry-renderer",
  58. "ytd-guide-collapsible-entry-renderer",
  59.  
  60. "ytd-guide-downloads-entry-renderer"
  61.  
  62. ]
  63. : []),
  64.  
  65.  
  66. "ytd-thumbnail",
  67.  
  68.  
  69. // "ytd-topbar-logo-renderer",
  70. // "ytd-mini-guide-renderer",
  71. // "ytd-permission-role-bottom-bar-renderer",
  72. // "ytd-yoodle-renderer",
  73. // "ytd-badge-supported-renderer",
  74. // "ytd-playlist-panel-renderer",
  75. // "ytd-watch-next-secondary-results-renderer",
  76. // "ytd-video-quality-promo-renderer",
  77. // "ytd-video-primary-info-renderer",
  78. // "ytd-sentiment-bar-renderer",
  79. // "ytd-menu-renderer",
  80. // "ytd-download-button-renderer",
  81. // "ytd-video-view-count-renderer",
  82. // "ytd-video-secondary-info-renderer",
  83. // "ytd-video-owner-renderer",
  84. // "ytd-structured-description-content-renderer",
  85. // "ytd-metadata-row-container-renderer",
  86. // "ytd-video-description-transcript-section-renderer",
  87. // "ytd-subscribe-button-renderer",
  88. // "ytd-engagement-panel-section-list-renderer",
  89. // "ytd-ads-engagement-panel-content-renderer",
  90. // "ytd-clip-section-renderer",
  91. // "ytd-clip-creation-text-input-renderer",
  92. // "ytd-clip-ad-state-renderer",
  93. // "ytd-video-description-header-renderer",
  94. // "ytd-expandable-video-description-body-renderer",
  95. // "ytd-section-list-renderer",
  96. // "ytd-item-section-renderer",
  97. // "ytd-continuation-item-renderer",
  98. // "ytd-thumbnail-overlay-time-status-renderer",
  99. // "ytd-thumbnail-overlay-now-playing-renderer",
  100. // "ytd-thumbnail-overlay-resume-playback-renderer",
  101. // "ytd-comments-header-renderer",
  102. // "ytd-comment-simplebox-renderer",
  103. // "ytd-comment-thread-renderer",
  104. // "ytd-comment-replies-renderer",
  105. // "ytd-toggle-button-renderer",
  106. // "ytd-sponsor-comment-badge-renderer",
  107. // "ytd-channel-legal-info-renderer",
  108. // "ytd-playlist-sidebar-renderer",
  109. // "ytd-settings-sidebar-renderer",
  110. // "ytd-two-column-browse-results-renderer",
  111. // "ytd-rich-grid-renderer",
  112. // "ytd-rich-item-renderer",
  113. // "ytd-thumbnail-overlay-bottom-panel-renderer",
  114. // "ytd-playlist-video-thumbnail-renderer",
  115. // "ytd-feed-filter-chip-bar-renderer",
  116. // "ytd-ghost-grid-renderer",
  117. // "ytd-mini-guide-entry-renderer",
  118.  
  119. ...(WITH_VIDEO_INFO ? [
  120.  
  121.  
  122. // "ytd-topbar-logo-renderer",
  123. // "ytd-mini-guide-renderer",
  124. // "ytd-permission-role-bottom-bar-renderer",
  125. // "ytd-yoodle-renderer",
  126. // "ytd-badge-supported-renderer",
  127. // "ytd-playlist-panel-renderer",
  128. // "ytd-watch-next-secondary-results-renderer",
  129. // "ytd-video-quality-promo-renderer",
  130. // "ytd-video-primary-info-renderer",
  131. // "ytd-sentiment-bar-renderer",
  132. // "ytd-menu-renderer",
  133. // "ytd-download-button-renderer",
  134. // "ytd-video-view-count-renderer",
  135. // "ytd-video-secondary-info-renderer",
  136. // "ytd-video-owner-renderer",
  137. // "ytd-structured-description-content-renderer",
  138. // "ytd-metadata-row-container-renderer",
  139. // "ytd-video-description-transcript-section-renderer",
  140. // "ytd-subscribe-button-renderer",
  141. // "ytd-engagement-panel-section-list-renderer",
  142. // "ytd-ads-engagement-panel-content-renderer",
  143. // "ytd-clip-section-renderer",
  144. // "ytd-clip-creation-text-input-renderer",
  145. // "ytd-clip-ad-state-renderer",
  146. // "ytd-video-description-header-renderer",
  147. // "ytd-expandable-video-description-body-renderer",
  148. // "ytd-section-list-renderer",
  149. // "ytd-item-section-renderer",
  150. // "ytd-continuation-item-renderer",
  151. // "ytd-thumbnail-overlay-time-status-renderer",
  152. // "ytd-thumbnail-overlay-now-playing-renderer",
  153. // "ytd-thumbnail-overlay-resume-playback-renderer",
  154. // "ytd-comments-header-renderer",
  155. // "ytd-comment-simplebox-renderer",
  156. // "ytd-comment-thread-renderer",
  157. // "ytd-comment-replies-renderer",
  158. // "ytd-toggle-button-renderer",
  159. // "ytd-sponsor-comment-badge-renderer",
  160. // "ytd-channel-legal-info-renderer",
  161. // "ytd-playlist-sidebar-renderer",
  162. // "ytd-settings-sidebar-renderer",
  163. // "ytd-two-column-browse-results-renderer",
  164. // "ytd-rich-grid-renderer",
  165. // "ytd-rich-item-renderer",
  166. // "ytd-thumbnail-overlay-bottom-panel-renderer",
  167. // "ytd-playlist-video-thumbnail-renderer",
  168. // "ytd-feed-filter-chip-bar-renderer",
  169. // "ytd-ghost-grid-renderer",
  170. // "ytd-mini-guide-entry-renderer",
  171.  
  172.  
  173. // "ytd-lottie-player",
  174. // "ytd-expander",
  175. // "ytd-miniplayer-toast",
  176. // "ytd-video-preview",
  177. "ytd-watch-metadata",
  178. // "ytd-watch-engagement-panels",
  179. // "ytd-channel-name",
  180. // "ytd-video-meta-block",
  181. // "ytd-thumbnail-overlay-equalizer"
  182.  
  183. ] : []),
  184.  
  185. ...(WITH_VIDEO_INFO_TRADITIONAL?[
  186.  
  187. // old
  188. "ytd-expander",
  189. "ytd-video-secondary-info-renderer",
  190. ]:[]),
  191.  
  192. ...(WITH_COMMENT ? [
  193.  
  194. "ytd-section-list-renderer",
  195. "ytd-item-section-renderer",
  196. "ytd-continuation-item-renderer",
  197. "ytd-comments-header-renderer",
  198. "ytd-comment-simplebox-renderer",
  199. "ytd-comment-thread-renderer",
  200. "ytd-comment-replies-renderer",
  201.  
  202. "ytd-comment-view-model",
  203. "ytd-thumbnail-overlay-toggle-button-renderer",
  204. "ytd-moving-thumbnail-renderer",
  205.  
  206.  
  207. "ytd-comment-reply-dialog-renderer",
  208. "ytd-thumbnail-overlay-toggle-button-renderer",
  209.  
  210. "ytd-moving-thumbnail-renderer",
  211.  
  212.  
  213.  
  214. ] : []),
  215.  
  216. /*
  217.  
  218. "ytd-comment-view-model",
  219. "ytd-thumbnail-overlay-toggle-button-renderer",
  220. "ytd-moving-thumbnail-renderer",
  221.  
  222.  
  223. "ytd-comment-reply-dialog-renderer",
  224. "ytd-thumbnail-overlay-toggle-button-renderer",
  225.  
  226. "ytd-moving-thumbnail-renderer",
  227.  
  228. */
  229.  
  230.  
  231.  
  232. ...([
  233.  
  234.  
  235. // "ytd-lottie-player",
  236. // "ytd-expander",
  237. // "ytd-miniplayer-toast",
  238. // "ytd-video-preview",
  239. // "ytd-watch-metadata",
  240. // "ytd-watch-engagement-panels",
  241. // "ytd-channel-name",
  242. // "ytd-video-meta-block",
  243. // "ytd-thumbnail-overlay-equalizer"
  244.  
  245.  
  246. ]),
  247.  
  248.  
  249. ...(WITH_TOP_RIGHT_BUTTONS ? [
  250.  
  251. "ytd-subscription-notification-toggle-button-renderer-next",
  252. "ytd-topbar-menu-button-renderer",
  253. "ytd-notification-topbar-button-renderer",
  254.  
  255. "ytd-multi-page-menu-renderer",
  256. "ytd-active-account-header-renderer",
  257. "ytd-compact-link-renderer",
  258. "ytd-toggle-theme-compact-link-renderer",
  259.  
  260. "ytd-simple-menu-header-renderer",
  261. "ytd-account-section-list-renderer",
  262. "ytd-toggle-item-renderer",
  263. "ytd-account-item-section-renderer",
  264. "ytd-google-account-header-renderer",
  265. "ytd-accounts-dialog-header-renderer",
  266. "ytd-account-item-renderer",
  267. "ytd-account-item-section-header-renderer"
  268.  
  269. ] : [])
  270.  
  271.  
  272. // -----
  273.  
  274.  
  275. ]);
  276.  
  277. const whitelist_live_chat = new Set([
  278. // "ytd-lottie-player",
  279. // "ytd-expander",
  280. "ytd-section-list-renderer",
  281. // "ytd-badge-supported-renderer",
  282. "ytd-menu-popup-renderer",
  283. "ytd-menu-service-item-renderer",
  284. "ytd-menu-navigation-item-renderer"
  285.  
  286. ])
  287.  
  288.  
  289.  
  290. const cssText = () => `
  291.  
  292. ytd-engagement-panel-section-list-renderer:empty{
  293. display: none;
  294. }
  295.  
  296. #related-skeleton :empty {
  297. display: none;
  298. }
  299.  
  300. `;
  301.  
  302. let addCSS = 0;
  303.  
  304. const ytDOMWM = new WeakMap();
  305. Object.defineProperty(Element.prototype, 'usePatchedLifecycles', {
  306. get() {
  307. let val = ytDOMWM.get(this);
  308. if (val === 0) val = false;
  309. return val;
  310. },
  311. set(nv) {
  312.  
  313.  
  314. let add = 0;
  315. if (window.debug11) console.log(this.is)
  316.  
  317. if (location.pathname === '/watch') {
  318.  
  319. if (whitelist.has(this.is)) {
  320. } else {
  321.  
  322. add = 1;
  323. }
  324.  
  325. } else if (location.pathname.startsWith('/live_chat')) {
  326. // console.log(12323)
  327. if (whitelist_live_chat.has(this.is)) {
  328.  
  329. } else {
  330.  
  331. add = 1;
  332.  
  333. }
  334. }
  335.  
  336. if (add) {
  337.  
  338. if (!addCSS) {
  339. addCSS = 1;
  340. // document.body.appendChild(document.createElement('ytd-watch-flexy'))
  341. document.head.appendChild(document.createElement('style')).textContent = cssText();
  342. }
  343. debug22.add(this.is)
  344. nv = 0;
  345. }
  346.  
  347. ytDOMWM.set(this, nv);
  348. return true;
  349. },
  350. enumerable: false,
  351. configurable: true
  352. });
  353.  
  354. })();