たつをの ChangeLog : 2006-09-09

付属ドキュメントにも書いてありますが、
chalow でのソースコードの貼り付け方法をおさらい。
ソースコードを ChangeLog ファイルに貼り付けて、
[src][/src]で囲むだけ。
chalow が、実体参照の変換と pre タグ挿入を勝手にやってくれます。

例:
[src]
my $a = $b + $c;
[/src]

私としては、手作業やツールで変換して張り付けるのはアリエナイ。
ChangeLog からコピペするとき、また戻さなきゃならなくて面倒すぎ。

ref. i d e a * i d e a - ソースの貼り付け方法その後
  http://www.ideaxidea.com/archives/2006/09/post_131.html

Asamasearch で使っている、アダルトページ判定ロジックの解説を書いてみました。
asamasearch

参考:Yahoo!デベロッパーネットワーク (YDN)
http://developer.yahoo.co.jp/

ちなみに、「my %seen;」からの5行は「Perl クックブック」に載っているよく知られたイディオムを改変して使ってます。

それではどうぞ:

使用している Web API の提供が終了となったため、現在動作しません。ご了承ください。



■■■アダルトページの判定

ヤフー検索にはアダルトページフィルタ機能があります。

Yahoo!検索APIにおいてパラメータ adult_ok を 1 にすると、
アダルトコンテンツ入りの、
0 にするとアダルトコンテンツなしの検索結果になります。
デフォルトは 1 です。

この機能を使って、検索結果からアダルトページのみを取り出してみます。

■処理手順

まず、adult_ok=1 を指定し、アダルトコンテンツを含む検索結果を得ます
(デフォルトが 1 なので指定なしでもOKです)。

http://search.yahooapis.jp/WebSearchService/V1/webSearch?
appid=YahooDemo&query=eros&adult_ok=1


次に、adult_ok=0 を指定し、アダルトコンテンツを含まない検索結果を
得ます。

http://search.yahooapis.jp/WebSearchService/V1/webSearch?
appid=YahooDemo&query=eros&adult_ok=0


前者の検索結果に含まれているが後者の検索結果には含まれていない URL
を取り出します。これがアダルト判定されたページであるとみなせます。

■コード

#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
use XML::Simple;

my $key = shift @ARGV;
$key =~ s/([^0-9A-Za-z_])/'%'.unpack('H2',$1)/ge;
$key =~ s/ /+/g;

my $url_prefix = "http://search.yahooapis.jp/WebSearchService/V1/"
    ."webSearch?appid=YahooDemo&query=$key&results=50";
my @aoks = map {$_->{Url}} @{get_results($url_prefix."&adult_ok=1")};
my @angs = map {$_->{Url}} @{get_results($url_prefix."&adult_ok=0")};

my %seen;
@seen{@angs} = ();
foreach my $item (@aoks) {
    print "$item\n" unless exists $seen{$item};
}

sub get_results {
    my ($url) = @_;
    my $yahoo_response = get($url);
    my $xmlsimple = XML::Simple->new();
    my $yahoo_xml = $xmlsimple->XMLin($yahoo_response);
    if (ref($yahoo_xml->{Result}) eq "ARRAY") { # found: many
        return $yahoo_xml->{Result};
    } elsif (ref($yahoo_xml->{Result}) eq "HASH") { # found: 1
        return [$yahoo_xml->{Result}];
    }
    return []; # not found
}

■Hack の実行

検索キーは引数で指定する仕様です。
日本語の場合の文字コードは UTF-8 です。
% hack_adult.pl eros                                     
http://www.shang-bu.com/jp/eros.htm
http://eros.blog.shinobi.jp/Entry/3/
http://sketch-book.seesaa.net/category/11088-1.html

% hack_adult.pl アイドル
http://www.kumagaya.or.jp/~mamada/idol/idol.htm
http://zxz.jugem.jp/
http://idol-yoshiwara.jp/
http://www.houmotsu.com/i/gazou.htm
http://yapoo-bbs.net/bbs_ai/aidoru/

■Hack をさらに Hack する

サンプルコードではWeb検索を対象としていますが、
画像検索、動画検索でも可能です。



関連書籍:
- Perlクックブック〈VOLUME1〉
- Perlクックブック〈VOLUME2〉
- Yahoo! Hacks
- まるごとPerl! Vol.1

塩野七生 / ローマ人の物語(25) - 賢帝の世紀(中) / 新潮文庫

ハドリアヌス帝、前半。
カエサルに対するアウグストゥス[2004-11-28-4]みたいな感じで地味系。
とはいえ、市民受けする好戦派みたいなのを押さえるのは大変。
トライアヌスがあれだけ派手にやったからな。
最近イスラエル関連の記事を読んでますますそう思った。

自分用メモ:
政略的思考法に秀でた人は、絶対に一つの目的だけのためにはことを行わ
ない。(p.76)

ref.
- ローマ人の物語 - 賢帝の世紀(上)[2006-09-07-2]

町内のお祭り。太鼓の音で目が覚める。

昨晩から3人宿泊。一人二日酔いでダウンなので、ランチは三人で
近所で沖縄そば+ラフティ、など。
みんな帰ったあと、掃除&洗濯。

読書しようと喫茶店に行ったんだけど、本を開いたら下巻だった。
上巻は未読。痛恨。

うちの向かいに小さなオフィスがあるんだけど、
今日なにげなく社名を検索してみたら、
イベントコンパニオン派遣会社だと判明。
だから、ときどききれいなお姉さんがうろうろしていたわけか。

たつをの ChangeLog
Powered by chalow