@@ -361,14 +361,17 @@ def format(self) -> str:
361361 else :
362362 # recisdb 互換の物理チャンネル指定フォーマット
363363 mirakurun_channel = ts_info .physical_channel_recisdb
364- ## BS のみ追加の引数として --tsid (BS チャンネルの TSID) を指定し、当該トランスポンダで送出中の TS を明示的に TSID で選局する
365- ## 実際に発行されるチューナーコマンドは --channel BS23_2 --tsid 18803 のようになる
366- ## (--tsid 指定時は物理チャンネル表記に含まれる相対 TS 番号は無視され、常に物理 BS-23ch 内で送出中の TSID が 18803 の TS が選局される)
367- ## 地上波や CS にはスロットや相対 TS 番号の概念がないため、TSID を指定する必要はない
368364 if ts_info .broadcast_type == 'BS' :
365+ # BS のみ追加の引数として --tsid (BS チャンネルの TSID) を指定し、当該トランスポンダで送出中の TS を明示的に TSID で選局する
366+ ## 実際に発行されるチューナーコマンドは --channel BS23_2 --tsid 18803 のようになる
367+ ## (--tsid 指定時は物理チャンネル表記に含まれる相対 TS 番号は無視され、常に物理 BS-23ch 内で送出中の TSID が 18803 の TS が選局される)
368+ ## 地上波や CS にはスロットや相対 TS 番号の概念がないため、TSID を指定する必要はない
369369 extra_args = f'--tsid { ts_info .transport_stream_id } '
370370 else :
371- extra_args = ''
371+ # Mirakurun のプレースホルダーは単なる文字列置換で実装されているが、"satellite" が空だと条件分岐が成立せず
372+ # チューナーコマンド内の <satellite> が置換されずに残ってしまうため、意図的に空文字列ではなく半角スペースを入れている
373+ # ref: https://github.com/Chinachu/Mirakurun/blob/3.9.0-rc.4/src/Mirakurun/TunerDevice.ts#L271-L274
374+ extra_args = ' '
372375 channel : MirakurunChannel = {
373376 'name' : mirakurun_name ,
374377 'type' : mirakurun_type ,
@@ -447,8 +450,9 @@ def get_tuner_command(tuner: ISDBTuner) -> str:
447450 return f'recpt1 --device { tuner .device_path } <channel> - -'
448451 else :
449452 # <satellite> は mirakc における {{{extra_args}}} の代わりとして使っている
450- # TSID 選局に対応しているチューナーでは、BS のみ <satellite> を --tsid (BS チャンネルの TSID) に置換する
451- if tuner .isTSIDSelectionSupported () is True :
453+ # TSID 選局に対応している ISDB-S 対応チューナー・ISDB-T/ISDB-S 両対応チューナーでは、
454+ # BS でのみ <satellite> が --tsid (BS チャンネルの TSID) に置換される
455+ if tuner .isTSIDSelectionSupported () is True and tuner .type in ['ISDB-S' , 'ISDB-T/ISDB-S' ]:
452456 return f'recisdb tune --device { tuner .device_path } --channel <channel> <satellite> -'
453457 else :
454458 return f'recisdb tune --device { tuner .device_path } --channel <channel> -'
@@ -648,6 +652,9 @@ def format(self) -> str:
648652 if ts_info .broadcast_type == 'BS' :
649653 extra_args = f'--tsid { ts_info .transport_stream_id } '
650654 else :
655+ # channel.extra-args のデフォルト値は空文字列なので、extra-args 自体の指定を省略しているのと同じ
656+ # mirakc は Mustache テンプレートを採用しているため、変換先が空文字列でも Mirakurun のようにプレースホルダーが残ることはない
657+ # ref: https://github.com/mirakc/mirakc/blob/main/docs/config.md
651658 extra_args = ''
652659 channel : MirakcChannel = {
653660 'name' : mirakc_name ,
@@ -662,8 +669,9 @@ def get_tuner_command(tuner: ISDBTuner) -> str:
662669 if self ._recpt1_compatible is True :
663670 return f'recpt1 --device { tuner .device_path } ' + '{{{channel}}} - -'
664671 else :
665- # TSID 選局に対応しているチューナーでは、BS のみ <satellite> を --tsid (BS チャンネルの TSID) に置換する
666- if tuner .isTSIDSelectionSupported () is True :
672+ # TSID 選局に対応している ISDB-S 対応チューナー・ISDB-T/ISDB-S 両対応チューナーでは、
673+ # BS でのみ {{{extra_args}}} が --tsid (BS チャンネルの TSID) に置換される
674+ if tuner .isTSIDSelectionSupported () is True and tuner .type in ['ISDB-S' , 'ISDB-T/ISDB-S' ]:
667675 return f'recisdb tune --device { tuner .device_path } --channel ' + '{{{channel}}} {{{extra_args}}} -'
668676 else :
669677 return f'recisdb tune --device { tuner .device_path } --channel ' + '{{{channel}}} -'
0 commit comments