Watch9 Reconstruct

YOU SHOULD KILL YOURSELF... NOW!

目前為 2022-06-28 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name Watch9 Reconstruct
  3. // @version 1.0
  4. // @description YOU SHOULD KILL YOURSELF... NOW!
  5. // @author Aubrey
  6. // @namespace aubymori
  7. // @match https://www.youtube.com/*
  8. // @license MIT
  9. // @icon https://www.google.com/s2/favicons?domain=youtube.com
  10. // @grant none
  11. // @run-at document-start
  12. // ==/UserScript==
  13. async function waitForElm(q) {
  14. while (document.querySelector(q) == null) {
  15. await new Promise(r => requestAnimationFrame(r));
  16. };
  17. return document.querySelector(q);
  18. };
  19.  
  20. const w9rStyle = document.createElement("style");
  21. w9rStyle.innerHTML = `
  22. #w9r-sub-count {
  23. opacity: .8;
  24. margin-left: 6px;
  25. }
  26.  
  27. #info-strings.ytd-video-primary-info-renderer,
  28. #owner-sub-count {
  29. display: none !important;
  30. }
  31.  
  32. ytd-video-view-count-renderer[small] {
  33. font-size: 1.6rem !important;
  34. }
  35. `;
  36. document.getElementsByTagName("head")[0].appendChild(w9rStyle);
  37.  
  38. document.addEventListener("yt-page-data-updated", async function() {
  39. var pubDate = await waitForElm("ytd-video-primary-info-renderer");
  40. const pubDatePnt = pubDate.data.dateText.simpleText;
  41. function fixPubDate(date) {
  42. if (/(Premier)|(Stream)|(Start)/.test(date)) {
  43. return date;
  44. } else {
  45. return "Published on " + date;
  46. }
  47. }
  48. var subCnt = await waitForElm("ytd-video-secondary-info-renderer");
  49. const subCntPnt = subCnt.data.owner.videoOwnerRenderer.subscriberCountText.simpleText;
  50. function fixSubCnt(cnt) {
  51. return cnt.replace(/( subscribers)|( subscriber)/, "").replace("No", "0");
  52. }
  53. var subBtn = await waitForElm("#subscribe-button tp-yt-paper-button");
  54. var pubDateElm = await waitForElm(".date.ytd-video-secondary-info-renderer");
  55. if (document.querySelector("#w9r-sub-count") == null) {
  56. var w9rSubCount = document.createElement("yt-formatted-string");
  57. w9rSubCount.text = {runs:[{text: subCntPnt.replace(/( subscribers)|( subscriber)/, "").replace("No", "0")}]};
  58. w9rSubCount.id = "w9r-sub-count";
  59. subBtn.querySelector("yt-formatted-string").insertAdjacentElement("afterEnd", w9rSubCount);
  60. } else {
  61. document.querySelector("#w9r-sub-count").text = {runs:[{text: fixSubCnt(subCntPnt)}]};
  62. };
  63.  
  64. pubDateElm.innerHTML = fixPubDate(pubDatePnt);
  65. });