mirakurun 4.0.0-beta.9 → 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +170 -1
- package/README.ja.md +125 -0
- package/README.md +37 -55
- package/api.d.ts +62 -20
- package/api.yml +97 -25
- package/doc/Configuration.ja.md +149 -0
- package/doc/Configuration.md +117 -98
- package/doc/Platforms.ja.md +233 -0
- package/doc/Platforms.md +161 -126
- package/docker/container-init.sh +5 -3
- package/docker/docker-compose.yml +42 -22
- package/lib/Mirakurun/Channel.d.ts +1 -1
- package/lib/Mirakurun/Channel.js +98 -63
- package/lib/Mirakurun/Channel.js.map +1 -1
- package/lib/Mirakurun/ChannelItem.d.ts +1 -6
- package/lib/Mirakurun/ChannelItem.js +2 -116
- package/lib/Mirakurun/ChannelItem.js.map +1 -1
- package/lib/Mirakurun/Event.d.ts +6 -13
- package/lib/Mirakurun/Event.js.map +1 -1
- package/lib/Mirakurun/Job.d.ts +69 -0
- package/lib/Mirakurun/Job.js +482 -0
- package/lib/Mirakurun/Job.js.map +1 -0
- package/lib/Mirakurun/Program.d.ts +1 -2
- package/lib/Mirakurun/Program.js +38 -28
- package/lib/Mirakurun/Program.js.map +1 -1
- package/lib/Mirakurun/Server.d.ts +5 -0
- package/lib/Mirakurun/Server.js +91 -52
- package/lib/Mirakurun/Server.js.map +1 -1
- package/lib/Mirakurun/Service.d.ts +7 -2
- package/lib/Mirakurun/Service.js +143 -7
- package/lib/Mirakurun/Service.js.map +1 -1
- package/lib/Mirakurun/Tuner.d.ts +4 -0
- package/lib/Mirakurun/Tuner.js +124 -103
- package/lib/Mirakurun/Tuner.js.map +1 -1
- package/lib/Mirakurun/TunerDevice.js +10 -18
- package/lib/Mirakurun/TunerDevice.js.map +1 -1
- package/lib/Mirakurun/_.d.ts +2 -0
- package/lib/Mirakurun/_.js.map +1 -1
- package/lib/Mirakurun/api/events/stream.js.map +1 -1
- package/lib/Mirakurun/api/job-schedules/{key}/run.d.ts +8 -0
- package/lib/Mirakurun/api/job-schedules/{key}/run.js +93 -0
- package/lib/Mirakurun/api/job-schedules/{key}/run.js.map +1 -0
- package/lib/Mirakurun/api/job-schedules.d.ts +2 -0
- package/lib/Mirakurun/api/job-schedules.js +68 -0
- package/lib/Mirakurun/api/job-schedules.js.map +1 -0
- package/lib/Mirakurun/api/jobs/{id}/abort.d.ts +8 -0
- package/lib/Mirakurun/api/jobs/{id}/abort.js +85 -0
- package/lib/Mirakurun/api/jobs/{id}/abort.js.map +1 -0
- package/lib/Mirakurun/api/jobs/{id}/rerun.d.ts +8 -0
- package/lib/Mirakurun/api/jobs/{id}/rerun.js +85 -0
- package/lib/Mirakurun/api/jobs/{id}/rerun.js.map +1 -0
- package/lib/Mirakurun/api/jobs.d.ts +2 -0
- package/lib/Mirakurun/api/jobs.js +68 -0
- package/lib/Mirakurun/api/jobs.js.map +1 -0
- package/lib/Mirakurun/api/tuners/{index}.js +2 -2
- package/lib/Mirakurun/api/tuners/{index}.js.map +1 -1
- package/lib/Mirakurun/common.d.ts +5 -0
- package/lib/Mirakurun/common.js +40 -0
- package/lib/Mirakurun/common.js.map +1 -1
- package/lib/Mirakurun/config.js +25 -6
- package/lib/Mirakurun/config.js.map +1 -1
- package/lib/Mirakurun/db.d.ts +2 -2
- package/lib/Mirakurun/db.js +24 -24
- package/lib/Mirakurun/db.js.map +1 -1
- package/lib/Mirakurun/rpc.js +28 -4
- package/lib/Mirakurun/rpc.js.map +1 -1
- package/lib/client.d.ts +4 -1
- package/lib/client.js +8 -1
- package/lib/client.js.map +1 -1
- package/lib/server.js +4 -0
- package/lib/server.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/ui/assets/24f2ece9e56f8427a67e.ttf +0 -0
- package/lib/ui/assets/3dd8a3908ca677a5883a.woff2 +0 -0
- package/lib/ui/assets/56858bb41ed5877793c7.woff +0 -0
- package/lib/ui/assets/79f5ffa16f64257c1ba4.eot +0 -0
- package/lib/ui/assets/ac3753b19425271d124b.eot +0 -0
- package/lib/ui/assets/ac7c217773ea8b74720c.woff2 +0 -0
- package/lib/ui/assets/d4183e6c2c3a01b76c49.woff +0 -0
- package/lib/ui/assets/f0cbba8bb2af0749e4be.ttf +0 -0
- package/lib/ui/index.bundle.js +5995 -2006
- package/lib/ui/index.bundle.js.map +1 -1
- package/lib/ui/index.html +2 -5
- package/lib/ui/redoc-ui.html +2 -2
- package/lib/ui/vendors.bundle.js +97219 -71527
- package/lib/ui/vendors.bundle.js.map +1 -1
- package/package.json +24 -14
- package/lib/Mirakurun/queue.d.ts +0 -3
- package/lib/Mirakurun/queue.js +0 -5
- package/lib/Mirakurun/queue.js.map +0 -1
- package/lib/ui/index.dev.html +0 -18
package/CHANGELOG.md
CHANGED
|
@@ -2,10 +2,179 @@
|
|
|
2
2
|
|
|
3
3
|
see [Commit Logs](https://github.com/Chinachu/Mirakurun/commits/master) to check all.
|
|
4
4
|
|
|
5
|
-
## 4.
|
|
5
|
+
## 4.1.1 (2026-06-15)
|
|
6
|
+
|
|
7
|
+
動作環境やユースケースを鑑みて、このバージョンから、このプロジェクトは基本的に日本語を使用します。ドキュメントや UI 等も順次日本語となります。何卒ご了承下さい 🙏
|
|
8
|
+
|
|
9
|
+
### Known Issues
|
|
10
|
+
|
|
11
|
+
- **UI**
|
|
12
|
+
- Home: 旧 UI からの仮移植です。表示崩れや余白不足、局ロゴの見切れがあります。
|
|
13
|
+
|
|
14
|
+
### Docker
|
|
15
|
+
|
|
16
|
+
- 🆙 ベースイメージを `node:22.14.0-bookworm` → `node:24.16.0-bookworm` に更新
|
|
17
|
+
|
|
18
|
+
### Server
|
|
19
|
+
|
|
20
|
+
- 🆙 Node.js エンジン要件: `^18 || ^20 || ^22` → `^22 || ^24`
|
|
21
|
+
- 👾 Config: allowPNA の型チェックを修正 (*bug*)
|
|
22
|
+
|
|
23
|
+
### UI
|
|
24
|
+
|
|
25
|
+
- ✨ Fluent UI から Blueprint へ UI ベースコンポーネントを変更し、UI を刷新
|
|
26
|
+
- 🆕 ライトテーマ / ダークテーマ の切り替え
|
|
27
|
+
- 🆕 EPG, 番組検索, 番組詳細表示
|
|
28
|
+
|
|
29
|
+
## About 4.0.0
|
|
6
30
|
|
|
7
31
|
**Important Notice**: Mirakurun 4.0.0 includes significant performance improvements, enhanced EPG processing, asynchronous file I/O operations, and new features. As announced in 3.9.0, the experimental Win32 support has been completely removed.
|
|
8
32
|
|
|
33
|
+
## 4.0.0-beta.17 (2025-04-11)
|
|
34
|
+
|
|
35
|
+
### Server Changes
|
|
36
|
+
|
|
37
|
+
- **Service**:
|
|
38
|
+
- Fixed a bug in the loading services.
|
|
39
|
+
|
|
40
|
+
## 4.0.0-beta.17 (2025-04-10)
|
|
41
|
+
|
|
42
|
+
### Server Changes
|
|
43
|
+
|
|
44
|
+
- **Server**:
|
|
45
|
+
- Allow access to the Web UI through the allowOrigins setting.
|
|
46
|
+
- **Channel**:
|
|
47
|
+
- Fixed a bug in the readyFn of EPG gatherer job.
|
|
48
|
+
- **Tuner**:
|
|
49
|
+
- Improved readyForJob logic for better tuner selection.
|
|
50
|
+
- Added logging for tuner selection process.
|
|
51
|
+
- **TunerDevice**:
|
|
52
|
+
- Added channel type to command template replacement.
|
|
53
|
+
|
|
54
|
+
## 4.0.0-beta.16 (2025-04-01)
|
|
55
|
+
|
|
56
|
+
### Server Changes
|
|
57
|
+
|
|
58
|
+
- **Job**:
|
|
59
|
+
- Jobs can now be rerun.
|
|
60
|
+
- Maximum number of runs can now be set.
|
|
61
|
+
- **Config**:
|
|
62
|
+
- Added: `jobMaxRunning`, `jobMaxStandby` server configs.
|
|
63
|
+
- **API**:
|
|
64
|
+
- Added: `rerunJob` operations.
|
|
65
|
+
- **UI**:
|
|
66
|
+
- **JobsView**: Added support to rerun Job.
|
|
67
|
+
- **ServerConfigurator**: Added job settings.
|
|
68
|
+
|
|
69
|
+
## 4.0.0-beta.15 (2025-03-30)
|
|
70
|
+
|
|
71
|
+
Bugfix of `@4.0.0-beta.14`.
|
|
72
|
+
|
|
73
|
+
## 4.0.0-beta.14 (2025-03-30)
|
|
74
|
+
|
|
75
|
+
### Key Changes
|
|
76
|
+
|
|
77
|
+
- **Job/Queue**: Improved background job mechanism for like EPG updates.
|
|
78
|
+
- **Users can now request EPG updates at any time.**
|
|
79
|
+
- Job execution schedules can now be set in a **cron-like format**.
|
|
80
|
+
- <u>Jobs are now executed in parallel</u> according to the number of CPU cores and resource availability.
|
|
81
|
+
- At the moment, the number of parallel executions is `Math.max(1, Math.floor(os.cpus().length / 2))`, but it will be made configurable in the ~~future~~. → `@4.0.0-beta.16`
|
|
82
|
+
|
|
83
|
+
### Server Changes
|
|
84
|
+
|
|
85
|
+
- **Config**:
|
|
86
|
+
- Added: `programGCJobSchedule`, `epgGatheringJobSchedule` server configs.
|
|
87
|
+
- Removed: `programGCInterval`, `epgGatheringInterval` server configs. (*breaking change*)
|
|
88
|
+
- Settings are not migrated. If you have customized, you must re-configure them in cron-like format, which can be changed from the Web UI.
|
|
89
|
+
- see: [Configuration](doc/Configuration.md) ([日本語](doc/Configuration.ja.md))
|
|
90
|
+
- **API**:
|
|
91
|
+
- Added: `runJobSchedule`, `abortJob` operations.
|
|
92
|
+
- **UI**:
|
|
93
|
+
- **JobsView**: added.
|
|
94
|
+
- **ServerConfigurator**: updated.
|
|
95
|
+
|
|
96
|
+
## 4.0.0-beta.13 (2025-03-29)
|
|
97
|
+
|
|
98
|
+
### Docker Changes
|
|
99
|
+
|
|
100
|
+
- Added `DISABLE_PCSCD` environment variable to disable pcscd service.
|
|
101
|
+
- Added `DISABLE_B25_TEST` environment variable to disable B25 test decoder installation.
|
|
102
|
+
- Updated `docker-compose.yml` - For testing purposes, all devices can be accessed without setting "devices" by default.
|
|
103
|
+
- **The previous default setting required a restart of the container when the card reader's USB was unplugged and plugged in, but the new default setting restores it automatically.** please check the [docker-compose.yml](docker/docker-compose.yml).
|
|
104
|
+
- **以前のデフォルト設定では、カードリーダーの USB を抜き差しすると、コンテナの再起動が必要でしたが、今回のデフォルト設定では、自動的に復旧するようになりました。** 設定例は [docker-compose.yml](docker/docker-compose.yml) をご確認ください。
|
|
105
|
+
|
|
106
|
+
## 4.0.0-beta.12 (2025-03-21)
|
|
107
|
+
|
|
108
|
+
### Server Changes
|
|
109
|
+
|
|
110
|
+
- **Server**:
|
|
111
|
+
- Wait the LISTEN until finishes loading the program and service db at startup.
|
|
112
|
+
- **UI**:
|
|
113
|
+
- **TunersManager**: packet counter is now hidden when stream info is empty
|
|
114
|
+
|
|
115
|
+
## 4.0.0-beta.11 (2025-03-20)
|
|
116
|
+
|
|
117
|
+
### Key Changes
|
|
118
|
+
|
|
119
|
+
- **Channel Configuration**: Added new `commandVars` property to replace and extend the previous tuner command options
|
|
120
|
+
- Supports any custom command variables (not limited to predefined keys)
|
|
121
|
+
- Added support for arguments containing whitespace using quotes
|
|
122
|
+
- Previous options (`satellite`, `space`, `freq`, `polarity`) are now soft-deprecated but still work - Automatically migrates existing configurations to the new format
|
|
123
|
+
|
|
124
|
+
```yaml
|
|
125
|
+
# Tuner Device Item Configuration
|
|
126
|
+
- name: Example-Tuner
|
|
127
|
+
types:
|
|
128
|
+
- GR
|
|
129
|
+
...
|
|
130
|
+
command: cmd <channel> --arg1 --arg2 <exampleArg1> <exampleArg2> "<exampleArg3>" -
|
|
131
|
+
|
|
132
|
+
# Channel Item Configuration
|
|
133
|
+
- name: Example-Ch
|
|
134
|
+
type: GR
|
|
135
|
+
channel: '123'
|
|
136
|
+
...
|
|
137
|
+
commandVars: # new
|
|
138
|
+
exampleArg1: -arg0 -arg1=example
|
|
139
|
+
exampleArg2: -arg2 "whitespace is now supported using quote"
|
|
140
|
+
exampleArg3: white space
|
|
141
|
+
...
|
|
142
|
+
```
|
|
143
|
+
- This implementation is inspired by the [extra-args already implemented in mirakc](https://github.com/mirakc/mirakc/blob/1fbbd9875bcb2de9143e2dc73be8ac6d54ed0965/docs/config.md#channels), but in a different way. This is so that appropriate arguments can be defined even in an environment where different tuner commands are mixed.
|
|
144
|
+
|
|
145
|
+
### Server Changes
|
|
146
|
+
|
|
147
|
+
- **API**:
|
|
148
|
+
- Deprecated several channel configuration properties in favor of the new `commandVars` property
|
|
149
|
+
- **Channel**:
|
|
150
|
+
- Improved handling of tuner command parameters with expanded configuration options
|
|
151
|
+
- Migrated from hardcoded parameters to flexible variable substitution
|
|
152
|
+
- **TunerDevice**:
|
|
153
|
+
- Enhanced command string handling with support for quoted arguments containing whitespace
|
|
154
|
+
- Improved command template variable substitution
|
|
155
|
+
- **UI**:
|
|
156
|
+
- **ChannelsConfigurator**: Significantly improved the channel configuration interface
|
|
157
|
+
- Added visual editor for command arguments with dynamic add/remove capability
|
|
158
|
+
- Removed column headers for cleaner interface
|
|
159
|
+
- Automatically migrates deprecated configuration properties to the new format
|
|
160
|
+
|
|
161
|
+
## 4.0.0-beta.10 (2025-03-17)
|
|
162
|
+
|
|
163
|
+
### Server Changes
|
|
164
|
+
|
|
165
|
+
- **Server**:
|
|
166
|
+
- Added test mode support for unit/integration testing
|
|
167
|
+
- Added deinit method (not used yet)
|
|
168
|
+
- Improved server init with proper async handling
|
|
169
|
+
- **API**:
|
|
170
|
+
- **getTuner**: Fixed 500 error on not found (*bug*)
|
|
171
|
+
|
|
172
|
+
### Client Changes
|
|
173
|
+
|
|
174
|
+
- **getDocs**: Added to get API spec docs
|
|
175
|
+
|
|
176
|
+
## 4.0.0-beta.9 (2025-03-16)
|
|
177
|
+
|
|
9
178
|
### Server Changes
|
|
10
179
|
|
|
11
180
|
- **UI**:
|
package/README.ja.md
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
[](https://github.com/Chinachu/Mirakurun)
|
|
2
|
+
|
|
3
|
+
# Mirakurun
|
|
4
|
+
|
|
5
|
+
"Air" (開発中アプリのコードネーム) のために設計された日本のデジタルテレビチューナー API サーバーです。
|
|
6
|
+
|
|
7
|
+
[![npm version][npm-img]][npm-url]
|
|
8
|
+
[![npm downloads][downloads-image]][downloads-url]
|
|
9
|
+
[![Linux Build][azure-pipelines-img]][azure-pipelines-url]
|
|
10
|
+
[](https://tip4commit.com/github/Chinachu/Mirakurun)
|
|
11
|
+
[](#backers)
|
|
12
|
+
[](#sponsors)
|
|
13
|
+
|
|
14
|
+
[**CHANGELOG**](CHANGELOG.md) | [**環境構築**](doc/Platforms.ja.md) | [**設定**](doc/Configuration.ja.md)
|
|
15
|
+
|
|
16
|
+
[**English**](README.md) | [**日本語**](README.ja.md)
|
|
17
|
+
|
|
18
|
+
## Docker
|
|
19
|
+
|
|
20
|
+
[][docker-url]
|
|
21
|
+
|
|
22
|
+
参照: 利用可能な[タグ一覧](https://hub.docker.com/r/chinachu/mirakurun/tags) (Docker Hub)
|
|
23
|
+
|
|
24
|
+
## 特徴
|
|
25
|
+
|
|
26
|
+
- HTTP RESTful API (Swagger / Open API 2.0)
|
|
27
|
+
- 高度なチューナープロセス管理
|
|
28
|
+
- 単一チューニングでの複数ストリーム配信
|
|
29
|
+
- ストリーム優先度
|
|
30
|
+
- MPEG-2 TS パーサー、フィルター
|
|
31
|
+
- リアルタイム EPG パーサー
|
|
32
|
+
- 様々なチューナーデバイスと混合環境に対応 (chardev, DVB / ISDB-T, ISDB-S, DVB-S2)
|
|
33
|
+
- 自動チャンネルスキャン
|
|
34
|
+
- Web UI
|
|
35
|
+
- IPTV サーバー (M3U8 プレイリスト, XMLTV)
|
|
36
|
+
|
|
37
|
+
#### 図: MPEG-2 TS ストリーム API の多様性
|
|
38
|
+
|
|
39
|
+

|
|
40
|
+
|
|
41
|
+
#### 図: ストリームフロー
|
|
42
|
+
|
|
43
|
+

|
|
44
|
+
|
|
45
|
+
## 環境構築
|
|
46
|
+
|
|
47
|
+
👉 [**環境構築**](doc/Platforms.ja.md)
|
|
48
|
+
|
|
49
|
+
## 設定
|
|
50
|
+
|
|
51
|
+
👉 [**設定**](doc/Configuration.ja.md)
|
|
52
|
+
|
|
53
|
+
## Web UI
|
|
54
|
+
|
|
55
|
+
```sh
|
|
56
|
+
# 管理 UI
|
|
57
|
+
http://_your_mirakurun_ip_:40772/
|
|
58
|
+
|
|
59
|
+
# Swagger UI
|
|
60
|
+
http://_your_mirakurun_ip_:40772/api/debug
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## クライアント実装
|
|
64
|
+
|
|
65
|
+
- [Rivarun](https://github.com/Chinachu/Rivarun)
|
|
66
|
+
- [BonDriver_Mirakurun](https://github.com/Chinachu/BonDriver_Mirakurun)
|
|
67
|
+
- Mirakurun クライアント ([組み込み](https://github.com/Chinachu/Mirakurun/blob/master/src/client.ts))
|
|
68
|
+
- "Air" (開発コードネーム)
|
|
69
|
+
- [Chinachu γ](https://github.com/Chinachu/Chinachu/wiki/Gamma-Installation-V2)
|
|
70
|
+
- [EPGStation](https://github.com/l3tnun/EPGStation)
|
|
71
|
+
|
|
72
|
+
## 貢献
|
|
73
|
+
|
|
74
|
+
- [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
75
|
+
|
|
76
|
+
## 寄付
|
|
77
|
+
|
|
78
|
+
- [Tip4Commit](https://tip4commit.com/github/Chinachu/Mirakurun) (BTC) - すべてのコミッターへ分配されます
|
|
79
|
+
- [Open Collective](https://opencollective.com/Mirakurun) (USD) - プール (使途未定)
|
|
80
|
+
|
|
81
|
+
## Discord コミュニティ
|
|
82
|
+
|
|
83
|
+
- 招待リンク: https://discord.gg/X7KU5W9
|
|
84
|
+
|
|
85
|
+
## Contributors
|
|
86
|
+
|
|
87
|
+
このプロジェクトは貢献してくださるすべての方々のおかげで成り立っています。
|
|
88
|
+
<a href="https://github.com/Chinachu/Mirakurun/graphs/contributors"><img src="https://opencollective.com/Mirakurun/contributors.svg?width=890&button=false" /></a>
|
|
89
|
+
|
|
90
|
+
## Backers
|
|
91
|
+
|
|
92
|
+
すべての Backer の皆様、ありがとうございます! 🙏 [[Backer になる](https://opencollective.com/Mirakurun#backer)]
|
|
93
|
+
|
|
94
|
+
<a href="https://opencollective.com/Mirakurun#backers" target="_blank"><img src="https://opencollective.com/Mirakurun/backers.svg?width=890"></a>
|
|
95
|
+
|
|
96
|
+
## Sponsors
|
|
97
|
+
|
|
98
|
+
スポンサーになってこのプロジェクトをサポートしてください。あなたのロゴがウェブサイトへのリンクとともにここに表示されます。 [[スポンサーになる](https://opencollective.com/Mirakurun#sponsor)]
|
|
99
|
+
|
|
100
|
+
<a href="https://opencollective.com/Mirakurun/sponsor/0/website" target="_blank"><img src="https://opencollective.com/Mirakurun/sponsor/0/avatar.svg"></a>
|
|
101
|
+
<a href="https://opencollective.com/Mirakurun/sponsor/1/website" target="_blank"><img src="https://opencollective.com/Mirakurun/sponsor/1/avatar.svg"></a>
|
|
102
|
+
<a href="https://opencollective.com/Mirakurun/sponsor/2/website" target="_blank"><img src="https://opencollective.com/Mirakurun/sponsor/2/avatar.svg"></a>
|
|
103
|
+
<a href="https://opencollective.com/Mirakurun/sponsor/3/website" target="_blank"><img src="https://opencollective.com/Mirakurun/sponsor/3/avatar.svg"></a>
|
|
104
|
+
<a href="https://opencollective.com/Mirakurun/sponsor/4/website" target="_blank"><img src="https://opencollective.com/Mirakurun/sponsor/4/avatar.svg"></a>
|
|
105
|
+
<a href="https://opencollective.com/Mirakurun/sponsor/5/website" target="_blank"><img src="https://opencollective.com/Mirakurun/sponsor/5/avatar.svg"></a>
|
|
106
|
+
<a href="https://opencollective.com/Mirakurun/sponsor/6/website" target="_blank"><img src="https://opencollective.com/Mirakurun/sponsor/6/avatar.svg"></a>
|
|
107
|
+
<a href="https://opencollective.com/Mirakurun/sponsor/7/website" target="_blank"><img src="https://opencollective.com/Mirakurun/sponsor/7/avatar.svg"></a>
|
|
108
|
+
<a href="https://opencollective.com/Mirakurun/sponsor/8/website" target="_blank"><img src="https://opencollective.com/Mirakurun/sponsor/8/avatar.svg"></a>
|
|
109
|
+
<a href="https://opencollective.com/Mirakurun/sponsor/9/website" target="_blank"><img src="https://opencollective.com/Mirakurun/sponsor/9/avatar.svg"></a>
|
|
110
|
+
|
|
111
|
+
## 著作権 / ライセンス
|
|
112
|
+
|
|
113
|
+
© 2016- [kanreisa](https://github.com/kanreisa).
|
|
114
|
+
|
|
115
|
+
- コード: [Apache License, Version 2.0](LICENSE)
|
|
116
|
+
- ドキュメント: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)
|
|
117
|
+
- ロゴ: [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)
|
|
118
|
+
|
|
119
|
+
[npm-img]: https://img.shields.io/npm/v/mirakurun.svg
|
|
120
|
+
[npm-url]: https://npmjs.org/package/mirakurun
|
|
121
|
+
[downloads-image]: https://img.shields.io/npm/dm/mirakurun.svg?style=flat
|
|
122
|
+
[downloads-url]: https://npmjs.org/package/mirakurun
|
|
123
|
+
[azure-pipelines-img]: https://dev.azure.com/chinachu/Mirakurun/_apis/build/status/Chinachu.Mirakurun?branchName=master
|
|
124
|
+
[azure-pipelines-url]: https://dev.azure.com/chinachu/Mirakurun/_build/latest?definitionId=1&branchName=master
|
|
125
|
+
[docker-url]: https://hub.docker.com/r/chinachu/mirakurun
|
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
[](https://github.com/Chinachu/Mirakurun)
|
|
2
2
|
|
|
3
3
|
# Mirakurun
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
A Japanese digital TV tuner API server specifically designed for "Air" (code name of the app in development).
|
|
6
6
|
|
|
7
7
|
[![npm version][npm-img]][npm-url]
|
|
8
8
|
[![npm downloads][downloads-image]][downloads-url]
|
|
@@ -11,59 +11,44 @@ DVR Tuner Server for Japanese TV which designed for the "Air" (in development co
|
|
|
11
11
|
[](#backers)
|
|
12
12
|
[](#sponsors)
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
[][docker-url]
|
|
14
|
+
[**CHANGELOG**](CHANGELOG.md) | [**Setup Guide**](doc/Platforms.md) | [**Configuration**](doc/Configuration.md)
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
[**English**](README.md) | [**日本語**](README.ja.md)
|
|
19
17
|
|
|
20
|
-
|
|
18
|
+
## Docker
|
|
21
19
|
|
|
22
|
-
|
|
23
|
-
mkdir ~/mirakurun/
|
|
24
|
-
cd ~/mirakurun/
|
|
25
|
-
wget https://raw.githubusercontent.com/Chinachu/Mirakurun/refs/heads/release/4.0.0/docker/docker-compose.yml
|
|
26
|
-
docker compose pull
|
|
27
|
-
docker compose run --rm -e SETUP=true mirakurun
|
|
28
|
-
docker compose up -d
|
|
29
|
-
```
|
|
20
|
+
[][docker-url]
|
|
30
21
|
|
|
31
|
-
|
|
22
|
+
Reference: List of available [tags](https://hub.docker.com/r/chinachu/mirakurun/tags) (Docker Hub)
|
|
32
23
|
|
|
33
24
|
## Features
|
|
34
25
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
* [Multiplexing Mirakuruns](doc/Mirakuruns.md)
|
|
46
|
-
* Web UI
|
|
47
|
-
* IPTV Server (M3U8 Playlist, XMLTV)
|
|
26
|
+
- HTTP RESTful API (Swagger / Open API 2.0)
|
|
27
|
+
- Advanced tuner process management
|
|
28
|
+
- Multiple stream broadcasting from a single tuning
|
|
29
|
+
- Stream priority
|
|
30
|
+
- MPEG-2 TS parser, filter
|
|
31
|
+
- Real-time EPG parser
|
|
32
|
+
- Support for various tuner devices and hybrid environments (chardev, DVB / ISDB-T, ISDB-S, DVB-S2)
|
|
33
|
+
- Automatic channel scanning
|
|
34
|
+
- Web UI
|
|
35
|
+
- IPTV server (M3U8 playlist, XMLTV)
|
|
48
36
|
|
|
49
37
|
#### Figure: Variety of the MPEG-2 TS Stream API
|
|
50
38
|
|
|
51
|
-

|
|
52
40
|
|
|
53
41
|
#### Figure: Stream Flow
|
|
54
42
|
|
|
55
|
-

|
|
58
44
|
|
|
59
|
-
|
|
60
|
-
* Linux w/ [Docker](https://hub.docker.com/r/chinachu/mirakurun)
|
|
45
|
+
## Setup Guide
|
|
61
46
|
|
|
62
|
-
|
|
47
|
+
👉 [**Setup Guide**](doc/Platforms.md)
|
|
63
48
|
|
|
64
|
-
##
|
|
49
|
+
## Configuration
|
|
65
50
|
|
|
66
|
-
|
|
51
|
+
👉 [**Configuration**](doc/Configuration.md)
|
|
67
52
|
|
|
68
53
|
## Web UI
|
|
69
54
|
|
|
@@ -75,28 +60,27 @@ http://_your_mirakurun_ip_:40772/
|
|
|
75
60
|
http://_your_mirakurun_ip_:40772/api/debug
|
|
76
61
|
```
|
|
77
62
|
|
|
78
|
-
|
|
79
63
|
## Client Implementations
|
|
80
64
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
65
|
+
- [Rivarun](https://github.com/Chinachu/Rivarun)
|
|
66
|
+
- [BonDriver_Mirakurun](https://github.com/Chinachu/BonDriver_Mirakurun)
|
|
67
|
+
- Mirakurun Client ([Built-in](https://github.com/Chinachu/Mirakurun/blob/master/src/client.ts))
|
|
68
|
+
- "Air" (in development codename)
|
|
69
|
+
- [Chinachu γ](https://github.com/Chinachu/Chinachu/wiki/Gamma-Installation-V2)
|
|
70
|
+
- [EPGStation](https://github.com/l3tnun/EPGStation)
|
|
87
71
|
|
|
88
72
|
## Contributing
|
|
89
73
|
|
|
90
|
-
[CONTRIBUTING.md](CONTRIBUTING.md)
|
|
74
|
+
- [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
91
75
|
|
|
92
|
-
##
|
|
76
|
+
## Donations
|
|
93
77
|
|
|
94
|
-
|
|
95
|
-
|
|
78
|
+
- [Tip4Commit](https://tip4commit.com/github/Chinachu/Mirakurun) (BTC) - Distributed to all committers
|
|
79
|
+
- [Open Collective](https://opencollective.com/Mirakurun) (USD) - Pool (purpose undecided)
|
|
96
80
|
|
|
97
81
|
## Discord Community
|
|
98
82
|
|
|
99
|
-
|
|
83
|
+
- Invitation: https://discord.gg/X7KU5W9
|
|
100
84
|
|
|
101
85
|
## Contributors
|
|
102
86
|
|
|
@@ -128,11 +112,9 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
|
|
|
128
112
|
|
|
129
113
|
© 2016- [kanreisa](https://github.com/kanreisa).
|
|
130
114
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
**Commercial License / Support** is provided by [Pixely LLC](https://pixely.jp/).
|
|
115
|
+
- Code: [Apache License, Version 2.0](LICENSE)
|
|
116
|
+
- Docs: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)
|
|
117
|
+
- Logo: [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)
|
|
136
118
|
|
|
137
119
|
[npm-img]: https://img.shields.io/npm/v/mirakurun.svg
|
|
138
120
|
[npm-url]: https://npmjs.org/package/mirakurun
|
package/api.d.ts
CHANGED
|
@@ -42,10 +42,6 @@ export interface Channel {
|
|
|
42
42
|
type: ChannelType;
|
|
43
43
|
channel: string;
|
|
44
44
|
name?: string;
|
|
45
|
-
satellite?: string;
|
|
46
|
-
space?: number;
|
|
47
|
-
freq?: number;
|
|
48
|
-
polarity?: "H" | "V";
|
|
49
45
|
services?: Service[];
|
|
50
46
|
}
|
|
51
47
|
|
|
@@ -77,12 +73,7 @@ export interface Program {
|
|
|
77
73
|
name?: string;
|
|
78
74
|
description?: string;
|
|
79
75
|
genres?: ProgramGenre[];
|
|
80
|
-
video?:
|
|
81
|
-
type: ProgramVideoType;
|
|
82
|
-
resolution: ProgramVideoResolution;
|
|
83
|
-
streamContent: number;
|
|
84
|
-
componentType: number;
|
|
85
|
-
}
|
|
76
|
+
video?: ProgramVideo;
|
|
86
77
|
audios?: ProgramAudio[];
|
|
87
78
|
|
|
88
79
|
series?: ProgramSeries;
|
|
@@ -101,6 +92,13 @@ export interface ProgramGenre {
|
|
|
101
92
|
un2: number;
|
|
102
93
|
}
|
|
103
94
|
|
|
95
|
+
export interface ProgramVideo {
|
|
96
|
+
type: ProgramVideoType;
|
|
97
|
+
resolution: ProgramVideoResolution;
|
|
98
|
+
streamContent: number;
|
|
99
|
+
componentType: number;
|
|
100
|
+
}
|
|
101
|
+
|
|
104
102
|
export type ProgramVideoType = "mpeg2" | "h.264" | "h.265";
|
|
105
103
|
|
|
106
104
|
export type ProgramVideoResolution = (
|
|
@@ -220,14 +218,46 @@ export interface TunerProcess {
|
|
|
220
218
|
pid: number;
|
|
221
219
|
}
|
|
222
220
|
|
|
223
|
-
export interface
|
|
221
|
+
export interface JobScheduleItem {
|
|
222
|
+
key: string;
|
|
223
|
+
schedule: string;
|
|
224
|
+
job: Pick<JobItem, "key" | "name">;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
export interface JobItem {
|
|
228
|
+
key: string;
|
|
229
|
+
name: string;
|
|
230
|
+
id: string;
|
|
231
|
+
status: "queued" | "standby" | "running" | "finished";
|
|
232
|
+
retryCount: number;
|
|
233
|
+
|
|
234
|
+
isRerunnable?: boolean;
|
|
235
|
+
retryOnAbort?: boolean;
|
|
236
|
+
retryOnFail?: boolean;
|
|
237
|
+
retryMax?: number;
|
|
238
|
+
retryDelay?: number;
|
|
239
|
+
|
|
240
|
+
isAborting: boolean;
|
|
241
|
+
hasAborted?: boolean;
|
|
242
|
+
hasSkipped?: boolean;
|
|
243
|
+
hasFailed?: boolean;
|
|
244
|
+
error?: string;
|
|
245
|
+
|
|
246
|
+
createdAt: number;
|
|
247
|
+
updatedAt: number;
|
|
248
|
+
startedAt?: number;
|
|
249
|
+
finishedAt?: number;
|
|
250
|
+
duration?: number;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
export interface Event<T = any> {
|
|
224
254
|
resource: EventResource;
|
|
225
255
|
type: EventType;
|
|
226
|
-
data:
|
|
256
|
+
data: T;
|
|
227
257
|
time: UnixtimeMS;
|
|
228
258
|
}
|
|
229
259
|
|
|
230
|
-
export type EventResource = "program" | "service" | "tuner";
|
|
260
|
+
export type EventResource = "program" | "service" | "tuner" | "job" | "job_schedule";
|
|
231
261
|
|
|
232
262
|
export type EventType = "create" | "update" | "remove";
|
|
233
263
|
|
|
@@ -238,10 +268,12 @@ export interface ConfigServer {
|
|
|
238
268
|
disableIPv6?: boolean;
|
|
239
269
|
logLevel?: LogLevel;
|
|
240
270
|
maxLogHistory?: number;
|
|
271
|
+
jobMaxRunning?: number;
|
|
272
|
+
jobMaxStandby?: number;
|
|
241
273
|
maxBufferBytesBeforeReady?: number;
|
|
242
274
|
eventEndTimeout?: number;
|
|
243
|
-
|
|
244
|
-
|
|
275
|
+
programGCJobSchedule?: string;
|
|
276
|
+
epgGatheringJobSchedule?: string;
|
|
245
277
|
epgRetrievalTime?: number;
|
|
246
278
|
logoDataInterval?: number;
|
|
247
279
|
disableEITParsing?: boolean;
|
|
@@ -292,15 +324,25 @@ export interface ConfigChannelsItem {
|
|
|
292
324
|
type: ChannelType;
|
|
293
325
|
/** passed to tuning command */
|
|
294
326
|
channel: string;
|
|
295
|
-
satellite?: string;
|
|
296
327
|
serviceId?: number;
|
|
297
|
-
|
|
298
|
-
freq?: number;
|
|
299
|
-
polarity?: "H" | "V";
|
|
328
|
+
/** TSMF (MPEG-TS Multi Frame) relative TS number config for CATV */
|
|
300
329
|
tsmfRelTs?: number;
|
|
330
|
+
/**
|
|
331
|
+
* passed to tuning command variables.
|
|
332
|
+
* @example { "freq": 123456, "polarity": "H", "space": 6, "extra-args": "..." }
|
|
333
|
+
*/
|
|
334
|
+
commandVars?: Record<string, string | number>;
|
|
301
335
|
isDisabled?: boolean;
|
|
302
|
-
/** @deprecated */
|
|
336
|
+
/** @deprecated typo of "satellite". */
|
|
303
337
|
readonly satelite?: string;
|
|
338
|
+
/** @deprecated from 4.0.0, use `commandVars` instead. */
|
|
339
|
+
readonly satellite?: string;
|
|
340
|
+
/** @deprecated from 4.0.0, use `commandVars` instead. */
|
|
341
|
+
readonly space?: number;
|
|
342
|
+
/** @deprecated from 4.0.0, use `commandVars` instead. */
|
|
343
|
+
readonly freq?: number;
|
|
344
|
+
/** @deprecated from 4.0.0, use `commandVars` instead. */
|
|
345
|
+
readonly polarity?: "H" | "V";
|
|
304
346
|
}
|
|
305
347
|
|
|
306
348
|
export interface ChannelScanStatus {
|