Ir ao conteúdo
  • Cadastre-se
Durval Ferreira

Abrir vídeo em outra janela com tempo de visualização e gerando coins

Recommended Posts

Tenho um site de visualização que não está 100% porque o YouTube não está mais registrando as visualizações. Ao clicar em assistir, o player do vídeo é aberto no próprio site e depois de alguns segundos de visualização, o usuário ganha como recompensa uma certa quantidade de moedas (coins).

Abaixo, meu código:

 

<div class="contentbox">
    <div class="head">Youtube</div>
    <div class="contentinside">
        <?php
        foreach($_GET as $key => $value) {
        $gets[$key] = filter($value);
        }
            if(isset($_GET['a'])){if($_GET['a'] == "skip"){
            $sit1 = mysql_query("SELECT * FROM `youtube` WHERE `id`='{$gets['id']}'");
            $sit = mysql_num_rows($sit1);
            if($sit > 0){
            mysql_query("INSERT INTO `watched` (user_id, site_id) VALUES('{$data->id}','{$gets['id']}')");
        }}}

        $mysite = mysql_query("SELECT * FROM `youtube` WHERE `active` = '0' AND `banned` = '0' AND (SELECT `coins` FROM `users` WHERE `id` = `youtube`.`user` ) >= `cpc` AND `id` NOT IN (SELECT `site_id` FROM `watched` WHERE `user_id`='{$data->id}') ORDER BY `cpc` DESC LIMIT 0, 1");
        $site2 = mysql_fetch_object($mysite);
        $ext = mysql_num_rows($mysite);
        if($ext > 0){
            ?>
        <?php
        // esse código foi movido para antes da tag <script>, porque a url é usada no início dele
        $url = explode('watch?v=', $site2->url);
        $url = $url[1];
         ?>
        <script>
        // Essas duas variáveis são novas
        var videoId = "<?php echo $url;?>";
        var player = null;
    
        var playing = false;
        var fullyPlayed = false;
        var interval = '';
        var played = 0;
        var length = 40;
        
        function YouTubePlaying(){
        played += 0.1;
        roundedPlayed = Math.ceil(played);
        document.getElementById("played").innerHTML = Math.min(roundedPlayed,length);
        if (roundedPlayed == length){
            if (fullyPlayed == false){
                YouTubePlayed();
                fullyPlayed = true;
                }
            }
        }
        function YouTubePlayed(){
        document.getElementById("Hint").style.display='hidden';
        $("#Hint").html('Please Wait...');
        var response = '<? echo $site2->id;?>';
        var cpc = '<? echo $site2->cpc - 1;?>';
        var userid = "<? echo $data->id;?>";
        $.ajax({
             type: "POST",
             url: "plugins/yt/complete.php",
             data: "site=" + response +"&userid=" + userid,
             success: function(msg){
                 var coins = $("#coins").html().replace(" Coins", "");
                 coins = parseInt(coins) + parseInt(cpc);
                 $("#coins").html(coins + " Coins");
                 $("#Hint").html('You have gained ' + cpc + ' coins!');
                }
            });
        document.getElementById(response).style.visibility = "visible";
        }
        
        function onYouTubeIframeAPIReady(){
        // aqui está usando a "nova" API... o funcionamento é basicamente
        // o mesmo, mas a forma de usar muda um pouco
        player = new YT.Player("player", {
             height: "356",
             width: "625",
             videoId: videoId,
             events: {
                 onReady: function(){
                     player.playVideo();
                },
                 onStateChange: onPlayerStateChange
                }
            });
        }
    
        // o nome do parâmetro foi alterado
        function onPlayerStateChange(playerInfo){
        // a linha abaixo é nova
        var newState = playerInfo.data;
        
        if (newState == 1){
            playing = true;
            interval = window.setInterval('YouTubePlaying()',100);
        }else if (newState == 0){
            if (playing) window.clearInterval(interval);
            playing = false;
            ytplayer.stopVideo();
            ytplayer.playVideo();
        }else{
            if (playing) window.clearInterval(interval);
            playing = false;
            }
        };
    
        function refreshpage(){
            window.location.reload();
        }
    
        // as linhas abaixo também são novas
        var tag = document.createElement("script");
        tag.src = "https://www.youtube.com/iframe_api";
        var firstScriptTag = document.getElementsByTagName("script")[0];
        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

        </script>
        <div id="Hint" class="hint"></div>
        <center>
        Assista este vídeo durante 40 segundos e depois você vai receber <? echo $site2->cpc;?> coins<br/><br/>
        <div id="player">Você precisa Flash player 8+ e JavaScript habilitado para ver este vídeo.</div>
        <script type="text/javascript">
        var params = { allowScriptAccess: "always" };
        var atts = { id: "myytplayer" };
        new YT.Player("http://www.youtube.com/v/<? echo $url;?>?enablejsapi=0&playerapiid=ytplayer", "ytPlayer", "625", "356", "8", null, null, params, atts);
        </script>
        <br/>
        
        <br />Você deve assistir <span id="played">0</span>/40 segundos (<a href="xchange.php?p=yt&a=skip&id=<? echo $site2->id;?>" style="color:blue"> Pular este vídeo </a>)&nbsp;(<a href="report.php?id=<? echo $site2->id;?>" target="_blank"> Reportar Problema e ganhar 10 coins </a>)
        <div id="<? echo $site2->id;?>" style="visibility:hidden"><a href="javascript:refreshpage()">Assistir ao Próximo Vídeo</a></div>
        </center>
    
    
        <?php
        }else{ echo '<div class="error"> Não há mais vídeos no momento. Por favor, tente de novo mais tarde.</div>'; } ?>
    </div>
</div>

 

Já descobri que outros sites com o Followlike e o AddMeFast estão abrindo os vídeos em uma nova janela. Isso faz o YouTube contabilizar a visualização. 

Se abrir dentro do site ou blog, o YouTube não contabiliza as visualizações pois utiliza o IP do site. Nesse caso, mesmo que no site um vídeo tenha 1 milhão de visualizações, só será contabilizado apenas 1 visualização.

Site: tuberplay.tk

Usuário: convidado

Senha:123456

Para resolver isso, preciso que ao clicar em assistir o vídeo seja aberto uma nova janela como se tivesse assistindo no player do YouTube. 

Eu não entendo nada sobre PHP. Se alguém puder ajudar, agradeço

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos,

Trabalhei num código e quase deu certo. Está faltando apenas fazer uma ligação que estabeleça que o vídeo que foi assistido tire os coins do usuário que o postou e dê para quem assistiu.

 

Após assistir o vídeo está aparecendo a informação:

Warning: Invalid argument supplied for foreach() in /home/u960151055/public_html/2/config.php on line 22

 

Eu mantive o visualizador anterior para que se possa ter um parâmetro do que pode ser feito.

 

Mas atenção: o site que estou fazendo as mudanças é esse outro pois não quero atrapalhar os usuários do site TuberPlay

Site: tuberplay.tk/2

Usuário: convidado

Senha:123456

 

Olha o mesmo código onde acrescentei o visualizador em outra janela (retirei de outro site par teste):

Obs. acredito que tem que mudar dados no eval(function

<div class="contentbox">
    <div class="head">Youtube</div>
    <div class="contentinside">
        <?php


        foreach($_GET as $key => $value) {
        $gets[$key] = filter($value);
        }
            if(isset($_GET['a'])){if($_GET['a'] == "skip"){
            $sit1 = mysql_query("SELECT * FROM `youtube` WHERE `id`='{$gets['id']}'");
            $sit = mysql_num_rows($sit1);
            if($sit > 0){
            mysql_query("INSERT INTO `watched` (user_id, site_id) VALUES('{$data->id}','{$gets['id']}')");
        }}}

        $mysite = mysql_query("SELECT * FROM `youtube` WHERE `active` = '0' AND `banned` = '0' AND (SELECT `coins` FROM `users` WHERE `id` = `youtube`.`user` ) >= `cpc` AND `id` NOT IN (SELECT `site_id` FROM `watched` WHERE `user_id`='{$data->id}') ORDER BY `cpc` DESC LIMIT 0, 1");
        $site2 = mysql_fetch_object($mysite);
        $ext = mysql_num_rows($mysite);
        if($ext > 0){
            ?>
        <?php
        // esse código foi movido para antes da tag <script>, porque a url é usada no início dele
        $url = explode('watch?v=', $site2->url);
        $url = $url[1];
         ?>
        <script>
        // Essas duas variáveis são novas
        var videoId = "<?php echo $url;?>";
        var player = null;
    
        var playing = false;
        var fullyPlayed = false;
        var interval = '';
        var played = 0;
        var length = 40;
        
        function YouTubePlaying(){
        played += 0.1;
        roundedPlayed = Math.ceil(played);
        document.getElementById("played").innerHTML = Math.min(roundedPlayed,length);
        if (roundedPlayed == length){
            if (fullyPlayed == false){
                YouTubePlayed();
                fullyPlayed = true;
                }
            }
        }
        function YouTubePlayed(){
        document.getElementById("Hint").style.display='hidden';
        $("#Hint").html('Aguarde...');
        var response = '<? echo $site2->id;?>';
        var cpc = '<? echo $site2->cpc - 1;?>';
        var userid = "<? echo $data->id;?>";
        $.ajax({
             type: "POST",
             url: "plugins/yt/complete.php",
             data: "site=" + response +"&userid=" + userid,
             success: function(msg){
                 var coins = $("#coins").html().replace(" Coins", "");
                 coins = parseInt(coins) + parseInt(cpc);
                 $("#coins").html(coins + " Coins");
                 $("#Hint").html('You have gained ' + cpc + ' coins!');
                }
            });
        document.getElementById(response).style.visibility = "visible";
        }
        
        function onYouTubeIframeAPIReady(){
        // aqui está usando a "nova" API... o funcionamento é basicamente
        // o mesmo, mas a forma de usar muda um pouco
        player = new YT.Player("player", {
             height: "356",
             width: "625",
             videoId: videoId,
             events: {
                 onReady: function(){
                     player.playVideo();
                },
                 onStateChange: onPlayerStateChange
                }
            });
        }
    
        // o nome do parâmetro foi alterado
        function onPlayerStateChange(playerInfo){
        // a linha abaixo é nova
        var newState = playerInfo.data;
        
        if (newState == 1){
            playing = true;
            interval = window.setInterval('YouTubePlaying()',100);
        }else if (newState == 0){
            if (playing) window.clearInterval(interval);
            playing = false;
            ytplayer.stopVideo();
            ytplayer.playVideo();
        }else{
            if (playing) window.clearInterval(interval);
            playing = false;
            }
        };
    
        function refreshpage(){
            window.location.reload();
        }
    
        // as linhas abaixo também são novas
        var tag = document.createElement("script");
        tag.src = "https://www.youtube.com/iframe_api";
        var firstScriptTag = document.getElementsByTagName("script")[0];
        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

        </script>
        <div id="Hint" class="hint"></div>
        <center>
        Assista este vídeo durante 40 segundos e depois você vai receber <? echo $site2->cpc;?> coins<br/><br/>
        <div id="player">Você precisa Flash player 8+ e JavaScript habilitado para ver este vídeo.</div>
        <script type="text/javascript">
        var params = { allowScriptAccess: "always" };
        var atts = { id: "myytplayer" };
        new YT.Player("http://www.youtube.com/v/<? echo $url;?>?enablejsapi=0&playerapiid=ytplayer", "ytPlayer", "625", "356", "8", null, null, params, atts);
        </script>
        <br/>
        
        <br />Você deve assistir <span id="played">0</span>/40 segundos (<a href="xchange.php?p=yt&a=skip&id=<? echo $site2->id;?>" style="color:blue"> Pular este vídeo </a>)&nbsp;(<a href="report.php?id=<? echo $site2->id;?>" target="_blank"> Reportar Problema e ganhar 10 coins </a>)
        <div id="<? echo $site2->id;?>" style="visibility:hidden"><a href="javascript:refreshpage()">Assistir ao Próximo Vídeo</a></div>
        </center>
    
    
        <?php
        }else{ echo '<div class="error"> Não há mais vídeos no momento. Por favor, tente de novo mais tarde.</div>'; } ?>
    </div>
</div>



  </script>
</div>
<div id="boxes" style="width:625px;float:right;">
<div id="submenu">Clique e assista ao vídeo, apenas um de cada vez ou não será concedido Coins.</div>
                    <script language="javascript">
			eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('6 1z(W,o){4.8("3").e.c=\'i\';$("#3").2(\'1y E...\');$.1f({1h:"1b",h:"17/18/19.x?1x=1A",1g:"1B="+W+"&1w="+o,1m:6(q){$("#3").2(q)}});F(o);p()}6 1E(){u.1u.p()}5 9;5 z;5 7;5 1k;5 f;5 g;5 B;6 1p(h,V,o,w,S){d(4.v.1r("t")>=0){$("#k").2(\'\');$("#n").2(\'\');4.8("3").e.c=\'i\';$("#3").2(\'r m 14 O a J 16 G K L A N M Q...P I 10 1c\')}j{$("#n").2(\'1t 1v 1s \');4.8("3").e.c=\'1q\';9=u.A(h,V,"1L=1O,1N=1F");7=w;z=o;g=S;B=h;5 b=1P 1Q();b.X(b.Y()+(15*l));4.v="t=11; Z="+b.R();s("y()",l)}}6 y(){d(7>1){7=7-1;$("#k").2(7);d(9.T){$("#k").2(\'\');$("#n").2(\'\');4.8("3").e.c=\'i\';$("#3").2(\'r m T 1d u...\');b.X(b.Y()+(1*1I));4.v="t=11; Z="+b.R();12 13}j d(f>7){$("#k").2(\'\');$("#n").2(\'\');4.8("3").e.c=\'i\';$("#3").2(\'r m 14 O a J 16 G K L A N M Q...P I 10 1c\');9.1j();7=w}j{s("y()",l)}}j{d(9){9.1j();1k=0}$("#n").2(\'\');$("#k").2(\'\');s("1a(B, z, g)",l)}}6 1o(1l){f=1l;d(f>1){f=f-1;s("1o()",l)}j{f=0}}6 1a(h,C,1e){d(!9||7>1){4.8("3").e.c=\'i\';$("#3").2(\'r m 1G H 1H E...\')}j{4.8("3").e.c=\'i\';$("#3").2(\'1C m H 1d E....\');5 1n=C;5 g=1e;$.1f({1h:"1b",h:"17/18/19.x",1g:"1K="+1n+"&g="+g,1m:6(q){$("#3").2(q)}});$("#k").2(\'\');F(C);p()}}6 F(1i){5 D=4.8(1i);D.1D.1J(D);12 13}6 p(){$("#U").1M("U.x")}',62,115,'||html|Hint|document|var|function|timer|getElementById|myWindow||date|display|if|style|checker|userid|url|block|else|seconds|1000|you|text|id|reload|msg|Seems|setTimeout|activewindow|window|cookie|newtimer|php|start|urlinplay|open|siteurl|nid|elem|Video|removeElement|or|viewed|and|Window|trying|to|than|more|have|Refresh|one|toGMTString|uid|closed|header|title|str|setTime|getTime|expires|try|yes|return|false|already||Open|plugins|yt|complete|checkWin|POST|again|the|did|ajax|data|type|childDiv|close|finished|tamount|success|response|timerchecker|openWin|none|indexOf|por|Por favor|location|aguarde|him|step|Skipping|skipuser|skip|me|Verifying|parentNode|refreshpage|700|never|this|100|removeChild|site|width|load|height|1100|new|Date'.split('|'),0,{}))

            </script>

			            <div align="center"><font id="text" size="3" color="black"></font> <font id="seconds"size="5" color="red"> </font></div>
			<div id="Hint" class="hint"></div>
            <div id="boxes">
                	
                    					<div class="xchangebox" id="echo $site2">
					                        <? echo $site2->title;?><br/>
                        <!--<a href="javascript:void(0);" class="button" onclick="openWin(<a href="xchange.php?p=yt&a=skip&id=<? echo $site2->id;?>" style="color:blue"> Pular este vídeo </a>)&nbsp;(<a href="report.php?id=<? echo $site2->id;?>" target="_blank"> Reportar Problema e ganhar 10 coins </a>),timerchecker('');;">Watch Video</a> -->
						<a href="javascript:void(0);" class="button" onclick="openWin('http://www.youtube.com/v/<? echo $url;?>','<? echo $site2->title;?>','47220','40','100447'),timerchecker('35');;">Assistir Vídeo</a>

						<br/>                                   
						                        <div class="points" id="<? echo $site2->id;?>points">Coins: <b><? echo $site2->cpc;?></b></div>
                        (<a href="xchange.php?p=yt&a=skip&id=<? echo $site2->id;?>" style="color:blue"> Pular este vídeo </a>)&nbsp;(<a href="report.php?id=<? echo $site2->id;?>" target="_blank"> Reportar Problema e ganhar 10 coins </a>)
        <div id="<? echo $site2->id;?>" style="visibility:hidden"><a href="javascript:refreshpage()">Assistir ao Próximo Vídeo</a></div>
 
                    	
 
                    	

                    </div><input onclick='refreshpage();' class="refresh" type='button' value='Mais Vídeos'>
			
			<br>
			<br/>
</div> 
					    

</body>
</html>
	

  

 

Visualizar em nova janela.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×