UNPKG

@vot.js/shared

Version:

shared for all @vot.js package

151 lines (150 loc) 2.84 kB
import config from "../data/config.js"; const iso6392to6391 = { afr: "af", aka: "ak", alb: "sq", amh: "am", ara: "ar", arm: "hy", asm: "as", aym: "ay", aze: "az", baq: "eu", bel: "be", ben: "bn", bos: "bs", bul: "bg", bur: "my", cat: "ca", chi: "zh", cos: "co", cze: "cs", dan: "da", div: "dv", dut: "nl", eng: "en", epo: "eo", est: "et", ewe: "ee", fin: "fi", fre: "fr", fry: "fy", geo: "ka", ger: "de", gla: "gd", gle: "ga", glg: "gl", gre: "el", grn: "gn", guj: "gu", hat: "ht", hau: "ha", hin: "hi", hrv: "hr", hun: "hu", ibo: "ig", ice: "is", ind: "id", ita: "it", jav: "jv", jpn: "ja", kan: "kn", kaz: "kk", khm: "km", kin: "rw", kir: "ky", kor: "ko", kur: "ku", lao: "lo", lat: "la", lav: "lv", lin: "ln", lit: "lt", ltz: "lb", lug: "lg", mac: "mk", mal: "ml", mao: "mi", mar: "mr", may: "ms", mlg: "mg", mlt: "mt", mon: "mn", nep: "ne", nor: "no", nya: "ny", ori: "or", orm: "om", pan: "pa", per: "fa", pol: "pl", por: "pt", pus: "ps", que: "qu", rum: "ro", rus: "ru", san: "sa", sin: "si", slo: "sk", slv: "sl", smo: "sm", sna: "sn", snd: "sd", som: "so", sot: "st", spa: "es", srp: "sr", sun: "su", swa: "sw", swe: "sv", tam: "ta", tat: "tt", tel: "te", tgk: "tg", tha: "th", tir: "ti", tso: "ts", tuk: "tk", tur: "tr", uig: "ug", ukr: "uk", urd: "ur", uzb: "uz", vie: "vi", wel: "cy", xho: "xh", yid: "yi", yor: "yo", zul: "zu", }; export async function fetchWithTimeout(url, options = { headers: { "User-Agent": config.userAgent, }, }) { const { timeout = 3000, ...fetchOptions } = options; const controller = new AbortController(); const timeoutId = setTimeout(() => controller.abort(), timeout); const response = await fetch(url, { signal: controller.signal, ...fetchOptions, }); clearTimeout(timeoutId); return response; } export function getTimestamp() { return Math.floor(Date.now() / 1000); } export function normalizeLang(lang) { if (lang.length === 3) { return iso6392to6391[lang]; } return lang.toLowerCase().split(/[_;-]/)[0].trim(); } export function proxyMedia(url, format = "mp4") { const generalUrl = `https://${config.mediaProxy}/v1/proxy/video.${format}?format=base64&force=true`; if (!(url instanceof URL)) { return `${generalUrl}&url=${btoa(url)}`; } return `${generalUrl}&url=${btoa(url.href)}&origin=${url.origin}&referer=${url.origin}`; }