Files
gdown-helper/packages/chrome/assets/index.ts-BkGMAUD4.js

2 lines
14 KiB
JavaScript
Raw Permalink Normal View History

import{b as a,g as m}from"./settings-CgBxHrrF.js";import{n as W,a as oe}from"./downloadIntent-Dv31jC2S.js";import{n as f,a as I}from"./clipTypes-C_ha5Ash.js";const Y="org.gdown.nativehost";async function ie(e){return a.runtime.sendNativeMessage(Y,{action:"addUri",...e})}async function ae(){return a.runtime.sendNativeMessage(Y,{action:"focus"})}const M="history";async function se(){const t=(await a.storage.local.get([M]))[M];return Array.isArray(t)?t:[]}async function ue(e){await a.storage.local.set({[M]:e.slice(0,300)})}async function ce(e){const t=await se(),r=t.findIndex(n=>n.gid===e.gid);r>=0?t[r]=e:t.unshift(e),await ue(t)}function Q(e,t){const r=Array.isArray(e?.responseHeaders)?e.responseHeaders:[],n=t.toLowerCase(),o=r.find(i=>String(i?.name||"").toLowerCase()===n);return String(o?.value||"")}function le(e){const t=e.toLowerCase();return t?t.includes("application/vnd.apple.mpegurl")||t.includes("application/x-mpegurl")||t.includes("audio/mpegurl")?"m3u8":t.includes("video/mp4")?"mp4":t.includes("application/octet-stream")&&t.includes("m3u8")?"m3u8":t.includes("hls")?"hls":"unknown":"unknown"}function de(e){const t=String(e||"").toLowerCase();return t.includes(".m3u8")?"m3u8":t.includes(".m3u")?"m3u":t.includes(".mp4")?"mp4":t.includes("m3u8")?"m3u8":t.includes("hls")?"hls":"unknown"}function X(e,t){const r=le(t);return r!=="unknown"?r:de(e)}function fe(e){if(!e?.url)return!1;const t=String(e?.method||"").toUpperCase();if(t&&t!=="GET")return!1;const r=Number(e?.statusCode||0);if(r>0&&(r<200||r>299))return!1;const n=String(e?.type||"");if(!["xmlhttprequest","media","other","main_frame","sub_frame","fetch"].includes(n))return!1;const o=Q(e,"content-type");return X(e.url,o)!=="unknown"}function pe(e,t=""){const r=Q(e,"content-type"),n=String(e?.url||""),o=X(n,r),i=Number.isInteger(e?.tabId)?Number(e.tabId):-1,s=Date.now();return{id:`${s}:${i}:${o}:${n}`,url:n,kind:o,tabId:i,pageUrl:String(e?.documentUrl||e?.initiator||""),referer:String(t||e?.documentUrl||e?.initiator||""),contentType:r,detectedAt:s}}function $(e){try{const t=new URL(e);return`${t.protocol}//${t.host}${t.pathname}`.toLowerCase()}catch{return String(e||"").toLowerCase()}}const U="media_candidates",me=200;async function V(){const t=(await a.storage.local.get([U]))[U];return Array.isArray(t)?t:[]}async function ge(e){const t=[...e].sort((r,n)=>n.detectedAt-r.detectedAt);await a.storage.local.set({[U]:t.slice(0,me)})}async function we(e,t){const r=await V(),n=r.findIndex(o=>{try{const i=new URL(o.url);return`${i.protocol}//${i.host}${i.pathname}`.toLowerCase()===t}catch{return o.url.toLowerCase()===t}});n>=0?r[n]={...r[n],...e,detectedAt:Date.now()}:r.unshift(e),await ge(r)}async function ye(){await a.storage.local.set({[U]:[]})}const A="clips",he=500;function j(e,t){return Date.parse(t.createdAt||"")-Date.parse(e.createdAt||"")}function F(e){return`${f(e.pageUrl)}::${I(e.quote).toLowerCase()}`}async function b(){const t=(await a.storage.local.get([A]))[A];return Array.isArray(t)?t:[]}async function J(e){const t=[...e].sort(j).slice(0,he);await a.storage.local.set({[A]:t})}async function be(e){const t=f(e);return(await b()).filter(n=>f(n.pageUrl)===t).sort(j)}async function Se(e){return(await b()).find(n=>n.id===e)||null}async function ke(e){const t=await b(),r=Date.now(),n=F(e),o=t.find(i=>{const s=Date.parse(i.createdAt||"");return!Number.isFinite(s)||Math.abs(r-s)>8e3?!1:F(i)===n});return o||(t.unshift(e),await J(t),e)}async function Ue(e){const t=await b(),r=t.filter(n=>n.id!==e);return r.length===t.length?!1:(await J(r),!0)}const x=8e3,xe=7e3,L="gomdown-helper-download-context-menu-option",w=new Map,q=new Map,R=new Map,T=new Map,y=new Map,D=new Map,H=new Map;let O=!1,P=!1,z=!1,g=null;const Z="bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4]/best",ve=[{hosts:["youtube.com","www.youtube.com","m.youtube.com","youtu.be"],extractor:"yt-dlp",format:Z}];function v(e){try{const t=new URL(e),r=(t.pathname||"/").replace(/\/+$/,"")||"/";return`${t.protocol}//${t.host}${r}`.toLowerCase()}catch{return String(e||"").toLowerCase()}}function p(e){const t=Date.now();for(const[r,