1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,28947,t=>{"use strict";var e=t.i(47167),a=t.i(43476),r=t.i(71645);let n=new Map;function i(t,e){try{localStorage.setItem(t,JSON.stringify({url:e,timestamp:Date.now()}))}catch{}}async function l(t,a){let r=e.default.env.NEXT_PUBLIC_LASTFM_API_KEY;if(!r)return null;try{let e=new URLSearchParams({method:"track.getInfo",api_key:r,artist:t,track:a,format:"json"}),n=await fetch(`https://ws.audioscrobbler.com/2.0/?${e}`,{cache:"force-cache"});if(!n.ok)return null;let i=await n.json(),l=i?.track?.album?.image;if(!l||!Array.isArray(l))return null;let o=l.find(t=>"extralarge"===t.size),s=l.find(t=>"large"===t.size),c=o?.["#text"]||s?.["#text"];if(!c||""===c)return null;return c}catch{return null}}async function o(t,e){try{let a=new URLSearchParams({artist:t,title:e}),r=await fetch(`/api/album-art?${a}`,{cache:"force-cache"});if(!r.ok)return null;return(await r.json()).imageUrl||null}catch{return null}}async function s(t,e){let a="/images/vinyl-placeholder.svg";if(!t||!e)return a;let r=`albumart:${t.toLowerCase().trim()}:${e.toLowerCase().trim()}`,s=n.get(r);if(s)return s;let c=function(t){try{let e=localStorage.getItem(t);if(!e)return null;let{url:a,timestamp:r}=JSON.parse(e);if(Date.now()-r>2592e5)return localStorage.removeItem(t),null;return a}catch{return null}}(r);if(c)return n.set(r,c),c;let u=await o(t,e);if(u)return n.set(r,u),i(r,u),u;let m=await l(t,e);return m?(n.set(r,m),i(r,m),m):(n.set(r,a),a)}function c(t){return`${t.artist.toLowerCase().trim()}::${t.title.toLowerCase().trim()}`}let u="song_history",m=(0,r.createContext)({currentSong:null,recentSongs:[],isLive:!1,isLoading:!0});function f(t){return t?.isLive&&t.currentSong?[t.currentSong,...t.recentSongs].slice(0,11):[]}function g(t){try{localStorage.setItem(u,JSON.stringify({songs:t,timestamp:Date.now()}))}catch{}}function p({children:t,initialSnapshot:e}){let n=f(e),[i,l]=(0,r.useState)(e?.currentSong??null),[o,p]=(0,r.useState)(e?.recentSongs??[]),[w,y]=(0,r.useState)(e?.isLive??!1),[d,v]=(0,r.useState)(!e),[S,A]=(0,r.useState)(()=>{if(n.length>0)return n;try{let t=localStorage.getItem(u);if(!t)return[];let{songs:e,timestamp:a}=JSON.parse(t);if(Date.now()-a>2592e5)return localStorage.removeItem(u),[];return e||[]}catch{return[]}});return(0,r.useEffect)(()=>{if(!w)return;let t=S.map(t=>{var e;let a;return{...t,playedAt:(e=t.timestamp,(a=Math.floor((Date.now()-e)/1e3))<60?"Ahora":a<120?"Hace 1 min":a<3600?`Hace ${Math.floor(a/60)} min`:a<7200?"Hace 1 hora":`Hace ${Math.floor(a/3600)} horas`)}});l(t[0]??null),p(t.slice(1)),g(t)},[S,w]),(0,r.useEffect)(()=>{if(!w||0===S.length)return;let t="/images/vinyl-placeholder.svg";S.forEach((e,a)=>{e.albumArt&&e.albumArt!==t||s(e.artist,e.title).then(r=>{r&&r!==t&&A(t=>{let n=[...t];return n[a]&&c(n[a])===c(e)&&n[a].albumArt!==r?(n[a]={...n[a],albumArt:r},n):t})})})},[S,w]),(0,r.useEffect)(()=>{console.log("Shoutcast URL configured:","http://solid24.streamupsolutions.com:8066");let t=async()=>{try{let t=await fetch("/api/now-playing",{cache:"no-store"});if(!t.ok)throw console.error("Now playing API failed:",t.status,t.statusText),Error("Failed to fetch");let e=await t.json();if(e.isLive&&e.currentSong)y(!0),A(t=>{var a;let r,n=(a=f(e),r=new Map(t.map(t=>[c(t),t])),a.map(t=>{let e=r.get(c(t));return e?.albumArt?{...t,albumArt:e.albumArt}:t})).slice(0,11);return g(n),n});else throw Error("No live song available")}catch(t){console.error("Error fetching now playing:",t),y(!1),h([{title:"Quimbara",artist:"Celia Cruz",playedAt:"Hace 2 min",timestamp:Date.now()-12e4},{title:"Pedro Navaja",artist:"Rubén Blades",playedAt:"Hace 5 min",timestamp:Date.now()-3e5},{title:"El Gran Varón",artist:"Willie Colón",playedAt:"Hace 9 min",timestamp:Date.now()-54e4},{title:"Idilio",artist:"Willie Colón",playedAt:"Hace 13 min",timestamp:Date.now()-78e4},{title:"Aguanile",artist:"Héctor Lavoe",playedAt:"Hace 17 min",timestamp:Date.now()-102e4},{title:"La Vida Es Un Carnaval",artist:"Celia Cruz",playedAt:"Hace 21 min",timestamp:Date.now()-126e4},{title:"Decisiones",artist:"Rubén Blades",playedAt:"Hace 25 min",timestamp:Date.now()-15e5},{title:"Mi Gente",artist:"Héctor Lavoe",playedAt:"Hace 29 min",timestamp:Date.now()-174e4},{title:"Periódico de Ayer",artist:"Héctor Lavoe",playedAt:"Hace 33 min",timestamp:Date.now()-198e4},{title:"Llorarás",artist:"Oscar D'León",playedAt:"Hace 37 min",timestamp:Date.now()-222e4}]).then(t=>{l(null),p(t)})}finally{v(!1)}};t();let e=setInterval(t,45e3);return()=>clearInterval(e)},[]),(0,a.jsx)(m.Provider,{value:{currentSong:i,recentSongs:o,isLive:w,isLoading:d},children:t})}async function h(t){return await Promise.all(t.map(async t=>{let e=await s(t.artist,t.title);return{...t,albumArt:e}}))}function w(){let t=(0,r.useContext)(m);if(!t)throw Error("useNowPlaying must be used within a NowPlayingProvider");return t}t.s(["NowPlayingProvider",()=>p,"useNowPlaying",()=>w],28947)}]);
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.