
魔法のiらんどのケータイ小説をAutoPagerizeで継ぎ足した分だけ自動要約するGreasemonkey User Scriptを書いた。最初はWWW::Mech::AutoPagerの実験ついでかなーと思ってたんだけど、グネグネ動くと面白いかなーと思ったのでぐりもんでやってみた。ちなみに実装上はどんなサイトでも要約できるけど、1文の単語が少なくて語彙が少ない割にやたらと長いケータイ小説はかなりうまくいくので、とりあえずデフォルトは魔法のiらんどだけで。これをインスコして恋空を読んだときのスクリーンショットはこんなかんじ。
2分ちょいスクロールさせっぱにした結果、112ページ分がたった7文になり、PHS好きのヒロにはオススメ! ウィルコム信者必読! といった恋空の特性がたちどころにわかる。文の数は右下にある数字を指定すると変わる。これでやたらと長いケータイ小説も選び放題!
もちろんAutoPagerizeがないと動きません。さすがにもうインストールしてないFirefoxユーザは存在しないと思うけど、ねんのためAutoPagerizeはこれ。それでは快適なケータイ小説ライフを!
Cheetahmen Corner管理者Adam Lamontagneさんのチーターマン2に関する文書。結局公式に発売されることがなく倉庫に死蔵されてたチーターマン2は、1996年の数年前にSean Rocheという人によって発掘され、Adamさんが仲介したディーラーによって世に出たとのこと。さらにニコニコではまだ誰もやってないっぽい5、6面への行き方も書かれており、たいへん興味深かった。Cheetahmen CornerにはROMや5、6面用パッチもある。権利の行方も謎だし、特に日本人が取り扱いに気をつけるべきファイルってわけじゃないので遊んでみるといいと思う。ひどいですよ。
なんかja.wikipediaがすごい更新されてるけど、この文書の情報はぜんぜん反映されてないっぽいので誰か翻訳しないかな。発売されたかどうかとかは英語版Wikipediaとは食い違ってるし、議論がどう落ち着くか見た後でもいいか。だんだん反映されてきた。とても良かったですね。
YouTubeで検索してみると5、6面の動画があった。
ニコニコ動画の公開マイリストをログインしてない時も見られるGreasemonkey User Scriptを書いた。普段自宅でブラウズに使ってるFirefoxには有効なニコニコアカウントが入ってない(メディアサーバ的につかってるMac miniのSafariにバインドしてる)んだけど、マイリストは何かとFirefoxで見る機会が多いのでついカッとなって書いたものの、その後ニコ動側のCSSを有効利用したり見た目をしっくり来させようとしたらDOM操作がグダグダになって非常に無駄な苦労をするハメになった。しかも冷静になってみるとほとんど使い道ないですね。5も無理ですね。ねます…TXT12が、TXT12に殺される!
植田まさし先生ご自身がアプされたさよなら絶望先生 コボちゃんバージョンを観たせいで、かりあげクン全巻を買うかどうか迷っている。全巻同時にカートにいれるリンクも作った。うーむ。
URLに数字が含まれているページで、次のページのURLを推測してリンクを作るGreasemonkey User Scriptを書いた。最近は次のページへのリンクをあえて提示しない小手先の負荷軽減策をとるサービスが多いのだけど、わざわざURLをインクリメントするのなんか猿にやらせとけばいいのだ。あとインクリメントだけじゃなくて、はてなの/?of=\dみたいな一定量刻みのページ送りにもいちおう対応できてるはず。とはいえそんなにAI的な実装ではないので、テキトーな動作しかしない。日付っぽいURLでは誤爆しまくると思う。
これを作った主目的はTwitterの負荷対策の対策。たとえばアカウントもってる人なら/homeの10ページ目あたりからAutoPagerize切って「Older »」をクリックして進んでみるとどういう動きをするかわかると思う。一つ前のページのURLをGM_setValueで常に記録するので、そういうの気にする人は使わないでください。
欲を言えばこれをAutoPagerizeに組み込みたかったのだけど、ソースをしっかり読まないとまるで見当がつかないな。サーバ側から貰えないURLに半機械的にアクセスするのは倫理面であやしそうだし、これ以上はとりあえず考えないことにする。寝る。
匿名投稿時の自動リンク機能なおした。つーか移転先のコメント欄作るのめんどくさいな…とか言ってる間にもうすぐ3ヶ月でXreaの有料広告免除が切れるしぬぬぬ。もうはてなスターでいいかって気分にもなってきた。
ec / openfbげ、匿名投稿時のリンク機能壊れてる。ごめんなさい。ImageLinksInlineViewerはこれですかね。これだと普通にマウスオーバーを外すだけで閉じてくれるので、わざわざクリックして閉じるより楽な気もします。自分はカーソル動かすのすら面倒なので、勝手に最大化してほったらかしという実装にしました。
<a href=" ImageLinksInlineViewer.user.js</a>
タグで書かないとURL投稿できないのかな ImageLinksInlineViewer.user.jsってやつです。
こういうスクリプトもありますよ。画像のリンクにマウスを乗せたら元の画像が表示されるやつです。元の画像の部分をクリックすることで表示を消せたら最高だと思います。
インデックス直接ごりごり叩ける全文検索ライブラリ
http://fuba.moaningnerds.org/src/exthtml.pl
値がとれるだけでは退屈、ページ辿りたいし、その先も辿りたいので機能追加。ずいぶんたくましくなりました。あとはキャッシュができればいいですねー。
twitterのfollowingリストを0回ページ継ぎ足しして、そこから抽出したユーザリストのfavoritesをさらに確認、彼らのfavってるユーザ名を集計する。
% alias exthtml="perl /Users/ec/bin/exthtml.pl -a Mozilla -c ~/Library/Cookies/Cookies.plist"
% exthtml -X '//strong/a[@rel="contact"]/@href' -n "//a[contains(@rel, 'next')]/@href" \
-d 0 http://twitter.com/friends | perl -ne 'chomp;print "${_}/favourites\n"' | \
exthtml -X '//*[@class="content"]/strong/a/text()' -s - | sort | uniq -c
5 33
1 4316
1 8am
1 941
1 AirReader
2 Hamachiya2
1 IronNine
1 Johnny_S
(snip)
1 yoppy
6 youpy
1 yugui
2 yuiseki
3 yukichi
1 yusukebe
2 yuyarin
1 yuzupepper
1 zammersonic
もちろん前のほうのexthtmlの-dをふやせばfollowing全員たどれるし、後のほうのexthtmlに-n、-dをつければどんどん深く辿れてべんり。両方-d 10000ぐらいにしたら過去のfavoritesぜんぶとれます。だけどtwitterのサーバは貧弱なのであんまり叩くと死にそうでこわいですね。
http://fuba.moaningnerds.org/src/exthtml.pl
画像一覧からXPathでぶっこぬいてダウンローダにわたす、といった用途から簡単なマイニングまでべんりにつかう予定。
% ./exthtml.pl [ -a [AGENT] -e [REFERER] -c [COOKIE_JAR] ] -x [XPATH] [URL] % perl exthtml.pl -a Mozilla -c ~/Library/Cookies/Cookies.plist -X "//img[@class='image']/@src" http://www.tumblr.com/dashboard http://media.tumblr.com/XEVQcg9Zzaj7driiTV8baCRJ_400.gif http://media.tumblr.com/G6je7UvklaklnqmgypCVpgBg_100.jpg http://media.tumblr.com/G6je7UvklaklnqmgypCVpgBg_400.jpg http://media.tumblr.com/Bcb4YCrxh3s3i9vsNiAe7H0C_100.jpg http://media.tumblr.com/Bcb4YCrxh3s3i9vsNiAe7H0C_400.jpg http://media.tumblr.com/cqRYWOkYRambcyqr1PmewR2r_100.jpg http://media.tumblr.com/cqRYWOkYRambcyqr1PmewR2r_400.jpg http://media.tumblr.com/vj8toQRftakozppfgR7H0j40_400.jpg http://media.tumblr.com/51bAnBJJUamcm3iu9QVSYb2t_100.png http://media.tumblr.com/51bAnBJJUamcm3iu9QVSYb2t_400.png % perl exthtml.pl -a Mozilla -c ~/Library/Cookies/Cookies.plist -X "//table[@id='timeline']//img[@class='photo fn']/@alt" http://twitter.com/ | sort | uniq -c 1 Tadaki Osawa 1 Vol.2% 2 Yusuke Yanbe 1 hanemimi 2 log_070702 1 oklahomamixer 2 totoounk皇子 2 ☆ギンギンギラギラギンギンのもりひろ☆ 2 オリハタ 3 ヤマタケ 1 小池 陸 1 岸田渉 1 星村
#!/usr/bin/perl use strict; use warnings; use Encode; use Getopt::Long; use LWP::UserAgent; use HTTP::Cookies::Guess; my $url = pop @ARGV; my ($xpath, $referer, $cookie, $agent); my $result = GetOptions( "x|xpath=s" => \$xpath, "e|referer=s" => \$referer, "c|cookie-jar=s" => \$cookie, "a|agent=s" => \$agent, ); die "usage: ./exthtml.pl [ -a [AGENT] -e [REFERER] -c [COOKIE_JAR] ] -x [XPATH] [URL]" unless ($url && $xpath); $xpath = decode('utf-8', $xpath); my $ua = LWP::UserAgent->new; $ua->cookie_jar(HTTP::Cookies::Guess->create(file => $cookie)) if ($cookie); $ua->agent($agent) if ($agent); my $tree = HTML::TreeBuilder::XPath::Remote->new_from_uri($url, $ua, $referer); for my $node ($tree->findnodes($xpath)) { print encode('utf-8', $node->getValue."\n"); } package HTML::TreeBuilder::XPath::Remote; use strict; use warnings; use List::Util qw( first ); use Encode; require Encode::Detect; use HTML::TreeBuilder::XPath; use HTML::ResolveLink; use LWP::UserAgent; use HTTP::Request; use HTTP::Response::Encoding; sub new_from_uri { my ($pkg, $uri, $ua, $referer) = @_; my $resolver = HTML::ResolveLink->new( base => $uri, ); return HTML::TreeBuilder::XPath->new_from_content( $resolver->resolve( $pkg->get($uri, $ua, $referer) ) ); } sub get { my ($self, $uri, $ua, $referer) = @_; my $html; $ua ||= LWP::UserAgent->new(); my $req = HTTP::Request->new('GET', $uri); $req->header(referer => $referer) if ($referer); my $res = $ua->request($req); # this detection is based on Web::Scraper. if ($res->is_success) { my @encoding = ( $res->encoding, ($res->header('Content-Type') =~ /charset=([\w\-]+)/g), "Detect", "shift-jis" ); my $encoding = first { defined $_ && Encode::find_encoding($_) } @encoding; $html = Encode::decode($encoding, $res->content); return $html; } return; }
http://b.hatena.ne.jp/otsune/20080530#bookmark-8776502
SITEINFOはwedata版に書き換えたほうがよさそう
とのことなので書き換えた。HTML::Featureを使ってもっと便利にしたかったのだけど、UAがうまく置き換えられない問題とかが残ってるのであいかわらずEntryFullTextを継承。なのでPPF::EFT::SiteInfoのEFTのyamlがうまく一緒に使えない問題が残ってます。あとPPF::EFT::SiteInfoも野良siteinfoがあればまだ使えるのでこっちは名前かえました。Webservice::WedataはkoyachiさんのところからとってきてくださいWebService::WedataもCPANからインストールできるようになりました、とてもよかったですね。
plugins: - module: Subscription::Config config: feed: - url: http://kichiku.oq.la/rss - url: http://kawamurayukie.cocolog-nifty.com/blog/ - module: Filter::EntryFullText::LDRFullFeed config: force_upgrade: 1 # impersonate: 1
# upgrade http://pixiv.net/ author: fuba custom_feed_handle: http://www\.pixiv\.net/ custom_feed_follow_link: member_illust\.php\? handle: http://www\.pixiv\.net/member_illust\.php\? extract_xpath: body: //div[@id="content2"] author: //div[@id="profile"]/div/text()
ブラウザのcookieを使う。なにかがexpiredだとmypage.phpにリダイレクトされるっぽいので一度www無しのedit.phpに捨てアクセス。custom_feed_handleはwww入りになってるのでEFTは動かないで、2つ目以降のURLだけ有効になる。
global:
user_agent:
cookies: /Users/ec/Library/Cookies/Cookies.plist
timezone: Asia/Tokyo
plugins:
- module: Subscription::Config
config:
feed:
- url: http://pixiv.net/edit.php
- url: http://www.pixiv.net/ranking_r18.php
- module: Filter::EntryFullText
結局火事のことだったんだ
いちれんのRirika追想の流れで自分でもわすれてたミラーが発掘されてたので、ついでにいまだにあんまり知られてなさそうなInternet Archiveのワイルドカード検索へのリンクも出しとく。かなり残ってるねー
Fx3b+GMのバッドノウハウ集
CPANに入るとうれしいなー
メタデータの楽園やー
べんりなグラフ集
買う。Amazonでは360版だけ値引きがないんだな…
簡単な全文検索エンジンが練習問題レベルで書けるようになるなー
イカす、できたら検索システムに組み込ませていただきます
いい via youpy
おもしろそう
>>
MSに限らず、アメリカ企業は中国語と日本語の違いを理解していない。同じ漢字を使っているということで、一緒だとおもってる。だから中国に投げるのは別におかしいと気付かない。日本人が欧米といって一緒くたにしているのと同じこと。
<<
中国人は気付くだろ
まともなHTML対象のclass重視のヒューリスティクスによる抽出
いまだに鯛のおかしらの話をしているコミュニティでの発言だということを意識すべきだった、こわい
この理屈だとすべてのポルノを禁止すべきなんじゃないかな。
cool
へー
DateTimeオブジェクトをてきとうに生成してくれる
中身を読んで写真以外にも使えそうなら実装してみたい
パラメータが公式のものとちがうけど手元でざっと試算するとまあ不可能そうだった。好意的にみるならLEDの効率が不明か
単一のデータから構造を抽出し、それを使って情報を再度抽出できる
ゆめがひろがるメタデータ
>>そうした魅力あるHD DVDが、BDとの統合のチャンスを逃し、ユーザーの利益から乖離(かいり)した政争の具で終わってしまうのはとても残念に思える。<<
日経のメディアでそれを書くのか