12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- function roundDown(num) {
- if (num < 1000) return num;
- const int = Math.floor(Math.log10(num) - 2);
- const decimal = int + (int % 3 ? 1 : 0);
- const value = Math.floor(num / 10 ** decimal);
- return value * 10 ** decimal;
- }
- function numberFormat(numberState) {
- let userLocales;
- try {
- userLocales = new URL(
- Array.from(document.querySelectorAll("head > link[rel='search']"))
- ?.find((n) => n?.getAttribute("href")?.includes("?locale="))
- ?.getAttribute("href")
- )?.searchParams?.get("locale");
- } catch {}
- const formatter = Intl.NumberFormat(
- document.documentElement.lang || userLocales || navigator.language,
- {
- notation: "compact",
- }
- );
- return formatter.format(roundDown(numberState));
- }
- function getBrowser() {
- if (typeof chrome !== "undefined" && typeof chrome.runtime !== "undefined") {
- return chrome;
- } else if (
- typeof browser !== "undefined" &&
- typeof browser.runtime !== "undefined"
- ) {
- return browser;
- } else {
- console.log("browser is not supported");
- return false;
- }
- }
- function getVideoId(url) {
- const urlObject = new URL(url);
- const pathname = urlObject.pathname;
- if (pathname.startsWith("/clip")) {
- return document.querySelector("meta[itemprop='videoId']").content;
- } else {
- return urlObject.searchParams.get("v");
- }
- }
- function isVideoLoaded() {
- const videoId = getVideoId(window.location.href);
- return (
- document.querySelector(`ytd-watch-flexy[video-id='${videoId}']`) !== null ||
- // mobile: no video-id attribute
- document.querySelector('#player[loading="false"]:not([hidden])') !== null
- );
- }
- function cLog(message, writer) {
- message = `[return youtube dislike]: ${message}`;
- if (writer) {
- writer(message);
- } else {
- console.log(message);
- }
- }
- export { numberFormat, getBrowser, getVideoId, isVideoLoaded, cLog }
|