CentOS 5.4にfoltiaを導入する

前々回前回を経て、やっとfoltiaをインストールするためのメモ。いろいろミスったポイントもそのまま残しておく。

目次
  1. foltiaのダウンロード
  2. WEB関連、DB関連ソフトのインストール
  3. 各種設定ファイルの編集
  4. データベースの作成
  5. 完成?
  6. 最後に

foltiaのダウンロード

Subversionfoltiaをダウンロード。ここではtmpというフォルダを作って、そこに資材をダウンロードしている。後でperlphpのフォルダを/home/foltia/配下にコピーしておく。

[foltia@foltiadev tmp]$ svn co http://svn.dcc-jpl.com/foltia/trunk foltia
A    foltia/doc
A    foltia/doc/CHANGES.txt
A    foltia/doc/index.html

〜(以下、中略)〜

A    foltia/install/mktable.sqlite.txt
A    foltia/install/mktable.txt
リビジョン 100 をチェックアウトしました。

[foltia@foltiadev tmp]$ cp -r foltia/install/php/* /home/folta/php/

[foltia@foltiadev tmp]$ cp -r foltia/install/perl/* /home/foltia/perl/

ついでにtool配下にシンボリックリンクを作成しておく。MP4Boxはリンクをはっておかないと動かない。recpt1は不要かもしれないが、念のため。

[foltia@foltiadev tmp]$ cd /home/foltia/perl/tool/

[foltia@foltiadev tool]$ ln -s /usr/local/bin/recpt1 recpt1

[foltia@foltiadev tool]$ ln -s /usr/local/bin/MP4Box MP4Box

WEB関連、DB関連ソフトのインストール

[foltia@foltiadev ~]$ su -
パスワード:

[root@foltiadev ~]# yum install httpd php php-pear php-mbstring php-pdo
〜(ログは省略)〜

[root@foltiadev ~]# yum --enablerepo=dag install perl-DBD-SQLite perl-CPAN sqlitemanager perl-DBI
〜(ログは省略)〜

[root@foltiadev ~]# pecl install pdo
〜(ログは省略)〜

続けて、CPANのインストール、設定を行う。

[foltia@foltiadev ~]$ perl -MCPAN -e shell

/home/foltia/.cpan/CPAN/MyConfig.pm initialized.
〜(ログは省略)〜

cpan> install LWP

cpan> install Time::HiRes

cpan> install Schedule::At

cpan> install Jcode

cpan> q

各種設定ファイルの編集

編集する必要のあるファイルはhttp.conf、foltia.conf、foltia_conf1.pl、foltia_config2.phpの4つ。

httpd.conf
[root@foltiadev ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org

[root@foltiadev ~]# vi /etc/httpd/conf/httpd.conf 

修正ポイントは2つ。

# User apache
User foltia

# AddDefaultCharset UTF-8
AddDefaultCharset off

foltia.conf

foltia.confは新規作成になる。

[root@foltiadev ~]# vi /etc/httpd/conf.d/foltia.conf

Alias /foltia/ “/home/foltia/php/”

最後に、httpdを起動。また、電源オン時にデフォルトで起動するように設定しておく。

[root@foltiadev ~]# service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

[root@foltiadev ~]# chkconfig httpd on

[root@foltiasrv ~]# exit
logout
foltia_conf1.pl

次にperl関連の設定。ここの設定1:perl/foltia_conf1.plを見ながら編集する。

[foltia@foltiadev ~]$ cp perl/foltia_conf1.pl.template perl/foltia_conf1.pl

[foltia@foltiadev ~]$ vi perl/foltia_conf1.pl

ここは環境に応じて設定する。これまでの記事の通りに設定している場合、ほとんど編集する必要がない。$recunitsはアナログチューナーの搭載数であり、PT2はカウントしないので注意。

foltia_config2.php

続けてfoltia_config2.phpを編集する。これもここの設定2:php/foltia_config2.phpを見ながら編集。

[foltia@foltiadev ~]$ cp php/foltia_config2.php.template php/foltia_config2.php

[foltia@foltiadev ~]$ vi php/foltia_config2.php

基本的にデフォルトのままでOKのはず。

データベースの作成

SQLiteでデータベースを作成する。放送局の設定は各自の環境に合わせて設定が必要なので、mktable.txtを編集する。編集に必要なのは地デジの物理チャンネルと、ONTV JAPANのチャンネルコードが必要になるので、下記のサイトを参考に作成した。

マスプロ 地デジ・地上デジタル放送向けチャンネル一覧表
http://www.maspro.co.jp/digi_broad/channel.html

ONTV JAPAN 操作ガイド・チャンネルコード 一覧
http://www.ontvjapan.com/help/ch_code.php


ちなみに、自分の環境(大阪)はこんな感じになる。

INSERT INTO foltia_station VALUES (1, 'NHK総合', 1, 'NHK', '', NULL, NULL, NULL, '0501.ontvjapan.com',24,0);
INSERT INTO foltia_station VALUES (3, 'NHK教育', 3, 'ETV', '', NULL, NULL, NULL, '0502.ontvjapan.com',13,0);
INSERT INTO foltia_station VALUES (472, 'ytv', 0, NULL, NULL, NULL, NULL, NULL, '0507.ontvjapan.com',14,0);
INSERT INTO foltia_station VALUES (390, 'サンテレビジョン', 0, '', '', NULL, NULL, NULL,'0509.ontvjapan.com',26,0);
INSERT INTO foltia_station VALUES (398, 'テレビ大阪', 0, '', '', NULL, NULL, NULL,'0513.ontvjapan.com',18,0);
INSERT INTO foltia_station VALUES (399, 'ABCテレビ', 0, '', '', NULL, NULL, NULL,'0505.ontvjapan.com',15,0);
INSERT INTO foltia_station VALUES (402, '関西テレビ', 0, '', '', NULL, NULL, NULL,'0506.ontvjapan.com',17,0);
INSERT INTO foltia_station VALUES (406, 'MBS毎日放送', 0, '', '', NULL, NULL, NULL,'0504.ontvjapan.com',16,0);

以上の編集をしたmktable.txtをmktable_osaka.txtとして、SQLiteでデータベースを作成する。初期状態では下記のようなエラーが出力されるが、気にしなくてOK。

[foltia@foltiadev ~]$ sqlite3 /home/foltia/foltia.sqlite < mktable.sqlite_osaka.txt 
SQL error: no such table: foltia_program
SQL error: no such table: foltia_subtitle
SQL error: no such table: foltia_tvrecord
SQL error: no such table: foltia_epg
SQL error: no such table: foltia_m2pfiles
SQL error: no such table: foltia_mp4files
SQL error: no such table: foltia_station
SQL error: no such table: foltia_envpolicy

作成されているか確認したい場合は直接SQLで表示してみるといい。

[foltia@foltiadev ~]$ sqlite3 foltia.sqlite 
SQLite version 3.3.6
Enter ".help" for instructions

sqlite> select * from foltia_station;
0|[全局]|0||||||||
1|NHK総合|1|NHK|||||0501.ontvjapan.com|24|0
3|NHK教育|3|ETV|||||0502.ontvjapan.com|13|0
101|NHK-BS1|0|BS7|||101||3001.ontvjapan.com|101|1
102|NHK-BS2|0|BS11|||102||3002.ontvjapan.com|102|1
103|NHK-BShi|0||||103||3003.ontvjapan.com|103|1
161|BS-TBS|0||||161||3006.ontvjapan.com|161|1
191|WOWOW|0|BS5|||191||3009.ontvjapan.com|191|1
〜(以下、省略)〜

sqlite> .q

最後に、しょぼいカレンダーから取得した情報を作成したデータベースに反映させる。

[foltia@foltiadev ~]$ perl/getxml2db.pl long

取得完了後、データベースに登録されているか確認してみるとよい。SQLコマンドで

sqlite> select * from foltia_program;

で、番組情報が出力されればOK。
最後に、情報を定期的に取得するように、cronに設定する。

[foltia@foltiasrv ~]$ crontab -e

7 * * * * /home/foltia/perl/schedulecheck.pl >/dev/null 2>&1
1 0 * * * /home/foltia/perl/cron_foltia_dayly.sh >/dev/null 2>&1

完成?

以上で完成・・・と言いたいところだが、実は2点問題がある。

EPG番組表が取得できない

こことかここを見て、epmdumpとtv_grab.plを使って番組情報を取得している。気が向いたら別記事にして残しておこうと思う。

folcastが動作しない

foltiaの重要な機能であるPodcastへの登録がうまくいかなかった。SQLでエラーをはいていた。

SELECT  foltia_program.tid,foltia_program.title,
foltia_subtitle.countno , foltia_subtitle.subtitle , foltia_subtitle.startdatetime,
foltia_subtitle.pspfilename,foltia_subtitle.lengthmin,foltia_subtitle.enddatetime
FROM foltia_subtitle , foltia_program   WHERE \"pspfilename\" LIKE 'M%%'  AND 
foltia_program.tid = foltia_subtitle.tid ORDER BY \"enddatetime\" DESC 
Offset 0 limit  ?

これの最後「offset 0 limit ?」 を「limit ? offset 0」に順序を変更することでSQLコマンドは通るようになり、folcastが動作した。

最後に

以上、これでfoltiaが動作するようになった。foltiaは環境を構築するまでは非常に苦労するが、一度できてしまうとどんどん録画してくれるので非常に便利。録画→エンコードPodcastiPhoneというシームレスな動作は一度体験してしまうと離れられないと言える。今後はこのしくみを基本として、EPG番組表の検索やシリーズ録画にも対応できれば、アニメだけでなく、全番組に対応した最強の録画サーバになるのではないかと思う。foltia雑感もそのうちまとめて記載しておくつもり。