Ir para conteúdo
Fórum Script Brasil
  • 0

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


Durval Ferreira

Pergunta

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>) (<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

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

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

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...