MovableType で GoogleVideo を簡単に埋め込む:RakuRakuGoogleVideo

Posted by
ぴろり
Posted at
2006/12/20 23:11
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
プラグイン カテゴリ

 Google Videoで用意されたHTMLタグを記述することで、ページにビデオコンテンツを埋め込むことができます。RakuRakuGoogleVideo を使うと、このHTMLタグを簡単に生成することができます。姉妹品RakuRakuYouTubeのGoogleVideo版です。

この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  

使い方

 MovableType のエントリ編集画面において、ビデオを埋め込みたい箇所に以下のように記述します。

<gglvideo docid="-9071097051005209009">

 docid はビデオコンテンツの識別番号で、Google Video のパーマリンクURLに含まれる値と同じです。保存すると Google Video の HTML テンプレートと同じ内容が展開されます。

ソースコード

 以下のソースコードを RakuRakuGoogleVideo.pl などの名前でMovableType の plugins ディレクトリの下に作成します。その後、管理画面のプラグイン一覧に RakuRakuGoogleVideoプラグインが表示されていることを確認してください。

最新版のダウンロードやバグレポートはRakuRakuGoogleVideo の trac レポジトリでも行っています。

package MT::Plugin::OMV::RakuRakuGoogleVideo;
use strict;
### RakuRakuGoogleVideo - Easy way to embed the HTML tag for Google Video
###         Original Copyright (c) 2006 Piroli YUKARINOMIYA
###         Open MagicVox.net - http://www.magicvox.net/
###         @see http://www.magicvox.net/

### 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 = 'RakuRakuGoogleVideo';
$VERSION = '1.00';

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/?$MYNAME",
        description => <<HTMLHEREDOC,
Give you an easy way to embed the HTML tags for <a href="http://video.google.com/">Google Video</a>
HTMLHEREDOC
});
MT->add_plugin ($plugin);

sub instance { $plugin }

### Defaut size of an embedded object
use constant DEFAULT_WIDTH =>           400;
use constant DEFAULT_HEIGHT =>          326;

### Register callback
MT::Entry->add_callback ('pre_save', 9, $plugin, &mt_google_video);
sub mt_google_video {
    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 <gglvideo> tags in contents
sub _process_tag {
    my ($buf) = @_;

    while ($buf =~ m!<$?s*gglvideo([^$>]*)$?>!si) {
        my $matched = $&;
        my $default_width = DEFAULT_WIDTH;
        my $default_height = DEFAULT_HEIGHT;
        my $docid = undef;

        # Retrieving params
        my %param = {};
        foreach my $pair (split /s+/, $1) {
            my ($key, $value) = $pair =~ m!([^=]+)=["']?([^"']*)["']?!;#"'
            $param{$key} = $value if defined $key && $key ne '';
        }
        # 'docid' param must be required
        next
            unless defined ($docid = $param{docid});
        # '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;
<embed style="width:${default_width}px; height:${default_height}px;" id="VideoPlayback"
 type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=${docid}&hl=en" flashvars="">
</embed>
HTMLHEREDOC
        $template =~ s![
]!!g;# chop
        $buf =~ s!Q$matchedE!$template!;
    }
    $buf;
}

1;
__END__
########################################################################
2006/12/20  1.00    初版公開

パラメータ

docid [必須]
ビデオを識別するためのパラメータです。必須です。
size="(数値)%"
元のサイズに対する割合を指定できます。このパラメータは省略できます。
width="(数値)"
height="(数値)"
ビデオの縦横サイズ(ピクセル)を指定できます。 size による指定に優先します。このパラメータは省略できます。
この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  



関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。