Bookmark

捨てる技術と拾う技術

Livedoor ReaderRSSを読むのに慣れてきたけど、大量のフィードを読むのは大変。これまで読めなかったものを読むようにしてアンテナを広げておきたい。でも多杉て読めないよー…と思っていた。と思ったら本家の人のブログにヒントが。灯台下暗し。

大量に登録したフィードをジャンルで分類すると、重要な情報の読み遅れがどうしても発生してしまいます。しかし、重要度によって分類しておくと、大切な情報は急ぎのときでも読み逃さずにチェックできます。

単純にレートでいいのか。全部フラットに読んでましたw
友人にも捨てる技術を学べと言われたが、まさしくおっしゃる通り。未読がたまるとストレスになってたけど、読めなかったものはもう全部捨てて新たに見たい時、見れる時に見る。

最後に。人間は、文字がびっしりとつまった新聞のなかからでも、必要な情報を瞬時に見つけるだけの能力をもっています。「livedoor Reader」は、その人間の能力の限界近くに迫ろうとするサービスです。「Web上に流通する情報はすでに人間が読める限界を超えている」と諦観する前に、ぜひ「livedoor Reader」をお試しください

ウェブの最先端な人が言ってるから、まだ効率upの余地があると信じて。他のリーダの進化も見ながらマターリ行きますか。

Bookmark

<賽銭御利益唱>
5圓 :ご縁がある           10圓:遠縁になる
15圓:充分にご縁がある        25圓:二重にご縁がある
35圓:散々なご縁にあってしまう    45圓:始終ご縁をを頂ける
55圓:午後にあげるとご縁を頂ける   65圓:碌(ろく)なご縁に合わない
75圓:泣くようなご縁に出会ってしまう 85圓:矢継ぎ早にご縁をうける
95圓:苦しいご縁にあう        105圓:百(盛)り沢山のご縁が頂戴できる

Bookmark

短編映画『長髪大怪獣 ゲハラ』は、NHK総合にて2月24日(24:10〜25:00)に放送。『ゆうばり国際ファンタスティック映画祭2009』にて2月28日に上映されることも決まっている。

Bookmark

LDRのピンを取得してはてな記法にしてクリップボードにコピーしたい(3)

先日書いたスクリプトは色々不備があったので、修正。
修正点は

redirect先取得処理についてですが、数が増えていくと時間がかかりますのでデフォルトはOFFにしておきます。またUserAgentはlibwwwのままだとSPAM対策で取れないこともあるかもしれませんが、基本的にそのサイトのポリシーに従った使い方が必要と思うのでこのまま。この場合、元のpinのURLが挿入されます。
# そもそもこんなニッチなスクリプトを使う人いないと思いますが念のため。
(半分は自分のために)最後に動作確認環境もメモしておきます。ActivePerl 5.10.0.1004。以下、使用Module。

Win32::Clipboard 0.55 JSON 2.12
Encode 2.29 HTML::TokeParser 2.37
WWW::Mechanize 1.34rc LWP 5.814
#!C:\Perl\bin\perl
# LDRのピンを取得してはてな記法にしてクリップボードにコピーする
use strict;
use warnings;
use utf8;

use WWW::Mechanize;
use JSON;
use Win32::Clipboard;
use Encode        qw(encode decode);
use Encode::Guess qw(euc-jp shiftjis 7bit-jis);
use HTML::TokeParser;
use LWP::UserAgent;

my $OPT = {
    REALLINK   => 0,   # 1: redirect先までURL抽出 0: 抽出しない
    UA         => qq(libwww-perl),# UserAgent指定
    ID         => "",  # livedoorID
    PASS       => "",  # livedoorパスワード
};

&Main;
sub Main {
    my $json_pindata = &GetLDRPinData;# 取得
    my $hatenadata = &JSON2Hatena($json_pindata);# 整形
    # 出力
    Win32::Clipboard::Set(join("\n",@$hatenadata));
}
# 1. LDR PinをWWW::MechanizeでJSON形式で取得する。
sub GetLDRPinData {
    my $mech = WWW::Mechanize->new;
    $mech->get('http://member.livedoor.com/login/index'); # login
    $mech->submit_form(fields =>{
        livedoor_id => $OPT->{ID},password => $OPT->{PASS}});
    # pinを取得
    my $res = $mech->post("http://reader.livedoor.com/api/pin/all");
    return $mech->content;
}
# 2. JSONをはてな記法に変換する。
sub JSON2Hatena {
    my $obj = JSON::from_json(shift,{utf8=>1});
    my $Result;
#   my $Count = 1;$| = 1;
    foreach my $pin (@{$obj}){
        my ($reallink,$title);
        if($OPT->{REALLINK} == 1){ # redirect先を取得
            ($title,$reallink) = GetRealData($pin->{link});
            $reallink = $pin->{link} unless $reallink;
            $title = encode("sjis",$pin->{title}) unless($title);
        } else {
            $reallink = $pin->{link};
            $title = encode("sjis",$pin->{title});
        }
#       print STDERR ">>$Count: $title\n$reallink\n"; $Count++;
        push(@$Result,sprintf("- [%s:title=%s]\n",$reallink,$title));
    }
    return $Result;
}
sub GetRealData {
    my $url = shift;
    my ($realurl,$title);
    # redirect先をget
    my $ua = LWP::UserAgent->new(timeout => 5 ,agent => $OPT->{UA});
    my $res = $ua->get($url);
    if ($res->is_success){ $realurl = $ua->head($url)->base }
    else                 { $realurl = undef }
    # <title>TITLE</title>を抽出
    my $p = HTML::TokeParser->new(\$res->content)|| die "Parse error\n";
    $p->get_tag("title");
    my $titledata = $p->get_trimmed_text("/title");
    eval {$title = decode("Guess", $titledata);}; # 文字コード推測失敗
    if($@){ return (undef,$realurl) }
    else  { return (encode("sjis",$title),$realurl) }
}

LDRのピンを取得してはてな記法にしてクリップボードにコピーしたい(2)

というわけでPerlスクリプト書いたけど、そもそもLDRにはピンを取得する公開APIが現在は無いので、
自分でScrapeする必要がある。WWW::Mechanizeの操作が面倒っぽかったので、ひとまず外部プログラムに頼った。

PHPをinstallする羽目に。rhaco.orgも必要だったのでそれも。
Perlだけでやりたいけど気が向いたらしよう。

以下コードの流れ。

  1. JSON形式でLDRピンをPHPプログラムで取得、ファイルにいったん出力。
  2. JSONファイルからタイトルとURIを取得。UTF8になってるのでWindowsで取り扱いやすくSJISに変換。
  3. フィードから得たURIはリダイレクトされてソースを指していないことが多いのでLWP::UserAgentでアクセスして取得。
  4. 同じく、タイトルがソースののものではないことがあるので、ついでに取得
  5. タイトルとURIは配列リファレンスに保存しといて、はてな記法に変換。
  6. 出力先はクリップボードにしたかったので、Win32::Clipboardを使ってコピー。でおわり。

2009-02-13:もっとましなコードが書けたのでここは閉じておく。