2026-04-25 開発日報
やったこと
KonomiTV を macOS (Apple Silicon / Intel) で動かせるようにした
もともと Linux / Windows 向けに作られている KonomiTV を、手元の Mac mini (Apple Silicon) でネイティブ動作させるためのパッチを書いた。
背景
自宅の録画環境は Mirakurun + EPGStation で動いており、視聴クライアントとして KonomiTV を使いたかった。ただし公式は macOS 非対応のため、ソースを読んで必要な箇所を修正していった。
対応内容
constants.py: macOS では実行ファイルに拡張子がないためLIBRARY_EXTENSIONを''に設定KonomiTV.py:- arm64 アーキテクチャを認識するよう対応
- macOS では使えない
rkmppenc/ QSVEncC / NVEncC / VCEEncC をスキップ - 内部ホストを
127.0.0.77→127.0.0.1に変更(macOS では loopback エイリアスが自動で使えない) uvloopを Linux 限定に変更(macOS では標準の asyncio ループを使用)
config.py: macOS でpsutil.net_connections()がAccessDenied/PermissionErrorを投げる問題に対処utils/__init__.py:GetPlatformEnvironment()が macOS で'macOS'を返すよう追加schemas.py:VersionInformation.environmentの Literal 型に'macOS'を追加
サードパーティバイナリ
tsreadex / psisiarc / psisimux / Akebi は macOS 向けにソースからビルド。FFmpeg は Homebrew 版をシンボリックリンクで配置した。
Komorebi (Android TV クライアント) から EPGStation への録画予約連携
Android TV クライアントの Komorebi から EPGStation へ録画予約できる機能を追加した。
背景
KonomiTV の録画予約 API はもともと EDCB バックエンド専用だったため、Mirakurun 環境では Komorebi から予約ボタンを押しても何もできない状態だった。
実装内容
config.yaml/server/app/config.pyにepgstation_urlフィールドを追加ReservationsRouter.pyを改修し、Mirakurun バックエンド +epgstation_url設定時に/api/recording/reservationsへの POST を EPGStation の/api/reservesにプロキシするよう拡張- KonomiTV の番組 ID 形式(
NID{networkId}-SID{serviceId}-EID{eventId})を Mirakurun の整数programId(networkId × 10^10 + serviceId × 10^5 + eventId)に変換して EPGStation に渡す処理を実装
Komorebi 側は無改造のまま動作確認できた。
ポイント
Komorebi は KonomiTV の /api/recording/reservations を直接叩いているだけなので、既存のエンドポイントにプロキシ処理を差し込むだけで対応できた。EPGStation の API は programId が Mirakurun 形式の整数を要求するため、ID 変換が必要な点が少し面倒だった。
KonomiTV Web UI への録画予約ボタン追加(→ 結果的に削除)
KonomiTV の視聴画面にも「録画予約 (EPGStation)」ボタンを追加したが、スマートフォンブラウザから試すと 422 エラーになる問題が発生した。
サーバーログを確認すると {"program_id": null} が届いており、TypeScript 型では id: string(非 null)のはずの programPresent.id がランタイムで null になっていた。原因を調査したが特定に至らず、Komorebi 経由の予約で目的は達成できているため、Web UI ボタンは削除する方針に切り替えた。
結果
- KonomiTV の macOS ネイティブ動作: 動作確認済み ✅
- Komorebi → KonomiTV → EPGStation の録画予約: 動作確認済み ✅
- KonomiTV Web UI の録画ボタン: 削除(Mirakurun 環境では EDCB 専用表示のまま)







