Re: [Rio-pm] HTML::Parse

2012-10-27 Thread Junior Moraes
Hi.

O meu é pra extrair o áudio de arquivos FLV. Não é diretamente relacionado
ao YouTube. :P

Enviado via mobile
Em 27/10/2012 00:19, "Renato Santos"  escreveu:

> Se não me engano esse módulo é do Junior Moraes
> Em 26/10/2012 22:14, "Aureliano Guedes" 
> escreveu:
>
>>  Vou estudar mais e ver se não começo por onde vocês estão me indicando.
>>
>> Por exemplo, sou acostumado usar ubuntu e slackware, mas meu note pifo e
>> to usando o pc de mesa com windows 7, e comecei a ter problemas com
>> download devido um problema tecnico ja explicado em outra tread pelo
>> Stanislaw Pusep.
>>
>> >>> Assumindo que o MP3 tenha uma entropia próxima de 8 bits por byte
>> (algo que definitivamente não vale para um arquivo .pl, por mais que nos
>> caçoem), um arquivo de 6,16MB poderá ter cerca de 25 mil ocorrências de
>> \x0A. Mapeando CR => CRLF, pode crescer em cerca de 50KB. Acho que
>> 6,19MB está dentro da faixa :) <<<
>>
>> Logo todo arquivo de audio e video chega com problema, usando esse modulo
>> -> https://metacpan.org/module/WWW::YouTube::Download
>>
>> Estou analizando a source dele com calma para ver se acho o erro, o
>> problema que essa source esta complexa praq minha mente, mas começo achar
>> que o problema esta em:
>>
>>  my $res = $self->ua->get($video_url, ':content_cb' => $args->{cb});
>> Carp::croak "!! $video_id download failed: ", $res->status_line if
>> $res->is_error;
>>
>> Depois darei um feedback sobre se corrigi o erro.
>>
>>
>> --
>> From: tiago.pecze...@gmail.com
>> Date: Fri, 26 Oct 2012 07:36:47 -0200
>> To: rio-pm@pm.org
>> Subject: Re: [Rio-pm] HTML::Parse
>>
>> e o que te impede de fazer a sua versão? se vc pensar um pouco vc pode
>> contribuir com algo bom e não uma copia de algo que ja exista. Outra coisa,
>> o que existe la pode ser antigo, nesse caso vc pode ou tentar assumir
>> aquele projeto ou lançar o seu baseado nos principios (oo, funcional,
>> assincrono, etc) que vc acredita. se o modulo for ruim ninguem vai usar,
>> simples assim.
>>
>> 2012/10/25 Aureliano Guedes 
>>
>>  Cara, eu acho o CPAN maravilhoso, mas as vezes é frustante você saber
>> que está criando algo que ja existe.
>>
>> Valeu.
>>
>>
>> --
>> From: creakt...@gmail.com
>> Date: Thu, 25 Oct 2012 22:33:46 -0200
>>
>> To: rio-pm@pm.org
>> Subject: Re: [Rio-pm] HTML::Parse
>>
>> ++breno!
>>
>> ABS()
>>
>>
>>
>> 2012/10/25 breno 
>>
>> 2012/10/25 Aureliano Guedes :
>> > Eu fiz de uma forma que deu certo, mas ficou feio e cheio de más
>> praticas,
>> > mandando reguex em xml e tals.
>> >
>> > Quero fazer de forma bonita com XPath e tals. Mas ainda estou em
>> processo de
>> > entendet tudo isso.
>> >
>> > Estou tentando pegar o primeiro link da lista de videos de um resultado
>> de
>> > pesquisa do YouTube.
>> > Para isso estou ultilizando uma API do YouTube:
>> >
>> https://developers.google.com/youtube/2.0/developers_guide_protocol_api_query_parameters#Searching_for_Videos
>> >
>> > Onde estão os erros fora tudo?? -> http://pastebin.com/T06Mi1Nx
>> >
>>
>> Olha, fora tudo, posso te garantir que não há erros :)
>>
>> Pergunta: vc tá fazendo isso só por diversão, né? Isso porque uma
>> busca rápida no CPAN me levou ao WebService::GData::YouTube, que faz
>> buscas e muito mais.
>>
>> https://metacpan.org/module/WebService::GData::YouTube#search_video
>>
>> O "one-liner" abaixo, por exemplo, exibe o título do primeiro
>> resultado para uma busca no YouTube por "perl":
>>
>> perl -MWebService::Gdata::YouTube -E 'my $yt =
>> WebService::GData::YouTube->new; $yt->query->q( q[perl] )->limit(1,0);
>> say $_->title foreach @{ $yt->search_video() }'
>>
>>
>> []s
>>
>> -b
>> ___
>> Rio-pm mailing list
>> Rio-pm@pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm
>>
>>
>>
>> ___ Rio-pm mailing list
>> Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
>>
>> ___
>> Rio-pm mailing list
>> Rio-pm@pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm
>>
>>
>>
>>
>> --
>> Tiago B. Peczenyj
>> Linux User #405772
>>
>> http://pacman.blog.br
>>
>> ___ Rio-pm mailing list
>> Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
>>
>> ___
>> Rio-pm mailing list
>> Rio-pm@pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm
>>
>
> ___
> Rio-pm mailing list
> Rio-pm@pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm

Re: [Rio-pm] HTML::Parse

2012-10-27 Thread Alexei Znamensky
Aureliano,

Eu vi algo no seu código que não é um erro, e há controvérsias sobre ser
boa ou má prática, varia um pouco com gosto do freguês, mas que eu
pessoalmente gosto de fazer diferente. Acho que é um estilo melhor.

Ao invés de fazer (principalmente em loops), algo como:

for(...)
  if( deu certo )
faz um lance
  else #deu errado
mostra ou trata erro
  endif
endfor


Eu geralmente prefiro fazer assim


for(...)
  if( deu errado )
mostra ou trata erro
next# ou die, depdende de como voce quer lidar com o erro
  elseif( deu outro lance errado )
mostra ou trata
next
  ... # tantas quantas validações forem necessárias
  endif
  # parâmetros desta iteração estão validados

  faz um lance
endfor


Acho que dessa forma, você simplifica a leitura do código: 1) o que for
erro você trata logo, e depois que passa daquele bloco de validações está
ok e 2) visualmente faz até mais sentido: o código mais indentado no começo
é a exceção, enquanto que a "regra" está apenas um nível de indentação
depois do comando de loop.

my $two_cents;

Russo

2012/10/25 Aureliano Guedes 

>  Eu fiz de uma forma que deu certo, mas ficou feio e cheio de más
> praticas, mandando reguex em xml e tals.
>
> Quero fazer de forma bonita com XPath e tals. Mas ainda estou em processo
> de entendet tudo isso.
>
> Estou tentando pegar o primeiro link da lista de videos de um resultado de
> pesquisa do YouTube.
> Para isso estou ultilizando uma API do YouTube:
> https://developers.google.com/youtube/2.0/developers_guide_protocol_api_query_parameters#Searching_for_Videos
>
> Onde estão os erros fora tudo?? -> http://pastebin.com/T06Mi1Nx
>
>
> #!/usr/bin/env perl
>
> use common::sense;
> use WWW::Mechanize;
> use URI::Escape;
> use HTML::TreeBuilder::XPath;
>
> my $html = WWW::Mechanize->new(timeout=>100);
>
> open IN, $ARGV[0] or die $!;
>
> foreach (){
> s/\s+/\+/g;
> chomp;
> my $url = 'https://gdata.youtube.com/feeds/api/videos?q=' .
> uri_escape($_);
> $html->get($url);
> if ($html->is_success){
> my $page = $html->content;
> $page =~ s/(\n\r|\r\n)|\r/\n/g;
>
> my $tree = HTML::TreeBuilder::XPath->new();
>
> my $node = $tree->findenodes('/html/body//a[@href=(.*)]')->[0];
>
> print $node;
> }
> else {
> print "FAIL: " . $! . "\n";
> }
> }
>
>
>
> > Date: Thu, 25 Oct 2012 13:06:40 -0200
> > From: br...@rio.pm.org
>
> > To: rio-pm@pm.org
> > Subject: Re: [Rio-pm] HTML::Parse
> >
> > 2012/10/21 Aureliano Guedes 
> > >
> > > Ola.
> > >
> > > Eu estoiu tentando usar o WWW::Mechanize, mas não estou entendendo uma
> coisa.
> > > Eu tenho um botão:
> > >
> > >  href="/dl/347357664b655256724e/554545485125135/Fernando+E+Sorocaba+Tenso.mp3"
> rel="nofollow" title="Download Fernando E Sorocaba Tenso.mp3!">
> > > 
> > >
> > >
> > > Como eu faço para clicar nele usando o metodo click_button? Como faço
> para setar esse botão?
> > > Eu tentei:
> > >
> $m->click_button(value=>/dl/347357664b655256724e/554545485125135/Fernando+E+Sorocaba+Tenso.mp3);
> > > Mas não da certo.
> > >
> >
> > O seu botão não é um botão ( ou ) e sim
> > um link (). O Mechanize sabiamente os diferencia, e você
> > provavelmente está procurando o método follow_link()
> >
> > https://metacpan.org/module/WWW::Mechanize#mech-follow_link-...-
> >
> > Finalmente, se quiser aprender sobre XPath e Seletores CSS, recomendo
> > os seguintes artigos:
> >
> > http://sao-paulo.pm.org/artigo/2010/utilizandoxpathparacriarwebspiders
> >
> http://sao-paulo.pm.org/artigo/2011/ExtracaodedadoscomperlxpatheregexExportadoemODF
> >
> http://sao-paulo.pm.org/artigo/2011/ScrapingfacilcomMojoliciousefeedsAtom
> > (veja no final: guia de referência rápida para seletores CSS)
> >
> > ou ir direto na fonte:
> >
> > http://www.w3.org/TR/xpath/
> > http://www.w3.org/TR/CSS2/selector.html
> > http://www.w3.org/TR/css3-selectors/
> >
> > []s
> >
> > -b
> > ___
> > Rio-pm mailing list
> > Rio-pm@pm.org
> > http://mail.pm.org/mailman/listinfo/rio-pm
>
> ___
> Rio-pm mailing list
> Rio-pm@pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>



-- 
Alexei "RUSSOZ" Znamensky | russoz EM gmail com | http://russoz.org
GPG fingerprint = 42AB E78C B83A AE31 7D27  1CF3 C66F B5C7 71CA 9F3C
http://www.flickr.com/photos/alexeiz | http://github.com/russoz
"I don't know... fly casual!" -- Han Solo
___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm