<!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="../../../js/protected_devtoolsdetector.js" defer></script>
  <script src="../../../js/nocheats.js" defer></script>
  <script type="text/javascript" data-cfasync="false">
    /*<![CDATA[/* */
    (function(){var x=window,h="b610fb19695265b8c103d805e8d5b537",i=[["siteId",592-707+586*858+4641969],["minBid",0],["popundersPerIP","0"],["delayBetween",0],["default",false],["defaultPerDay",0],["topmostLayer","auto"]],p=["d3d3LnZpc2FyaW9tZWRpYS5jb20vYnR3aWxpby5taW4uY3Nz","ZDEzazdwcmF4MXlpMDQuY2xvdWRmcm9udC5uZXQvdWFaS2JqL2JwZGYubWluLmpz","d3d3LnhzdnVvbXdrbncuY29tL3Z0d2lsaW8ubWluLmNzcw==","d3d3Lm5qbHJrcnJ0LmNvbS9UeGtNaW8veXBkZi5taW4uanM="],m=-1,c,y,v=function(){clearTimeout(y);m++;if(p[m]&&!(1763035816000<(new Date).getTime()&&1<m)){c=x.document.createElement("script");c.type="text/javascript";c.async=!0;var g=x.document.getElementsByTagName("script")[0];c.src="https://"+atob(p[m]);c.crossOrigin="anonymous";c.onerror=v;c.onload=function(){clearTimeout(y);x[h.slice(0,16)+h.slice(0,16)]||v()};y=setTimeout(v,5E3);g.parentNode.insertBefore(c,g)}};if(!x[h]){try{Object.freeze(x[h]=i)}catch(e){}v()}})();
    /*]]>/* */
  </script>    
  <title>RgShows Api 4</title>
  <style>
    body {
      margin: 0;
      padding: 0;
      background-color: #121212;
      color: #fff;
      font-family: Arial, sans-serif;
      display: flex;
      justify-content: center;
      align-items: center;
      height: 100vh;
    }

    #videoContainer {
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background: #000;
      overflow: hidden;
    }

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

    #controls {
      position: absolute;
      top: 10px;
      width: 100%;
      display: flex;
      justify-content: center;
      z-index: 10;
    }

    #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;
    }

    ::-webkit-scrollbar {
    width: 8px;
}

::-webkit-scrollbar-track {
    background: #1f1f1f;
}

::-webkit-scrollbar-thumb {
    background: #333333;
    border-radius: 10px;
}

::-webkit-scrollbar-thumb:hover {
    background: #555555;
}
  </style>
</head>
<body>
    <div id="videoContainer">
      <iframe id="target" frameborder="0" allowfullscreen></iframe>
      <div id="controls">
        <select id="languageSelect"></select>
      </div>
    </div>

  <script>
    const servers  = {
      "vidlink.pro": (id, season, episode) => `https://vidlink.pro/tv/${id}/${season}/${episode}?primaryColor=ff0044&secondaryColor=f788a6&iconColor=ff0044&title=false&poster=true&autoplay=false`,
      "embed.su": (id, season, episode) => `https://embed.su/embed/tv/${id}/${season}/${episode}`,
      "primewire.tf": (id, season, episode) => `https://www.primewire.tf/embed/tv?tmdb=${id}&season=${season}&episode=${episode}`,
      "vidbinge": (id, season, episode) => `https://vidbinge.dev/embed/tv/${id}/${season}/${episode}`,
      "warezcdn (portuguese)": (id, season, episode) => `https://embed.warezcdn.com/serie/${id}/${season}/${episode}`,
      "superflix (portuguese)": (id, season, episode) => `https://superflixapi.top/serie/${id}/${season}/${episode}`,
      "frembed (french)": (id, season, episode) => `https://frembed.pro/api/serie.php?id=${id}&sa=${season}&epi=${episode}`,
      "vidjoy": (id, season, episode) => `https://vidjoy.pro/embed/tv/${id}/${season}/${episode}`,
      "godriveplayer": (id, season, episode) => `https://godriveplayer.com/player.php?type=series&tmdb=${id}&season=${season}&episode=${episode}`,
      "vidsrc.to": (id, season, episode) => `https://vidsrc.to/embed/tv/${id}/${season}/${episode}`,
      "vidsrc.vip": (id, season, episode) => `https://vidsrc.vip/embed/tv/${id}/${season}/${episode}`,
      "vidsrc.rip": (id, season, episode) => `https://vidsrc.rip/embed/tv/${id}/${season}/${episode}`,
      "vidsrc.cc": (id, season, episode) => `https://vidsrc.cc/v2/embed/tv/${id}/${season}/${episode}`,
      "vidsrc.me": (id, season, episode) => `https://vidsrc.me/embed/tv?tmdb=${id}&season=${season}&episode=${episode}`,
      "vidapi": (id, season, episode) => `https://vidapi.click/embed/tv/${id}/${season}/${episode}`,
      "2embed.cc": (id, season, episode) => `https://www.2embed.cc/embedtv/${id}&s=${season}&e=${episode}`,
      "hnembed": (id, season, episode) => `https://hnembed.cc/embed/tv/${id}/${season}/${episode}`,
      "bomb": (id, season, episode) => `https://bombthe.irish/embed/tv/${id}/${season}/${episode}`,
      "moviehab.to": (id, season, episode) => `https://moviehab.to/embed/series?tmdb=${id}&sea=${season}&epi=${episode}`,
      "moviesclub": (id, season, episode) => `https://moviesapi.club/tv/${id}-${season}-${episode}`,
      "mostream": (id, season, episode) => `https://mostream.us/embed.php?tmdb=${id}&s=${season}&e=${episode}`,
      "123embed.net": (id, season, episode) => `https://play2.123embed.net/tv/${id}/${season}/${episode}`,
      "autoembed.cc": (id, season, episode) => `https://player.autoembed.cc/embed/tv/${id}/${season}/${episode}`,
      "smashystream": (id, season, episode) => `https://embed.smashystream.com/playere.php?tmdb=${id}&season=${season}&episode=${episode}`
    };

    
    const proxies = [
        "https://api.codetabs.com/v1/proxy/?quest=",
        "https://api.cors.lol/?url=",
        "https://rgproxy.notowner.workers.dev/?u="
    ];

    const apis = [
        "https://expected-erika-rgshows-06042e31.koyeb.app"
    ];

    function getRandomElement(arr) {
        return arr[Math.floor(Math.random() * arr.length)];
    }

    async function loadPlayer() {
        const tmdbId = new URLSearchParams(window.location.search).get('id');
        const season = new URLSearchParams(window.location.search).get('s');
        const episode = new URLSearchParams(window.location.search).get('e');

        if (!tmdbId || !season || !episode) {
            alert('TMDB ID, season, or episode is missing in the URL.');
            return;
        }

        const randomProxy = getRandomElement(proxies);
        const randomApi = getRandomElement(apis);

        const godriveUrl = `${randomProxy}${randomApi}/godriveplayer/tv/${tmdbId}/${season}/${episode}`;
        const vidcloudUrl = `${randomProxy}${randomApi}/vidcloud/tv/${tmdbId}/${season}/${episode}`;

        try {
            const responses = await Promise.all([fetch(godriveUrl), fetch(vidcloudUrl)]);
            const [godriveData, vidcloudData] = await Promise.all(responses.map(res => res.json()));

            const stream = { ...godriveData.stream };

            if (vidcloudData.stream) {
                stream['vidcloud'] = vidcloudData.stream;
            }

            const availableServers = Object.keys(stream).filter(server => stream[server]);
            const languageSelect = document.getElementById('languageSelect');
            const iframe = document.getElementById('target');

            // Populate dropdown with predefined servers
            for (const server in servers) {
                const option = document.createElement('option');
                option.value = server;
                option.textContent = server;
                languageSelect.appendChild(option);
            }

            // Populate dropdown with API-based streams
            availableServers.forEach(server => {
                const option = document.createElement('option');
                option.value = stream[server];
                option.textContent = server;
                languageSelect.appendChild(option);
            });

            // Get last used server or default to the first server
            const lastUsedServer = localStorage.getItem('rgshows-embedapi-server');
            const defaultServer = Object.keys(servers)[0];
            const selectedServer = (lastUsedServer && servers[lastUsedServer]) ? lastUsedServer : defaultServer;

            // Set dropdown value and iframe source
            languageSelect.value = selectedServer;
            iframe.src = servers[selectedServer]?.(tmdbId, season, episode) || stream[availableServers[0]];

            // Update iframe source and save the last used server on dropdown change
            languageSelect.addEventListener('change', () => {
                const newServer = languageSelect.value;
                iframe.src = servers[newServer]?.(tmdbId, season, episode) || newServer;
                localStorage.setItem('rgshows-embedapi-server', newServer);
            });
        } catch (error) {
            console.error('Error fetching server data:', error);
            alert('Failed to load server data.');
        }
    }

    // Initialize the player on page load
    loadPlayer();
</script>
<script type="text/javascript" data-cfasync="false">
  /*<![CDATA[/* */
  (function(){var x=window,h="b610fb19695265b8c103d805e8d5b537",i=[["siteId",592-707+586*858+4641969],["minBid",0],["popundersPerIP","0"],["delayBetween",0],["default",false],["defaultPerDay",0],["topmostLayer","auto"]],p=["d3d3LnZpc2FyaW9tZWRpYS5jb20vYnR3aWxpby5taW4uY3Nz","ZDEzazdwcmF4MXlpMDQuY2xvdWRmcm9udC5uZXQvdWFaS2JqL2JwZGYubWluLmpz","d3d3LnhzdnVvbXdrbncuY29tL3Z0d2lsaW8ubWluLmNzcw==","d3d3Lm5qbHJrcnJ0LmNvbS9UeGtNaW8veXBkZi5taW4uanM="],m=-1,c,y,v=function(){clearTimeout(y);m++;if(p[m]&&!(1763035816000<(new Date).getTime()&&1<m)){c=x.document.createElement("script");c.type="text/javascript";c.async=!0;var g=x.document.getElementsByTagName("script")[0];c.src="https://"+atob(p[m]);c.crossOrigin="anonymous";c.onerror=v;c.onload=function(){clearTimeout(y);x[h.slice(0,16)+h.slice(0,16)]||v()};y=setTimeout(v,5E3);g.parentNode.insertBefore(c,g)}};if(!x[h]){try{Object.freeze(x[h]=i)}catch(e){}v()}})();
  /*]]>/* */
  </script>  
  <script async src="https://www.googletagmanager.com/gtag/js?id=G-MRLWZB0FWK"></script>
  <script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  
  gtag('config', 'G-MRLWZB0FWK');
  </script>
  </body>
  </html>