PageSourceSearch

https://zeno.fm/_nuxt/DMaKL-1C.js

js zeno.fm collected 2026-10-01 08:59:54 UTC 4,628 bytes, 1 lines download raw bytes

1import{u as U,e as A,d as N}from"./BWn4uJWL.js";import{u as C}from"./i7HzhK1M.js";import{y as W}from"./BveLCwRw.js";import{E as $,by as j,e as V,w as y,L as Y,Y as z,p as f}from"./CdF3t0oV.js";import"./D92X5zYB.js";import"./D2HbcKdl.js";const p=3,G=$({__name:"PlayerMediaInput",setup(K){const{toast:E}=C(),r=U(),{trackStationPlay:L,trackStationStop:h,trackPodcastEpisodePlay:T,trackPodcastEpisodeStop:P}=A(),m=f(!1),s=f(null),g=f(null),a=j("playerElement"),t=f(0),d=f(!1),M=async()=>{if(!g.value)try{g.value=await N(()=>import("./DcbkToIY.js"),[],import.meta.url)}catch(e){return console.error("Failed to load HLS.js:",e),o("Failed to load streaming library"),null}return g.value},S=()=>{const e=r.media;e&&(e.mediaType==="station"?L(e.id,e.streamUrl):e.mediaType==="episode"&&T(e.podcastId,e.id))},R=()=>{const e=r.media;e&&(e.mediaType==="station"?h(e.id,e.streamUrl):e.mediaType==="episode"&&P(e.podcastId,e.id))},o=e=>{r.stop(),E({title:"Playback Error",description:e||"An error occurred while trying to play the media. Please try again later.",variant:"destructive"})},k=()=>S(),_=()=>R(),b=()=>{r.isLoading=!0},w=()=>{r.isPlaying&&c()},H=()=>{r.isPlaying&&c()},x=()=>{r.isLoading=!0},D=()=>{r.complete()},I=()=>{a.value?.duration&&isFinite(a.value.duration)?r.duration=Math.round(a.value.duration):r.duration=0},O=()=>{if(!r.isFile)return;const e=a.value?.currentTime?Math.round(a.value.currentTime):0;r.currentTime!==e&&(r.currentTime=e)},c=async()=>{if(!(m.value||!a.value||d.value)){m.value=!0;try{await a.value.play(),r.isLoading=!1,t.value=0}catch(e){console.error("Playback error:",e),e instanceof DOMException?e.name==="NotAllowedError"?o("Playback was prevented. Please interact with the page first."):e.name==="NotSupportedError"?o("Media format not supported by your browser."):t.value<p?(t.value++,console.log(`Retrying playback... (${t.value}/${p})`),setTimeout(()=>c(),1e3*t.value)):o():t.value<p?(t.value++,console.log(`Retrying playback... (${t.value}/${p})`),setTimeout(()=>c(),1e3*t.value)):o()}finally{m.value=!1}}},B=async e=>{if(!a.value||d.value)return;s.value&&v();const l=await M();if(!l)return;const n=l.default;if(a.value.canPlayType("application/vnd.apple.mpegurl")){console.log("Using native HLS support"),a.value.src=e;return}if(!n.isSupported()){o("Your browser does not support HLS streaming.");return}if(await W(),!a.value||d.value)return;const i=new n({enableWorker:!0,lowLatencyMode:!0,backBufferLength:90,maxBufferLength:30,maxMaxBufferLength:600,maxBufferSize:60*1e3*1e3,maxBufferHole:.5,manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:3,manifestLoadingRetryDelay:1e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3});s.value=i,i.on(n.Events.MANIFEST_PARSED,()=>{console.log("HLS manifest parsed successfully"),c()}),i.on(n.Events.ERROR,(F,u)=>{if(console.error("HLS error:",u),!u.fatal){console.warn("Non-fatal HLS error:",u.type,u.details);return}switch(u.type){case n.ErrorTypes.NETWORK_ERROR:console.error("Network error occurred, attempting recovery..."),t.value<p?(t.value++,setTimeout(()=>{i.loadSource(e)},1e3*t.value)):o("Network error: Unable to load stream.");break;case n.ErrorTypes.MEDIA_ERROR:console.error("Media error occurred, attempting recovery..."),i.recoverMediaError();break;default:console.error("Fatal HLS error, destroying instance"),v(),o("Streaming error: Unable to play content.");break}}),i.on(n.Events.FRAG_BUFFERED,()=>{r.isLoading&&(r.isLoading=!1)}),i.on(n.Events.LEVEL_SWITCHED,(F,u)=>{console.log("Quality level switched to:",u.level)}),i.loadSource(e),i.attachMedia(a.value)},v=()=>{if(s.value){d.value=!0;try{s.value.media&&s.value.detachMedia(),s.value.stopLoad(),s.value.destroy()}catch(e){console.error("Error cleaning up HLS:",e)}finally{s.value=null,d.value=!1}}};return V(()=>{v()}),y(()=>r.currentTime,e=>{if(!a.value)return;const l=Math.round(a.value.currentTime||0);e!==l&&a.value.duration&&(a.value.currentTime=e)}),y(()=>r.source,async(e,l)=>{if(!(!a.value||!e)&&e!==l){r.isLoading=!0,t.value=0;try{a.value.pause(),r.isStreaming?await B(e):(v(),a.value.src=e)}catch(n){console.error("Source change error:",n),o()}}}),y(()=>r.isPlaying,e=>{e?c():a.value&&a.value.pause()}),y(()=>r.volume,e=>
1{a.value&&(a.value.volume=e)}),(e,l)=>(Y(),z("video",{ref_key:"playerElement",ref:a,class:"hidden",playsInline:"",onPlay:k,onPause:_,onLoadstart:b,onCanplay:w,onLoadedmetadata:H,onWaiting:x,onError:l[0]||(l[0]=()=>o()),onEnded:D,onDurationchange:I,onTimeupdate:O},null,544))}}),ae=Object.assign(G,{__name:"PlayerMediaInput"});export{ae as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.