#!/usr/bin/env perl
#
# dcreal-html.pl :
# スライド画像はめ込み用 html ファイル, ram ファイルを作成する
# Copyright (C) GFD_Dennou_Club, 2001-. All rights reserved.
#
# ●Usage : dcreal-html.pl (引数無し)
#
# ●準備するファイル, 作成されるファイル
#
# (講演者名)
# |-- src/ [準備] 一次製作物置場.
# | |
# | |-- dcreal.conf (必須) dcreal-conf.pl で作成される設定ファイル
# | |
# | |-- img-web/ (必須) 講演資料から作成された画像置き場
# | |
# | |-- GFDseminar_2006_03_31_13_00.trt
# | | (必須) タイミングファイル
# | |
# | |-- GFDseminar_2006_03_31_13_00.rm
# | | (必須) RealMedia ファイル
# | |
# | `-- lecture1.html (任意) レクチャーノート
# |
# `-- pub-web/ [作成] Web ブラウザから閲覧する資料置場
#
#
#== History
#
#These entries is generated by CVS automatically.
#So don't add new information manually.
#(But please adjust old log format to latest log format manually,
#if format gap between them causes).
#
#$Log: dcreal-html.pl,v $
#Revision 1.17 2006/04/11 13:37:08 morikawa
#* pub-web/img-web 以下に, src/img-web の全ての画像のシンボリックリンク
# を作成するのではなく, 講演に必要なものだけをシンボリックリンクするよ
# う修正.
#
#Revision 1.16 2006/04/06 08:07:48 morikawa
#* コメント部に書かれる解説に追記.
#* 履歴情報は CVS log を用いるように修正.
#* ディレクトリ生成時にメッセージを表示するよう修正.
#* pub-web, pub-real 以下の既存の html, smil ファイルを一度綺麗に
# 削除するよう修正.
#
#
#* 2006/04/04 森川靖大 : 設定ファイルの書式変更に伴う修正
#* 2003/09/07 杉山耕一朗: 全面改訂
#* 2002/11/27 小高正嗣: 英語版対応
#* 2001/04/10 杉山耕一朗
#
######################################################################
#Jcode.pm モジュールの読み込み
use Jcode;
use File::Basename;
#文字コード設定
$target_code = "euc";
# 設定ファイルの読み込み
$CONF = 'dcreal.conf';
while (@ARGV) {
last unless ($ARGV[0] =~ /^-/);
$_ = shift;
if (/^-c/) { $CONF = shift; next; };
die "unknown option $_";
}
require "$CONF";
#言語選択
if ($LANG) {
$NAME = $NAME_EN;
$MEMBERSHIP = $MEMBERSHIP_EN;
$TITLE = "\"$TITLE_EN\"";
$PROJECT = $PROJECT_EN;
$HOST = $HOST_EN;
$PLACE = "at $PLACE_EN";
$HTML = "html.en";
$TITLE_MENU1 = "About Lecture";
$TITLE_MENU2 = "List of slides";
$TITLE_MENU3 = "Download";
$TITLE_MENU4 = "How to listen our video";
$LEC_TXT = "Info of Lecturer";
$PHOTO_TXT = "Photo of Lecturer";
$CR_TXT = "Copyright";
$PJ_TXT = "top to the $PROJECT_EN";
$MENU_TXT = $MENU_TXT_EN;
$VD = "video";
$ICON1 = "[video start]";
$ICON2 = "[previous]";
$ICON3 = "[next]";
$ICON4 = "[go to top]";
if ($TOP_EN =~ /^$/){
$TOP = "";
}else{
$TOP = $TOP_EN;
}
}else{
$NAME = $NAME_JP;
$MEMBERSHIP = $MEMBERSHIP_JP;
$TITLE = "「$TITLE_JP」";
$PROJECT = $PROJECT_JP;
$HOST = $HOST_JP;
$PLACE = "於 $PLACE_JP";
$HTML = "html.ja";
$TITLE_MENU1 = "講演について";
$TITLE_MENU2 = "スライド一覧";
$TITLE_MENU3 = "ダウンロード";
$TITLE_MENU4 = "講演を聞くには";
$LEC_TXT = "講演者紹介";
$PHOTO_TXT = "講演者近影";
$CR_TXT = "著作権について";
$PJ_TXT = "$PROJECT_JP top へ";
$MENU_TXT = $MENU_TXT_JA;
$VD = "講演ビデオ";
$ICON1 = "[ビデオ開始]";
$ICON2 = "[前頁]";
$ICON3 = "[後頁]";
$ICON4 = "[表紙へ]";
if ($TOP_JP =~ /^$/){
$TOP = "";
}else{
$TOP = $TOP_JP;
}
}
#格納先ディレクトリ定義
$WEBDIR = "../$WEBDIR";
$RAMDIR = "$WEBDIR/ram";
$IMGDIR_BIG = "$WEBDIR/img-web";
#Web資源格納ディレクトリ作成
unless (-d $WEBDIR) {
print "mkdir $WEBDIR, 0777\n";
mkdir $WEBDIR, 0777;
}
unless (-d $RAMDIR) {
print "mkdir $RAMDIR, 0777\n";
mkdir $RAMDIR, 0777;
}
#画像ディレクトリのリンク
unless (-d $IMGDIR_BIG) {
print "mkdir $IMGDIR_BIG, 0777\n";
mkdir $IMGDIR_BIG, 0777;
}
#表紙ファイルを Web 資源ディレクトリにリンク
if ($TOP !~ /^$/){
$cmd_lnk = "cd $WEBDIR; ln -s ../$SRC/$TOP ./";
print "$cmd_lnk\n";
system($cmd_lnk);
}
#タイミングファイルのオープン, 必要な情報の抽出.
$i = 0;
$e = 0;
while ($TRT_FILES[$e]) {
open (TIMING, "$TRT_FILES[$e]");
$starts[$e] = $i;
while () {
chomp(@_);
#開始時間, OHP 番号, OHP タイトルを別々に保存
$_ =~ /^\s*([0-9]+:[0-9]+:[0-9]+),\s*(\d+)\s*:(.*)$/;
$time[$i] = $1;
$ohp_num[$i] = $2;
($code, $nmatch) = getcode($3);
# print "$code, $nmatch \n";
$ohp_title[$i] = Jcode::convert($3, $target_code, $code);
$ends[$e] = $i;
# print "$time[$i], $ohp_num[$i], $ohp_title[$i] \n";
$i++;
}
$e++;
close (TIMING);
}
#print "@starts \n";
#print "@ends \n";
#ohp_num の最大値
$i = 0;
while ($ends[$i]) {
foreach $e ($starts[$i] .. $ends[$i]) {
$num = sprintf("%03d", $ohp_num[$e]);
push(@tmp, $num);
}
$s1[$i] = shift(@tmp); #開始番号は trt ファイルの最初
@tmp = sort(@tmp);
$s2[$i] = pop(@tmp);
# print "$s1[$i], $s2[$i] \n";
$i++;
undef @tmp;
}
#print "@RM_FILES_SLIDE \n";
# $WEBDIR 以下の 数字 3 桁.$HTML ファイルを削除
print "Cleaning in $WEBDIR/???.$HTML .. ";
opendir DIR, $WEBDIR or die "$dir:$!";
while (my $files_in_webdir = readdir DIR) {
next if $files_in_webdir =~ /^\.{1,2}$/; # '.'や'..'も取れるので、スキップする
if ($files_in_webdir =~ /^[0-9][0-9][0-9]\.$HTML$/) {
unlink "$WEBDIR/$files_in_webdir";
}
}
closedir DIR;
print " done.\n";
# $IMGDIR_BIG 以下の 数字 3 桁.$EXT ファイルを削除
print "Cleaning in $IMGDIR_BIG/???.$EXT .. ";
opendir DIR, $IMGDIR_BIG or die "$dir:$!";
while (my $files_in_webdir = readdir DIR) {
next if $files_in_webdir =~ /^\.{1,2}$/; # '.'や'..'も取れるので、スキップする
if ($files_in_webdir =~ /^[0-9][0-9][0-9]\.$EXT$/) {
unlink "$IMGDIR_BIG/$files_in_webdir";
}
}
closedir DIR;
print " done.\n";
# HTML, RAM ファイルの作成. 重複分は無視.
$i = 0;
$skipped_num = 0;
$| = 1; # print 後にフラッシュ
$ret = "";
print "Making HTML, RAM files in $WEBDIR\n";
while ($ohp_num[$i]) {
# ファイル名の作成
$num = sprintf("%03d", $ohp_num[$i]);
$htmlfile = "$num.$HTML";
$ramfile = "ram/$num.ram";
$e = 0;
while ($ends[$e]) {
if ($i >= $starts[$e]) {
$RM_FILE = "$RM_FILES_SLIDE[$e]";
}
$e ++;
}
# HTML ファイルが存在するかの判定.
unless (-f "$WEBDIR/$htmlfile") {
# メッセージ出力
$ret = "\r" if ($i > 0);
print "${ret} [$i/$#ohp_num] -> $htmlfile, $ramfile ";
print "\n :\n" if ($i == 0);
# RAM ファイルを作成 (HTML が存在しない場合のみ)
open (RAM, ">$WEBDIR/$ramfile");
print RAM "$RTSP_DIR/$RMDIR/smi/$num.smi";
close(RAM);
# 画像ファイルのシンボリックリンクを作成
$cmd_lnk = "cd $IMGDIR_BIG; ln -s ../../$IMGDIR_WEB/$num.$EXT ./";
print "$IMGDIR_BIG/$num.$EXT";
system($cmd_lnk);
#HTML ファイル作成
&print_html($htmlfile, $num);
#メニュー画面用にファイル名, 題名の情報を保管
push (@numbers, $num);
push (@rams, $ramfile);
push (@files, $htmlfile);
push (@titles, $ohp_title[$i]);
push (@RM, $RM_FILE);
} else {
$skipped_num++;
}
$i++;
}
print "\n $skipped_num files are skipped for overlap. ";
print " ... done.\n ";
$| = 0; # デフォルトのバッファリングへ戻す
@tmp = @numbers;
$end = pop(@tmp);
#講演者 URL が空か否かのチェック
if ($LEC_WEB =~ /^$/) {
$LECTURE ="";
}else{
$LECTURE = "$LEC_TXT
";
}
#表紙ファイル名
if ($TOP =~ /^$/){
$num = sprintf("%03d", $ohp_num[0]);
$TOP = "$num.$HTML";
}
# menu ファイル作成
&print_menu();
# index ファイルの作成
&print_index();
#HTML ファイルのリスト部作成
&print_html_list();
print basename($0) . ": Successful \n";
###================================================================
# 目次ファイルの作成
sub print_menu {
open (MENU, "> $WEBDIR/menu.$HTML");
print MENU <
$TITLE
INSERT_SLIDE_LIST
- $MENU_TXT
INSERT_VIDEO_DOWNLOAD