Make HamiVideo Better

Make your player in HamiVideo better

// ==UserScript==
// @name                 Make HamiVideo Better
// @description          Make your player in HamiVideo better
// @description:zh-TW    讓 HamiVideo 的播放器好用點
// @version              1.3.2
// @author               Mingc
// @match                https://hamivideo.hinet.net/play/*
// @match                https://hamivideo.hinet.net/trailer/*
// @grant                unsafeWindow
// @icon                 https://hamivideo.hinet.net/hamivideo/favicon_hamivideo_new.ico
// @namespace            https://github.com/mingc00
// @run-at               document-end
// ==/UserScript==

function wrap(originalFn, postFn) {
  return function (...args) {
    const returnValue = originalFn(...args);
    postFn();
    return returnValue;
  };
}
// remove rating warning
unsafeWindow.myPlayer.rating = 0;
// resize to fullscreen
function resize() {
  if (myPlayer.video) {
    myPlayer.video.style.height = "100vh";
  }
  if (myPlayer.h5Player) {
    const h5PlayerEl = myPlayer.h5Player.el();
    h5PlayerEl.style.height = "100vh";
  }
}
unsafeWindow._playerSizeChange = resize;
unsafeWindow.myPlayer.startPlay = wrap(unsafeWindow.myPlayer.startPlay, resize);
// set chromecast button auto-hide
function setComponentsVisible(visible) {
  const display = visible ? "block" : "none";
  const chromecastEl = document.querySelector(".chromecast");
  if (chromecastEl) {
    chromecastEl.style.display = display;
  }
  const btListEl = document.querySelector(".btList");
  if (btListEl) {
    btListEl.style.display = display;
  }
}
unsafeWindow.showTitle = wrap(unsafeWindow.showTitle, function () {
  setComponentsVisible(true);
});
unsafeWindow.hideTitle = wrap(unsafeWindow.hideTitle, function () {
  setComponentsVisible(false);
});
// adjust toolbar position
const toolbarEl = document.querySelector(".toolbar");
toolbarEl.style.bottom = "40px";
toolbarEl.style.left = "20px";
// remove dot on progress bar
const style = document.createElement("style");
style.innerHTML = `
  .video-js .vjs-slider-bar::before,
  .video-js .vjs-volume-level::before {
    content: "" !important;
  }
  .video-js .vjs-play-progress {
    background-color: #bf3b4d !important;
  }
`;
document.head.appendChild(style);