あおしまの日記

あおしまさんの日記らしいです。個人的に興味がある事を時々書きます。スマートウォッチPebble日本語パックを作成、公開しています。

chinachuでRegzaが扱えないファイル名文字を予め変換

Regzaがsambaサーバーにアクセスした際、ファイル名にある特定の文字があると番組リストの生成が落ちる問題がある。epgrecの時にも下記の工夫を施した事がある。

http://d.hatena.ne.jp/aoshimak/20110418

chinachuになって興味ある番組をホイホイ録っていたら既視感のある問題が出て来たので対策を考えた。具体的にはFOOTxBRAINの全角バツと、A-Studioの全角ハイフン(演算記号のヒクかもしれない)が引っかかる。あとは過去の経験から全角チルダ〜も駄目なので、この3つをとりあえずエスケープしようと考えた。

node.jsのコードなんか読んだ事も書いた事も無いし、オブジェクト指向がよくわからないながらも、ここだろうと思われるコードをchinachu-comon.jsの中に見つけた。有難い事に既にHTMLタグらしき物をエスケープしているので、それに便乗してファイル名をエスケープしているフィルタにコードを追加した。

// strip
exports.stripFilename = function (a) {
        
        a = a.replace(/\//g, '/').replace(/\\/g, '\').replace(/:/g, ':').replace(/\*/g, '*').replace(/\?/g, '?');
        a = a.replace(/"/g, '”').replace(//g, '>').replace(/\|/g, '|').replace(/≫/g, '>>');
        a = a.replace(/〜/g, '_').replace(/−/g, '_').replace(/×/g, '_');
        
        return a;
};

とりあえず半角下線に変換してみた。当分これで様子を見てみようと思う。