[Bookmarklet 8] Youtubeやニコニコ動画へのリンクを埋め込み型に変換するブックマークレット
前回はブックマークレットで作ったけど、みんなはブックマークレットよりスクリプトの方がいいようですね。あまりブックマークレットは人気がないみたい。
ブックマークレットはブックマークレットでいいところがあると思うのだけどな。
(続きはこちら)
まず、どんな感じかというと、こんな感じ。

※どこぞの公開されている「はてなブックマーク」を開いたところ(許可はとってあります)
要するに、ニコニコ動画をブックマークして、そのページを開いたら埋め込み型に変換してくれるというわけですね。ただのテキストリンクよりは数倍いいと思います(サムネイルよりもいいよね)。
※FC2ブログの仕様上、jsになっているので、ファイル名を”Nico2 embeded converter in Hatena.user.js”に直してください。ごめんなさい。
※Greasemonkey、OperaのUser.jsで動きます。
※下記[追記]参照
まあ、これはソースを見てもらえば分かるのですが、実は、これは「はてなブックマーク」だけじゃなくて、すべてのページで実行可能なものです。ただ、今回はあえて、はてなブックマークに限定しています。
ページのソース
// ==UserScript==
// @name Nico2 "embeded" converter in Hatena
// @author Xenophias supported by Puyo2
// @version 1.0
// @published 2008-01-25
// @description Converted into the "embeded" link in Hatena
// @namespace http://browserjs.blog102.fc2.com/blog-entry-582.html
// @include http://b.hatena.ne.jp/*
// ==/UserScript==
(function(){
var d=document;
var a=d.getElementsByTagName('a');
for(var i=0;i<a.length;i++){
if(/^http:\/\/www\.nicovideo\.jp\/watch/.test(a[i].href)){
var href="http://www.nicovideo.jp/watch/"+a[i].href.match(/sm\d+$/);
var href="http://www.nicovideo.jp/thumb/"+a[i].href.match(/sm\d+$/);
a[i].innerHTML=a[i].innerHTML+"<p></p>"+"<iframe width=312 height=176 src="+href+" scrolling=no style=border:solid 1px #CCC;frameborder=0>"+"<a href=http://www.nicovideo.jp/watch/"+href+"></a>"+a[i].innerHTML+"</iframe>"+"<p></p>";
}
}
})()
その理由は簡単で、私が改造に失敗したからです(笑)。
つまり、このスクリプトは、見ての通り、「http://www.nicovideo.jp/watch/」で動作しますが、<a>リンクは何もニコニコ動画へ直接リンクするものだけではなくて、例えば、はてなブックマークにリンクしたり(例えば、http://b.hatena.ne.jp/ユーザー名/?url=http%3A%2F%2Fwww.nicovideo.jp%2F〜とか)、他にもいろいろとリンクする場所はあるわけで、不幸にもそういうリンクに出会った場合、当然そういうリンクにも反応してしまい、埋め込み型が2つとかできる場合が存在します。つまり、他のサイトで使うと不都合がある場合もあるかもしれないから一般用にはできないというわけですね。
まあ、del.icio.usなんかは単純なので、実はこれでもいけたりしますが、できればこの限定は外したいですよね。
というわけで、既に<embed>されたものは無視するというスクリプトを作ろうとして、いろいろと試行錯誤したのですが、これがなかなか上手くいかない。
要素をとってきて、
var embed=d.getElementsByTagName('embed');
こんな感じで、
if(/http:\/\/www\.nicovideo\.jp\/watch/.test(embed[j].src)){
var src="http://www.nicovideo.jp/watch/"+embed[j].src.match(/sm\d+$/);
srcの値をゴニョゴニョしてもどうも上手くいかないのです。
(書いている途中で、むしろ、ニコ動のリンクの正規表現を変えればいい気もしてきた)
まあ、ぶっちゃけていえば、もう何時間も試行錯誤して、苛立ちも限界にきたので、暫定的に公開してみたというわけです(ストレスも限界)。
これは要するに、とどのつまり私の能力不足なのですが(笑)、初心者ならこんなもんでしょう。(初心者をたてに逃げる私)
さて、そろそろ、本でも買ってくるか。
(お薦めの本ってある?)
※まあ、そういうリンクのあるサイトはそうないので、これの改訂版が出るまで待てないという人は(作るかどうかも分からないけど)
// @include http://b.hatena.ne.jp/*
を
// @include http://*
に変えて使用してもさしたる影響はないと思います。
(言うまでもありませんが、この場合、すべてのページに適用されます)
おまけ
Operaな人向けに書いた、非常に微妙なアイディアである、
Opera:Tips 15 -Operaのブックマーク機能をさらに頑張って使ってみた
に対応させるためには、
// @include file://localhost/*
を加えるといいかも(笑)。
追記
バージョンアップ版を公開しました。
Browser.js [共通 8] [Script4] どこでもニコニコ動画のサムネイル(埋め込み)を表示するスクリプト
|
各種ソーシャルブックマーク:
|
































