マソソソマソソソのバリエーションを生成する
ワードサラダとマソリソマソリソが脳内で自然に融合したのできらレボ観ながら書いた。どうぞご利用ください。
例
[puma:~/masososomasososo] ec% perl maso.pl < masocorpus マンソリマリリソ [puma:~/masososomasososo] ec% perl maso.pl < masocorpus マソンソマソンソ
maso.pl
#!/usr/bin/perl use utf8; use encoding 'utf-8'; use strict; use constant { HEAD => 'マ', TOKEN_LEN => 4, }; my $maso = learn(*STDIN); print gen($maso).gen($maso)."\n"; sub learn { my $h = shift; my $model = {}; while (my $line = <$h>) { chomp $line; my @chars = split //, $line; for my $i (0..$#chars-1) { $model->{$chars[$i]}->{$chars[$i+1]} += 1 if ($chars[$i+1] ne HEAD); } } return $model; } sub gen { my $m = shift; my $seed = HEAD; my @str = ($seed); for my $i (0..TOKEN_LEN-2) { my $n = predict($m->{$seed}); push @str, $n; $seed = $n; } return join '', @str; } sub predict { my $h = shift; my @prob; while (my ($c, $r) = each %$h) { push @prob, $c for (1..$r); } die unless @prob; return $prob[int(rand(scalar @prob))] }
masocorpus
マリリンマンソン マソリンマンソン マリリソマリリソ マソリソマソソソ
紫色の何かを口に押し当てているジェネレータに関するまとめ
把握してたルート
- takesako (y0sh1) on Twitter: "紫色の何かを口に押し付けるオフを開催してみるのはどうか http://tinyurl.com/2z2wj9"
- http://blog.mizzy.org/articles/2007/06/14/something_purple
- メキシコ産 on Twitter: "OpenCVで紫色の何かを口に押し付けるジェネレーターつくりたい"
- takesako (y0sh1) on Twitter: "@fuba wktk 期待age"
- あーでもやっぱオリジナルを使うほうが悪質でいいかもと思ったら元画像がみあたらないのではてなセリフからギってくる。
- Gimp入ってないのでGraphicConverterで切ったらジャギジャギ。
- とりあえずMacBookにOpenCVが入ってるのでOpenCVを使って画像の物体認識をするPerlモジュール作った - spiritlooseのはてなダイアリーを使うことに。
- Imagerで画像合成する方法わかんない!
- ImageMagickでレガシーにキメてみる。
- サンプルの顔画像探してたらいきなりで吹いたので使用 http://twitter.com/eto/statuses/103931942
- できた! 悪質なものなのでTumblrに捨てる。
- Koichiro Eto on Twitter: "こんにちは.hackerに転身しました.コンピューターとインターネットが得意です.好きな場所は東京ディズニーランドです.よろしくおねがいします."
一方そのころ
帰ってくると別ルートでid:yappoがhttp://geekface.blogdb.jp/を作っていた。ドクペライセンスの一文で煽られた人が日本に2人もいたのか!
座標指定型だと貼付ける画像を自由に投稿できるようになるとアナーキーそうだと思った。はてなセリフの新機能にどうか。
結論
Imagerで画像を合成するにはrubthrough。
Net::Tumblr
http://fuba.tumblr.com/post/2327086
こういう仕様なら作るまでもない気がしたけど画像Botのために作ってみたけど一瞬で容量制限溢れたので存在意義がなくなってとりあえず放出。コードはやっぱりはてダの方がいいな…。
usage.pl
use Net::Tumblr; my $url = shift; my $t = Net::Tumblr->new( email => 'example@example.com', password => 'password' )->write( type => 'photo', source => $url, caption => "<a href=\"$url\">$url</a>", );
詳しくはTumblr - API参照。
Net/Tumblr.pm
package Net::Tumblr; use strict; use warnings; use LWP::UserAgent; use URI::Escape qw/uri_escape_utf8/; use constant API_WRITE => 'http://www.tumblr.com/api/write'; sub new { my $pkg = shift; my %opt = @_; my $ua = LWP::UserAgent->new(); bless { email => ($opt{email} or die 'no email'), password => ($opt{password} or die 'no password'), generator => ($opt{generator} or 'Net::Tumblr'), ua => $ua, }, $pkg; } sub write { my $self = shift; my %opt = @_; $opt{email} = $self->{email}; $opt{password} = $self->{password}; $opt{generator} = $self->{generator}; my $req = HTTP::Request->new(POST => &API_WRITE); $req->content_type('application/x-www-form-urlencoded'); my $param = join '&', map {"$_=".uri_escape_utf8($opt{$_})} grep {$opt{$_}} keys %opt; $req->content($param); return $self->{ua}->request($req); } 1;
ヌイッターの話もあったので一応
ところで、前のエントリを書く前に誰もダウンロードしてなさそーな新着投稿動画でチェックしてみたら以下のようなメッセージが。個人情報の入力なんて存在しないニコニコ動画専用のIDとパスが収集されたところで(実際収集してるわけないだろうし)大した問題は無いとは思うけど。
ダウンロード用のURLが登録されていません。
ニコニコ動画へログインするアカウント情報を入力し、ダウンロードURLを取得をクリックすると ダウンロード用のURLを取得することが出来ます。
ダウンロードURLを取得する際にサーバサイドでニコニコ動画へログインを行います。
ニコニコ動画を閲覧する際は再度ログインする必要があります。
同一動画を次回ダウンロードする場合はアカウント情報の入力は必要ありません。
nicoToolの人から反応があった
http://nicosns.inventor.jp/diary/973/
ログインしないと見れないので引用するね。
実装にちょっと疑問があったのでそう書いたんですが、確かに公式のBookmarkletをよく読むと規約に触れずにURLを蓄積することが可能そうでした。失礼しました。
ニコニコ動画自体がyoutube、amebaなどの動画を直で引っ張って
コメントをつけるサービスなので、そういう意味で言えばニコ動画SNSがyoutubeにとってのニコニコ動画と同じようなことをしてるのは確かですね。
また、動画の再生って自分のアカウントを使って再生できる様にしてるわけではないんです。これまでの蓄積されたflvファイルのURLを元にサービスを提供してみてる感じです。
ログインせずにニコニコ動画の映像だけ見られるページに移動するBookmarklet
ニコ動動画エントリページで実行。ニコ動画SNSの会員しか使えなくなった。
javascript:(function(){if(location.href.match(/\/(\w+\d+)$/))location.href='http://nicosns.inventor.jp/download/'+RegExp.$1;})();
つーかこれはニコ動画SNSヤバくね?とおもって書いてたんだけど、普通にnicoToolのトップにニコニコ動画のアカウントが無くても動画を見ることができます。
ってあってかなり萎えた。おそらくニコ動のアカウント管理体制がテキトーな間の運命な機能とはいえ、自分のアカウントを不特定多数に自由に使わせるのは限りなく黒に近いグレー(「アカウントに関する権利、権益」の解釈によるけど)。すごいなnicoTool。動画のURLはダウンロードBookmarkletから貰ってる様子。これならたぶん薄いグレー。
HA☆NA☆SEジェネレーター
usage
% perl yugioh.pl はなせ HA☆NA☆SE
yugioh.pl
#!/usr/bin/perl use strict; use warnings; use Lingua::JA::Romanize::Japanese; my $phrase = shift; my $conv = Lingua::JA::Romanize::Japanese->new(); my @romanized = $conv->string($phrase); my $result = join '☆', map {uc($_->[1])} @romanized; print "$result\n";