<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>Icecast — Radios</title>
    <script type="text/javascript">
          //
          function playAudio(mount, type, btn) {
            var audio = document.getElementById('player');
            if (btn.dataset.playing === 'true') {
              audio.src = '';
              btn.textContent = 'Play';
              btn.dataset.playing = 'false';
            } else {
              audio.src = mount;
              audio.type = type;
              audio.play();
              document.querySelectorAll('.play-btn[data-playing]').forEach(function(b) {
                b.textContent = 'Play';
                b.dataset.playing = 'false';
              });
              btn.textContent = 'Stop';
              btn.dataset.playing = 'true';
            }
          }
          function updateVolume(val) {
            document.getElementById('player').volume = val / 2;
            document.getElementById('vol-val').textContent = Math.round(val * 50) + '%';
          }
          function decodeHTML(str) {
            var txt = document.createElement('textarea');
            txt.innerHTML = str;
            return txt.value;
          }
          var channels = [];
          function getAllMountData() {
            console.log('getAllMountData called');
            var xhr = new XMLHttpRequest();
            xhr.open('GET', '/status-json.xsl', true);
            xhr.onload = function() {
              console.log('XHR loaded, status:', xhr.status, 'response:', xhr.responseText.substring(0, 200));
              if (xhr.status === 200) {
                var data = JSON.parse(xhr.responseText);
                var sources = Array.isArray(data.icestats.source) ? data.icestats.source : [data.icestats.source];
                for (var i = 0; i &lt; channels.length; i++) {
                  var src = sources[i];
                  if (src) {
                    var titleEl = document.getElementById('st_' + i);
                    if (titleEl &amp;&amp; src.title) titleEl.textContent = decodeHTML(src.title);
                    var lsEl = document.getElementById('ls_' + i);
                    if (lsEl &amp;&amp; src.listeners !== undefined) lsEl.textContent = src.listeners;
                  }
                }
              }
            };
            xhr.send();
            setTimeout(getAllMountData, 10000);
          }
          function updateStatsInit(mounts) {
            console.log('updateStatsInit called with:', mounts);
            channels = mounts;
            getAllMountData();
          }
          //
        </script>
    <style type="text/css">
          body { background: #111; color: #e6e6e6; font-family: "Times New Roman", Georgia, serif; margin: 1em; line-height: 1.4; }
          h1 { font-size: 1.2em; margin: 0 0 0.8em 0; text-decoration: underline; color: #fff; }
          .list { list-style: none; padding: 0; margin: 0; }
          .item { background: #1a1a1a; border: 1px solid #2a2a2a; padding: 0.6em; margin-bottom: 0.6em; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; }
          .left { flex: 1 1 auto; min-width: 0; }
          .name a { color: #fff; text-decoration: none; font-weight: bold; font-size: 1em; }
          .name a:hover { text-decoration: underline; }
          .meta { color: #bdbdbd; font-size: 0.9em; margin-top: 0.25em; }
          .meta span { display: inline-block; margin-right: 0.9em; }
          .play-btn { background: #333; color: #e6e6e6; border: 1px solid #444; padding: 0.3em 0.8em; cursor: pointer; font-size: 0.9em; text-decoration: none; display: inline-block; }
          .play-btn:hover { background: #2b2b2b; border-color: #555; }
          .admin { position: absolute; top: 1em; right: 1em; background: #333; color: #e6e6e6; border: 1px solid #444; padding: 0.25em 0.5em; text-decoration: none; }
          .admin:hover { background: #2b2b2b; border-color: #555; }
          .footer { margin-top: 1em; color: #9a9a9a; font-size: 0.9em; }
          .volume-control { display: flex; align-items: center; gap: 0.5em; margin: 0.8em 0; }
          .volume-control label { color: #bdbdbd; font-size: 0.9em; }
          #volume { width: 120px; cursor: pointer; }
          #vol-val { color: #e6e6e6; font-size: 0.9em; min-width: 3em; }
        </style>
  </head>
  <body>
    <a class="admin" href="admin/">Admin</a>
    <h1>anima.salmonis.ru</h1>
    <audio id="player" type="audio/aac" src=""></audio>
    <div class="volume-control">
      <label for="volume">Volume:</label>
      <input type="range" id="volume" min="0" max="2" step="0.05" value="0.7" oninput="updateVolume(this.value)" />
      <span id="vol-val">70%</span>
    </div>
    <ul class="list">
      <li class="item" data-mount="/afx.mp3">
        <div class="left">
          <div class="name">
            <a href="/afx.mp3">Aphex Twin</a>
          </div>
          <div class="meta">
            <span>
              <strong>Now playing: </strong>
              <span class="now-playing" id="st_0">Street Side Boyz - I Want to Be With You [AFX editional] [a side] [Edward &amp;#8216;Get Down&amp;#8217; Crosby mix] [88]-Street Side Boyz [Prod Master C&amp;J, Writ C&amp;J [For Get Down Productions] [SS-102]+3db 1</span>
            </span>
            <span>
              <strong>Listeners: </strong>
              <span class="listeners" id="ls_0">0</span>
            </span>
          </div>
        </div>
        <div>
          <button class="play-btn" onclick="playAudio('/afx.mp3', 'audio/mpeg', this)">Play</button>
          <a class="play-btn" href="/afx.mp3.m3u">M3U</a>
        </div>
      </li>
      <li class="item" data-mount="/breakcore.mp3">
        <div class="left">
          <div class="name">
            <a href="/breakcore.mp3">Breakcore and whatnot</a>
          </div>
          <div class="meta">
            <span>
              <strong>Now playing: </strong>
              <span class="now-playing" id="st_1">Venetian Snares - Salt</span>
            </span>
            <span>
              <strong>Listeners: </strong>
              <span class="listeners" id="ls_1">1</span>
            </span>
          </div>
        </div>
        <div>
          <button class="play-btn" onclick="playAudio('/breakcore.mp3', 'audio/mpeg', this)">Play</button>
          <a class="play-btn" href="/breakcore.mp3.m3u">M3U</a>
        </div>
      </li>
      <li class="item" data-mount="/experimental.mp3">
        <div class="left">
          <div class="name">
            <a href="/experimental.mp3">Experimental Nigger Music</a>
          </div>
          <div class="meta">
            <span>
              <strong>Now playing: </strong>
              <span class="now-playing" id="st_2">JPEGMAFIA - TIRED, NERVOUS &amp; BROKE!</span>
            </span>
            <span>
              <strong>Listeners: </strong>
              <span class="listeners" id="ls_2">0</span>
            </span>
          </div>
        </div>
        <div>
          <button class="play-btn" onclick="playAudio('/experimental.mp3', 'audio/mpeg', this)">Play</button>
          <a class="play-btn" href="/experimental.mp3.m3u">M3U</a>
        </div>
      </li>
      <li class="item" data-mount="/hh.mp3">
        <div class="left">
          <div class="name">
            <a href="/hh.mp3">Happy Holiday</a>
          </div>
          <div class="meta">
            <span>
              <strong>Now playing: </strong>
              <span class="now-playing" id="st_3">Ye - HEIL HITLER HOOLIGAN VERSION</span>
            </span>
            <span>
              <strong>Listeners: </strong>
              <span class="listeners" id="ls_3">0</span>
            </span>
          </div>
        </div>
        <div>
          <button class="play-btn" onclick="playAudio('/hh.mp3', 'audio/mpeg', this)">Play</button>
          <a class="play-btn" href="/hh.mp3.m3u">M3U</a>
        </div>
      </li>
      <li class="item" data-mount="/hiciory.mp3">
        <div class="left">
          <div class="name">
            <a href="/hiciory.mp3">radio eska hity 2026</a>
          </div>
          <div class="meta">
            <span>
              <strong>Now playing: </strong>
              <span class="now-playing" id="st_4">MATEUSZD64 - CZAS</span>
            </span>
            <span>
              <strong>Listeners: </strong>
              <span class="listeners" id="ls_4">0</span>
            </span>
          </div>
        </div>
        <div>
          <button class="play-btn" onclick="playAudio('/hiciory.mp3', 'audio/mpeg', this)">Play</button>
          <a class="play-btn" href="/hiciory.mp3.m3u">M3U</a>
        </div>
      </li>
      <li class="item" data-mount="/numetal">
        <div class="left">
          <div class="name">
            <a href="/numetal">numetal</a>
          </div>
          <div class="meta">
            <span>
              <strong>Now playing: </strong>
              <span class="now-playing" id="st_5">Slipknot - Prelude 3.0</span>
            </span>
            <span>
              <strong>Listeners: </strong>
              <span class="listeners" id="ls_5">0</span>
            </span>
          </div>
        </div>
        <div>
          <button class="play-btn" onclick="playAudio('/numetal', 'audio/mpeg', this)">Play</button>
          <a class="play-btn" href="/numetal.m3u">M3U</a>
        </div>
      </li>
      <li class="item" data-mount="/patorap.mp3">
        <div class="left">
          <div class="name">
            <a href="/patorap.mp3">Peja/Slums Attack</a>
          </div>
          <div class="meta">
            <span>
              <strong>Now playing: </strong>
              <span class="now-playing" id="st_6">Peja / Slums Attack - Nie-kocham-hip-hop</span>
            </span>
            <span>
              <strong>Listeners: </strong>
              <span class="listeners" id="ls_6">0</span>
            </span>
          </div>
        </div>
        <div>
          <button class="play-btn" onclick="playAudio('/patorap.mp3', 'audio/mpeg', this)">Play</button>
          <a class="play-btn" href="/patorap.mp3.m3u">M3U</a>
        </div>
      </li>
    </ul>
    <script type="text/javascript">
          //
          console.log('Inline script executing');
          updateStatsInit([&lt;xsl:for-each select="source"&gt;&lt;xsl:if test="position() &amp;gt; 1"&gt;,&lt;/xsl:if&gt;'&lt;xsl:call-template name="escape-js"&gt;&lt;xsl:with-param name="text" select="@mount"/&gt;&lt;/xsl:call-template&gt;'&lt;/xsl:for-each&gt;]);
          //
        </script>
    <div class="footer">Frontend is served to you thanks to <a href="https://icecast.org/" style="color:#bdbdbd">icecast.org</a>. For all stream links, visit <a href="streams.txt" style="color:#bdbdbd">this site</a></div>
  </body>
</html>
