2008-03-06
_ Plagger::Plugin::Filter::FetchNicoVideo でニコニコ動画(SP1) H.264 形式対応
2008-03-07 追記:Plagger::Plugin::Filter::FetchNicoVideo でニコニコ動画(SP1)対応(2)でニコニコムービーメーカにも対応した形に変更しています.
ニコニコ動画が H.264 に対応したので,Plagger::Plugin::Filter::FetchNicoVideo で FLV と H.264 を判別するようにしてみました.H.264 の動画は拡張子が mp4 でダウンロードするようにしています.とりあえず diff だけ.
Index: FetchNicoVideo.pm =================================================================== --- FetchNicoVideo.pm (revision 7529) +++ FetchNicoVideo.pm (working copy) @@ -73,8 +73,12 @@ if ( $self->conf->{filename_encode} ) { Encode::from_to( $filename, "utf-8", $self->conf->{filename_encode} ); } - my $path = File::Spec->catfile( $self->conf->{dir}, $filename . ".flv" ); + $enclosure->url =~ m!^http://[^/]+(?:smilevideo|nicovideo)\.jp/smile\?(v|m)=(?:[^.]+)\.\d+(?:low)?!; + my $ext = $1 eq 'v' ? 'flv' : 'mp4'; + + my $path = File::Spec->catfile( $self->conf->{dir}, $filename . ".$ext" ); + unless ( -e $path ) { #access video page $ua->get("http://www.nicovideo.jp/watch/$video_id"); @@ -112,6 +116,7 @@ if ($res->header('Content-Length') ) { $enclosure->length( $res->header('Content-Length') ); } + $enclosure->type( Plagger::Util::mime_type_of($path) ); $entry->add_enclosure($enclosure); }
これまでだと,ダウンロードした FLV を MP4 に変換という部分が,H.264 動画の場合は必要ないこともあるかと思うので,enclosure の type を見るようにすると,振り分けることが可能です.config.yaml の一部はこんな感じ.
- module: Filter::FFmpeg rule: - expression: $args->{entry}->enclosure->type eq "video/x-flv"
つづき: 2008-03-07