MediaTomb奮闘記4〜仕分け〜
いろいろいじっているうちにやっと使えるようになってきましたが、
すべてのファイルがVideoコンテナの直下に登録されてしまう
という問題に直面しました。
コンテナの構成の変更や階層化は、web UIでは行えません。
おそらくデータベースの中身を直接書き換えれば
変更できると思われるのですが、しかし…
昔ちょっとかじったDBはMySQLですし、仮にMySQLを使ったとしても
登録のたびに書き換えるのは非常に面倒です。
でもMediaTombには、これらを解消するとても玄人好みな仕掛けが
用意されていました。
web UIからの登録や定期スキャンでの登録の際に、JavaScriptを
呼び出すことができ、これを使って振り分けに法則性を持たせる
ことができるのです。
この機能を使うには、まず、
conf.xmlを編集し仮想コンテナスクリプト(JavaScript)を有効化します。
この設定を行った場合(デフォルトでは)、
を実行するようになります。
後は、このimport.jsを自分好みに書き換えていけばOKです。
(編集の前に、必ずバックアップを取っておきましょう。)
動画関連はaddVideo(obj)関数です。
動画ファイルが置いてあるフォルダ名を仮想コンテナとして登録し、
その中に動画ファイルが登録されるようにしてみます。
※注意!下記ソースはある問題を含んでいます。
コピペする方は最後まで読んでからお願いします!
これで、試しに動画ファイルを登録してみると、期待通りに
Video/フォルダ名/動画ファイル.avi
といった感じの階層構造が作られるようになりました。
ところが。
日本語のフォルダ名の中にあるファイルを登録した瞬間…
AV-LS300DWからVideoコンテナ以下にアクセス不能になってしまいました。
web UIで仮想コンテナのプロパティを見てみると…
仮想コンテナ名が文字化けしていました。これが原因のようです。
これを試しにweb UIから上書き(日本語でもOK)したら、
Videoコンテナ以下にアクセスできるようになり、また、
仮想コンテナ名もちゃんと日本語で表示されるようになりました。
これで問題無しなのですが、ちょっと美しくないですねぇ…。
この問題を解決すべく、さらにもがきはつづく。
〜つづく〜
#07/06/26現在、未だにこの現象は解消できていません。
#うちのサーバはeuc-jp環境ですが、UTF-8なら問題無しだったりして…
↑
johnさんのコメントを引用。
すべてのファイルがVideoコンテナの直下に登録されてしまう
という問題に直面しました。
コンテナの構成の変更や階層化は、web UIでは行えません。
おそらくデータベースの中身を直接書き換えれば
変更できると思われるのですが、しかし…
昔ちょっとかじったDBはMySQLですし、仮にMySQLを使ったとしても
登録のたびに書き換えるのは非常に面倒です。
でもMediaTombには、これらを解消するとても玄人好みな仕掛けが
用意されていました。
web UIからの登録や定期スキャンでの登録の際に、JavaScriptを
呼び出すことができ、これを使って振り分けに法則性を持たせる
ことができるのです。
この機能を使うには、まず、
conf.xmlを編集し仮想コンテナスクリプト(JavaScript)を有効化します。
<virtual-layout type="js">
この設定を行った場合(デフォルトでは)、
/usr/local/share/mediatomb/js/import.js
を実行するようになります。
後は、このimport.jsを自分好みに書き換えていけばOKです。
(編集の前に、必ずバックアップを取っておきましょう。)
動画関連はaddVideo(obj)関数です。
動画ファイルが置いてあるフォルダ名を仮想コンテナとして登録し、
その中に動画ファイルが登録されるようにしてみます。
※注意!下記ソースはある問題を含んでいます。
コピペする方は最後まで読んでからお願いします!
function addVideo(obj)
{
var desc = obj.location;
var arr = desc.split('/');
var u_path = arr[arr.length -2];
var chain = new Array('Video', u_path);
addCdsObject(obj, createContainerChain(chain));
}
これで、試しに動画ファイルを登録してみると、期待通りに
Video/フォルダ名/動画ファイル.avi
といった感じの階層構造が作られるようになりました。
ところが。
日本語のフォルダ名の中にあるファイルを登録した瞬間…
AV-LS300DWからVideoコンテナ以下にアクセス不能になってしまいました。
web UIで仮想コンテナのプロパティを見てみると…
仮想コンテナ名が文字化けしていました。これが原因のようです。
これを試しにweb UIから上書き(日本語でもOK)したら、
Videoコンテナ以下にアクセスできるようになり、また、
仮想コンテナ名もちゃんと日本語で表示されるようになりました。
これで問題無しなのですが、ちょっと美しくないですねぇ…。
この問題を解決すべく、さらにもがきはつづく。
〜つづく〜
#07/06/26現在、未だにこの現象は解消できていません。
#うちのサーバはeuc-jp環境ですが、UTF-8なら問題無しだったりして…
↑
johnさんのコメントを引用。
sambaでunix charset = UTF-8としてmediatomb関係をUTF-8で統一しておくと、日本語フォルダ名でも問題なく使えています。
コメント
まずimport.jsの文字コード調べるのが先ではw
インストールしたままだと、ascii文字しかないので、特に決まってなかったです。
ちなみにjsソースにUTF-8で直に書いた漢字は文字化けせずに登録できました。
まーこの辺は次回に書きますゆえ、お待ちくださいw
ちなみにjsソースにUTF-8で直に書いた漢字は文字化けせずに登録できました。
まーこの辺は次回に書きますゆえ、お待ちくださいw
これまでvideo関係はmysqlをテコテコ手で書き直していました。
有益な情報ありがとうございます。
sambaでunix charset = UTF-8としてmediatomb関係をUTF-8で統一しておくと、日本語フォルダ名でも問題なく使えています。
meta情報はcp932ですが。
AV-LS300DWとWindowsからしかアクセスしないと割り切れば、これで運用できます。
有益な情報ありがとうございます。
sambaでunix charset = UTF-8としてmediatomb関係をUTF-8で統一しておくと、日本語フォルダ名でも問題なく使えています。
meta情報はcp932ですが。
AV-LS300DWとWindowsからしかアクセスしないと割り切れば、これで運用できます。
To: johnさん
MediaTombネタにコメントがつくと嬉しいです。
やはりUTF-8だとうまくいくんですねー。
うまくいくならOS入れ替えまで考えてましたが、
sambaで共有しているフォルダだけUTF-8にすればいいんですね。なるほど。
情報ありがとうございます!
MediaTombネタにコメントがつくと嬉しいです。
やはりUTF-8だとうまくいくんですねー。
うまくいくならOS入れ替えまで考えてましたが、
sambaで共有しているフォルダだけUTF-8にすればいいんですね。なるほど。
情報ありがとうございます!
日本語のフォルダ名の文字化け
パス名をそのまま使うのではなく、
var u_path = f2i(arr[arr.length -2]);
と、f2i(filesystemの文字コード→内部コード変換のためのmediatombの組み込み関数)で文字コード変換してやれば良さそうですよ。
文字コード変換にはあと、p2i(playlist用), m2i(metadata用)などがあるようです。
Re:日本語のフォルダ名の文字化け
おお!mediatombにこんな便利な組み込み関数があったんですね。
情報ありがとうございます。
他にもいろいろと使えそうですね。id3タグの漢字コードがばらばらなmp3ファイル群とか。
情報ありがとうございます。
他にもいろいろと使えそうですね。id3タグの漢字コードがばらばらなmp3ファイル群とか。
コメントの投稿
トラックバック
http://allegro.dtiblog.com/tb.php/26-cfc0008f


