+ Responder ao Tópico



  1. #1
    Moderador Avatar de minelli
    Ingresso
    Aug 2006
    Localização
    Pres. Venceslau - SP | Pres. Prudente - SP
    Posts
    1.412
    Posts de Blog
    10

    Padrão URL_REWRITE

    Pessoal não tenho conhecimento nenhum em perl e gostaria de saber se alguém pode me ajudar fazendo um arquivo que no meu pensamento não passará de umas 30 linhas.
    Vou postar aqui o arquivo antigo que funcionava:
    Esse arquivo era usado juntamento com o squid para obrigar o cache dos videos, mas parou de funcionar.
    Código :
    #!/usr/bin/perl
    $|=1;
    while (<>) {
    @X = split;
    $url = $X[0];
    ###youtube
    $url =~s@^http://(.*?)/get_video\?(.*)video_id=(.*?)&.*@squid://videos.youtube.INTERNAL/ID=$3@;
    $url =~s@^http://(.*?)/get_video\?(.*)video_id=(.*?)$@squid://videos.youtube.INTERNAL/ID=$3@;
    $url =~s@^http://(.*?)/videodownload\?(.*)docid=(.*?)$@squid://videos.google.INTERNAL/ID=$3@;
    $url =~s@^http://(.*?)/videodownload\?(.*)docid=(.*?)&.*@squid://videos.google.INTERNAL/ID=$3@;
    ###photobucket
    $url =~s@^http://(.*?)/albums\?&.*@squid://images.photobucket.INTERNAL/ID=$3@;
    $url =~s@^http://(.*?)/albums\?$@squid://images.photobucket.INTERNAL/ID=$3@;
    $url =~s@^http://(.*?)/albums\?&.*@squid://videos.photobucket.INTERNAL/ID=$3@;
    $url =~s@^http://(.*?)/albums\?$@squid://videos.photobucket.INTERNAL/ID=$3@;
    print "$url\n"; }

    Hoje usam estes dois aqui:
    Arquivo1 youtube:
    Código :
    <?php
     
    $save_quality = false;
    $domain = "youtube";
     
    include_once("youtube.com.funcs.php");
     
    logadd("IN:($ip)$url");
     
    if ((preg_match("/\.googlevideo\.com/", $url,$result)) or (preg_match("/\.youtube\.com/", $url,$result))){
    	// get  videoid
    	$videoid = get_videoid($url);
     
    	// get quality
    	if ($save_quality) {
    		$file=get_quality($url)."$videoid.flv";
    	}else{
    		$file="$videoid.flv";
    	}
         // check if url need to pass
     
    if ( ($file != ".flv") and (strrpos($url,"/get_video?") > 0) or (strrpos($url,".googlevideo.com") > 0 and (strrpos($url,"videoplayback")) >0 and (strrpos($url,"&id=")) >0 )) {
    		check_file($file,$url,$domain);
    	} else { // dont find file, repass url
    		print "$url\n";
    		logadd("OUT:$url ($file)");
    	}
    } else {
    	// url not match
    	print "$url\n";
    	logadd("OUT:$url (dont match)");
    }
     
    ?>

    Arquivo 2 youtube_conf:
    Código :
    <?php
     
    	function get_videoid($url) {
    		$return = "";
    		$url = preg_replace("/\?/","&",$url);
    		$url = explode("/",$url);
    		$url = $url[3];
    		$url = explode("&",$url);
     
    		foreach ($url as $valor){
    			$valor = explode("=",$valor);
    			if ($valor[0] == "id" || $valor[0] == "video_id") {
    				$return = $valor[1];
    				break;
    			}
    		}
    		return $return;
    	}
     
    	function get_quality($url) {
    		$return = "";
    		$url = preg_replace("/\?/","&",$url);
    		$url = explode("/",$url);
    		$url = $url[3];
    		$url = explode("&",$url);
     
    		foreach ($url as $valor){
    			$valor = explode("=",$valor);
    			if ($valor[0] == "fmt") {
    				$return = $valor[1];
    				break;
    			}
    		}
    		return $return;
    	}
    ?>

    Hoje os 2 ultimos arquivos em php são usados no thunder cache.
    O que reparei é que o thunfder cache utiliza muitos recursos da maquina sendo assim seria muito melhor se conseguicemos converter o arquivo php para o perl pois consome muito menos.
    Por esse motivo coloquei o arquivo perl que funcionava antes de a google mudar a forma de enviar os videos aos clientes.
    Espero que alguem possa me ajudar e tb ajudar a todos, desde já agradeço.

  2. #2
    MODERADOR-CHEFE Avatar de osmano807
    Ingresso
    Aug 2008
    Localização
    Araguari - Minas Gerais
    Posts
    1.980
    Posts de Blog
    5

    Padrão

    O problema eu acho que tá no
    squid://videos.google.INTERNAL/ID=

    Sabe, eu acho que o squid tirou esta função, por isto que não está funcionando mais, pois os regex estão perfeitos.

  3. #3
    Moderador Avatar de minelli
    Ingresso
    Aug 2006
    Localização
    Pres. Venceslau - SP | Pres. Prudente - SP
    Posts
    1.412
    Posts de Blog
    10

    Padrão Perl

    Citação Postado originalmente por osmano807 Ver Post
    O problema eu acho que tá no
    squid://videos.google.INTERNAL/ID=

    Sabe, eu acho que o squid tirou esta função, por isto que não está funcionando mais, pois os regex estão perfeitos.
    Agradeço a observação mas segundo o e-mail de retorno do pessoal de desenvolvimento do Squid a versão 2.7 está funcionando e pediram para que eu revise o codigo perl pois o erro estaria ali.
    MAs como não conheco de per ai fico na mão rsss....