YouTube で用意されたHTMLタグを記述することで、ページにビデオコンテンツを埋め込むことができます。RakuRakuYouTube を使うと、このHTMLタグを簡単に生成することができます。
MovableType のエントリ編集画面において、ビデオを埋め込みたい箇所に以下のように記述します。
<youtube v="kFgXEkzMq7A">
v
はビデオコンテンツの識別番号で、YouTube のパーマリンクURLに含まれる値と同じです。保存すると YouTube の HTML テンプレートと同じ内容が展開されます。
以下のソースコードを RakuRakuYouTube.pl などの名前でMovableType の plugins ディレクトリの下に作成します。その後、管理画面のプラグイン一覧に RakuRakuYouTubeプラグインが表示されていることを確認してください。
package MT::Plugin::OMV::RakuRakuYouTube; use strict; ### RakuRakuYouTube - Easy way to embed the HTML tag for YouTube ### Original Copyright (c) 2006 Piroli YUKARINOMIYA ### Open MagicVox.net - http://www.magicvox.net/ ### @see http://www.magicvox.net/archive/2006/12182048/ ### Set 1 where you would like to enable the plugin's funtion use constant USE_IN_TEXT => 1; use constant USE_IN_TEXT_MORE => 1; use constant USE_IN_EXCERPT => 0; use constant USE_IN_KEYWORD => 0; ######################################################################## use MT; use MT::Entry; use vars qw( $MYNAME $VERSION ); $MYNAME = 'RakuRakuYouTube'; $VERSION = '1.01'; use base qw( MT::Plugin ); my $plugin = new MT::Plugin ({ name => $MYNAME, version => $VERSION, author_name => 'Piroli YUKARINOMIYA', author_link => "http://www.magicvox.net/?$MYNAME", doc_link => "http://www.magicvox.net/archive/2006/12182048/?$MYNAME", description => <<HTMLHEREDOC, Give you an easy way to embed the HTML tags for <a href="http://www.youtube.com/">YouTube</a> HTMLHEREDOC }); MT->add_plugin ($plugin); sub instance { $plugin } ### Defaut size of an embedded object use constant DEFAULT_WIDTH => 425; use constant DEFAULT_HEIGHT => 350; ### Register callback MT::Entry->add_callback ('pre_save', 9, $plugin, &mt_you_tube); sub mt_you_tube { my ($cb, $obj) = @_; $obj->text (_process_tag ($obj->text)) if USE_IN_TEXT; $obj->text_more (_process_tag ($obj->text_more)) if USE_IN_TEXT_MORE; $obj->excerpt (_process_tag ($obj->excerpt)) if USE_IN_EXCERPT; $obj->keyword (_process_tag ($obj->keyword)) if USE_IN_KEYWORD; 1; } ### Process around all <youtube> tags in contents sub _process_tag { my ($buf) = @_; while ($buf =~ m!<$?s*youtube([^$>]*)$?>!si) { my $matched = $&; my $default_width = DEFAULT_WIDTH; my $default_height = DEFAULT_HEIGHT; my $v = undef; # Retrieving params my %param = {}; foreach my $pair (split /s+/, $1) { my ($key, $value) = $pair =~ m!([^=]+)=["']?([^"']*)["']?!;#"' $param{$key} = $value if defined $key && $key ne ''; } # 'v' param must be required next unless defined ($v = $param{v}); # 'size' param if (defined $param{size}) { my ($percentage) = $param{size} =~ m!(d+)%?!; $default_width = int ($default_width * $percentage / 100.); $default_height = int ($default_height * $percentage / 100.); } # 'height' 'width' params are prior to 'size' param $default_width = int ($param{width}) if defined $param{width}; $default_height = int ($param{height}) if defined $param{height}; # Generate output from template my $template =<<HTMLHEREDOC; <object width="$default_width" height="$default_height"> <param name="movie" value="http://www.youtube.com/v/$v"></param> <param name="wmode" value="transparent"></param> <embed src="http://www.youtube.com/v/$v" type="application/x-shockwave-flash" wmode="transparent" width="$default_width" height="$default_height"></embed> </object> HTMLHEREDOC $template =~ s![ ]!!g;# chop $buf =~ s!Q$matchedE!$template!; } $buf; } 1; __END__ ######################################################################## 2006/12/18 1.00 初版公開
典型的なコールバックプラグインです。エントリの保存イベントにフックして、本文、追記などのテキスト内容に対して置換を行なっています。同様の仕組みで Google Videoにも対応できると思います。
v
[必須]size="(数値)%"
width="(数値)"
height="(数値)"
size
による指定に優先します。このパラメータは省略できます。
毎度毎度、<youtube>
タグを入力するのさえも億劫な方のために
お助けブックマークレットを用意してみました。
ブックマークレットを使うくらいなら、YouTubeのページに用意されたHTMLをそのまま持ってくる方が早いという話しも…
寄せられたコメント (全 1 件中、最新 5 件まで表示しています)
ひとつ疑問点です。
再構築するたびに、動画が消えてしまいます。
なぜでしょうか?
http://www.rbell.co.jp/blog/bob/