3345
NK
RADIO

PRESS START

OFF AIR

0 listeners

CHAT

Guest

No messages yet. Be the first.

SCHEDULE

ALL TIMES EEST
DAY00–0202–0404–0606–0808–1010–1212–1414–1616–1818–2020–20:4520:45–2121–2222–00
MONDAYJungleHouseHardcoreDnBHardcoreAggrotechBreakcoreDnBHardcoreBreakcoreAggrotechExperimentalHardbassWitch House
TUESDAYJungleHouseHardcoreDnBHardcoreAggrotechBreakcoreDnBHardcoreBreakcoreAggrotechExperimentalHardbassWitch House
WEDNESDAYJungleHouseHardcoreDnBHardcoreAggrotechBreakcoreDnBHardcoreBreakcoreAggrotechExperimentalHardbassWitch House
THURSDAYJungleHouseHardcoreDnBHardcoreAggrotechBreakcoreDnBHardcoreBreakcoreAggrotechExperimentalHardbassWitch House
FRIDAYJungleHouseHardcoreDnBHardcoreAggrotechBreakcoreDnBHardcoreBreakcoreAggrotechExperimentalHardbassWitch House
SATURDAYJungleHouseHardcoreDnBHardcoreAggrotechBreakcoreDnBHardcoreBreakcoreAggrotechExperimentalHardbassWitch House
SUNDAYJungleHouseHardcoreDnBHardcoreAggrotechBreakcoreDnBHardcoreBreakcoreAggrotechExperimentalHardbassWitch House
(function(){ var audio=document.getElementById(‘nk-radio-audio’), toggle=document.getElementById(‘nk-radio-toggle’), volume=document.getElementById(‘nk-radio-volume’), deck=document.getElementById(‘nk-turntable’), state=document.getElementById(‘nk-deck-status’), track=document.getElementById(‘nk-radio-track’), listeners=document.getElementById(‘nk-radio-listeners’);audio.volume=volume.value/100;volume.addEventListener(‘input’,function(){audio.volume=volume.value/100;}); function setPlaying(on){deck.classList.toggle(‘is-playing’,on);toggle.setAttribute(‘aria-pressed’,on?’true’:’false’);state.textContent=on?’ON AIR’:’PRESS START’;} var connecting=false;toggle.addEventListener(‘click’,function(){if(connecting)return;if(audio.paused){connecting=true;toggle.disabled=true;audio.pause();audio.currentTime=0;audio.load();audio.play().then(function(){setPlaying(true);connecting=false;toggle.disabled=false;},function(){state.textContent=’STREAM UNAVAILABLE’;connecting=false;toggle.disabled=false;});}else{audio.pause();audio.currentTime=0;setPlaying(false);}}); audio.addEventListener(‘playing’,function(){setPlaying(true);});audio.addEventListener(‘pause’,function(){if(!connecting)setPlaying(false);}); function sources(d){var s=d&&d.icestats&&d.icestats.source;if(!s)return[];return Array.isArray(s)?s:[s];} function source(d){return sources(d).find(function(x){return x.listenurl&&x.listenurl.indexOf(‘/radio.mp3’)!==-1;})||null;} function liveName(d){var live=sources(d).find(function(x){return x.listenurl&&x.listenurl.indexOf(‘/radio.mp3’)===-1&&x.listenurl.indexOf(‘/live.mp3’)===-1;});if(!live)return”;var name=String(live.server_name||”).replace(/\s*[—-]\s*NERVENKLINIK\s+Radio.*$/i,”).trim();if(name)return name;var mount=String(live.listenurl||”).split(‘/’).pop().replace(/\.mp3$/i,”);return mount&&mount!==’live’?mount.replace(/[-_]+/g,’ ‘):”;} function refreshRadio(){Promise.all([fetch(‘/radio/status’,{cache:’no-store’}),fetch(‘/wp-json/nervenklinik/v1/now-playing’,{cache:’no-store’})]).then(function(r){if(!r[0].ok)throw Error();return Promise.all([r[0].json(),r[1].json()]);}).then(function(d){var s=source(d[0]),live=liveName(d[0]),c=s?Number(s.listeners||0):0;track.textContent=live?live+’ – PERFORMING LIVE’:(s?(s.title||d[1].title||’LIVE’):’OFF AIR’);listeners.textContent=c+’ ‘+(c===1?’listener’:’listeners’);}).catch(function(){track.textContent=’OFF AIR’;listeners.textContent=’0 listeners’;});} var identity=document.getElementById(‘nk-chat-identity’),messages=document.getElementById(‘nk-chat-messages’),form=document.getElementById(‘nk-chat-form’),input=document.getElementById(‘nk-chat-input’),accountToggle=document.getElementById(‘nk-chat-account-toggle’),accountForm=document.getElementById(‘nk-chat-account-form’),note=document.getElementById(‘nk-chat-account-note’),clear=document.getElementById(‘nk-chat-clear’),guest=localStorage.getItem(‘nkRadioGuest’)||”,chatAdmin=false; function api(path,body){var h=body?{‘Content-Type’:’application/json’}:{};if(window.nkChat&&window.nkChat.nonce)h[‘X-WP-Nonce’]=window.nkChat.nonce;return fetch(‘/wp-json/nervenklinik/v1/’+path,{method:body?’POST’:’GET’,headers:h,body:body?JSON.stringify(body):undefined,credentials:’same-origin’}).then(function(r){return r.json().then(function(d){if(!r.ok)throw Error(d.message||’Something went wrong.’);return d;});});} function esc(s){var d=document.createElement(‘div’);d.textContent=s;return d.innerHTML;} function showMessages(items){if(!items.length){messages.innerHTML=’

No messages yet. Be the first.

‘;return;}messages.innerHTML=items.map(function(m){var role=m.role?’‘+esc(m.role)+’‘:”;var mod=chatAdmin&&m.id?’‘:”;return ‘
‘+esc(m.author)+’‘+role+mod+’

‘+esc(m.message)+’

‘;}).join(”);messages.scrollTop=messages.scrollHeight;} function bootChat(){api(‘chat/identity?guest=’+encodeURIComponent(guest)).then(function(d){guest=d.guest||guest;if(guest)localStorage.setItem(‘nkRadioGuest’,guest);identity.textContent=d.name;identity.className=’nk-chat-name nk-chat-name–‘+(d.kind||’guest’);chatAdmin=!!d.admin;clear.hidden=!chatAdmin;return api(‘chat’);}).then(function(d){showMessages(d.messages||[]);}).catch(function(){});} form.addEventListener(‘submit’,function(e){e.preventDefault();var message=input.value.trim();if(!message)return;api(‘chat’,{message:message,guest:guest}).then(function(){input.value=”;bootChat();}).catch(function(e){alert(e.message);});}); messages.addEventListener(‘click’,function(e){var b=e.target.closest(‘.nk-chat-delete’);if(!b)return;api(‘chat/delete’,{id:b.dataset.id}).then(bootChat).catch(function(e){alert(e.message);});});clear.addEventListener(‘click’,function(){if(confirm(‘Clear every chat message?’))api(‘chat/clear’,{}).then(bootChat).catch(function(e){alert(e.message);});});accountToggle.addEventListener(‘click’,function(){accountForm.hidden=!accountForm.hidden;}); function account(action){api(‘chat/’+action,{username:document.getElementById(‘nk-chat-username’).value,email:document.getElementById(‘nk-chat-email’).value,password:document.getElementById(‘nk-chat-password’).value}).then(function(d){note.textContent=d.message+’ Refreshing your chat identity…’;window.setTimeout(function(){window.location.reload();},250);}).catch(function(e){note.textContent=e.message;});} document.getElementById(‘nk-chat-register’).addEventListener(‘click’,function(){account(‘register’);});document.getElementById(‘nk-chat-login’).addEventListener(‘click’,function(){account(‘login’);});refreshRadio();bootChat();window.setInterval(refreshRadio,5000);window.setInterval(bootChat,10000); }());