EPGStationで録画、plexmediaserverで視聴している人へ送るscript
<2023年9月15日> 新たに、エンコード終了時に起動するjavascriptを作成しました。 以下提供するjavascriptをお使いください。
この記事で提供するjavascriptは使わないでください。 TSファイルが自動的に削除できない、EPGStationに録画の履歴が残らないなどの副作用があります。
plexmediaserverは、録画した映画、ドラマ、アニメの視聴に便利な環境を提供してくれます。また、音楽も自己所有のライブラリを管理・再生するために便利な環境を提供してくれます。
今回公開するscriptはJavaScriptで書かれ、録画されたTSファイルをmp4に変換する際に使われます。
提供するscriptの目的は、EPGStationで録画されmp4に変換された、映画・ドラマ・アニメのファイル名を修正することで、plexmediaserverで最適化された表示ができるようになります。具体的に言えば、映画・ドラマ・アニメの情報(あらすじ、キャスト、製作年、話数など)とリンクして表示ができます。
ただし、一つ重大な欠点があります。
「その欠点とは、名前を変更したmp4ファイルはEPGStationの管理下からはずれ、EPGStationから見えなくなることです。」
plexmediaserverだけでなく、EPGStationも併用して視聴している人は、このscriptを利用できません。
このscriptは、plexmediaserverで映画・ドラマ・アニメを視聴している人のためにあります。
映画のファイル名
plexmediaserverは、ファイル名で映画データベースと自動マッチングして、映画の様々な情報をリンクして表示してくれます。
映画のポスター一覧で表示が可能で、各映画の詳細表示もあります。
自動的に映画をマッチングするためには、ファイル名が正確な映画タイトルで始まる必要があります。
今回作成したscriptでは、ファイル名から余計な文字を除き、映画タイトルだけをファイル名にすることが可能です。
ドラマ・アニメのファイル名
plexmediaserverは、ドラマ・アニメデータベースと自動マッチングして、ドラマ・アニメの様々な情報をリンクしてくれます。
ドラマ・アニメの一覧表示が可能で、各ドラマ・アニメの詳細表示もあります。
自動的にドラマやアニメをマッチングするためには、ファイル名にseason-based notationを埋め込む必要があります。「sXXeXX」の表示形式で、シーズンとエピソードを指定します。
例えば、シーズン1でエピソード5とすれば、「S01E05」あるいは「s1e5」などの表記になります。この表記をファイル名に埋め込めば、認識できます。ドラマやアニメのタイトルは、フォルダ名で認識します。ルールを作成した時に、トランスコードしたmp4の保存先のフォルダ名をドラマ・アニメのタイトルに設定してください。
今回作成したscriptでは、「第1話」「#3」「(5)」などの文字列を検出して、表記を追記します。
また、新たなシーズンやエピソードを表す表記が出てきた場合は、scriptに簡単に追加することが可能です。
提供するscript
今回提供するscriptは、Dockerコンテナ版docker-mirakurun-epgstationをインストールした状態で使います。
docker-mirakurun-epgstation配下のepgstation/configを開きます。
enc.jsをコピーしてenc-acd.jsと名前を付けてください。(acdは、AnimeCinemaDramaの略です。)
enc-acd.jsを開いて編集します。
const spawn = require('child_process').spawn; const execFile = require('child_process').execFile; const ffmpeg = process.env.FFMPEG; const ffprobe = process.env.FFPROBE; const input = process.env.INPUT; //const output = process.env.OUTPUT; const isDualMono = parseInt(process.env.AUDIOCOMPONENTTYPE, 10) == 2; //const args = ['-y']; const args = ['-ss','5','-y'];
「const output =」の行をコメントアウトします。
「const args = [‘-y’];」を「const args = [‘-ss’,’5′,’-y’];」に変更します。
次に、以下のコードを先程の修正の後に追加します。
const media = process.argv[2]; const specifiedseason = process.argv[3]; const tempoutput = process.env.OUTPUT; var output = tempoutput; if (media == 'animedrama') { output = addnotation(tempoutput, specifiedseason); } else if (media == 'cinema') { output = getcinematitle(tempoutput); }; //映画タイトル抽出関数 function getcinematitle(title) { let cdata = [ [/シネマ「(.+)」/, /シネマ「(.+)\.mp4/], [/午後エンタ 午後ロード「(.+)」/, /午後エンタ 午後ロード「(.+)\.mp4/], [/金曜ロードショー「(.+)」/, /金曜ロードショー「(.+)\.mp4/], [/サタ☆シネ「(.+)」/, /サタ☆シネ「(.+)\.mp4/], [/シネマクラッシュ『(.+)」/, /シネマクラッシュ『(.+)\.mp4/], [/土曜洋画劇場 「(.+)」/, /土曜洋画劇場 「(.+)\.mp4/], [/日曜ロードショー 映画「(.+)」/, /日曜ロードショー 映画「(.+)\.mp4/], [/日曜アニメ劇場 「(.+)」/, /日曜アニメ劇場 「(.+)\.mp4/], [/よる8銀座シネマ (.+)\.mp4/, /よる8銀座シネマ (.+)\.mp4/], [/日曜ゴールデンシアター (.+)\.mp4/, /日曜ゴールデンシアター (.+)\.mp4/] ]; for (let i of cdata) { if (i[0].test(title)) { let name = title.match(i[0]); title = title.replace(i[1], name[1]); title = title + '.mp4'; break; }; }; return title; }; //シーズンエピソード追加関数 function addnotation(title, season) { if (season == null) { season = '1'; }; // ノーテーションを調べる let nexp = /s(\d{1,2})e(\d{1,3})/; if (nexp.test(title)) { return title; }; // シーズンを調べる let sdata = [ /Season(\d{1,2})/, /season (\d{1,2})/, /シーズン(\d{1,2})/ ]; for (let i of sdata) { if (i.test(title)){ let smatch = title.match(i); season = smatch[1]; break; }; }; // エピソードを調べる let edata = [ /第(\d{1,3})話/, /#(\d{1,3})/, /\((\d{1,3})\)/]; //シーズン・エピソードを追記する for (let i of edata) { if (i.test(title)){ title = title.replace(i, '$&s' + season + 'e$1'); break; }; }; return title; };
これでscriptは完成です。
次に、同じディレクトリ内にあるconfig.ymlを変更します。
encode: - name: H.264 cmd: '%NODE% %ROOT%/config/enc.js' suffix: .mp4 rate: 4.0 - name: H.264-animedrama cmd: '%NODE% %ROOT%/config/enc-acd.js animedrama' suffix: .mp4 rate: 4.0 - name: H.264-cinema cmd: '%NODE% %ROOT%/config/enc-acd.js cinema' suffix: .mp4 rate: 4.0 - name: H.264-animedrama season2 cmd: '%NODE% %ROOT%/config/enc-acd.js animedrama 2' suffix: .mp4 rate: 4.0
「H.264-animedrama」は、アニメ・ドラマで使います。
「H.264-cinema」は、映画で使います。
「H.264-animedrama season2」は、シーズンの表記がない場合のシーズン2で使います。
その他、シーズン表記がなくシーズン2ではない場合、数字を変更することもできます。
<2023年9月15日> 新たに、エンコード終了時に起動するjavascriptを作成しました。 以下提供するjavascriptをお使いください。
コメントを残す