YourAVHost をスクレイピング
私は ero ではないですが erogeek さんを尊敬しています。
表には出さないけど絶対みんなやってるよね。改良の余地ありありです。
#!/usr/bin/perl use strict; use warnings; use URI; use URI::Escape 'uri_unescape'; use HTTP::Request; use LWP::UserAgent; use Web::Scraper; my $ua = LWP::UserAgent->new(keep_alive => 1); $Web::Scraper::UserAgent = $ua; my $avs = scraper { process '//div[@class="entry"]', 'avs[]' => scraper { process '//h2/a', name => 'text'; process '//div/div/div/a[img]', 'flvs[]' => [ '@href', sub { sleep 1; print $_->as_string, "\n"; $_->as_string }, \&yfh2flv ]; } }->scrape(URI->new('http://pulpsite.net/youravhost/'))->{avs}; foreach (@{$avs}) { mkdir $_->{name} unless -d $_->{name}; foreach my $flv (@{$_->{flvs}}) { my ($file) = $flv =~ m!([^/]+\.flv)!; my $path = $_->{name} . '/' . $file; next if -f $path; print $file, "\n"; $ua->request(HTTP::Request->new(GET => $flv), $path); sleep 1; } }; sub yfh2flv { my $yfh = shift; scraper { process '//object/param[@name="movie"]', flv => sub { $_->attr('value') =~ /video=([^&]+)/; my $resp = $ua->get(uri_unescape($1)); $resp->is_success or die; $resp->content =~ /video_id=([^&]+)/; uri_unescape($1); } }->scrape(URI->new($yfh))->{flv}; }
[h@lily eg]$ ls -R .: yah.pl きららかおり 一色志乃 桜月舞 瀬戸由衣 早乙女優 竹内あい 瞳めい 姫咲しゅり 友崎亜希 かすみ果穂 鮎川なお 橘ますみ 山咲あかり 倉持茜 大沢佑香 桃井りか 美波さら 片瀬まこ 恋野恋 ./かすみ果穂: 146fc5e53c4dad621171bdb0da71904e.flv 8afe76be86f40b6e318948eb2c8a219c.flv ddc733538d0cba6a967765b6bbd9d94e.flv 4ae92a846c38c1760ecabe5e783e13fc.flv a1e4a223039f15b9bdc90ec1cc1703ff.flv ddfeededcbead61bb783248f4f60441a.flv 4e476eb1febce5d1134e03f233f78ab6.flv b101d3ee971cf6ecab9f9b5b9aa17cd2.flv e753f67f4d48f492648c376197aa9dcc.flv 66e56420ac6f938e0c7da9321d367265.flv b614aa03ca610f8a5a7abf2c6e223667.flv eb80d43ae86b0db37960d16f1bd39f4a.flv (略)
2007/12/28 追記
これ使えばよかたー。
http://yusukebe.com/tech/archives/20071227/013225.html