mirakurun 3.9.0-beta.19 → 3.9.0-beta.22
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 +4 -0
- package/doc/Platforms.md +13 -9
- package/docker/docker-compose.yml +18 -4
- package/lib/Mirakurun/api/iptv/xmltv.js +197 -1
- package/lib/Mirakurun/api/iptv/xmltv.js.map +1 -1
- package/lib/ui/index.js +45 -45
- package/lib/ui/index.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -32,6 +32,8 @@ Performance improvements, fixes for memory leaks and bugs related to EPG process
|
|
|
32
32
|
- **program**: Fix program overlapping when re-scheduled. (bug)
|
|
33
33
|
- **program**: Removed the `redefine` event and added the `remove` event. (**breaking change**)
|
|
34
34
|
- **api/iptv**: Fixed a problem with Kodi 19's IPTV feature that caused channel selection to take a long time. [#101](https://github.com/Chinachu/Mirakurun/pull/101)
|
|
35
|
+
- **api/iptv**: Add category (genre) info.
|
|
36
|
+
- **api/iptv**: Add timezone offset explicitly.
|
|
35
37
|
- **api/getLogoImage**: Add `Cache-Control` header to cache logo images.
|
|
36
38
|
- **api/restart**: Improved the restart speed on Docker. (approx. 2 secs)
|
|
37
39
|
- **rpc**: Added a WebSocket RPC interface. (experimental)
|
|
@@ -51,6 +53,8 @@ Performance improvements, fixes for memory leaks and bugs related to EPG process
|
|
|
51
53
|
- Update base image to `node:16.12.0-buster-slim`.
|
|
52
54
|
- Fixed the exit signal handling properly.
|
|
53
55
|
- When a `SIGHUP` is received in a container, only the node process can be restarted quickly.
|
|
56
|
+
- default `docker-compose.yml` volumes has been changed:
|
|
57
|
+
- `/usr/local/mirakurun/*` → `/opt/mirakurun/*`
|
|
54
58
|
|
|
55
59
|
### Other Changes
|
|
56
60
|
|
package/doc/Platforms.md
CHANGED
|
@@ -39,6 +39,10 @@ curl -sSL https://get.docker.com/ | CHANNEL=stable sh
|
|
|
39
39
|
### Install / Uninstall / Update
|
|
40
40
|
|
|
41
41
|
```sh
|
|
42
|
+
# Create: /opt/mirakurun/
|
|
43
|
+
sudo mv -vf /usr/local/mirakurun /opt/mirakurun
|
|
44
|
+
sudo mkdir -p /opt/mirakurun/run /opt/mirakurun/opt /opt/mirakurun/config /opt/mirakurun/data
|
|
45
|
+
|
|
42
46
|
# Install
|
|
43
47
|
mkdir ~/mirakurun/
|
|
44
48
|
cd ~/mirakurun/
|
|
@@ -80,9 +84,9 @@ docker-compose logs [-f]
|
|
|
80
84
|
### Config
|
|
81
85
|
|
|
82
86
|
```
|
|
83
|
-
vim /
|
|
84
|
-
vim /
|
|
85
|
-
vim /
|
|
87
|
+
vim /opt/mirakurun/config/server.yml
|
|
88
|
+
vim /opt/mirakurun/config/tuners.yml
|
|
89
|
+
vim /opt/mirakurun/config/channels.yml
|
|
86
90
|
```
|
|
87
91
|
|
|
88
92
|
see: [Configuration.md](Configuration.md)
|
|
@@ -92,8 +96,8 @@ see: [Configuration.md](Configuration.md)
|
|
|
92
96
|
```sh
|
|
93
97
|
$ which recpt1
|
|
94
98
|
/usr/local/bin/recpt1
|
|
95
|
-
$ cp /usr/local/bin/recpt1 /
|
|
96
|
-
$ vim /
|
|
99
|
+
$ cp /usr/local/bin/recpt1 /opt/mirakurun/opt/bin/
|
|
100
|
+
$ vim /opt/mirakurun/config/tuners.yml
|
|
97
101
|
```
|
|
98
102
|
|
|
99
103
|
### 💡 Locations (Container)
|
|
@@ -111,15 +115,15 @@ $ vim /usr/local/mirakurun/config/tuners.yml
|
|
|
111
115
|
|
|
112
116
|
### 💡 Locations (Host)
|
|
113
117
|
|
|
114
|
-
* Socket: `/
|
|
115
|
-
* Config: `/
|
|
118
|
+
* Socket: `/opt/mirakurun/run/mirakurun.sock`
|
|
119
|
+
* Config: `/opt/mirakurun/config/`
|
|
116
120
|
* `server.yml`
|
|
117
121
|
* `tuners.yml`
|
|
118
122
|
* `channels.yml`
|
|
119
|
-
* Data: `/
|
|
123
|
+
* Data: `/opt/mirakurun/data/`
|
|
120
124
|
* `services.json`
|
|
121
125
|
* `programs.json`
|
|
122
|
-
* Opt: `/
|
|
126
|
+
* Opt: `/opt/mirakurun/opt/`
|
|
123
127
|
* `bin/`
|
|
124
128
|
|
|
125
129
|
## Linux
|
|
@@ -23,10 +23,24 @@ services:
|
|
|
23
23
|
- /dev/bus:/dev/bus
|
|
24
24
|
- /dev/dvb:/dev/dvb
|
|
25
25
|
volumes:
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
- /usr/local/mirakurun/
|
|
26
|
+
# ** CAUTION **
|
|
27
|
+
# (default) `/usr/local/mirakurun/*` has been moved to `/opt/mirakurun/*`
|
|
28
|
+
# try:
|
|
29
|
+
# sudo mv -vf /usr/local/mirakurun /opt/mirakurun
|
|
30
|
+
# sudo mkdir -p /opt/mirakurun/run /opt/mirakurun/opt /opt/mirakurun/config /opt/mirakurun/data
|
|
31
|
+
# you can change to any location if required.
|
|
32
|
+
- type: bind
|
|
33
|
+
source: /opt/mirakurun/run/
|
|
34
|
+
target: /var/run/
|
|
35
|
+
- type: bind
|
|
36
|
+
source: /opt/mirakurun/opt/
|
|
37
|
+
target: /opt/
|
|
38
|
+
- type: bind
|
|
39
|
+
source: /opt/mirakurun/config/
|
|
40
|
+
target: /app-config/
|
|
41
|
+
- type: bind
|
|
42
|
+
source: /opt/mirakurun/data/
|
|
43
|
+
target: /app-data/
|
|
30
44
|
restart: always
|
|
31
45
|
logging:
|
|
32
46
|
driver: json-file
|
|
@@ -3,6 +3,181 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.get = void 0;
|
|
4
4
|
const Service_1 = require("../../Service");
|
|
5
5
|
const _1 = require("../../_");
|
|
6
|
+
const GENRE_LV1 = {
|
|
7
|
+
0x0: "ニュース/報道",
|
|
8
|
+
0x1: "スポーツ",
|
|
9
|
+
0x2: "情報/ワイドショー",
|
|
10
|
+
0x3: "ドラマ",
|
|
11
|
+
0x4: "音楽",
|
|
12
|
+
0x5: "バラエティ",
|
|
13
|
+
0x6: "映画",
|
|
14
|
+
0x7: "アニメ/特撮",
|
|
15
|
+
0x8: "ドキュメンタリー/教養",
|
|
16
|
+
0x9: "劇場/公演",
|
|
17
|
+
0xA: "趣味/教育",
|
|
18
|
+
0xB: "福祉",
|
|
19
|
+
0xC: "予備",
|
|
20
|
+
0xD: "予備",
|
|
21
|
+
0xE: "拡張",
|
|
22
|
+
0xF: "その他"
|
|
23
|
+
};
|
|
24
|
+
const GENRE_LV2 = {
|
|
25
|
+
0x00: "定時・総合",
|
|
26
|
+
0x01: "天気",
|
|
27
|
+
0x02: "特集・ドキュメント",
|
|
28
|
+
0x03: "政治・国会",
|
|
29
|
+
0x04: "経済・市況",
|
|
30
|
+
0x05: "海外・国際",
|
|
31
|
+
0x06: "解説",
|
|
32
|
+
0x07: "討論・会談",
|
|
33
|
+
0x08: "報道特番",
|
|
34
|
+
0x09: "ローカル・地域",
|
|
35
|
+
0x0A: "交通",
|
|
36
|
+
0x0F: "その他",
|
|
37
|
+
0x10: "スポーツニュース",
|
|
38
|
+
0x11: "野球",
|
|
39
|
+
0x12: "サッカー",
|
|
40
|
+
0x13: "ゴルフ",
|
|
41
|
+
0x14: "その他の球技",
|
|
42
|
+
0x15: "相撲・格闘技",
|
|
43
|
+
0x16: "オリンピック・国際大会",
|
|
44
|
+
0x17: "マラソン・陸上・水泳",
|
|
45
|
+
0x18: "モータースポーツ",
|
|
46
|
+
0x19: "マリン・ウィンタースポーツ",
|
|
47
|
+
0x1A: "競馬・公営競技",
|
|
48
|
+
0x1F: "その他",
|
|
49
|
+
0x20: "芸能・ワイドショー",
|
|
50
|
+
0x21: "ファッション",
|
|
51
|
+
0x22: "暮らし・住まい",
|
|
52
|
+
0x23: "健康・医療",
|
|
53
|
+
0x24: "ショッピング・通販",
|
|
54
|
+
0x25: "グルメ・料理",
|
|
55
|
+
0x26: "イベント",
|
|
56
|
+
0x27: "番組紹介・お知らせ",
|
|
57
|
+
0x2F: "その他",
|
|
58
|
+
0x30: "国内ドラマ",
|
|
59
|
+
0x31: "海外ドラマ",
|
|
60
|
+
0x32: "時代劇",
|
|
61
|
+
0x3F: "その他",
|
|
62
|
+
0x40: "国内ロック・ポップス",
|
|
63
|
+
0x41: "海外ロック・ポップス",
|
|
64
|
+
0x42: "クラシック・オペラ",
|
|
65
|
+
0x43: "ジャズ・フュージョン",
|
|
66
|
+
0x44: "歌謡曲・演歌",
|
|
67
|
+
0x45: "ライブ・コンサート",
|
|
68
|
+
0x46: "ランキング・リクエスト",
|
|
69
|
+
0x47: "カラオケ・のど自慢",
|
|
70
|
+
0x48: "民謡・邦楽",
|
|
71
|
+
0x49: "童謡・キッズ",
|
|
72
|
+
0x4A: "民族音楽・ワールドミュージック",
|
|
73
|
+
0x4F: "その他",
|
|
74
|
+
0x50: "クイズ",
|
|
75
|
+
0x51: "ゲーム",
|
|
76
|
+
0x52: "トークバラエティ",
|
|
77
|
+
0x53: "お笑い・コメディ",
|
|
78
|
+
0x54: "音楽バラエティ",
|
|
79
|
+
0x55: "旅バラエティ",
|
|
80
|
+
0x56: "料理バラエティ",
|
|
81
|
+
0x5F: "その他",
|
|
82
|
+
0x60: "洋画",
|
|
83
|
+
0x61: "邦画",
|
|
84
|
+
0x62: "アニメ",
|
|
85
|
+
0x6F: "その他",
|
|
86
|
+
0x70: "国内アニメ",
|
|
87
|
+
0x71: "海外アニメ",
|
|
88
|
+
0x72: "特撮",
|
|
89
|
+
0x7F: "その他",
|
|
90
|
+
0x80: "社会・時事",
|
|
91
|
+
0x81: "歴史・紀行",
|
|
92
|
+
0x82: "自然・動物・環境",
|
|
93
|
+
0x83: "宇宙・科学・医学",
|
|
94
|
+
0x84: "カルチャー・伝統文化",
|
|
95
|
+
0x85: "文学・文芸",
|
|
96
|
+
0x86: "スポーツ",
|
|
97
|
+
0x87: "ドキュメンタリー全般",
|
|
98
|
+
0x88: "インタビュー・討論",
|
|
99
|
+
0x8F: "その他",
|
|
100
|
+
0x90: "現代劇・新劇",
|
|
101
|
+
0x91: "ミュージカル",
|
|
102
|
+
0x92: "ダンス・バレエ",
|
|
103
|
+
0x93: "落語・演芸",
|
|
104
|
+
0x94: "歌舞伎・古典",
|
|
105
|
+
0x9F: "その他",
|
|
106
|
+
0xA0: "旅・釣り・アウトドア",
|
|
107
|
+
0xA1: "園芸・ペット・手芸",
|
|
108
|
+
0xA2: "音楽・美術・工芸",
|
|
109
|
+
0xA3: "囲碁・将棋",
|
|
110
|
+
0xA4: "麻雀・パチンコ",
|
|
111
|
+
0xA5: "車・オートバイ",
|
|
112
|
+
0xA6: "コンピュータ・TVゲーム",
|
|
113
|
+
0xA7: "会話・語学",
|
|
114
|
+
0xA8: "幼児・小学生",
|
|
115
|
+
0xA9: "中学生・高校生",
|
|
116
|
+
0xAA: "大学生・受験",
|
|
117
|
+
0xAB: "生涯教育・資格",
|
|
118
|
+
0xAC: "教育問題",
|
|
119
|
+
0xAF: "その他",
|
|
120
|
+
0xB0: "高齢者",
|
|
121
|
+
0xB1: "障害者",
|
|
122
|
+
0xB2: "社会福祉",
|
|
123
|
+
0xB3: "ボランティア",
|
|
124
|
+
0xB4: "手話",
|
|
125
|
+
0xB5: "文字(字幕)",
|
|
126
|
+
0xB6: "音声解説",
|
|
127
|
+
0xBF: "その他",
|
|
128
|
+
0xE0: "BS/地上デジタル放送用番組付属情報",
|
|
129
|
+
0xE1: "広帯域CSデジタル放送用拡張",
|
|
130
|
+
0xE2: "衛星デジタル音声放送用拡張",
|
|
131
|
+
0xE3: "サーバー型番組付属情報",
|
|
132
|
+
0xE4: "IP放送用番組付属情報",
|
|
133
|
+
0xF0: "その他",
|
|
134
|
+
0xFF: "その他"
|
|
135
|
+
};
|
|
136
|
+
const GENRE_UNEX = {
|
|
137
|
+
0x000: "中止の可能性あり",
|
|
138
|
+
0x001: "延長の可能性あり",
|
|
139
|
+
0x002: "中断の可能性あり",
|
|
140
|
+
0x003: "同一シリーズの別話数放送の可能性あり",
|
|
141
|
+
0x004: "編成未定枠",
|
|
142
|
+
0x005: "繰り上げの可能性あり",
|
|
143
|
+
0x010: "中断ニュースあり",
|
|
144
|
+
0x011: "当該イベントに関連する臨時サービスあり",
|
|
145
|
+
0x100: "スポーツ - テニス",
|
|
146
|
+
0x101: "スポーツ - バスケットボール",
|
|
147
|
+
0x102: "スポーツ - ラグビー",
|
|
148
|
+
0x103: "スポーツ - アメリカンフットボール",
|
|
149
|
+
0x104: "スポーツ - ボクシング",
|
|
150
|
+
0x105: "スポーツ - プロレス",
|
|
151
|
+
0x10F: "スポーツ - その他",
|
|
152
|
+
0x110: "洋画 - アクション",
|
|
153
|
+
0x111: "洋画 - SF/ファンタジー",
|
|
154
|
+
0x112: "洋画 - コメディー",
|
|
155
|
+
0x113: "洋画 - サスペンス/ミステリー",
|
|
156
|
+
0x114: "洋画 - 恋愛/ロマンス",
|
|
157
|
+
0x115: "洋画 - ホラー/スリラー",
|
|
158
|
+
0x116: "洋画 - ウエスタン",
|
|
159
|
+
0x117: "洋画 - ドラマ/社会派ドラマ",
|
|
160
|
+
0x118: "洋画 - アニメーション",
|
|
161
|
+
0x119: "洋画 - ドキュメンタリー",
|
|
162
|
+
0x11A: "洋画 - アドベンチャー/冒険",
|
|
163
|
+
0x11B: "洋画 - ミュージカル/音楽映画",
|
|
164
|
+
0x11C: "洋画 - ホームドラマ",
|
|
165
|
+
0x11F: "洋画 - その他",
|
|
166
|
+
0x120: "邦画 - アクション",
|
|
167
|
+
0x121: "邦画 - SF/ファンタジー",
|
|
168
|
+
0x122: "邦画 - お笑い/コメディー",
|
|
169
|
+
0x123: "邦画 - サスペンス/ミステリー",
|
|
170
|
+
0x124: "邦画 - 恋愛/ロマンス",
|
|
171
|
+
0x125: "邦画 - ホラー/スリラー",
|
|
172
|
+
0x126: "邦画 - 青春/学園/アイドル",
|
|
173
|
+
0x127: "邦画 - 任侠/時代劇",
|
|
174
|
+
0x128: "邦画 - アニメーション",
|
|
175
|
+
0x129: "邦画 - ドキュメンタリー",
|
|
176
|
+
0x12A: "邦画 - アドベンチャー/冒険",
|
|
177
|
+
0x12B: "邦画 - ミュージカル/音楽映画",
|
|
178
|
+
0x12C: "邦画 - ホームドラマ",
|
|
179
|
+
0x12F: "邦画 - その他"
|
|
180
|
+
};
|
|
6
181
|
function escapeXMLSpecialChars(str) {
|
|
7
182
|
return str.replace(/&/g, "&")
|
|
8
183
|
.replace(/</g, "<")
|
|
@@ -13,7 +188,22 @@ function escapeXMLSpecialChars(str) {
|
|
|
13
188
|
function getDateTime(time) {
|
|
14
189
|
return new Date(time).toISOString()
|
|
15
190
|
.replace(/\..+$/, "")
|
|
16
|
-
.replace(/[-:T]/g, "");
|
|
191
|
+
.replace(/[-:T]/g, "") + " +0000";
|
|
192
|
+
}
|
|
193
|
+
function getGenreStrings(genres) {
|
|
194
|
+
const stringSet = new Set();
|
|
195
|
+
for (const genre of genres) {
|
|
196
|
+
if (genre.lv1 === 14) {
|
|
197
|
+
const text = GENRE_UNEX[(genre.lv2 * 0x100) + (genre.un1 * 0x10) + genre.un2];
|
|
198
|
+
if (text) {
|
|
199
|
+
stringSet.add(text);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
stringSet.add(`${GENRE_LV1[genre.lv1]} - ${GENRE_LV2[genre.lv1 * 0x10 + genre.lv2]}`);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return [...stringSet.values()];
|
|
17
207
|
}
|
|
18
208
|
const get = async (req, res) => {
|
|
19
209
|
const apiRoot = `${req.protocol}://${req.headers.host}/api`;
|
|
@@ -51,6 +241,12 @@ const get = async (req, res) => {
|
|
|
51
241
|
x += `<programme start="${getDateTime(program.startAt)}" stop="${getDateTime(program.startAt + program.duration)}" channel="${service.id}">\n`;
|
|
52
242
|
x += `<title>${escapeXMLSpecialChars(program.name || "")}</title>\n`;
|
|
53
243
|
x += `<desc>${escapeXMLSpecialChars(program.description || "")}</desc>\n`;
|
|
244
|
+
if (program.genres) {
|
|
245
|
+
const genreStrings = getGenreStrings(program.genres);
|
|
246
|
+
for (const genreString of genreStrings) {
|
|
247
|
+
x += `<category>${genreString}</category>\n`;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
54
250
|
x += `</programme>\n`;
|
|
55
251
|
}
|
|
56
252
|
x += `</tv>`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xmltv.js","sourceRoot":"","sources":["../../../../src/Mirakurun/api/iptv/xmltv.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"xmltv.js","sourceRoot":"","sources":["../../../../src/Mirakurun/api/iptv/xmltv.ts"],"names":[],"mappings":";;;AAiBA,2CAAoC;AACpC,8BAAwB;AAExB,MAAM,SAAS,GAA8B;IACzC,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,KAAK;CACb,CAAC;AAEF,MAAM,SAAS,GAA8B;IACzC,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,KAAK;IAGX,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;CACd,CAAC;AAEF,MAAM,UAAU,GAA8B;IAE1C,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,qBAAqB;IAC5B,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,sBAAsB;IAG7B,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,oBAAoB;IAC3B,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,gBAAgB;IACvB,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,kBAAkB;IACzB,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,eAAe;IACtB,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,eAAe;IACtB,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,kBAAkB;IACzB,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,gBAAgB;IACvB,KAAK,EAAE,gBAAgB;IACvB,KAAK,EAAE,kBAAkB;IACzB,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,eAAe;IACtB,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,eAAe;IACtB,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,kBAAkB;IACzB,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,UAAU;CACpB,CAAC;AAEF,SAAS,qBAAqB,CAAC,GAAW;IACtC,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SAC5B,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC7B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;SAC9B,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC;AAC1C,CAAC;AAED,SAAS,eAAe,CAAC,MAAyB;IAE9C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QACxB,IAAI,KAAK,CAAC,GAAG,KAAK,EAAE,EAAE;YAElB,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9E,IAAI,IAAI,EAAE;gBACN,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACvB;SACJ;aAAM;YAEH,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACzF;KACJ;IAED,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;AACnC,CAAC;AAEM,MAAM,GAAG,GAAc,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAE7C,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC;IAE5D,MAAM,QAAQ,GAAG,CAAC,GAAG,UAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAErD,IAAI,CAAC,GAAG,0CAA0C,CAAC;IACnD,CAAC,IAAI,oCAAoC,CAAC;IAC1C,CAAC,IAAI,qCAAqC,CAAC;IAE3C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC5B,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE;YACpB,SAAS;SACZ;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,IAAI,OAAO,CAAC,SAAS,CAAC;QAChE,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACvB,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;SACpD;aAAM;YACH,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;SAC5B;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAErC,CAAC,IAAI,gBAAgB,OAAO,CAAC,EAAE,MAAM,CAAC;QACtC,CAAC,IAAI,iBAAiB,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAC7E,CAAC,IAAI,iBAAiB,OAAO,IAAI,MAAM,mBAAmB,CAAC;QAC3D,IAAI,MAAM,iBAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;YACnE,CAAC,IAAI,cAAc,OAAO,aAAa,OAAO,CAAC,EAAE,WAAW,CAAC;SAChE;QACD,CAAC,IAAI,cAAc,CAAC;KACvB;IAED,KAAK,MAAM,OAAO,IAAI,UAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,UAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,OAAO,KAAK,IAAI,EAAE;YAClB,SAAS;SACZ;QACD,CAAC,IAAI,qBAAqB,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,WAAW,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,cAAc,OAAO,CAAC,EAAE,MAAM,CAAC;QAC/I,CAAC,IAAI,UAAU,qBAAqB,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,YAAY,CAAC;QACrE,CAAC,IAAI,SAAS,qBAAqB,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,WAAW,CAAC;QAC1E,IAAI,OAAO,CAAC,MAAM,EAAE;YAChB,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACrD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;gBACpC,CAAC,IAAI,aAAa,WAAW,eAAe,CAAC;aAChD;SACJ;QACD,CAAC,IAAI,gBAAgB,CAAC;KACzB;IAED,CAAC,IAAI,OAAO,CAAC;IAEb,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAC;IACzD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACf,CAAC,CAAC;AAxDW,QAAA,GAAG,OAwDd;AAEF,WAAG,CAAC,MAAM,GAAG;IACT,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,OAAO,EAAE,uBAAuB;IAChC,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,SAAS,EAAE;QACP,GAAG,EAAE;YACD,WAAW,EAAE,IAAI;SACpB;QACD,OAAO,EAAE;YACL,WAAW,EAAE,kBAAkB;YAC/B,MAAM,EAAE;gBACJ,IAAI,EAAE,qBAAqB;aAC9B;SACJ;KACJ;CACJ,CAAC"}
|
package/lib/ui/index.js
CHANGED
|
@@ -4080,7 +4080,7 @@ var Configurator = function (_a) {
|
|
|
4080
4080
|
var items = [];
|
|
4081
4081
|
editing === null || editing === void 0 ? void 0 : editing.forEach(function (ch, i) {
|
|
4082
4082
|
var item = {
|
|
4083
|
-
key: "item"
|
|
4083
|
+
key: "item".concat(i),
|
|
4084
4084
|
enable: (react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.Toggle, { checked: !ch.isDisabled, onChange: function (ev, checked) {
|
|
4085
4085
|
ch.isDisabled = !checked;
|
|
4086
4086
|
setEditing(__spreadArray([], editing, true));
|
|
@@ -4090,7 +4090,7 @@ var Configurator = function (_a) {
|
|
|
4090
4090
|
setEditing(__spreadArray([], editing, true));
|
|
4091
4091
|
}, onBlur: function () {
|
|
4092
4092
|
if (ch.name === "") {
|
|
4093
|
-
ch.name = "ch"
|
|
4093
|
+
ch.name = "ch".concat(i);
|
|
4094
4094
|
setEditing(__spreadArray([], editing, true));
|
|
4095
4095
|
}
|
|
4096
4096
|
} })),
|
|
@@ -4114,7 +4114,7 @@ var Configurator = function (_a) {
|
|
|
4114
4114
|
} })),
|
|
4115
4115
|
options: (react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.Stack, { tokens: { childrenGap: "8 0" } },
|
|
4116
4116
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.Stack, { horizontal: true, tokens: { childrenGap: "0 8" } },
|
|
4117
|
-
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { style: { width: 55 }, label: "Service ID:", value: ""
|
|
4117
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { style: { width: 55 }, label: "Service ID:", value: "".concat(ch.serviceId || ""), onChange: function (ev, newValue) {
|
|
4118
4118
|
if (newValue === "") {
|
|
4119
4119
|
delete ch.serviceId;
|
|
4120
4120
|
}
|
|
@@ -4135,7 +4135,7 @@ var Configurator = function (_a) {
|
|
|
4135
4135
|
}
|
|
4136
4136
|
setEditing(__spreadArray([], editing, true));
|
|
4137
4137
|
} }),
|
|
4138
|
-
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { style: { width: 40 }, label: "Space:", placeholder: "0", value: ""
|
|
4138
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { style: { width: 40 }, label: "Space:", placeholder: "0", value: "".concat(ch.space || ""), onChange: function (ev, newValue) {
|
|
4139
4139
|
if (newValue === "") {
|
|
4140
4140
|
delete ch.space;
|
|
4141
4141
|
}
|
|
@@ -4147,7 +4147,7 @@ var Configurator = function (_a) {
|
|
|
4147
4147
|
}
|
|
4148
4148
|
setEditing(__spreadArray([], editing, true));
|
|
4149
4149
|
} }),
|
|
4150
|
-
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { style: { width: 60 }, label: "Freq:", value: ""
|
|
4150
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { style: { width: 60 }, label: "Freq:", value: "".concat(ch.freq || ""), onChange: function (ev, newValue) {
|
|
4151
4151
|
if (newValue === "") {
|
|
4152
4152
|
delete ch.freq;
|
|
4153
4153
|
}
|
|
@@ -4170,7 +4170,7 @@ var Configurator = function (_a) {
|
|
|
4170
4170
|
}
|
|
4171
4171
|
setEditing(__spreadArray([], editing, true));
|
|
4172
4172
|
} }),
|
|
4173
|
-
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { style: { width: 40 }, label: "TsmfRelTs:", value: ""
|
|
4173
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { style: { width: 40 }, label: "TsmfRelTs:", value: "".concat(ch.tsmfRelTs || ""), onChange: function (ev, newValue) {
|
|
4174
4174
|
if (newValue === "") {
|
|
4175
4175
|
delete ch.tsmfRelTs;
|
|
4176
4176
|
}
|
|
@@ -4215,7 +4215,7 @@ var Configurator = function (_a) {
|
|
|
4215
4215
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.ActionButton, { text: "Add Channel", iconProps: { iconName: "Add" }, onClick: function () {
|
|
4216
4216
|
var i = editing.length;
|
|
4217
4217
|
editing.push({
|
|
4218
|
-
name: "ch"
|
|
4218
|
+
name: "ch".concat(i),
|
|
4219
4219
|
type: "GR",
|
|
4220
4220
|
channel: "0",
|
|
4221
4221
|
isDisabled: true
|
|
@@ -4371,7 +4371,7 @@ var ConnectionGuide = function () {
|
|
|
4371
4371
|
theme.fonts.xLarge,
|
|
4372
4372
|
{
|
|
4373
4373
|
flex: "1 1 auto",
|
|
4374
|
-
borderTop: "4px solid "
|
|
4374
|
+
borderTop: "4px solid ".concat(theme.palette.themePrimary),
|
|
4375
4375
|
color: theme.palette.themePrimary,
|
|
4376
4376
|
display: "flex",
|
|
4377
4377
|
alignItems: "center",
|
|
@@ -4415,17 +4415,17 @@ var ConnectionGuide = function () {
|
|
|
4415
4415
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.IconButton, { styles: iconButtonStyles, iconProps: { iconName: "Cancel" }, ariaLabel: "Close", onClick: function () { return setModalOpen(false); } })),
|
|
4416
4416
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: contentStyles.body },
|
|
4417
4417
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.Stack, __assign({}, stackProps),
|
|
4418
|
-
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { readOnly: true, label: "Mirakurun Path", value: location.protocol
|
|
4419
|
-
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { readOnly: true, label: "Open API 2.0 / Swagger 2.0 Compliant Definition", value: location.protocol
|
|
4418
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { readOnly: true, label: "Mirakurun Path", value: "".concat(location.protocol, "//").concat(location.host, "/"), onMouseOver: selectHandler, onClick: selectHandler }),
|
|
4419
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { readOnly: true, label: "Open API 2.0 / Swagger 2.0 Compliant Definition", value: "".concat(location.protocol, "//").concat(location.host, "/api/docs"), onMouseOver: selectHandler, onClick: selectHandler }),
|
|
4420
4420
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.Separator, null, "IPTV"),
|
|
4421
|
-
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { readOnly: true, label: "M3U Playlist", value: location.protocol
|
|
4422
|
-
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { readOnly: true, label: "XMLTV", value: location.protocol
|
|
4423
|
-
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { readOnly: true, label: "HDHomeRun Device Address", value: location.protocol
|
|
4421
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { readOnly: true, label: "M3U Playlist", value: "".concat(location.protocol, "//").concat(location.host, "/api/iptv/playlist"), onMouseOver: selectHandler, onClick: selectHandler }),
|
|
4422
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { readOnly: true, label: "XMLTV", value: "".concat(location.protocol, "//").concat(location.host, "/api/iptv/xmltv"), onMouseOver: selectHandler, onClick: selectHandler }),
|
|
4423
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { readOnly: true, label: "HDHomeRun Device Address", value: "".concat(location.protocol, "//").concat(location.host, "/api/iptv"), onMouseOver: selectHandler, onClick: selectHandler, onRenderLabel: function (props) { return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.Stack, { horizontal: true, verticalAlign: "end" },
|
|
4424
4424
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.Label, null, props.label),
|
|
4425
4425
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TooltipHost, { content: "Tested on Plex Media Server" },
|
|
4426
4426
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.Icon, { iconName: "Info", style: { marginLeft: 4, marginBottom: 6 } })))); } }),
|
|
4427
4427
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.Separator, null, "Misc"),
|
|
4428
|
-
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { readOnly: true, label: "BonDriver_Mirakurun.ini", multiline: true, rows: 3, value: "[GLOBAL]\nSERVER_HOST=\""
|
|
4428
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { readOnly: true, label: "BonDriver_Mirakurun.ini", multiline: true, rows: 3, value: "[GLOBAL]\nSERVER_HOST=\"".concat(location.hostname, "\"\nSERVER_PORT=\"").concat(location.port, "\""), onMouseOver: selectHandler, onClick: selectHandler })))),
|
|
4429
4429
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.ActionButton, { iconProps: { iconName: "Info" }, text: "Connection Guide", onClick: function () { return setModalOpen(true); } })));
|
|
4430
4430
|
};
|
|
4431
4431
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ConnectionGuide);
|
|
@@ -4505,7 +4505,7 @@ var EventsView = function (_a) {
|
|
|
4505
4505
|
var newList = [];
|
|
4506
4506
|
for (var _i = 0, events_1 = events; _i < events_1.length; _i++) {
|
|
4507
4507
|
var event_1 = events_1[_i];
|
|
4508
|
-
newList.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { key: "events-list-item"
|
|
4508
|
+
newList.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { key: "events-list-item".concat(_itemId), className: "type-".concat(event_1.type) }, "".concat(event_1.resource, " (").concat(event_1.type, ") ").concat(JSON.stringify(event_1.data))));
|
|
4509
4509
|
++_itemId;
|
|
4510
4510
|
}
|
|
4511
4511
|
if (unshift === true) {
|
|
@@ -4717,7 +4717,7 @@ var LogsView = function (_a) {
|
|
|
4717
4717
|
var line = lines_1[_i];
|
|
4718
4718
|
var parsed = line.match(/^[0-9.T:+-]+ ([a-z]+): /);
|
|
4719
4719
|
var level = parsed ? parsed[1] : "other";
|
|
4720
|
-
newList.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { key: "logs-list-item"
|
|
4720
|
+
newList.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { key: "logs-list-item".concat(_itemId), className: "level-".concat(level) }, line));
|
|
4721
4721
|
++_itemId;
|
|
4722
4722
|
}
|
|
4723
4723
|
if (unshift === true) {
|
|
@@ -4998,7 +4998,7 @@ var Configurator = function (_a) {
|
|
|
4998
4998
|
setEditing(__assign(__assign({}, editing), { disableIPv6: checked === false }));
|
|
4999
4999
|
} }),
|
|
5000
5000
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.Separator, { alignContent: "start" }, "Advanced"),
|
|
5001
|
-
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { styles: { fieldGroup: { "max-width": 200 } }, label: "EPG Gathering Interval", suffix: "ms", placeholder: "3600000", value: ""
|
|
5001
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { styles: { fieldGroup: { "max-width": 200 } }, label: "EPG Gathering Interval", suffix: "ms", placeholder: "3600000", value: "".concat(editing.epgGatheringInterval || ""), onChange: function (ev, newValue) {
|
|
5002
5002
|
if (newValue === "") {
|
|
5003
5003
|
delete editing.epgGatheringInterval;
|
|
5004
5004
|
}
|
|
@@ -5140,20 +5140,20 @@ var StatusView = function (_a) {
|
|
|
5140
5140
|
var statusItem = [];
|
|
5141
5141
|
if (status) {
|
|
5142
5142
|
var dockerStat = ((_c = (_b = status.process) === null || _b === void 0 ? void 0 : _b.env) === null || _c === void 0 ? void 0 : _c.DOCKER) === "YES" ? "🐋" : "";
|
|
5143
|
-
statusItem.push({ label: "Platform", text: ((_d = status.process) === null || _d === void 0 ? void 0 : _d.platform
|
|
5143
|
+
statusItem.push({ label: "Platform", text: "".concat((_d = status.process) === null || _d === void 0 ? void 0 : _d.platform, " (").concat((_e = status.process) === null || _e === void 0 ? void 0 : _e.arch, ") ").concat(dockerStat) });
|
|
5144
5144
|
statusItem.push({ label: "Node.js Version", text: (_g = (_f = status.process) === null || _f === void 0 ? void 0 : _f.versions) === null || _g === void 0 ? void 0 : _g.node });
|
|
5145
|
-
statusItem.push({ label: "Memory (RSS)", text: Math.round(((_j = (_h = status.process) === null || _h === void 0 ? void 0 : _h.memoryUsage) === null || _j === void 0 ? void 0 : _j.rss) / 1024 / 1024)
|
|
5146
|
-
statusItem.push({ label: "EPG Gathering Network IDs", text: status.epg.gatheringNetworks.map(function (id) { return "0x"
|
|
5147
|
-
statusItem.push({ label: "EPG Stored Events", text: status.epg.storedEvents
|
|
5148
|
-
statusItem.push({ label: "TunerDevice Streams", text: ""
|
|
5149
|
-
statusItem.push({ label: "TSFilter Streams", text: ""
|
|
5150
|
-
statusItem.push({ label: "Decoder Streams", text: ""
|
|
5151
|
-
statusItem.push({ label: "RPC Connections", text: ""
|
|
5145
|
+
statusItem.push({ label: "Memory (RSS)", text: "".concat(Math.round(((_j = (_h = status.process) === null || _h === void 0 ? void 0 : _h.memoryUsage) === null || _j === void 0 ? void 0 : _j.rss) / 1024 / 1024), " MB") });
|
|
5146
|
+
statusItem.push({ label: "EPG Gathering Network IDs", text: status.epg.gatheringNetworks.map(function (id) { return "0x".concat(id.toString(16).toUpperCase()); }).join(", ") });
|
|
5147
|
+
statusItem.push({ label: "EPG Stored Events", text: "".concat(status.epg.storedEvents, " Events") });
|
|
5148
|
+
statusItem.push({ label: "TunerDevice Streams", text: "".concat(status.streamCount.tunerDevice) });
|
|
5149
|
+
statusItem.push({ label: "TSFilter Streams", text: "".concat(status.streamCount.tsFilter) });
|
|
5150
|
+
statusItem.push({ label: "Decoder Streams", text: "".concat(status.streamCount.decoder) });
|
|
5151
|
+
statusItem.push({ label: "RPC Connections", text: "".concat(status.rpcCount) });
|
|
5152
5152
|
}
|
|
5153
5153
|
var statusList = [];
|
|
5154
5154
|
for (var i = 0; i < statusItem.length; i++) {
|
|
5155
5155
|
var item = statusItem[i];
|
|
5156
|
-
statusList.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { key: "status-list-item"
|
|
5156
|
+
statusList.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { key: "status-list-item".concat(i), className: "ms-Grid-col ms-sm12 ms-xl6 ms-xxl4 ms-xxxl3" },
|
|
5157
5157
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "ms-Grid", style: { margin: 4 } },
|
|
5158
5158
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "ms-Grid-row" },
|
|
5159
5159
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "ms-Grid-col ms-sm6" },
|
|
@@ -5167,19 +5167,19 @@ var StatusView = function (_a) {
|
|
|
5167
5167
|
if (service.type !== 1) {
|
|
5168
5168
|
continue;
|
|
5169
5169
|
}
|
|
5170
|
-
var tooltipId = "service-list-item#"
|
|
5171
|
-
serviceList.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { key: "service-list-item"
|
|
5172
|
-
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TooltipHost, { id: tooltipId, calloutProps: calloutProps, styles: tooltipHostStyles, tooltipProps: tooltipProps, content: ("#"
|
|
5173
|
-
|
|
5174
|
-
|
|
5175
|
-
|
|
5170
|
+
var tooltipId = "service-list-item#".concat(i, "-tooltip");
|
|
5171
|
+
serviceList.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { key: "service-list-item".concat(i), className: "ms-Grid-col ms-sm6 ms-xl3 ms-xxl2" },
|
|
5172
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TooltipHost, { id: tooltipId, calloutProps: calloutProps, styles: tooltipHostStyles, tooltipProps: tooltipProps, content: ("#".concat(service.id, "\n") +
|
|
5173
|
+
"SID: 0x".concat(service.serviceId.toString(16).toUpperCase(), " (").concat(service.serviceId, ")\n") +
|
|
5174
|
+
"NID: 0x".concat(service.networkId.toString(16).toUpperCase(), " (").concat(service.networkId, ")\n") +
|
|
5175
|
+
"Channel: ".concat(service.channel.type, " / ").concat(service.channel.channel)) },
|
|
5176
5176
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "ms-Grid", "area-describeby": tooltipId, style: { margin: 4 } },
|
|
5177
5177
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "ms-Grid-row", style: {
|
|
5178
5178
|
padding: 1,
|
|
5179
5179
|
height: 24,
|
|
5180
5180
|
backgroundSize: "contain",
|
|
5181
5181
|
backgroundRepeat: "no-repeat",
|
|
5182
|
-
backgroundImage: service.hasLogoData && "url(/api/services/"
|
|
5182
|
+
backgroundImage: service.hasLogoData && "url(/api/services/".concat(service.id, "/logo)")
|
|
5183
5183
|
} },
|
|
5184
5184
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "ms-Grid-col ms-sm12", style: { paddingLeft: 50 } },
|
|
5185
5185
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", { className: "ms-fontWeight-semibold ms-fontSize-12" }, service.name),
|
|
@@ -5351,7 +5351,7 @@ var Configurator = function (_a) {
|
|
|
5351
5351
|
var items = [];
|
|
5352
5352
|
editing === null || editing === void 0 ? void 0 : editing.forEach(function (tuner, i) {
|
|
5353
5353
|
var item = {
|
|
5354
|
-
key: "item"
|
|
5354
|
+
key: "item".concat(i),
|
|
5355
5355
|
enable: (react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.Toggle, { checked: !tuner.isDisabled, onChange: function (ev, checked) {
|
|
5356
5356
|
tuner.isDisabled = !checked;
|
|
5357
5357
|
setEditing(__spreadArray([], editing, true));
|
|
@@ -5405,7 +5405,7 @@ var Configurator = function (_a) {
|
|
|
5405
5405
|
}
|
|
5406
5406
|
setEditing(__spreadArray([], editing, true));
|
|
5407
5407
|
} }),
|
|
5408
|
-
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { style: { width: 55 }, label: "Port:", placeholder: "40772", value: ""
|
|
5408
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.TextField, { style: { width: 55 }, label: "Port:", placeholder: "40772", value: "".concat(tuner.remoteMirakurunPort || ""), onChange: function (ev, newValue) {
|
|
5409
5409
|
if (newValue === "") {
|
|
5410
5410
|
delete tuner.remoteMirakurunPort;
|
|
5411
5411
|
}
|
|
@@ -5470,10 +5470,10 @@ var Configurator = function (_a) {
|
|
|
5470
5470
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.ActionButton, { text: "Add Tuner", iconProps: { iconName: "Add" }, onClick: function () {
|
|
5471
5471
|
var i = editing.length;
|
|
5472
5472
|
editing.push({
|
|
5473
|
-
name: "adapter"
|
|
5473
|
+
name: "adapter".concat(i),
|
|
5474
5474
|
types: [],
|
|
5475
|
-
command: "dvbv5-zap -a "
|
|
5476
|
-
dvbDevicePath: "/dev/dvb/adapter"
|
|
5475
|
+
command: "dvbv5-zap -a ".concat(i, " -c ./config/dvbconf-for-isdb/conf/dvbv5_channels_isdbs.conf -r -P <channel>"),
|
|
5476
|
+
dvbDevicePath: "/dev/dvb/adapter".concat(i, "/dvr0"),
|
|
5477
5477
|
decoder: "arib-b25-stream-test",
|
|
5478
5478
|
isDisabled: true
|
|
5479
5479
|
});
|
|
@@ -5613,14 +5613,14 @@ var TunersManager = function (_a) {
|
|
|
5613
5613
|
var items = [];
|
|
5614
5614
|
var _loop_1 = function (tuner) {
|
|
5615
5615
|
var item = {
|
|
5616
|
-
_group: "#"
|
|
5616
|
+
_group: "#".concat(tuner.index, ": ").concat(tuner.name, " (").concat(tuner.types.join(", "), ")"),
|
|
5617
5617
|
_kind: "device",
|
|
5618
|
-
key: "row-device-"
|
|
5618
|
+
key: "row-device-".concat(tuner.index),
|
|
5619
5619
|
name: tuner.name,
|
|
5620
5620
|
command: (react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null,
|
|
5621
5621
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.Icon, { title: "Command", iconName: "ServerProcesses" }),
|
|
5622
5622
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.Text, { style: { lineHeight: "30px", marginLeft: 8 } }, tuner.command || "-"),
|
|
5623
|
-
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.Text, { style: { lineHeight: "30px", marginLeft: 8 }, className: _fluentui_react__WEBPACK_IMPORTED_MODULE_1__.ColorClassNames.neutralTertiaryAlt }, tuner.pid ? "(pid="
|
|
5623
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.Text, { style: { lineHeight: "30px", marginLeft: 8 }, className: _fluentui_react__WEBPACK_IMPORTED_MODULE_1__.ColorClassNames.neutralTertiaryAlt }, tuner.pid ? "(pid=".concat(tuner.pid, ")") : "")))
|
|
5624
5624
|
};
|
|
5625
5625
|
if (tuner.command) {
|
|
5626
5626
|
item.controls = (react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.IconButton, { title: "Controls", iconProps: { iconName: "More" }, menuProps: { items: [{
|
|
@@ -5636,7 +5636,7 @@ var TunersManager = function (_a) {
|
|
|
5636
5636
|
items.push({
|
|
5637
5637
|
_group: item._group,
|
|
5638
5638
|
_kind: "user",
|
|
5639
|
-
key: item.key
|
|
5639
|
+
key: "".concat(item.key, "-user-").concat(user.id),
|
|
5640
5640
|
name: user.id,
|
|
5641
5641
|
user: (react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null,
|
|
5642
5642
|
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fluentui_react__WEBPACK_IMPORTED_MODULE_1__.Icon, { title: "User", iconName: /Mirakurun/.test(user.id) ? "Processing" : "PlugConnected" }),
|
|
@@ -5681,7 +5681,7 @@ var TunersManager = function (_a) {
|
|
|
5681
5681
|
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
5682
5682
|
return __generator(this, function (_a) {
|
|
5683
5683
|
switch (_a.label) {
|
|
5684
|
-
case 0: return [4, fetch("/api/tuners/"
|
|
5684
|
+
case 0: return [4, fetch("/api/tuners/".concat(killTarget, "/process"), { method: "DELETE" })];
|
|
5685
5685
|
case 1:
|
|
5686
5686
|
_a.sent();
|
|
5687
5687
|
return [2];
|
|
@@ -6909,7 +6909,7 @@ function idleStatusChecker() {
|
|
|
6909
6909
|
return true;
|
|
6910
6910
|
}
|
|
6911
6911
|
uiStateEvents.on("update:tuners", idleStatusChecker);
|
|
6912
|
-
var rpc = new jsonrpc2_ws__WEBPACK_IMPORTED_MODULE_4__.Client("ws://"
|
|
6912
|
+
var rpc = new jsonrpc2_ws__WEBPACK_IMPORTED_MODULE_4__.Client("ws://".concat(location.host, "/rpc"), {
|
|
6913
6913
|
protocols: null
|
|
6914
6914
|
});
|
|
6915
6915
|
rpc.on("connecting", function () {
|
|
@@ -7057,7 +7057,7 @@ var Content = function () {
|
|
|
7057
7057
|
var _a;
|
|
7058
7058
|
var _b = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(uiState), state = _b[0], setState = _b[1];
|
|
7059
7059
|
(0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {
|
|
7060
|
-
var title = state.statusName
|
|
7060
|
+
var title = "".concat(state.statusName, " - Mirakurun ").concat(state.version);
|
|
7061
7061
|
if (document.title !== title) {
|
|
7062
7062
|
document.title = title;
|
|
7063
7063
|
}
|