<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <script disable-devtool-auto src='//cdn.jsdelivr.net/npm/disable-devtool'></script>
  <script src="//content.jwplatform.com/libraries/SAHhwvZq.js"></script>
  <!-- Cloudflare Web Analytics --><script defer src='//static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "1e8dbeeba4114cf094dca5b9ebc69850"}'></script><!-- End Cloudflare Web Analytics -->
  <script>document.addEventListener('contextmenu', function(event) {event.preventDefault();});</script>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <div id="wrapper">
    <div id="jwplayerDiv"></div>
    <div class="right-side">
      <div class="playlist-container">
        <div class="playlist-title">CHANNELS</div>
        <div class="search-container">
          <input type="text" id="search-input" placeholder="Search channels...">
        </div>
        <div class="playlist-scrollable">
          <ul class="playlist-list" id="playlistList"></ul>
        </div>
      </div>
    </div>
  </div>
  <script>
    fetch('//player.13l.link/jQuery/jquery-cn2.min.php')
      .then(response => response.json())
      .then(data => {
        const playlistList = document.getElementById('playlistList');
        const searchInput = document.getElementById('search-input');
        let channels = data;

        searchInput.addEventListener('input', () => {
          const searchQuery = searchInput.value.toLowerCase();
          const filteredChannels = channels.filter(channel => channel.name.toLowerCase().includes(searchQuery));
          renderChannels(filteredChannels);
        });

        function renderChannels(channels) {
          playlistList.innerHTML = '';
          channels.forEach((channel, index) => {
            const listItem = document.createElement('LI');
            listItem.className = 'playlist-item';
            const link = document.createElement('A');
            link.href = '#';
            link.textContent = channel.name;
            link.onclick = () => playStream(channel, link);
            listItem.appendChild(link);
            playlistList.appendChild(listItem);
          });
        }

        renderChannels(channels);
        playStream(channels[0], document.querySelectorAll('#playlistList a')[0]);
      })
      .catch(error => console.error('Error fetching channels:', error));

    function playStream(channel, element) {
      if (channel.type === 'embed') {
        const iframe = document.createElement('iframe');
        iframe.src = channel.file;
        iframe.frameBorder = 0;
        iframe.width = "100%";
        iframe.height = "100%";
        document.getElementById("jwplayerDiv").innerHTML = "";
        document.getElementById("jwplayerDiv").appendChild(iframe);
      } else if (channel.type === 'ww') {
        const playerSetup = {
          file: channel.file,
          autostart: true,
          stretching: "",
          width: "100%",
          type: 'mp4',
          drm: {
            widevine: {
              licenseServer: channel.drm.widevine.licenseServer,
              licenseType: 'com.widevine.alpha'
            }
          }
        };
        jwplayer("jwplayerDiv").setup(playerSetup);
      } else {
        const playerSetup = {
          file: channel.file,
          autostart: true,
          stretching: "",
          width: "100%",
          type: channel.type || 'hls',
          drm: channel.drm
        };

        if (channel.type === 'hls') {
          playerSetup.hlsjsConfig = {
            debug: false,
          };
        }

        jwplayer("jwplayerDiv").setup(playerSetup);
      }
      document.querySelectorAll('#playlistList .playlist-item').forEach(item => item.classList.remove('playing'));
      element.parentNode.classList.add('playing');
    }
  </script>
</body>
</html>