掲示板お問い合わせランダムジャンプ

トップスペース

2011年03月31日
YouTubeオートリピート(ループ再生)ブックマークレット
 何気なしに作ってみたらあっさり完成したので公開します。

 YouTubeオートリピートブックマークレット
 ↑右クリックなどでブックマークすればブックマークレット化できます。

 ↓中身
javascript:
(function(p,r){
    p=yt.getConfig('PLAYER_REFERENCE');
    r=function(s){if(s==0){p.playVideo()}};
    p.addEventListener('onStateChange',r);
    r(p.getPlayerState());
    try{document.getElementById('watch-headline-user-info').innerHTML+='<strong style="color:red">[repeat]</strong>'}catch(e){}
})();

 この手のブックマークレットは別サイトに飛ばすものが多いですが、移動することなくオートリピートできます。動画再生ページで実行して下のように [repeat] と表示されたら成功です。ついでに「○○をチャンネル登録しよう!」というポップアップメッセージが「Repeeeeeeeeeeeeat」になります(できなくなりました)。
YouTubeオートリプレイSS


●技術的なこと
 YouTubeが用意しているAPIを使ってオートリピートさせてます。下のページが参考になると思います。
 YouTube JavaScript Player API リファレンス - YouTube の API とツール - Google Code
 再生が終了したというイベントを受け取ったら再び再生させるということをやってます。


 それにしてもループ再生くらいは標準で付ければいいのにと思います。


【更新履歴】
 2012/05/11: HTML5でも使えるようにした。
 2011/11/03: リピート失敗が増えたので、一度先頭へシークさせるようにしてみた。
[ 投稿者:うえぽん at 20:15 | ブックマークレット | コメント(5) ]

2010年11月06日
479バイトの人工無能
 3年前に作った「選択範囲を要約する人工無能ブックマークレット(680バイト)」の(680バイト)という部分がずっと気になっていたので 479 バイトまで短くしてみました。


 選択範囲を要約した振りをするブックマークレット(479バイト)
 ↑右クリックなどでブックマークすればブックマークレット化できます。

 下が中身。479 byteです。
javascript:(function(D,t,U,S,N,s,p,q){s=((t?t():document.selection.createRange().text)+U).replace(/(\u3002+|[!-~\uFF01-\uFFE5\u300A-\u3015]\s)\s*/g,'$1'+U).replace(/\s/g,'').split(U);function F(x,y){return y?D[x]?D[x].push(y):D[x]=[y]:D[x][Math.random()*D[x].length|0]};for(p in s)if(t=s[p]){for(F(U,t[S](q=0,N));q<t.length-N;)F(t[S](q,N),t[S](N+q++,1));F(t[S](q),U)}do{t=p=F(U);for(s=300;q=F(p),q!=U&&s--;p=p[S](1)+q)t+=q}while(confirm(t))})({},top.getSelection,'\b','substr',3)

 ニュースサイトやブログの記事をマウスで選択し、このブックマークレットを実行すれば要約した振りをします。
 マルコフ連鎖を使ったいわゆる人工無能というやつです。詳しくは以前のページ(のリンク先)を見てください。
 コードの最後にある数字の 3 はマルコフ連鎖の接頭文字数を意味しています。4 とか 5 にすればもう少し賢くなります。

 動作確認したブラウザはWindowsXP上の Firefox 3.6.12、Opera 10.63、IE8 のみです。たぶん他のブラウザ上でも動きます。フレームを使ったページでは動作しません。

 以前のと比べて気になった人もいるかもしれませんが、全角文字を \u**** という形式にしました。例えば '。' は '\u3002' となってます。
 逆に長くなっていますが、なぜそうしたかと言うと、全角文字を2バイトとカウントするのがなんとなくインチキぽく感じたからというのと、ブックマークレット保存時にURLエンコードされてもサイズがあまり膨らまないからです。

 以下はJavaScriptのコードを短くするのに参考にさせていただいたページです。
 ・JS のコードを短かくする Tips - 冬通りに消え行く制服ガールは、夢物語にリアルを求めない。 - subtech
 ・空から降ってくる女の子(ゲームっぽく) - 0xFF
 ・ブックマークレットを短くする方法 - Born Neet
 ・Math.floor を使わずに小数を整数にする - IT戦記

 マルコフ連鎖ネタとしてはこんなものも作られています。
 ・「あたし状態遷移図」、あるいは「あたし約5.2MB」 - 理系男子の書斎には、どうしても小説が少ない。っていうか無い。 - ファック文芸部

【関係ない話】
 『孫子の兵法』をアマゾンで買って読んでいるが、「しばしば賞するは窘(くる)しむなり」という言葉がタイムリーだと思った。
 将軍がやたらに賞状や賞金を乱発するのは行き詰っている証拠なんだとか。
 芸能人や有名人が何かの賞を受賞したら思い出したい。
[ 投稿者:うえぽん at 21:28 | ブックマークレット | コメント(0) ]

2010年03月06日
FirefoxでCtrl+Aのトリック画像を見るためのブックマークレット
 かなり昔に簡易電子透かし(Ctrl+Aで絵が浮ぶ画像)というエントリーを書きましたが、この手のトリック画像はIE以外では見ることができない欠点があります。
 どうにかFirefoxでも見られないかと考え、いまさらブックマークレットを作ってみました。

 IEのCtrl+Aもどきブックマークレット
 ↑右クリックなどでブックマークすればブックマークレット化できます。

[更新:2010/03/07]1ドットずれることがあるのでドラッグできるようにしました。

 実行するとクライアント領域をメッシュで覆います。
 ドラッグでメッシュを移動することができます。1ドットずれているような場合はそれで調整してください。
 ダブルクリックでメッシュは消せます。

 下はテスト用画像です。


【アマゾンのアフィリエイト】
 舞-HiME COMPLETE [Blu-ray]
 舞-乙HiME COMPLETE [Blu-ray]

【余談】
 3月15日までの期間限定だが、YouTubeで舞-HiMEが1話〜13話の無料配信がされている。
 YouTube - MyHiME さんのチャンネル
 続きが公開されるかは知らない。
[ 投稿者:うえぽん at 22:02 | ブックマークレット | コメント(0) ]

2007年12月06日
選択したテキストをJavaScriptのコードとして実行するブックマークレット
 ブログなんかでJavaScriptのコードを貼り付けてるのがあるが、それをテキスト選択すると実行できるブックマークレットを作ってみた。

 テキスト選択したJavaScriptのコードを実行

 選択テキストを取得してevalで実行しているだけです。一応、try-catchでエラーメッセージも表示させてます。テキストボックスの中のテキストも選択すれば実行できるので、ブログにコードが貼ってある場合はコメント欄のテキストボックスでコードを弄ってその場で実行できたりします。

 下は実験用。
alert('Hello world');

for (var i=1,sum=0; i<=10; i++) sum += i;alert('1-10の合計は\n' + sum);

alert('このページの更新日時は\n' + document.lastModified);
 一応、似たようなブックマークレットがないかググってみたが見つからなかった。まあ、firefoxのアドオンで似たようなのがありそうだもんね。
 作ってみて気付いたが、このブックマークレットが活用できるページは意外と少なかったりする。

【関係ない余談】
 たまにある空の宝箱はミミックの死骸なんだって。
[ 投稿者:うえぽん at 22:58 | ブックマークレット | コメント(0) | トラックバック(0) ]

2007年11月29日
選択範囲を要約する人工無能ブックマークレット(680バイト)
 「圧縮新聞」とか「3行で要約します。 - 3lines.info」とかが流行ってるようなので、JavaScriptで似たようなものを作ってブックマークレット化してみました。


 選択範囲を要約する人工無能ブックマークレット


 マウスでテキストを選択してブックマークレットを実行すれば、選択テキスト部分を学習し、確認ダイアログにて生成した文章を返します。確認ダイアログのOKを押せば再び文章を生成して返してくれます。キャンセルで終了です。
 Ctrl+Aを押せばページ全体を選択するので活用して下さい。(本当は本文を自動取得したかったのですが、面倒なのでこのような仕様にしました)
 あと、フレームを使ったページでは選択テキストを取得できないので動作しません。

 下はテスト用です。
この前、ユニクロでパーカーを購入しました。

そのパーカーを着て先日電車に乗った時、いつものようにウォークマンを
聞こうとイヤホンを耳にしたものの何も聞こえませんでした。
電池が切れたのかとしばらくそのままにしてると、前に座ってる女子高生達が
どうも俺の顔を見て笑ってるような気がしました。
「まぁいつものこと」と思いながら、ふとイヤホンを外すと、
俺がイヤホンだと思ってたものはパーカーのヒモでした。
パーカーのヒモの先っぽの丸結びした部分をずっと耳に入れていたのでした。

その時は何もなかったようにイヤホンに付け替えましたが、
家に帰ったあと、そのパーカーを脱ぎ、しんしんと泣きました。

 仕組みを簡単に解説すると、ただのマルコフ連鎖です。ただし、形態素解析は全くせず、文字数単位でN接頭文字1接尾文字のマルコフ連鎖という風にしています(N-gramというのかな?)。日本語は単語あたりの文字数が少ないので、文字単位でも結構まともな文章を返してくれます。
 接頭文字数はデフォルトでは 3ですが、ソースの頭の部分の「N=3」の数字を増やすと賢くなります。でも 3ぐらいが一番面白味があると思います。

 以下、参考にしたページです。エブログ様のコードをベースに作りました。選択テキスト取得部分はJavaScriptな日々様のまんまです。
 マルコフ連鎖で文章生成(JavaScript) - エブログ
 ワードサラダ技術について :: Drk7jp
 人工無能を作ろう〜マルコフ連鎖(2接頭語と1接尾語の場合)
 livedoor Developers Blog:String::Trigram でテキストの類似度を測る - livedoor Blog(ブログ)
 JavaScriptな日々 | 選択テキストを取得する方法


[追記:2010/11/06]
 479バイトまで縮めてみました。
 ・479バイトの人工無能


【余談】
 タイトルにコードサイズを明記しておけばきっと誰かがもっと短いコードにしてくれるに違いない。
[ 投稿者:うえぽん at 23:36 | ブックマークレット | コメント(0) | トラックバック(0) ]