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/