2008/01/31


twitterのAPIでfriendsが100件しか取れなくなって久しいですが...
WWW::MechanizeとXPathでtwitterの全friendsを取得するサンプル作ってみました。 あまりやり過ぎると、オフィシャル側に怒られそうな気もしますが...
後の使い方は、適当で... #!/usr/local/bin/perl

use warnings;
use strict;
use LWP::Simple;
use XML::Simple;
use WWW::Mechanize;
use HTML::TreeBuilder::XPath;
use HTML::Selector::XPath qw(selector_to_xpath);
use Data::Dumper;

my $username = 'your_username';
my $password = 'your_password';

my $m = WWW::Mechanize->new(timeout => 10);
$m->get('http://twitter.com/login');
$m->submit_form(
    form_number => 1,
    fields    => {
        username_or_email  => $username,
        password           => $password,
    },
    button    => 'commit',
);

my $xpath = selector_to_xpath('tr.vcard');
my @friends;

my $num_page = 1;
while (1) {
    my $res = $m->get("http://twitter.com/friends/?page=$num_page");
    my $encoding = $res->header('Content-Encoding');
    my $content = $res->content;
    $content = Compress::Zlib::memGunzip($content) if $encoding =~ /gzip/i;
    $content = Compress::Zlib::uncompress($content) if $encoding =~ /deflate/i;

    my $tree = HTML::TreeBuilder::XPath->new;
    $tree->parse($content);
    $tree->eof;
    my @nodes = $tree->findnodes($xpath);
    for my $tr (@nodes) {
        push(@friends, {
                nick => $tr->findnodes('td/strong/a')->[0]->as_text,
                image => $tr->findvalue('td[@class="thumb"]//img/@src')->as_string,
                name => $tr->findvalue('td[@class="thumb"]//img/@alt')->as_string,
                description => $tr->findvalue('td/strong/a/@title')->as_string,
                url => $tr->findvalue('td[@class="thumb"]/a/@href')->as_string,
            });
    }
    $tree->delete;
    @nodes or last;
    $num_page++;
}

print Dumper @friends;

最近遊んでる物、ほとんどmiyagawa氏のものばっかだな...
Posted at by



2007/01/26


最近、なんとなくPerl触ってないなぁ...
と思い立って、暇を見つけてファイルアップローダCGIを作ってます。

どんなアップローダCGIかと言いますと。

  • ファイルがアップロード出来る(当たり前)
  • ダウンロード出来る(これも当たり前)
  • ダウンロードパスワードが設定出来る
  • 削除パスワードが設定出来る
  • サーバマシンのファイルシステムに関係無く、他言語のファイル名を保持出来る
  • CGIが1ファイルだけで作られている
  • ちょっぴりオシャレなデザイン
  • テキストファイルを、ダウンロードすること無くプレビュー出来る
  • 画像ファイルをダウンロードすること無くプレビュー出来る
  • ZIPファイルのファイル一覧をダウンロードすること無くプレビュー出来る
  • 上記プレビュー機能にAjaxを使っているので、すこしカッチョイイ

まぁ...
ただ単に、Ajaxが使いたかっただけなんですけどね...

まとまってきて、出来が良かったら公開してみます。

#気分次第でごみ箱行きになるかもしれませんが...
Posted at by