• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pedrotuga

todas as imagens comicas do dito tópico - perl fun

8 mensagens neste tópico

Bem pessoal, estava a borrecido, sem saber o que fazer...escrevi isto, para sacar as imagens todas do nosso tópico de imagens cómicas.

Podem pegar no output e injecta-lo no wget para sacar as imagens todas se quiserem.

ISto faz uma filtragem basica para evitar avatars, assinaturas, smileys e outras imagens do layout do forum.

EDIT:ehehehe... o geshi passou-se com a variavel $"

use LWP::Simple;

@pages = (0..19);

sub makeurl{
$a = $_[0]*15;
return "http://www.portugal-a-programar.org/forum/index.php/topic,715.$a.html";
}

@pageurls = map (&makeurl($_), @pages);

#adicionar aqui as extensoes desejadas em minusculas
@extensions = qw(jpg jpeg png gif swf);

$" = "|";
$alternate = "@extensions";
$ALTernate = $alternate."|".uc $alternate;


for $topicpage (@pageurls){
$content = get($topicpage);
while ($content =~ /src=\"(.*?)\"/g) {
	$prematch = $1;
	if ($prematch =~ /($ALTernate)$/){push(@matches, $prematch);}
}
}

my %matches;
for $match (@matches){
if (!exists $matches{$match}) {
	$matches{$match} = 1;
}else{
$matches{$match} += 1;
}
}

my @final_images_array;
for $key (keys %matches){
push(@final_images_array,$key) if $matches{$key} < 3;
}

$"="\n";
print "@final_images_array\n";

Aqui vai o output:

http://img513.imageshack.us/img513/6684/ciberpita24do.jpg

http://bp1.blogger.com/_ytqjU2emLXQ/Rk9Ic9GRTnI/AAAAAAAAAHI/7IxEJdwS9yM/s1600/1.JPG

http://vitorm.webhs.org/blog/wp-content/images/imagem_face02.jpg

http://www.bmwworld.com/driving/signs/aerial_bmw.jpg

http://www.debianhelp.org/files/images/sandwich.png

http://www.jonco48.com/blog/whatvideogames.jpg

http://img506.imageshack.us/img506/533/asiaguy006sized4zt.jpg

http://img205.imageshack.us/img205/8875/helmetthewrongwayyesitsawomangx8.th.jpg

http://www.funpic.hu/files/pics/00028/00028585.jpg

http://img516.imageshack.us/img516/127/image0026ax.jpg

http://img86.imageshack.us/img86/4919/1pd7.jpg

http://img64.imageshack.us/img64/9789/gandalfsigncb6.jpg

http://img139.imageshack.us/img139/567/invalidepaal5yp.jpg

http://img129.imageshack.us/img129/9358/userbarfcpcopyzo5.jpg

http://img115.imageshack.us/img115/8072/campingoutme5.gif

http://img130.imageshack.us/img130/3410/zeepdispencer1iq4kh.jpg

http://img491.imageshack.us/img491/4163/fantasma1ai.th.jpg

http://www.vermelhices.com/imdiversas/pac-01/images/005.jpg

http://photofile.ru/photo/fishki_net/2542742/47452802.jpg

http://img506.imageshack.us/img506/522/asiaguy007sized0rw.jpg

http://img220.imageshack.us/img220/5883/imagesvu5.jpg

http://www.speedtest.net/result/208806024.png

http://www.funpic.hu/files/pics/00027/00027360.jpg

http://www.minhapagina.com/minhaimagem.gif

http://img213.imageshack.us/img213/1583/msbgwithoutwzhcc2.jpg

http://imgs.xkcd.com/comics/compiling.png

http://i168.photobucket.com/albums/u194/SnSilva2008/sem24_23.jpg

http://img127.imageshack.us/img127/3121/neoptok7.png

http://img528.imageshack.us/img528/2565/f14ni7.jpg

http://img79.imageshack.us/img79/9609/tabaco9te.gif

http://img70.imageshack.us/img70/526/batatasexy2ck6.jpg

http://img79.imageshack.us/img79/3149/coldpcuserbar3yk6.png

http://www.portugal-a-programar.org/forum/Themes/saf-mc1/images/design.png

http://photos1.blogger.com/blogger/4867/1654/400/sem%20t%3F%3Ftulo.jpg

http://www.ozsons.com/images/marlboro-country.jpg

http://img520.imageshack.us/img520/9356/image0017dw.jpg

http://userpics-79.hi5.com/userpics/579/453/453534579.img.jpg

http://img503.imageshack.us/img503/2453/8545kyfey6.th.jpg

http://www.funpic.hu/files/pics/00029/00029159.jpg

http://img4.imagecash.net/files666/250859743.jpg

http://mosor123.w.interia.pl/COLGATE.JPG

http://i14.photobucket.com/albums/a318/Peopleware/imagem_estranho_04.jpg

http://img506.imageshack.us/img506/2752/asiaguy004sized8xi.jpg

http://static.flickr.com/54/115840105_e257a3499b_o.jpg

http://img491.imageshack.us/img491/5641/opateiro6jr.th.jpg

http://www.belemtuning.com.br/imagens/comicas/cade.jpg

http://img526.imageshack.us/img526/7229/asiaguy0094yw.jpg

http://img180.imageshack.us/img180/5117/zazuzenov05ha2.jpg

http://www.portugal-a-programar.org/forum/Smileys/phpbb/embarrased.gif

http://i93.photobucket.com/albums/l42/VIP06/Imperial.jpg

http://i168.photobucket.com/albums/u194/SnSilva2008/sem23_25.jpg

http://icanhascheezburger.files.wordpress.com/2007/06/here-i-is-hiding.jpg

http://img516.imageshack.us/img516/4247/nc11yl8.th.jpg

http://www.jensm.com/funny_gifs/images/new_microsoft_keyboard.jpg

http://images.uncyc.org/pt/4/43/Prehistoricalnerd.jpg

http://img508.imageshack.us/img508/6527/asiaguy0017eh.th.jpg

http://i168.photobucket.com/albums/u194/SnSilva2008/sem26_51.jpg

http://freeriderm.no.sapo.pt/dirt.PNG

http://img208.imageshack.us/img208/7048/aderrorep3.th.jpg

http://www.funpic.hu/files/pics/00025/00025994.jpg

http://img191.imageshack.us/img191/1347/alquevapr4.jpg

http://www.portugalfolding.org/e107_images/content/banners/userbar.jpg

http://img227.imageshack.us/img227/2624/aprese2qi2.th.jpg

http://www.sky-works.org/ariops_signature.jpg

http://i168.photobucket.com/albums/u194/SnSilva2008/sem13_26.jpg

http://i14.photobucket.com/albums/a318/Peopleware/ima_11.jpg

http://funlab2.no.sapo.pt/other/bobtux.jpg

http://img513.imageshack.us/img513/8012/55307643gr4.jpg

http://www.humornanet.com/files2/imgs2004_2s/pincorrecto/0308_humornanet_com_pi.jpg

http://img506.imageshack.us/img506/5686/asiaguy008sized8mc.jpg

http://www.funpic.hu/files/pics/00032/00032727.jpg

http://img86.imageshack.us/img86/6641/fun29pz7.jpg

http://clubites.files.wordpress.com/2007/01/funny1-kopie.jpg

http://img526.imageshack.us/img526/7220/asiaguy008sized9sp.th.jpg

http://patoche.no.sapo.pt/697.jpg

http://img526.imageshack.us/img526/3381/asiaguy0112vq.jpg

http://img211.imageshack.us/img211/5129/fun20010212ie2.th.jpg

http://img134.imageshack.us/img134/9051/detperfektehjemmekontoruk3.jpg

http://www.sscnet.ucla.edu/geog/gessler/2003-phys-comp/foxtrot.jpg

http://img237.imageshack.us/img237/1099/userbarpapcopyei8.jpg

http://img99.imageshack.us/img99/2572/pic04827km6.jpg

http://img500.imageshack.us/img500/5586/poeta2qm.th.jpg

http://antoniofonseca.files.wordpress.com/2007/01/windowsvistamarketing.jpg

http://i130.photobucket.com/albums/p275/jmmc1987/3398222260yn.gif

http://img526.imageshack.us/img526/2697/asiaguy013sized3ua.jpg

http://img64.imageshack.us/img64/5766/eyesdj3.jpg

http://pics-13.hi5.com/userpics/613/184/184404613.img.jpg

http://vitorm.webhs.org/blog/wp-content/images/imagem_face01.jpg

http://www.mypkhome.com/fatcat/cat-fc-6.jpg

http://img486.imageshack.us/img486/1162/pencil6nu.jpg

http://www.sky-works.org/index.jpg

http://www.hdd.pt//images//1056619943CapturaEcra6_2.png

http://photofile.ru/photo/fishki_net/2553927/47777826.jpg

http://img95.imageshack.us/img95/6696/pic32391gc5.jpg

http://img375.imageshack.us/img375/8127/pic00491xc2.jpg

http://img407.imageshack.us/img407/5769/l3heckel2jd8.png

http://photos1.blogger.com/blogger/97/1954/320/507.1.jpg

http://img69.imageshack.us/img69/1117/pic14604bw0.jpg

http://www.funpic.hu/files/pics/00004/00004166.jpg

http://img257.imageshack.us/img257/915/wtcis6.png

http://ffmedia.ign.com/filmforce/image/ja-40u1fq.jpg

http://www.portugal-a-programar.org/p@p_design/sigs/06110508614_DURO.png

http://img223.imageshack.us/img223/8126/airolanevv8.jpg

http://monteiro.eti.br/wp-content/uploads/2007/02/programador.jpg

http://img365.imageshack.us/img365/9311/10719yq.th.jpg

http://i14.photobucket.com/albums/a318/Peopleware/ima_13.jpg

http://www.bencastricum.nl/msn/status.php/b7832972-cf3a-47e9-81df-88679d917273.png

http://img256.imageshack.us/img256/2205/electricwindows01ij2.png

http://img372.imageshack.us/img372/4818/preto1na.jpg

http://www.comics.com/comics/herman/archive/images/herman23667210080204.jpg

http://img320.imageshack.us/img320/1026/untitled18ln.gif

http://img237.imageshack.us/img237/9859/userbaristcopywc0.jpg

http://img64.imageshack.us/img64/5856/dalmdn5.jpg

http://rexatoz.no.sapo.pt/images/biohazard.png

http://www.feedburner.com/fb/images/pub/feed-icon16x16.png

http://www.diditforthelulz.com/attowned.jpg

http://img442.imageshack.us/img442/7417/geniuseditioniimi8.jpg

http://img204.imageshack.us/img204/1992/1097385271997ec9.th.jpg

http://img491.imageshack.us/img491/4566/nnboy5gu.th.jpg

http://img441.imageshack.us/img441/1930/pic12382lt9.jpg

http://img62.imageshack.us/img62/5764/compadre24fv5.gif

http://i168.photobucket.com/albums/u194/SnSilva2008/sem39_06.jpg

http://img460.imageshack.us/img460/4924/vendobici5cj6at.jpg

http://charges.uol.com.br/bobagens/patypc.jpg

http://img222.imageshack.us/img222/9186/25vw2.jpg

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu ando há uns tempos para fazer uma parecida mas para o site: LolCatz ;)

Bela ideia :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Yaps, tantas maravilhas que diziam do perl que tive que ir ver afinal de contas qual era o motivo de tanto alarido.

É engraçadito e tal, realmente a grande vantagem do perl está na quatidade de ferramentas para manipulação de strings. E, tal como o seu proprio nome indica - Practical Extraction and Report Language - é para isso que serve. E verdade seja dita, fa-lo bem, ainda que um script depressa se torna numa coisa ilegivel. Até o geshi se baralhou.

Tentativas de elevar o perl a uma linguagem "superior" e "muito poderosa" são lamúrias dos programadores de perl ao olharem para coisas mais simples, ainda que menos praticas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

"Bem pessoal, estava a borrecido, sem saber o que fazer..." e melhorei o teu script (menos linhas e mais claro):

#!/usr/bin/perl
use strict;
use warnings;
use WWW::Mechanize;

my $URL =
  q|http://www.portugal-a-programar.org/forum/index.php/topic,715.%.html|;
my ($HOST) = $URL =~ /http:\/\/([^\/]+)\/.*$/ig;
my $mech = WWW::Mechanize->new();

for ( 0 .. 19 ) {

    my $IMGS = get_imgs( $_ * 15 );

    while ( my ( $k, $v ) = each(%$IMGS) ) {
        print qq|$k\n| unless $v > 1;
    }

}

sub get_imgs {

    my $pg = shift;

    my $curr_url = $URL;
    $curr_url =~ s/\%/$pg/gmx;
    $mech->get($curr_url);

    my $imgs;
    foreach my $img ( $mech->find_all_images() ) {
        if (   $img->{url} !~ /$HOST/i # so queremos imagens fora do dominio p@p...
            && $img->{url} =~ /^(f|ht)tp:\/\/.*/i ) # ... e que tenham um endereco absoluto
        {
            $imgs->{ $img->{url} }++ unless $imgs->{url};
        }
    }

    return $imgs;

}

... e o resultado não tem 'batota' - isto é, os Avatars aparecem na lista SE não estiverem repetidos. Pelo teu código presumo que tenhas apagado manualmente os Avatares do resultado ;-)

Tentativas de elevar o perl a uma linguagem "superior" e "muito poderosa" (...)

O Perl já lá está, não são precisas tentativas :-)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas os avatars vão estar repetidos.

Nops, não apaguei os avatars, o que fiz foi remover imagens que apreçam mais do que uma vez, como sao os avatars e imagens dos design do forum, assinaturas etc.

Foi a forma mais simples eficaz de resolver isso. Por exemplo, como tens vais apanhar avatars que não estão alojados no p@p (quase todos) e assinaturas.

A única forma 100% eficaz que estou a ver de resolver isto é por a página para dentro de um DOM, e especificar os elementos nos quais as imagens podem tar e saca-las usando Xpath.

Mas o facto de o SMF usar tabelas par a usa estrutura não ajuda. :s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Mas os avatars vão estar repetidos.

Sim, se só aparecer um avatar/assinatura por página em mais do que uma página. Para resolver isso, teria de fazer o print __depois__ de percorrer todas as páginas. É uma opção: optei por não fazer dessa forma.

Mas o facto de o SMF usar tabelas par a usa estrutura não ajuda. :s

Bastava que os avatars e as assinaturas tivessem classes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem visto, os avatars têm. As assinatura não :D

O método que eu usei é mais ou menos eficaz porque há  quase toda a gente tem mais de um post naquele tópico.

Este tópico está a revelar-se um bom exercício e bem divertido.

O dom resolve isto, procura-se apenas dentro das divs com class "post".

Está aqui um bom exercicio para eu brincar com o xpath um dia destes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora