BetterYTM.user.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import { getFeatures } from "./config";
  2. import { addMediaCtrlGeniusBtn, addMenu, addQueueGeniusBtns, addWatermark, geniUrlBase, initArrowKeySkip, initLayout, initSiteSwitch, removeUpgradeTab, setVolSliderSize, setVolSliderStep } from "./features/index";
  3. import { getDomain } from "./utils";
  4. /** Set to true to enable debug mode for more output in the JS console */
  5. export const dbg = true;
  6. /** Specifies the hard limit for repetitive tasks */
  7. export const triesLimit = 50;
  8. /** Specifies the interval for repetitive tasks */
  9. export const triesInterval = 150;
  10. /** Info about the userscript, parsed from the userscript header (tools/post-build.js) */
  11. export const info = Object.freeze({
  12. name: GM.info.script.name,
  13. version: GM.info.script.version,
  14. namespace: GM.info.script.namespace,
  15. });
  16. (async () => {
  17. //#MARKER init
  18. const features = await getFeatures();
  19. await initLayout();
  20. try {
  21. console.log(`${info.name} v${info.version} - ${info.namespace}`);
  22. console.log(`Powered by lots of ambition and my song metadata API called geniURL: ${geniUrlBase}`);
  23. document.addEventListener("DOMContentLoaded", onDomLoad);
  24. }
  25. catch(err) {
  26. console.error("BetterYTM - General Error:", err);
  27. }
  28. /** Called when the DOM has finished loading (after `DOMContentLoaded` is emitted) */
  29. async function onDomLoad() {
  30. const domain = getDomain();
  31. dbg && console.log(`BetterYTM: Initializing features for domain '${domain}'`);
  32. try {
  33. if(domain === "ytm") {
  34. if(features.arrowKeySupport)
  35. initArrowKeySkip();
  36. if(features.removeUpgradeTab)
  37. removeUpgradeTab();
  38. if(features.watermarkEnabled)
  39. addWatermark();
  40. if(features.geniusLyrics)
  41. await addMediaCtrlGeniusBtn();
  42. if(features.lyricsButtonsOnSongQueue)
  43. await addQueueGeniusBtns();
  44. if(typeof features.volumeSliderSize === "number")
  45. setVolSliderSize();
  46. setVolSliderStep();
  47. }
  48. if(["ytm", "yt"].includes(domain)) {
  49. if(features.switchBetweenSites)
  50. initSiteSwitch(domain);
  51. try {
  52. addMenu();
  53. }
  54. catch(err) {
  55. console.error("BetterYTM: Couldn't add menu:", err);
  56. }
  57. }
  58. }
  59. catch(err) {
  60. console.error("BetterYTM: General error while executing feature:", err);
  61. }
  62. }
  63. })();