最終更新日:2019/02/12TweetPocketMirakurunチャンネル設定更新スクリプトMirakurunのチャンネル設定を更新するスクリプトを作ってみました。注意点はじめにMirakurunのチャンネル設定は地デジのみ自動設定が可能ですが(2019年2月10日現在)、BSとCSは手作業で設定を記述する必要があります。2018年に4K放送開始の影響で既存のBS/CSの放送局の帯域再編があり、そのたびに設定を変更するのは面倒だなと感じていました。そこで今回、地デジ、BS、CSのチャンネル設定を更新するPerlスクリプトを作りました。スクリプト単体では動作せず、epgdumpコマンドを使用する必要があります。epgdumpはデジタル放送のストリーミングであるMPEG2-TSからEPGデータを取得するためのコマンドです。Mirakurunにもmirakurun-epgdumpと言うコマンドが付属します。残念ながら出力する情報が番組情報のみで放送局の情報が取得できないため、今回は利用できませんでした。今回作成したスクリプトを動かすには、以下の項目を完了している必要があります。Mirakurunがインストール済みである(未設定でも可)録画コマンド(recpt1)が利用可能な状態であるMirakurunのインストール方法等については、当ブログの以下の記事を御覧ください。Mirakurunのインストール手順(Ubuntu・Debian・CentOS)それでは、以降でepgdumpコマンドのインストール方法とスクリプトの使い方を説明します。epgdumpインストールepgdumpコマンドは様々な亜種が存在しますが、今回はいわゆるSTZ版と呼ばれるものを使用します(必要なのはEPGデータをXML出力する機能なので、他の亜種でも使えるかもしれません)。以下を実行してインストールします。installチャンネル設定更新スクリプトのインストール当初はスクリプト名を”mirakrun-channels-config.pl”と考えていましたが、長いので”mcconfig.pl”にしました。それでは、スクリプトを当ブログからダウンロード、インストールします。以下のコマンドを実行します。2つPerlモジュールを必要とするため、そちらもインストールします。mcconfig.pl.gzスクリプトで使用するrecpt1コマンドとepgdumpコマンドはスクリプトの13、14行目にフルパス名を書いています。2つのコマンドのインストール先が異なるようであれば、スクリプトをviエディタなどで書き換えて下さい。"/usr/local/bin/epgdump";当ブログの記事を参考にPLEXチューナーの設定をした場合、13行目をrecpt1_px4に変更します。mcconfig.pl必要なら13行目を書き換える以降、ディストリビューションによって異なります。libyaml-perlスクリプトの使用方法スクリプトはMirakurunのチャンネル設定ファイルのchannels.ymlを書き換えるため、rootユーザーで実行して下さい。channels.ymlの書き込み許可が、rootユーザーだけになっているためです。一般ユーザーも書き込み可能にして誰でも実行可能にするのも手ですが、それは自己責任でお願いします。このスクリプトは設定ファイルを更新するだけなので、Mirakurunに設定を反映するためにはスクリプト実行後にMirakurunを再起動して下さい。以降はUbuntu基準で書いているため、sudoコマンド実行箇所はrootユーザーで実行して下さい。初回実行Mirakurunを停止後、スクリプトを実行します。初回は設定を全更新するため”-f”オプションを付けています。完了まで約13分かかります。OK地デジはチャンネル13から63、BSとCSの各チャンネルをそれぞれ10秒ずつ録画し、XML出力したEPGデータからチャンネル情報を取得しています。fail”とあるのは必ずしもエラーではありません。fail”は問題なし)。fail”しか表示されないようなら、TVチューナーの設定を確認して下さい。epg”が表示された場合、該当のチャンネルの録画はできたがEPGデータが取得できなかったことを意味します。テレビ信号が弱い場合などに表示されます。EPGデータが取得できなかったチャンネルは個別に再設定することも可能です。上記例では地デジの16チャンネルが取得できていないので、録画時間を20秒に伸ばして試してみます。CS12”のように指定すれば、個別に再設定可能です。スクリプトの実行が完了したら、最後に設定内容を確認し、Mirakurunを起動して終了です。startチャンネル設定更新このスクリプトで一番実現したかったことはBSとCSのチャンネル設定更新です。-cs上記のように実行すればBSとCSの設定のみを更新できます。この時、地デジの設定は既存のものをそのまま使用します。地デジのみを更新したい場合、”-gr”を指定すれば可能です。チャンネル受信拒否設定スクリプトで設定したチャンネルを受信したくない場合、以下のようにチャンネルごとに設定を編集して下さい。true”を追加します。”isDisabled”の設定は、スクリプトで”-f”を指定しない限り、設定を引き継ぎます。逆に”-f”を指定すると”isDisabled”の設定を消します。注意点Mirakurunのチャンネル設定をスクリプトで直接書き換えるため、実行途中にCtrl+Cなどで強制終了すると設定が中途半端な状態で保存されます。そのような場合、”-f”オプションを付けて全設定を更新し直して下さい。-fまたは、古い設定が”/usr/local/etc/mirakurun/channels.yml.old”に残っているので、そちらを使って復旧して下さい。その他の細かいスクリプトの使い方は”-h”オプションでヘルプが表示されるので、そちらを御覧ください。20:51こんにちは。毎度、この記事で録画サーバの構築でお世話になっております。70.が出力されてしまい、実行できないです。それらしきエラーを片っ端から検索かけてみたのですが、解決出来なかったので、ご教授お願い致します。21:16neko2200様>元記事にも説明を書いておいたのですが、recpt1コマンドのフルパス名をスクリプトに書いています。そのため、recpt1コマンドのインストール先が異なる場合、スクリプトを直接編集して該当箇所を書き換えて下さい。なってないでしょうか?それとも、/usr/bin/recpt1かもしれませんが......。recpt1_px4`なりを実行して確認して下さい。様>早速のお返事ありがとうございます。一度手順をやり直し上記のような記述を施したら正常にできました。ご迷惑をお掛け致しました。389.と、このようなエラーが発生してしまいます。MXでは、CSなのか地デジなのか良く分かりません。ケーブルテレビでの使用は想定していません。StringはEPGデータを解析しようとして失敗しているようです。電波強度が弱いのではないでしょうか。別の返答にも書きましたが、液晶テレビを繋いで確認してみてください。地デジに関しては以下のコマンドでもチャンネル設定は可能です。“http://localhost:40772/api/config/channels/scan”上記コマンドを試しても駄目なら、スクリプトに問題があるとは思えません。素晴らしいスクリプトありがとうございます。20:28淡水魚様>状況が良く分からないのですが、動作に問題があったでしょうか。スクリプトに修正が必要でしたら対応しますので、詳細を教えて下さい。23:36スクリプトは感動的かつ簡単で素晴らしいものでした。おかげさまでいくつもの時間が助かりました。ありがとう!再起動するだけでは番組表にないチャンネルがあり、/usr/local/var/db/mirakurun/services.json/usr/local/var/db/mirakurun/programs.json結局これらを一度消去しました。00:38淡水魚様>お褒めの言葉ありがとうございます。スクリプトに問題がなく安心しました。確かに削除したほうが早く更新が終わるかもしれません。得意のPerlでサクッと作った次第です。18:50良いスクリプトありがとう御座います。rec_cmdを修正して使わせていただきました。以下の点、更なる向上のため修正頂ければ幸いです。15を有効にできるオプションを標準で用意していただけると助かります。便利なスクリプトありがとうございます。この計画において周波数等は、次により表示する。470MHzを超え710MHz以下の周波数を使用する地上系によるもの中央の周波数473.142857+6iMHz(iは0から39までの整数)に対応するチャンネル番号は、13+i以上、よろしくお願いします。地デジのみのため、BS・CSに対応している「自分に負けないラボラトリー」さんの「Mirakurunのチャンネル設定更新スクリプト」を使用してチャンネルスキャンを行います。付いている欄は必須項目です。書き込まれた内容は確認後にメールアドレス以外を公開します。本名など身元の分かる情報を書かないようにお願いします。記事タイトルは少しあおり気味で遊んでみました。録画サーバ向けのおすすめのハードウェア構成を紹介します。録画サーバ向けのおすすめのハードウェア構成を紹介します。yokiLinux系システムが得意分野の個人SEです。このブログでは主に趣味的な内容を扱っていきます。