<!DOCTYPE html>
<html lang="en">
<head>
  <script disable-devtool-auto src='https://cdn.jsdelivr.net/npm/disable-devtool@latest'></script>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/devtools-detector/2.0.17/devtools-detector.js"></script>
  <script src="https://embed.rgshows.me/js/protected_devtoolsdetector.js" defer></script>
  <script src="https://embed.rgshows.me/js/nocheats.js" defer></script>
  <script src="https://embed.rgshows.me/js/path.js" defer></script>
  <script src="https://embed.rgshows.me/js/mercury.js" type="text/javascript" data-cfasync="false"></script>
  <title>RgShows Api 2</title>
  <link rel="stylesheet" href="https://cdn.vidstack.io/player/theme.css" />
  <link rel="stylesheet" href="https://cdn.vidstack.io/player/video.css" />
  <style>
    body {
      background-color: #121212;
      color: #fff;
      font-family: Arial, sans-serif;
      margin: 0;
      height: 100vh;
      overflow: hidden;
    }
    #videoContainer {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: #000;
}

#controls {
  position: absolute;
  top: 10px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1000;
}

    #target {
      width: 100%;
      height: 100%;
    }

    #languageSelect {
      background: rgba(0, 0, 0, 0.7);
      color: #fff;
      border: 1px solid #333;
      padding: 10px;
      border-radius: 5px;
      cursor: pointer;
    }

    #languageSelect option {
      background: #333;
    }

    #languageSelect:focus {
      outline: none;
    }
  </style>
</head>
<body>
  <div id="videoContainer">
    <div id="target" data-poster="" data-title=""></div>
    <div id="controls">
      <select id="languageSelect"></select>
    </div>
  </div>

  <script type="module">
    import { VidstackPlayer, VidstackPlayerLayout, TextTrack } from 'https://cdn.vidstack.io/player';
  
    let vidstackPlayer = null;
  
    document.addEventListener('DOMContentLoaded', async () => {
      const languageSelect = document.getElementById('languageSelect');
      const targetElement = document.getElementById('target');
      const urlParams = new URLSearchParams(window.location.search);
      const tmdbId = urlParams.get('id');
      const season = urlParams.get('s');
      const episode = urlParams.get('e');
  
      if (!tmdbId) {
        alert('TMDB ID is required');
        return;
      }
  
      const tmdbApiKey = 'f6e840332142f77746185ab4e67be858';
      const isTvShow = season && episode;
      const tmdbEndpoint = `https://tmdb.rgshows.me/tmdb/3/${isTvShow ? 'tv' : 'movie'}/${tmdbId}?api_key=${tmdbApiKey}`;
  
      try {
        const response = await fetch(tmdbEndpoint);
        const data = await response.json();
        const title = data.title || data.name || 'Untitled';
        const poster = data.backdrop_path ? `https://image.tmdb.org/t/p/original${data.backdrop_path}` : '';
  
        targetElement.setAttribute('data-title', title);
        targetElement.setAttribute('data-poster', poster);
  
        const mediaInfoEndpoint = `https://hindi.rgshows.me/api/v1/mediaInfo?id=${data.imdb_id || tmdbId}`;
        const mediaResponse = await fetch(mediaInfoEndpoint);
        const mediaData = await mediaResponse.json();
  
        if (mediaData.success && mediaData.data.playlist.length > 0) {
          const playlist = mediaData.data.playlist;
          const key = mediaData.data.key;
  
          let defaultIndex = 0;
          playlist.forEach((item, index) => {
            const option = document.createElement('option');
            option.value = index;
            option.text = item.title;
            languageSelect.appendChild(option);
  
            if (item.title.toLowerCase() === 'english') {
              defaultIndex = index;
            }
          });
  
          languageSelect.selectedIndex = defaultIndex;
          await playStream(playlist[defaultIndex].file, key, tmdbId);
  
          languageSelect.addEventListener('change', async (event) => {
            const selectedIndex = event.target.value;
            await playStream(playlist[selectedIndex].file, key, tmdbId);
          });
        } else {
          alert('No playable streams found');
        }
  
        // Fetch and add subtitles
        await addSubtitles(tmdbId);
      } catch (error) {
        console.error('Error:', error);
        alert('An error occurred while loading the player');
      }
    });
  
    async function playStream(file, key, tmdbId) {
      try {
        const response = await fetch('https://hindi.rgshows.me/api/v1/getStream', {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify({ file, key }),
        });
        const data = await response.json();
  
        if (data.success) {
          const streamUrl = data.data.link;
  
          if (!vidstackPlayer) {
            // Create player instance if not already created
            vidstackPlayer = await VidstackPlayer.create({
              target: '#target',
              title: document.querySelector('#target').getAttribute('data-title'),
              src: streamUrl,
              poster: document.querySelector('#target').getAttribute('data-poster'),
              layout: new VidstackPlayerLayout({ thumbnails: null }),
              autoplay: true, // Enable autoplay here
            });
          } else {
            // Update player source dynamically
            vidstackPlayer.src = streamUrl;
          }
        } else {
          alert('Error fetching stream link');
        }
      } catch (error) {
        console.error('Error fetching stream link:', error);
      }
      // Load progress from localStorage
      const savedProgress = localStorage.getItem(`movie-${tmdbId}`);
      if (savedProgress) {
          const progressTime = (parseFloat(savedProgress) / 100) * vidstackPlayer.duration;
          console.log("Restoring saved progress", { savedProgress, progressTime });
          vidstackPlayer.currentTime = progressTime;
      } else {
          console.log("No saved progress found");
      }
  
      // Save progress to localStorage on playback progress
      vidstackPlayer.subscribe(({ currentTime, duration }) => {
          if (currentTime && duration) {
              const progress = (currentTime / duration) * 100;
              console.log("Playback progress", { currentTime, duration, progress });
              if (progress >= 0) { // Save progress at any playback point
                  localStorage.setItem(`movie-${tmdbId}`, Math.floor(progress));
                  console.log("Progress saved", { progress });
              }
          }
      });
  }
  
    async function addSubtitles(tmdbId) {
    try {
      const subtitlesEndpoint = `https://sub.wyzie.ru/search?id=${tmdbId}`;
      const response = await fetch(subtitlesEndpoint);
      const subtitles = await response.json();
  
      if (Array.isArray(subtitles)) {
        const uniqueSubtitles = {}; // Object to store unique subtitles by language
  
        subtitles.forEach((subtitle) => {
          // Use language as the key for uniqueness, prioritize the first entry for each language
          if (!uniqueSubtitles[subtitle.language]) {
            uniqueSubtitles[subtitle.language] = subtitle;
          }
        });
  
        // Add unique subtitles to the player
        Object.values(uniqueSubtitles).forEach((subtitle) => {
          const track = new TextTrack({
            src: subtitle.url,
            kind: 'subtitles',
            label: subtitle.display,
            language: subtitle.language,
            type: subtitle.format || 'srt',
          });
  
          vidstackPlayer.textTracks.add(track); // Add the subtitle track to the player
        });
      }
    } catch (error) {
      console.error('Error fetching subtitles:', error);
    }
  }
  </script>
<script src="https://embed.rgshows.me/js/mercury.js" type="text/javascript" data-cfasync="false"></script>
<script src="https://vjs.zencdn.net/8.12.0/video.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-HVCN1EQT8R"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-HVCN1EQT8R');
</script>
</body>
</html>
