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; };
とりあえず半角下線に変換してみた。当分これで様子を見てみようと思う。