nixamp 0.69.0 → 0.70.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-label.d.ts +15 -5
- package/dist/ai-label.js +84 -34
- package/dist/station-cli.js +1 -0
- package/dist/veo-studio.d.ts +1 -1
- package/dist/veo-studio.js +2 -2
- package/package.json +1 -1
- package/src/ai-label.ts +86 -35
- package/src/station-cli.ts +1 -0
- package/src/veo-studio.ts +2 -2
- package/web/dist/assets/{ar-BAUYJ7CG.js → ar-DpvJfvBS.js} +1 -1
- package/web/dist/assets/{cs-D5Njj-lD.js → cs-Byt29q-N.js} +1 -1
- package/web/dist/assets/{da-CQ52TUpt.js → da-BNVqf41w.js} +1 -1
- package/web/dist/assets/{de-slj7FWP_.js → de-CkkNpSeK.js} +1 -1
- package/web/dist/assets/{es-wy-duArI.js → es-DTbm6erE.js} +1 -1
- package/web/dist/assets/{fi-D8tuiwIa.js → fi-CLe542jk.js} +1 -1
- package/web/dist/assets/{fr-AlVe-2YY.js → fr-Cw6IcnjA.js} +1 -1
- package/web/dist/assets/{hi-BkrehL5x.js → hi-BA_-5ZbE.js} +1 -1
- package/web/dist/assets/{hu-_3tyj6FI.js → hu-D4hoNRZH.js} +1 -1
- package/web/dist/assets/{id-O2_s9_ZD.js → id-BUGLjAyd.js} +1 -1
- package/web/dist/assets/{it-D6kuTye8.js → it-zM-JnjaU.js} +1 -1
- package/web/dist/assets/main-p1NGc9XO.js +22 -0
- package/web/dist/assets/music-C8ITlUNF.js +1 -0
- package/web/dist/assets/{nl-DOdu_ltu.js → nl-ka_E88m2.js} +1 -1
- package/web/dist/assets/now-playing-DVQqWQIu.js +1 -0
- package/web/dist/assets/{ru-B39HLLYh.js → ru-CNiGclVH.js} +1 -1
- package/web/dist/assets/station-tWQPqySd.js +3 -0
- package/web/dist/assets/{sv-DTDAE9DG.js → sv-cvAfJ4oL.js} +1 -1
- package/web/dist/assets/{uk-DmM6P2_W.js → uk-45wTyXWC.js} +1 -1
- package/web/dist/assets/{vi-8EoMeh4v.js → vi-CnN2uyTw.js} +1 -1
- package/web/dist/assets/{zh-DkGyIChT.js → zh-BfjjooDK.js} +1 -1
- package/web/dist/index.html +2 -1
- package/web/dist/music.html +2 -1
- package/web/dist/station.html +2 -1
- package/web/dist/sw.js +22 -21
- package/web/dist/assets/main-Bh0dWH3R.js +0 -22
- package/web/dist/assets/music-Bby75I2_.js +0 -1
- package/web/dist/assets/station-DtY1LOm5.js +0 -3
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import"./modulepreload-polyfill-P2Xu9kJm.js";import{r as e}from"./chunk-Q2XQMA4B-BaoaSqsD.js";/* empty css */var t={þ:`th`,ð:`d`,ø:`o`,æ:`ae`,œ:`oe`,ß:`ss`,đ:`d`,ł:`l`,ı:`i`,"&":` and `};function n(e,n=60){let r=String(e??``).toLowerCase().replace(/[þðøæœßđłı&]/g,e=>t[e]??e).normalize(`NFKD`).replace(/[̀-ͯ]/g,``).replace(/['’`]/g,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``);if(r.length<=n)return r;let i=r.slice(0,n+1),a=i.lastIndexOf(`-`);return(a>8?i.slice(0,a):r.slice(0,n)).replace(/-+$/,``)}var r=e=>n(String(e??``).split(/\s*;\s*/)[0]??``,60),i=(e,t)=>n(`${r(e)} ${t}`,90),a={owned:`owned by the station`,permission:`broadcast with permission`,licensed:`licensed for broadcast`,"creative-commons":`Creative Commons`,"public-domain":`public domain`},o=/ · [^·]+$/.exec(document.title)?.[0]??` · nixamp`,s=/^\/radio\/[a-z0-9-]+\/?$/.test(location.pathname),c=location.pathname.split(`/`).filter(Boolean)[1]??``,l=new URLSearchParams(location.search).get(`t`)??``,u=s?``:`?t=`+encodeURIComponent(l),d=s?location.pathname.replace(/\/+$/,``):`/api/v1/stations/`+encodeURIComponent(c),f=(e,t)=>e+(e.includes(`?`)?`&`:`?`)+t,p=e=>e.startsWith(`/api/v1/stations/`)||s&&e.startsWith(d+`/`),m=e=>document.querySelector(e),h=null,g=null,_=null,v=!1,y=0,b=0,x=0,S=!1,C=!1,w=0,T=(e,t)=>{let n=m(`#state`);n.className=`station-chip `+e,n.textContent=t},E=e=>{m(`#announce`).textContent=e},D=e=>{let t=e.nowPlaying;m(`#title`).textContent=t?t.title||`Untitled`:e.state===`live`?`On the air`:``,m(`#by`).textContent=t?[t.artist,t.album].filter(Boolean).join(` · `):``},O=e=>{let t=m(`#facts`);if(!e){t.hidden=!0,P(``);return}let n=[];e.artist&&n.push([`Artist`,e.artist]),e.album&&n.push([`Album`,e.album]),e.year&&n.push([`Year`,e.year]),e.genre&&!/^ai$/i.test(e.genre)&&n.push([`Genre`,e.genre]),n.push([`Made with AI`,e.ai.generated===!0?`Yes, ${e.ai.by}`:e.ai.generated===!1?`No`:`Not stated`]);let o=e.rights.holder,c=e.rights.basis?a[e.rights.basis]??e.rights.basis:``;n.push([`Copyright`,o?`© ${o}`:c?`Not stated (${c})`:`Not stated`]),e.rights.license?n.push([`Licence`,e.rights.license]):e.rights.note&&e.rights.source!==`holder`&&n.push([`Rights`,e.rights.note]);let l=m(`#facts-list`),u=t=>s?t===`Artist`&&r(e.artist)?`/radio/artist/${r(e.artist)}`:t===`Album`&&e.album&&i(e.artist,e.album)?`/radio/album/${i(e.artist,e.album)}`:``:``;l.replaceChildren(...n.flatMap(([e,t])=>{let n=document.createElement(`dt`);n.textContent=e;let r=document.createElement(`dd`),i=u(e);if(i){let e=document.createElement(`a`);e.href=i,e.textContent=t,r.append(e)}else r.textContent=t;return[n,r]}));let d=m(`#cover`),f=typeof e.art==`string`&&p(e.art)?e.art:``;d.hidden=!f,f&&d.getAttribute(`src`)!==f&&(d.src=f,d.alt=`Cover of ${e.title||`this track`}`),`mediaSession`in navigator&&typeof MediaMetadata<`u`&&(navigator.mediaSession.metadata=new MediaMetadata({title:e.title||_?.name||`nixamp`,artist:e.artist,album:e.album||_?.name||``,...f?{artwork:[{src:new URL(f,location.href).href,sizes:`512x512`,type:`image/jpeg`}]}:{}}));let h=m(`#ai-badge`);h.hidden=e.ai.generated!==!0,h.textContent=e.ai.generated===!0?`AI-generated`:``,h.title=e.ai.evidence;let g=m(`#support`),v=e.support?.url??``;g.hidden=!/^https:\/\//.test(v),g.hidden||(g.href=v,g.textContent=`${e.support.label||`Support`} ${e.support.holder}`);let y=e.store&&[e.store.song,e.store.album,e.store.artist].every(e=>/^https:\/\//.test(e)||e.startsWith(`/radio/buy?`))?e.store:null;m(`#buy`).hidden=!y,y&&(m(`#buy-song`).href=y.song,m(`#buy-album`).href=y.album,m(`#buy-album`).textContent=`Album${y.albumTitle?`, ${y.albumTitle}`:``} · $1`,m(`#buy-artist`).href=y.artist,m(`#buy-artist`).textContent=`Everything by ${y.artistName||`them`} · $2`),t.hidden=!1,P(typeof e.lyrics==`string`&&p(e.lyrics)?e.lyrics:``)},k=null,A=(e,t)=>{let n=[],r=[];for(let e of t){let t=document.createElement(`p`);t.className=`lyric-line`;let i=e.words.length?e.words.map((e,t)=>{let n=document.createElement(`span`);return n.className=`lyric-word`,n.textContent=(t?` `:``)+e.text,n}):[];i.length?t.append(...i):t.textContent=e.text,n.push(t),r.push(i)}let i=m(`#lyrics-text`);i.classList.add(`synced`),i.replaceChildren(...n),k={lines:t,els:n,words:r,at:-1,title:e.title},m(`#lyrics-follow-box`).hidden=!1,m(`#lyrics-for`).textContent=e.title?`· ${e.title}`:``,m(`#lyrics-source`).textContent=`Timed to the recording; the line being sung lights up.`,m(`#lyrics`).hidden=!1},j=e=>{if(!k)return;let{lines:t,els:n,words:r}=k,i=-1;for(let n=0;n<t.length;n++)t[n].start<=e+.1&&(i=n);if(i>=0&&i<k.at&&e>t[k.at].start-1&&(i=k.at),i!==k.at){n.forEach((e,t)=>{e.classList.toggle(`now`,t===i),e.classList.toggle(`past`,t<i)}),k.at=i;let e=m(`#lyrics-text`);if(i>=0&&m(`#lyrics-follow`).checked){let t=n[i],r=t.offsetTop-e.offsetTop-e.scrollTop;(r<e.clientHeight*.2||r+t.clientHeight>e.clientHeight*.6)&&e.scrollTo({top:Math.max(0,t.offsetTop-e.offsetTop-e.clientHeight/3),behavior:`smooth`})}}i>=0&&r[i].forEach((n,r)=>n.classList.toggle(`sung`,t[i].words[r].start<=e))},M=e=>{if(e.synced?.length){A(e,e.synced);return}k=null,m(`#lyrics-text`).classList.remove(`synced`),m(`#lyrics-follow-box`).hidden=!0;let t=e.text.split(`
|
|
2
|
-
`),n=[],r=[],i=()=>{if(r.length===0)return;let e=document.createElement(`p`);e.textContent=r.join(`
|
|
3
|
-
`),n.push(e),r=[]};for(let e of t)if(/^\s*\[[^\]]{1,160}\]\s*$/.test(e)){i();let t=document.createElement(`p`);t.className=`station-lyrics-section`,t.textContent=e.trim().slice(1,-1),n.push(t)}else e.trim()===``?i():r.push(e);i();let a=m(`#lyrics-text`);a.replaceChildren(...n),a.lang=/^[a-z]{2,3}$/.test(e.language)?e.language:``,m(`#lyrics-for`).textContent=e.title?`· ${e.title}`:``,m(`#lyrics-source`).textContent=e.source===`embedded`?`From the track itself.`:`From nichedb.dev.`,m(`#lyrics`).hidden=!1},N=``,P=async e=>{if(e!==N){if(N=e,!e){m(`#lyrics`).hidden=!0;return}try{let t=await fetch(e,{cache:`no-store`});if(N!==e)return;if(!t.ok){m(`#lyrics`).hidden=!0;return}M((await t.json()).lyrics)}catch{N===e&&(N=``)}}};window.matchMedia?.(`(max-width: 640px)`).matches&&(m(`#lyrics-box`).open=!1);var F=async()=>{try{let e=await fetch(d+`/now`+u,{cache:`no-store`});e.ok&&O((await e.json()).facts)}catch{}},I=()=>{let e=h;h=null,e?.destroy()},L=``,R=(async()=>{let e=location.hostname===`nixamp.com`?``:`https://nixamp.com`;try{let t=await fetch(e+`/api/v1/me/pass`,{credentials:`include`,cache:`no-store`,signal:AbortSignal.timeout(3e3)});t.ok&&(L=String((await t.json()).pass??``))}catch{}})(),z=t=>{I();let n=g===`video`,r=e(m(`#stage`),{src:f(d+`/stream`+u+(L?(u?`&`:`?`)+`pass=`+encodeURIComponent(L):``),`n=`+(U=Date.now().toString(36)+Math.random().toString(36).slice(2,8))),kind:n?`mp4`:`audio`,audio:!n,live:!0,autoplay:t});h=r;let i=r.media,a=()=>h===r,o=t;i.addEventListener(`volumechange`,()=>{a()&&!o&&(C=i.muted)}),i.addEventListener(`playing`,()=>{a()&&(clearTimeout(w),K(),o&&(o=!1,i.muted=C),y&&E(`Back on`),y=0,_&&Y(_))}),i.addEventListener(`error`,()=>{a()&&B()}),i.addEventListener(`ended`,()=>{a()&&B()});let s=Date.now();i.addEventListener(`stalled`,()=>{a()&&i.readyState<3&&Date.now()-s>12e3&&B()}),i.addEventListener(`pause`,()=>{!a()||i.ended||i.error||o||(S=!1,x=Date.now())}),i.addEventListener(`play`,()=>{a()&&(S=!0,x&&Date.now()-x>3e3&&(x=0,z(!0)))}),clearTimeout(w),t&&(w=window.setTimeout(()=>{a()&&i.paused&&(T(`reconnecting`,`Tap play to rejoin`),E(`The station is back. Press play to rejoin.`))},8e3))};function B(){S&&(y+=1,_&&Y(_),clearTimeout(b),b=window.setTimeout(()=>z(!0),Math.min(15e3,1e3*2**Math.min(y,4))))}var V=null,H=e=>{let t=Math.max(0,Math.floor(e)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=String(t%60).padStart(2,`0`);return n?`${n}:${String(r).padStart(2,`0`)}:${i}`:`${r}:${i}`},U=``,W=null,G=0,K=async()=>{let e=h?.media,t=U;if(!e||g===`video`||!t||e.paused||e.readyState<2)return;G=Date.now();let n=e.currentTime;try{let e=await fetch(f(d+`/clock`+u,`n=${encodeURIComponent(t)}&ct=${n.toFixed(3)}`),{cache:`no-store`});if(t!==U)return;if(!e.ok){W=null;return}let r=await e.json();W={nonce:t,ct:n,position:r.position,duration:r.duration,break:r.break,title:r.nowPlaying?.title??``}}catch{}};setInterval(()=>void K(),3e3);var q=()=>{let e=m(`#progress`),t=h?.media,n=W&&t&&W.nonce===U?W:null;if(n&&t){let r=n.position+(t.currentTime-n.ct);if(n.duration>0&&r>n.duration&&Date.now()-G>1e3&&K(),n.break||n.duration<=0){e.hidden=!0;return}J(Math.min(n.duration,Math.max(0,r)),n.duration),(!k||!k.title||!n.title||k.title.trim().toLowerCase()===n.title.trim().toLowerCase())&&j(r);return}if(!V){e.hidden=!0;return}let r=V.position+(Date.now()-V.at)/1e3-X(),i=Math.min(V.duration,Math.max(0,r));J(i,V.duration),j(i)},J=(e,t)=>{let n=m(`#progress-bar`);n.max=t,n.value=e,n.setAttribute(`aria-valuetext`,`${H(e)} of ${H(t)}`),m(`#progress-time`).textContent=`${H(e)} / ${H(t)}`,m(`#progress`).hidden=!1};setInterval(q,100);function Y(e){_=e,V=e.progress&&e.progress.duration>0?{...e.progress,at:Date.now()}:null,q(),document.title=e.name+o,m(`#name`).textContent=e.name,m(`#about`).textContent=e.description||``,m(`#about`).hidden=!e.description,v||D(e);let t=e.state===`live`||e.state===`recovering`||e.state===`starting`;y>0?T(`reconnecting`,`Reconnecting`):e.state===`live`?T(`live`,`Live`):e.state===`starting`||e.state===`recovering`?T(`reconnecting`,`Coming back`):e.state===`stopped`?T(`stopped`,`Off the air`):T(`unavailable`,`Unavailable`),m(`#m3u`).href=d+`/listen.m3u`+u,t&&g!==e.kind&&(g=e.kind,R.then(()=>z(S)))}var X=()=>{let e=h?.media;return!e||e.paused||e.buffered.length===0?0:Math.max(0,Math.min(30,e.buffered.end(e.buffered.length-1)-e.currentTime))},Z=async()=>{try{let e=await fetch(d+`/state`+u,{cache:`no-store`});if(e.status===404){m(`#name`).textContent=`This station is not available`,T(`unavailable`,`Unavailable`),I(),g=null;return}e.ok&&Y(await e.json())}catch{}},Q=()=>{if(!window.EventSource)return;let e=new EventSource(d+`/events`+u);e.addEventListener(`hello`,e=>{v=!0;let t=JSON.parse(e.data);setTimeout(()=>{D(t),t.facts===void 0?F():O(t.facts)},X()*1e3)}),e.addEventListener(`now`,e=>{let t=JSON.parse(e.data);setTimeout(()=>{D(t),O(t.facts),E(t.nowPlaying?`Now playing `+(t.nowPlaying.title||``):``)},X()*1e3),K()}),e.addEventListener(`state`,()=>void Z()),e.onerror=()=>{v=!1}};{let e=m(`#lyrics-follow`);try{e.checked=localStorage.getItem(`nixamp.lyrics.follow`)!==`0`}catch{}e.addEventListener(`change`,()=>{try{localStorage.setItem(`nixamp.lyrics.follow`,e.checked?`1`:`0`)}catch{}});let t=()=>{e.checked&&(e.checked=!1,e.dispatchEvent(new Event(`change`)))};for(let e of[`wheel`,`touchmove`])m(`#lyrics-text`).addEventListener(e,t,{passive:!0})}Z(),F(),Q(),setInterval(()=>void Z(),5e3);
|