prismcast 1.7.0 → 1.8.0

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.
Files changed (112) hide show
  1. package/dist/app.js +9 -8
  2. package/dist/app.js.map +1 -1
  3. package/dist/browser/login.js +11 -8
  4. package/dist/browser/login.js.map +1 -1
  5. package/dist/channels/index.d.ts +2 -0
  6. package/dist/channels/index.js +208 -22
  7. package/dist/channels/index.js.map +1 -1
  8. package/dist/config/health.js +10 -15
  9. package/dist/config/health.js.map +1 -1
  10. package/dist/config/index.js +9 -0
  11. package/dist/config/index.js.map +1 -1
  12. package/dist/config/profiles.js +10 -10
  13. package/dist/config/profiles.js.map +1 -1
  14. package/dist/config/providers.js +30 -17
  15. package/dist/config/providers.js.map +1 -1
  16. package/dist/config/userChannels.d.ts +62 -9
  17. package/dist/config/userChannels.js +172 -44
  18. package/dist/config/userChannels.js.map +1 -1
  19. package/dist/config/userConfig.d.ts +2 -0
  20. package/dist/config/userConfig.js +29 -4
  21. package/dist/config/userConfig.js.map +1 -1
  22. package/dist/config/userProfiles.js +27 -39
  23. package/dist/config/userProfiles.js.map +1 -1
  24. package/dist/hdhr/discover.js +7 -15
  25. package/dist/hdhr/discover.js.map +1 -1
  26. package/dist/native/index.d.ts +2 -2
  27. package/dist/native/index.js +14 -24
  28. package/dist/native/index.js.map +1 -1
  29. package/dist/native/proxy.d.ts +2 -2
  30. package/dist/native/proxy.js.map +1 -1
  31. package/dist/routes/assets.js +26 -48
  32. package/dist/routes/assets.js.map +1 -1
  33. package/dist/routes/channels.js +5 -11
  34. package/dist/routes/channels.js.map +1 -1
  35. package/dist/routes/components.d.ts +0 -8
  36. package/dist/routes/components.js +0 -19
  37. package/dist/routes/components.js.map +1 -1
  38. package/dist/routes/config/channels/index.d.ts +1 -1
  39. package/dist/routes/config/channels/index.js +1 -1
  40. package/dist/routes/config/channels/index.js.map +1 -1
  41. package/dist/routes/config/channels/routes.js +335 -35
  42. package/dist/routes/config/channels/routes.js.map +1 -1
  43. package/dist/routes/config/channels/table.d.ts +17 -2
  44. package/dist/routes/config/channels/table.js +270 -66
  45. package/dist/routes/config/channels/table.js.map +1 -1
  46. package/dist/routes/config/providers.js +7 -7
  47. package/dist/routes/config/providers.js.map +1 -1
  48. package/dist/routes/config/settings.js +57 -36
  49. package/dist/routes/config/settings.js.map +1 -1
  50. package/dist/routes/icons.d.ts +16 -0
  51. package/dist/routes/icons.js +44 -0
  52. package/dist/routes/icons.js.map +1 -0
  53. package/dist/routes/playlist.d.ts +6 -4
  54. package/dist/routes/playlist.js +68 -27
  55. package/dist/routes/playlist.js.map +1 -1
  56. package/dist/routes/root/content.js +41 -2
  57. package/dist/routes/root/content.js.map +1 -1
  58. package/dist/routes/root/scripts/channels.js +185 -0
  59. package/dist/routes/root/scripts/channels.js.map +1 -1
  60. package/dist/routes/root/scripts/config.js +115 -41
  61. package/dist/routes/root/scripts/config.js.map +1 -1
  62. package/dist/routes/root/scripts/shared.js +69 -23
  63. package/dist/routes/root/scripts/shared.js.map +1 -1
  64. package/dist/routes/root/scripts/status.js +6 -12
  65. package/dist/routes/root/scripts/status.js.map +1 -1
  66. package/dist/routes/root/styles.js +45 -4
  67. package/dist/routes/root/styles.js.map +1 -1
  68. package/dist/routes/ui.d.ts +1 -1
  69. package/dist/routes/ui.js +1 -1
  70. package/dist/routes/ui.js.map +1 -1
  71. package/dist/service/commands.js +3 -35
  72. package/dist/service/commands.js.map +1 -1
  73. package/dist/streaming/codec.d.ts +20 -0
  74. package/dist/streaming/codec.js +68 -0
  75. package/dist/streaming/codec.js.map +1 -0
  76. package/dist/streaming/fmp4Segmenter.d.ts +2 -2
  77. package/dist/streaming/fmp4Segmenter.js.map +1 -1
  78. package/dist/streaming/hls.js +11 -6
  79. package/dist/streaming/hls.js.map +1 -1
  80. package/dist/streaming/hlsResume.js +2 -2
  81. package/dist/streaming/hlsResume.js.map +1 -1
  82. package/dist/streaming/preroll.d.ts +15 -14
  83. package/dist/streaming/preroll.js +31 -11
  84. package/dist/streaming/preroll.js.map +1 -1
  85. package/dist/streaming/registry.d.ts +2 -2
  86. package/dist/streaming/registry.js.map +1 -1
  87. package/dist/streaming/setup.d.ts +2 -2
  88. package/dist/streaming/setup.js +5 -12
  89. package/dist/streaming/setup.js.map +1 -1
  90. package/dist/types/channels.d.ts +3 -0
  91. package/dist/types/config.d.ts +1 -0
  92. package/dist/types/index.d.ts +2 -1
  93. package/dist/types/index.js +1 -0
  94. package/dist/types/index.js.map +1 -1
  95. package/dist/types/shared.d.ts +1 -1
  96. package/dist/types/streaming.d.ts +7 -15
  97. package/dist/types/streaming.js +5 -1
  98. package/dist/types/streaming.js.map +1 -1
  99. package/dist/upgrade/commands.js +1 -16
  100. package/dist/upgrade/commands.js.map +1 -1
  101. package/dist/utils/cliOutput.d.ts +10 -0
  102. package/dist/utils/cliOutput.js +17 -0
  103. package/dist/utils/cliOutput.js.map +1 -0
  104. package/dist/utils/format.d.ts +14 -3
  105. package/dist/utils/format.js +24 -6
  106. package/dist/utils/format.js.map +1 -1
  107. package/dist/utils/index.d.ts +1 -0
  108. package/dist/utils/index.js +1 -0
  109. package/dist/utils/index.js.map +1 -1
  110. package/dist/utils/retry.js +2 -4
  111. package/dist/utils/retry.js.map +1 -1
  112. package/package.json +2 -2
@@ -1,3 +1,11 @@
1
+ // Channel identity fields — metadata that describes the channel itself, independent of which provider serves it. This is the single source of truth for the
2
+ // identity/provider-specific field separation used by: (1) applyVariantInheritance in providers.ts (identity fields always come from the canonical),
3
+ // (2) startup migration in userChannels.ts (strips legacy identity fields from variant entries), and (3) DELTA_ALLOWED_FIELDS derivation (identity +
4
+ // provider-specific editable fields). Adding a new identity field here automatically propagates to all three consumers.
5
+ export const CHANNEL_IDENTITY_FIELDS = new Set(["channelNumber", "hdhrEnabled", "name", "stationId", "tags", "tvgShift"]);
6
+ // Predefined tag vocabulary. These tags ship with PrismCast and are assigned to predefined channel definitions below. Users can delete predefined tags from
7
+ // their registry (they're tracked in channels.json deletedTags) and create their own tags. The runtime vocabulary is: (PREDEFINED_TAGS - deletedTags) + userTags.
8
+ export const PREDEFINED_TAGS = ["documentary", "entertainment", "hbo", "kids", "lifestyle", "local", "movies", "news", "showtime", "sports", "starz"];
1
9
  // Site provider key. When a channel has its own streaming website, this key is used in the providers map. The site provider always wins as canonical.
2
10
  const SITE_KEY = "site";
3
11
  /* Nested channel definitions. Each entry maps a channel key to a ChannelDefinition with identity fields (name, stationId) and a providers map keyed by provider
@@ -27,6 +35,7 @@ const SITE_KEY = "site";
27
35
  const BASE_CHANNEL_DEFINITIONS = {
28
36
  abc: {
29
37
  name: "ABC",
38
+ tags: ["local"],
30
39
  providers: {
31
40
  cox: { channelSelector: "ABC", url: "https://watchtv.cox.com/listings" },
32
41
  directv: { channelSelector: "ABC", url: "https://stream.directv.com" },
@@ -40,6 +49,7 @@ const BASE_CHANNEL_DEFINITIONS = {
40
49
  },
41
50
  abcnews: {
42
51
  name: "ABC News Live",
52
+ tags: ["news"],
43
53
  stationId: "113380",
44
54
  providers: {
45
55
  cox: { channelSelector: "ABCNL", url: "https://watchtv.cox.com/listings" },
@@ -52,6 +62,7 @@ const BASE_CHANNEL_DEFINITIONS = {
52
62
  },
53
63
  ae: {
54
64
  name: "A&E",
65
+ tags: ["documentary", "entertainment"],
55
66
  pacificStationId: "57439",
56
67
  stationId: "51529",
57
68
  providers: {
@@ -67,6 +78,7 @@ const BASE_CHANNEL_DEFINITIONS = {
67
78
  },
68
79
  ahc: {
69
80
  name: "American Heroes",
81
+ tags: ["documentary"],
70
82
  stationId: "78808",
71
83
  providers: {
72
84
  cox: { channelSelector: "American Heroes", url: "https://watchtv.cox.com/listings" },
@@ -77,6 +89,7 @@ const BASE_CHANNEL_DEFINITIONS = {
77
89
  },
78
90
  amc: {
79
91
  name: "AMC",
92
+ tags: ["entertainment", "movies"],
80
93
  pacificStationId: "78836",
81
94
  stationId: "59337",
82
95
  providers: {
@@ -90,6 +103,7 @@ const BASE_CHANNEL_DEFINITIONS = {
90
103
  },
91
104
  amcthrillers: {
92
105
  name: "AMC Thrillers",
106
+ tags: ["entertainment", "movies"],
93
107
  stationId: "115678",
94
108
  providers: {
95
109
  sling: { channelSelector: "AMC Thrillers", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
@@ -98,6 +112,7 @@ const BASE_CHANNEL_DEFINITIONS = {
98
112
  },
99
113
  animal: {
100
114
  name: "Animal Planet",
115
+ tags: ["documentary"],
101
116
  pacificStationId: "68785",
102
117
  stationId: "57394",
103
118
  providers: {
@@ -112,6 +127,7 @@ const BASE_CHANNEL_DEFINITIONS = {
112
127
  },
113
128
  axstv: {
114
129
  name: "AXS TV",
130
+ tags: ["entertainment", "sports"],
115
131
  stationId: "28506",
116
132
  providers: {
117
133
  cox: { channelSelector: "AXS TV", url: "https://watchtv.cox.com/listings" },
@@ -122,6 +138,7 @@ const BASE_CHANNEL_DEFINITIONS = {
122
138
  },
123
139
  bbcamerica: {
124
140
  name: "BBC America",
141
+ tags: ["entertainment"],
125
142
  pacificStationId: "76739",
126
143
  stationId: "64492",
127
144
  providers: {
@@ -135,6 +152,7 @@ const BASE_CHANNEL_DEFINITIONS = {
135
152
  },
136
153
  bbcnews: {
137
154
  name: "BBC News (North America)",
155
+ tags: ["news"],
138
156
  stationId: "101449",
139
157
  providers: {
140
158
  cox: { channelSelector: "BBC News", url: "https://watchtv.cox.com/listings" },
@@ -147,6 +165,7 @@ const BASE_CHANNEL_DEFINITIONS = {
147
165
  },
148
166
  bet: {
149
167
  name: "BET",
168
+ tags: ["entertainment"],
150
169
  pacificStationId: "64673",
151
170
  stationId: "63236",
152
171
  providers: {
@@ -162,6 +181,7 @@ const BASE_CHANNEL_DEFINITIONS = {
162
181
  },
163
182
  bether: {
164
183
  name: "BET Her",
184
+ tags: ["entertainment"],
165
185
  pacificStationId: "97360",
166
186
  stationId: "63220",
167
187
  providers: {
@@ -174,6 +194,7 @@ const BASE_CHANNEL_DEFINITIONS = {
174
194
  },
175
195
  bigten: {
176
196
  name: "Big 10",
197
+ tags: ["sports"],
177
198
  stationId: "58321",
178
199
  providers: {
179
200
  cox: { channelSelector: "Big Ten Network", url: "https://watchtv.cox.com/listings" },
@@ -188,6 +209,7 @@ const BASE_CHANNEL_DEFINITIONS = {
188
209
  },
189
210
  bloomberg: {
190
211
  name: "Bloomberg Television",
212
+ tags: ["news"],
191
213
  stationId: "71799",
192
214
  providers: {
193
215
  cox: { channelSelector: "Bloomberg", url: "https://watchtv.cox.com/listings" },
@@ -201,6 +223,7 @@ const BASE_CHANNEL_DEFINITIONS = {
201
223
  },
202
224
  bloombergoriginals: {
203
225
  name: "Bloomberg Originals",
226
+ tags: ["news"],
204
227
  stationId: "175656",
205
228
  providers: {
206
229
  yttv: { channelSelector: "Bloomberg Originals", url: "https://tv.youtube.com/live" },
@@ -208,6 +231,7 @@ const BASE_CHANNEL_DEFINITIONS = {
208
231
  },
209
232
  bravo: {
210
233
  name: "Bravo",
234
+ tags: ["entertainment"],
211
235
  stationId: "58625",
212
236
  providers: {
213
237
  cox: { channelSelector: "Bravo", url: "https://watchtv.cox.com/listings" },
@@ -222,6 +246,7 @@ const BASE_CHANNEL_DEFINITIONS = {
222
246
  },
223
247
  bravop: {
224
248
  name: "Bravo (Pacific)",
249
+ tags: ["entertainment"],
225
250
  stationId: "73994",
226
251
  providers: {
227
252
  site: { url: "https://www.nbc.com/live?brand=bravo&callsign=bravo_west" },
@@ -229,6 +254,7 @@ const BASE_CHANNEL_DEFINITIONS = {
229
254
  },
230
255
  cartoon: {
231
256
  name: "Cartoon Network",
257
+ tags: ["kids"],
232
258
  pacificStationId: "67703",
233
259
  stationId: "60048",
234
260
  providers: {
@@ -242,6 +268,7 @@ const BASE_CHANNEL_DEFINITIONS = {
242
268
  },
243
269
  cartoonp: {
244
270
  name: "Cartoon Network (Pacific)",
271
+ tags: ["kids"],
245
272
  stationId: "67703",
246
273
  providers: {
247
274
  hulu: { channelSelector: "Cartoon Network (West)", url: "https://www.hulu.com/live" },
@@ -249,6 +276,7 @@ const BASE_CHANNEL_DEFINITIONS = {
249
276
  },
250
277
  cbs: {
251
278
  name: "CBS",
279
+ tags: ["local"],
252
280
  providers: {
253
281
  cox: { channelSelector: "CBS", url: "https://watchtv.cox.com/listings" },
254
282
  directv: { channelSelector: "CBS", url: "https://stream.directv.com" },
@@ -262,6 +290,7 @@ const BASE_CHANNEL_DEFINITIONS = {
262
290
  },
263
291
  cbsnews: {
264
292
  name: "CBS News 24/7",
293
+ tags: ["news"],
265
294
  stationId: "104846",
266
295
  providers: {
267
296
  hulu: { channelSelector: "CBS News 24/7", url: "https://www.hulu.com/live" },
@@ -270,6 +299,7 @@ const BASE_CHANNEL_DEFINITIONS = {
270
299
  },
271
300
  cbssports: {
272
301
  name: "CBS Sports Network",
302
+ tags: ["sports"],
273
303
  stationId: "59250",
274
304
  providers: {
275
305
  cox: { channelSelector: "CBS Sports Network", url: "https://watchtv.cox.com/listings" },
@@ -281,6 +311,7 @@ const BASE_CHANNEL_DEFINITIONS = {
281
311
  },
282
312
  cmt: {
283
313
  name: "CMT",
314
+ tags: ["entertainment"],
284
315
  pacificStationId: "64610",
285
316
  stationId: "59440",
286
317
  providers: {
@@ -294,6 +325,7 @@ const BASE_CHANNEL_DEFINITIONS = {
294
325
  },
295
326
  cnbc: {
296
327
  name: "CNBC",
328
+ tags: ["news"],
297
329
  stationId: "58780",
298
330
  providers: {
299
331
  cox: { channelSelector: "CNBC", url: "https://watchtv.cox.com/listings" },
@@ -308,6 +340,7 @@ const BASE_CHANNEL_DEFINITIONS = {
308
340
  },
309
341
  cnbcworld: {
310
342
  name: "CNBC World",
343
+ tags: ["news"],
311
344
  stationId: "26849",
312
345
  providers: {
313
346
  directv: { channelSelector: "CNBC World", url: "https://stream.directv.com" },
@@ -316,6 +349,7 @@ const BASE_CHANNEL_DEFINITIONS = {
316
349
  },
317
350
  cnn: {
318
351
  name: "CNN",
352
+ tags: ["news"],
319
353
  stationId: "58646",
320
354
  providers: {
321
355
  cox: { channelSelector: "CNN", url: "https://watchtv.cox.com/listings" },
@@ -330,6 +364,7 @@ const BASE_CHANNEL_DEFINITIONS = {
330
364
  },
331
365
  cnni: {
332
366
  name: "CNN International",
367
+ tags: ["news"],
333
368
  stationId: "83110",
334
369
  providers: {
335
370
  directv: { channelSelector: "CNNi HD East", url: "https://stream.directv.com" },
@@ -340,6 +375,7 @@ const BASE_CHANNEL_DEFINITIONS = {
340
375
  },
341
376
  comedycentral: {
342
377
  name: "Comedy Central",
378
+ tags: ["entertainment"],
343
379
  pacificStationId: "64599",
344
380
  stationId: "62420",
345
381
  providers: {
@@ -354,6 +390,7 @@ const BASE_CHANNEL_DEFINITIONS = {
354
390
  },
355
391
  cooking: {
356
392
  name: "Cooking",
393
+ tags: ["lifestyle"],
357
394
  stationId: "68065",
358
395
  providers: {
359
396
  cox: { channelSelector: "Cooking Channel", url: "https://watchtv.cox.com/listings" },
@@ -365,6 +402,7 @@ const BASE_CHANNEL_DEFINITIONS = {
365
402
  },
366
403
  cspan: {
367
404
  name: "C-SPAN",
405
+ tags: ["news"],
368
406
  stationId: "68344",
369
407
  providers: {
370
408
  cox: { channelSelector: "C-SPAN", url: "https://watchtv.cox.com/listings" },
@@ -378,6 +416,7 @@ const BASE_CHANNEL_DEFINITIONS = {
378
416
  },
379
417
  cspan2: {
380
418
  name: "C-SPAN 2",
419
+ tags: ["news"],
381
420
  stationId: "68334",
382
421
  providers: {
383
422
  cox: { channelSelector: "CPN2D", url: "https://watchtv.cox.com/listings" },
@@ -391,6 +430,7 @@ const BASE_CHANNEL_DEFINITIONS = {
391
430
  },
392
431
  cspan3: {
393
432
  name: "C-SPAN 3",
433
+ tags: ["news"],
394
434
  stationId: "68332",
395
435
  providers: {
396
436
  cox: { channelSelector: "CPN3H", url: "https://watchtv.cox.com/listings" },
@@ -403,6 +443,7 @@ const BASE_CHANNEL_DEFINITIONS = {
403
443
  },
404
444
  cw: {
405
445
  name: "CW",
446
+ tags: ["local"],
406
447
  providers: {
407
448
  cox: { channelSelector: "CW TV", url: "https://watchtv.cox.com/listings" },
408
449
  directv: { channelSelector: "CW", url: "https://stream.directv.com" },
@@ -412,8 +453,21 @@ const BASE_CHANNEL_DEFINITIONS = {
412
453
  yttv: { channelSelector: "CW", url: "https://tv.youtube.com/live" },
413
454
  },
414
455
  },
456
+ destinationamerica: {
457
+ name: "Destination America",
458
+ tags: ["documentary"],
459
+ stationId: "60468",
460
+ providers: {
461
+ cox: { channelSelector: "Destination America", url: "https://watchtv.cox.com/listings" },
462
+ directv: { channelSelector: "Destination America HD", url: "https://stream.directv.com" },
463
+ site: { url: "https://watch.foodnetwork.com/channel/destination-america" },
464
+ spectrum: { channelSelector: "Destination America", url: "https://watch.spectrum.net/guide" },
465
+ xfinity: { channelSelector: "Destination America", url: "https://www.xfinity.com/stream/listings" },
466
+ },
467
+ },
415
468
  discovery: {
416
469
  name: "Discovery",
470
+ tags: ["documentary"],
417
471
  pacificStationId: "80399",
418
472
  stationId: "56905",
419
473
  providers: {
@@ -429,6 +483,7 @@ const BASE_CHANNEL_DEFINITIONS = {
429
483
  },
430
484
  discoverylife: {
431
485
  name: "Discovery Life",
486
+ tags: ["documentary"],
432
487
  stationId: "92204",
433
488
  providers: {
434
489
  cox: { channelSelector: "Discovery Life", url: "https://watchtv.cox.com/listings" },
@@ -440,6 +495,7 @@ const BASE_CHANNEL_DEFINITIONS = {
440
495
  },
441
496
  discoveryturbo: {
442
497
  name: "Discovery Turbo",
498
+ tags: ["documentary"],
443
499
  stationId: "31046",
444
500
  providers: {
445
501
  cox: { channelSelector: "Discovery Turbo", url: "https://watchtv.cox.com/listings" },
@@ -454,6 +510,7 @@ const BASE_CHANNEL_DEFINITIONS = {
454
510
  },
455
511
  disney: {
456
512
  name: "Disney",
513
+ tags: ["kids"],
457
514
  pacificStationId: "63320",
458
515
  stationId: "59684",
459
516
  providers: {
@@ -469,6 +526,7 @@ const BASE_CHANNEL_DEFINITIONS = {
469
526
  },
470
527
  disneyjr: {
471
528
  name: "Disney Jr.",
529
+ tags: ["kids"],
472
530
  pacificStationId: "75004",
473
531
  stationId: "74885",
474
532
  providers: {
@@ -483,6 +541,7 @@ const BASE_CHANNEL_DEFINITIONS = {
483
541
  },
484
542
  disneyxd: {
485
543
  name: "Disney XD",
544
+ tags: ["kids"],
486
545
  pacificStationId: "63322",
487
546
  stationId: "60006",
488
547
  providers: {
@@ -496,6 +555,7 @@ const BASE_CHANNEL_DEFINITIONS = {
496
555
  },
497
556
  e: {
498
557
  name: "E!",
558
+ tags: ["entertainment"],
499
559
  stationId: "61812",
500
560
  providers: {
501
561
  cox: { channelSelector: "E!", url: "https://watchtv.cox.com/listings" },
@@ -510,6 +570,7 @@ const BASE_CHANNEL_DEFINITIONS = {
510
570
  },
511
571
  ep: {
512
572
  name: "E! (Pacific)",
573
+ tags: ["entertainment"],
513
574
  stationId: "91579",
514
575
  providers: {
515
576
  site: { channelSelector: "E-_West", url: "https://www.usanetwork.com/live" },
@@ -517,6 +578,7 @@ const BASE_CHANNEL_DEFINITIONS = {
517
578
  },
518
579
  espn: {
519
580
  name: "ESPN",
581
+ tags: ["sports"],
520
582
  stationId: "32645",
521
583
  providers: {
522
584
  cox: { channelSelector: "ESPN", url: "https://watchtv.cox.com/listings" },
@@ -532,6 +594,7 @@ const BASE_CHANNEL_DEFINITIONS = {
532
594
  },
533
595
  espn2: {
534
596
  name: "ESPN2",
597
+ tags: ["sports"],
535
598
  stationId: "45507",
536
599
  providers: {
537
600
  cox: { channelSelector: "ES2HD", url: "https://watchtv.cox.com/listings" },
@@ -547,6 +610,7 @@ const BASE_CHANNEL_DEFINITIONS = {
547
610
  },
548
611
  espnacc: {
549
612
  name: "ACC Network",
613
+ tags: ["sports"],
550
614
  stationId: "111871",
551
615
  providers: {
552
616
  cox: { channelSelector: "ACC Network", url: "https://watchtv.cox.com/listings" },
@@ -561,6 +625,7 @@ const BASE_CHANNEL_DEFINITIONS = {
561
625
  },
562
626
  espndeportes: {
563
627
  name: "ESPN Deportes",
628
+ tags: ["sports"],
564
629
  stationId: "71914",
565
630
  providers: {
566
631
  cox: { channelSelector: "ESPN Deportes", url: "https://watchtv.cox.com/listings" },
@@ -573,6 +638,7 @@ const BASE_CHANNEL_DEFINITIONS = {
573
638
  },
574
639
  espnews: {
575
640
  name: "ESPNews",
641
+ tags: ["sports"],
576
642
  stationId: "59976",
577
643
  providers: {
578
644
  cox: { channelSelector: "ESWHD", url: "https://watchtv.cox.com/listings" },
@@ -587,6 +653,7 @@ const BASE_CHANNEL_DEFINITIONS = {
587
653
  },
588
654
  espnsec: {
589
655
  name: "SEC Network",
656
+ tags: ["sports"],
590
657
  stationId: "89714",
591
658
  providers: {
592
659
  cox: { channelSelector: "SEC", url: "https://watchtv.cox.com/listings" },
@@ -601,6 +668,7 @@ const BASE_CHANNEL_DEFINITIONS = {
601
668
  },
602
669
  espnu: {
603
670
  name: "ESPNU",
671
+ tags: ["sports"],
604
672
  stationId: "60696",
605
673
  providers: {
606
674
  cox: { channelSelector: "ESPNU", url: "https://watchtv.cox.com/listings" },
@@ -615,6 +683,7 @@ const BASE_CHANNEL_DEFINITIONS = {
615
683
  },
616
684
  fbc: {
617
685
  name: "Fox Business",
686
+ tags: ["news"],
618
687
  stationId: "58718",
619
688
  providers: {
620
689
  cox: { channelSelector: "Fox Business", url: "https://watchtv.cox.com/listings" },
@@ -629,6 +698,7 @@ const BASE_CHANNEL_DEFINITIONS = {
629
698
  },
630
699
  fnc: {
631
700
  name: "Fox News",
701
+ tags: ["news"],
632
702
  stationId: "60179",
633
703
  providers: {
634
704
  cox: { channelSelector: "Fox News", url: "https://watchtv.cox.com/listings" },
@@ -644,6 +714,7 @@ const BASE_CHANNEL_DEFINITIONS = {
644
714
  },
645
715
  food: {
646
716
  name: "Food Network",
717
+ tags: ["lifestyle"],
647
718
  pacificStationId: "82119",
648
719
  stationId: "50747",
649
720
  providers: {
@@ -659,11 +730,12 @@ const BASE_CHANNEL_DEFINITIONS = {
659
730
  },
660
731
  fox: {
661
732
  name: "Fox",
733
+ tags: ["local"],
662
734
  providers: {
663
735
  cox: { channelSelector: "Fox", url: "https://watchtv.cox.com/listings" },
664
736
  directv: { channelSelector: "FOX", url: "https://stream.directv.com" },
665
- foxone: { channelSelector: "FOXD2C", url: "https://www.fox.com/live/channels" },
666
737
  hulu: { channelSelector: "Fox", url: "https://www.hulu.com/live" },
738
+ site: { channelSelector: "FOXD2C", url: "https://www.fox.com/live/channels" },
667
739
  sling: { channelSelector: "FOX", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
668
740
  spectrum: { channelSelector: "FOX", url: "https://watch.spectrum.net/guide" },
669
741
  xfinity: { channelSelector: "Fox", url: "https://www.xfinity.com/stream/listings" },
@@ -672,6 +744,7 @@ const BASE_CHANNEL_DEFINITIONS = {
672
744
  },
673
745
  foxdeportes: {
674
746
  name: "Fox Deportes",
747
+ tags: ["sports"],
675
748
  stationId: "72189",
676
749
  providers: {
677
750
  cox: { channelSelector: "Fox Deportes", url: "https://watchtv.cox.com/listings" },
@@ -684,6 +757,7 @@ const BASE_CHANNEL_DEFINITIONS = {
684
757
  },
685
758
  foxsoccerplus: {
686
759
  name: "Fox Soccer Plus",
760
+ tags: ["sports"],
687
761
  stationId: "66879",
688
762
  providers: {
689
763
  site: { url: "https://www.foxsports.com/live/fsp" },
@@ -692,6 +766,7 @@ const BASE_CHANNEL_DEFINITIONS = {
692
766
  },
693
767
  france24: {
694
768
  name: "France 24",
769
+ tags: ["news"],
695
770
  stationId: "60961",
696
771
  providers: {
697
772
  site: { url: "https://www.france24.com/en/live" },
@@ -700,6 +775,7 @@ const BASE_CHANNEL_DEFINITIONS = {
700
775
  },
701
776
  france24fr: {
702
777
  name: "France 24 (French)",
778
+ tags: ["news"],
703
779
  stationId: "58685",
704
780
  providers: {
705
781
  site: { url: "https://www.france24.com/fr/direct" },
@@ -708,6 +784,7 @@ const BASE_CHANNEL_DEFINITIONS = {
708
784
  },
709
785
  freeform: {
710
786
  name: "Freeform",
787
+ tags: ["entertainment"],
711
788
  stationId: "59615",
712
789
  providers: {
713
790
  cox: { channelSelector: "Freeform", url: "https://watchtv.cox.com/listings" },
@@ -721,6 +798,7 @@ const BASE_CHANNEL_DEFINITIONS = {
721
798
  },
722
799
  freeformp: {
723
800
  name: "Freeform (Pacific)",
801
+ tags: ["entertainment"],
724
802
  stationId: "63324",
725
803
  providers: {
726
804
  site: { url: "https://www.freeform.com/watch-live/3507c750-e86a-4c0f-8ff4-dd23c4859009" },
@@ -728,6 +806,7 @@ const BASE_CHANNEL_DEFINITIONS = {
728
806
  },
729
807
  fs1: {
730
808
  name: "FS1",
809
+ tags: ["sports"],
731
810
  stationId: "82547",
732
811
  providers: {
733
812
  cox: { channelSelector: "FOX Sports 1", url: "https://watchtv.cox.com/listings" },
@@ -743,6 +822,7 @@ const BASE_CHANNEL_DEFINITIONS = {
743
822
  },
744
823
  fs2: {
745
824
  name: "FS2",
825
+ tags: ["sports"],
746
826
  stationId: "59305",
747
827
  providers: {
748
828
  cox: { channelSelector: "FOX Sports 2", url: "https://watchtv.cox.com/listings" },
@@ -757,6 +837,7 @@ const BASE_CHANNEL_DEFINITIONS = {
757
837
  },
758
838
  fx: {
759
839
  name: "FX",
840
+ tags: ["entertainment"],
760
841
  stationId: "58574",
761
842
  providers: {
762
843
  cox: { channelSelector: "FX", url: "https://watchtv.cox.com/listings" },
@@ -771,6 +852,7 @@ const BASE_CHANNEL_DEFINITIONS = {
771
852
  },
772
853
  fxm: {
773
854
  name: "FXM",
855
+ tags: ["movies"],
774
856
  pacificStationId: "98488",
775
857
  stationId: "70253",
776
858
  providers: {
@@ -785,6 +867,7 @@ const BASE_CHANNEL_DEFINITIONS = {
785
867
  },
786
868
  fxp: {
787
869
  name: "FX (Pacific)",
870
+ tags: ["entertainment"],
788
871
  stationId: "59814",
789
872
  providers: {
790
873
  site: { url: "https://abc.com/watch-live/2cee3401-f63b-42d0-b32e-962fef610b9e" },
@@ -792,6 +875,7 @@ const BASE_CHANNEL_DEFINITIONS = {
792
875
  },
793
876
  fxx: {
794
877
  name: "FXX",
878
+ tags: ["entertainment"],
795
879
  stationId: "66379",
796
880
  providers: {
797
881
  cox: { channelSelector: "FXX", url: "https://watchtv.cox.com/listings" },
@@ -805,6 +889,7 @@ const BASE_CHANNEL_DEFINITIONS = {
805
889
  },
806
890
  fxxp: {
807
891
  name: "FXX (Pacific)",
892
+ tags: ["entertainment"],
808
893
  stationId: "82571",
809
894
  providers: {
810
895
  site: { url: "https://abc.com/watch-live/e4c83395-62ed-4a49-829a-c55ab3c33e7d" },
@@ -812,6 +897,7 @@ const BASE_CHANNEL_DEFINITIONS = {
812
897
  },
813
898
  fyi: {
814
899
  name: "FYI",
900
+ tags: ["entertainment"],
815
901
  pacificStationId: "92372",
816
902
  stationId: "58988",
817
903
  providers: {
@@ -825,6 +911,7 @@ const BASE_CHANNEL_DEFINITIONS = {
825
911
  },
826
912
  gameshow: {
827
913
  name: "Game Show Network",
914
+ tags: ["entertainment"],
828
915
  pacificStationId: "90210",
829
916
  stationId: "68827",
830
917
  providers: {
@@ -838,6 +925,7 @@ const BASE_CHANNEL_DEFINITIONS = {
838
925
  },
839
926
  golf: {
840
927
  name: "Golf",
928
+ tags: ["sports"],
841
929
  stationId: "61854",
842
930
  providers: {
843
931
  cox: { channelSelector: "Golf Channel", url: "https://watchtv.cox.com/listings" },
@@ -852,6 +940,7 @@ const BASE_CHANNEL_DEFINITIONS = {
852
940
  },
853
941
  hallmark: {
854
942
  name: "Hallmark",
943
+ tags: ["entertainment"],
855
944
  pacificStationId: "66415",
856
945
  stationId: "66268",
857
946
  providers: {
@@ -865,6 +954,7 @@ const BASE_CHANNEL_DEFINITIONS = {
865
954
  },
866
955
  hallmarkfamily: {
867
956
  name: "Hallmark Family",
957
+ tags: ["entertainment"],
868
958
  stationId: "105723",
869
959
  providers: {
870
960
  cox: { channelSelector: "HFM", url: "https://watchtv.cox.com/listings" },
@@ -875,6 +965,7 @@ const BASE_CHANNEL_DEFINITIONS = {
875
965
  },
876
966
  hallmarkmystery: {
877
967
  name: "Hallmark Mystery",
968
+ tags: ["entertainment"],
878
969
  pacificStationId: "66412",
879
970
  stationId: "46710",
880
971
  providers: {
@@ -887,6 +978,7 @@ const BASE_CHANNEL_DEFINITIONS = {
887
978
  },
888
979
  hbo: {
889
980
  name: "HBO",
981
+ tags: ["hbo", "movies"],
890
982
  stationId: "19548",
891
983
  providers: {
892
984
  cox: { channelSelector: "HBO", url: "https://watchtv.cox.com/listings" },
@@ -897,6 +989,7 @@ const BASE_CHANNEL_DEFINITIONS = {
897
989
  },
898
990
  hbocomedy: {
899
991
  name: "HBO Comedy",
992
+ tags: ["hbo", "movies"],
900
993
  stationId: "59839",
901
994
  providers: {
902
995
  cox: { channelSelector: "HBOCH", url: "https://watchtv.cox.com/listings" },
@@ -907,6 +1000,7 @@ const BASE_CHANNEL_DEFINITIONS = {
907
1000
  },
908
1001
  hbodrama: {
909
1002
  name: "HBO Drama",
1003
+ tags: ["hbo", "movies"],
910
1004
  stationId: "59363",
911
1005
  providers: {
912
1006
  cox: { channelSelector: "HBOSH", url: "https://watchtv.cox.com/listings" },
@@ -917,6 +1011,7 @@ const BASE_CHANNEL_DEFINITIONS = {
917
1011
  },
918
1012
  hbohits: {
919
1013
  name: "HBO Hits",
1014
+ tags: ["hbo", "movies"],
920
1015
  stationId: "59368",
921
1016
  providers: {
922
1017
  cox: { channelSelector: "HBO2H", url: "https://watchtv.cox.com/listings" },
@@ -927,6 +1022,7 @@ const BASE_CHANNEL_DEFINITIONS = {
927
1022
  },
928
1023
  hbomovies: {
929
1024
  name: "HBO Movies",
1025
+ tags: ["hbo", "movies"],
930
1026
  stationId: "59845",
931
1027
  providers: {
932
1028
  cox: { channelSelector: "HBOZH", url: "https://watchtv.cox.com/listings" },
@@ -937,6 +1033,7 @@ const BASE_CHANNEL_DEFINITIONS = {
937
1033
  },
938
1034
  hgtv: {
939
1035
  name: "HGTV",
1036
+ tags: ["lifestyle"],
940
1037
  pacificStationId: "87317",
941
1038
  stationId: "49788",
942
1039
  providers: {
@@ -952,6 +1049,7 @@ const BASE_CHANNEL_DEFINITIONS = {
952
1049
  },
953
1050
  history: {
954
1051
  name: "History",
1052
+ tags: ["documentary"],
955
1053
  pacificStationId: "88545",
956
1054
  stationId: "57708",
957
1055
  providers: {
@@ -966,6 +1064,7 @@ const BASE_CHANNEL_DEFINITIONS = {
966
1064
  },
967
1065
  hln: {
968
1066
  name: "HLN",
1067
+ tags: ["news"],
969
1068
  stationId: "64549",
970
1069
  providers: {
971
1070
  cox: { channelSelector: "HLN", url: "https://watchtv.cox.com/listings" },
@@ -980,6 +1079,7 @@ const BASE_CHANNEL_DEFINITIONS = {
980
1079
  },
981
1080
  id: {
982
1081
  name: "Investigation Discovery",
1082
+ tags: ["documentary"],
983
1083
  pacificStationId: "80309",
984
1084
  stationId: "65342",
985
1085
  providers: {
@@ -995,6 +1095,7 @@ const BASE_CHANNEL_DEFINITIONS = {
995
1095
  },
996
1096
  ifc: {
997
1097
  name: "IFC",
1098
+ tags: ["entertainment", "movies"],
998
1099
  pacificStationId: "109735",
999
1100
  stationId: "59444",
1000
1101
  providers: {
@@ -1008,6 +1109,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1008
1109
  },
1009
1110
  indieplex: {
1010
1111
  name: "IndiePlex",
1112
+ tags: ["movies", "starz"],
1011
1113
  stationId: "65795",
1012
1114
  providers: {
1013
1115
  hulu: { channelSelector: "IndiePlex (East)", url: "https://www.hulu.com/live" },
@@ -1017,6 +1119,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1017
1119
  },
1018
1120
  indieplexp: {
1019
1121
  name: "IndiePlex (Pacific)",
1122
+ tags: ["movies", "starz"],
1020
1123
  stationId: "65796",
1021
1124
  providers: {
1022
1125
  hulu: { channelSelector: "IndiePlex (West)", url: "https://www.hulu.com/live" },
@@ -1024,6 +1127,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1024
1127
  },
1025
1128
  lifetime: {
1026
1129
  name: "Lifetime",
1130
+ tags: ["entertainment"],
1027
1131
  pacificStationId: "60250",
1028
1132
  stationId: "60150",
1029
1133
  providers: {
@@ -1038,6 +1142,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1038
1142
  },
1039
1143
  lmn: {
1040
1144
  name: "Lifetime Movie Network",
1145
+ tags: ["entertainment", "movies"],
1041
1146
  pacificStationId: "92373",
1042
1147
  stationId: "55887",
1043
1148
  providers: {
@@ -1050,6 +1155,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1050
1155
  },
1051
1156
  magnolia: {
1052
1157
  name: "Magnolia Network",
1158
+ tags: ["lifestyle"],
1053
1159
  pacificStationId: "122081",
1054
1160
  stationId: "67375",
1055
1161
  providers: {
@@ -1064,6 +1170,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1064
1170
  },
1065
1171
  mgmplus: {
1066
1172
  name: "MGM+",
1173
+ tags: ["movies"],
1067
1174
  pacificStationId: "95927",
1068
1175
  stationId: "65687",
1069
1176
  providers: {
@@ -1074,6 +1181,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1074
1181
  },
1075
1182
  mlb: {
1076
1183
  name: "MLB Network",
1184
+ tags: ["sports"],
1077
1185
  stationId: "62081",
1078
1186
  providers: {
1079
1187
  cox: { channelSelector: "MLB Network", url: "https://watchtv.cox.com/listings" },
@@ -1085,6 +1193,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1085
1193
  },
1086
1194
  movieplex: {
1087
1195
  name: "MoviePlex",
1196
+ tags: ["movies", "starz"],
1088
1197
  stationId: "83075",
1089
1198
  providers: {
1090
1199
  hulu: { channelSelector: "MoviePlex (East)", url: "https://www.hulu.com/live" },
@@ -1094,6 +1203,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1094
1203
  },
1095
1204
  movieplexp: {
1096
1205
  name: "MoviePlex (Pacific)",
1206
+ tags: ["movies", "starz"],
1097
1207
  stationId: "105963",
1098
1208
  providers: {
1099
1209
  hulu: { channelSelector: "MoviePlex (West)", url: "https://www.hulu.com/live" },
@@ -1101,6 +1211,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1101
1211
  },
1102
1212
  msg: {
1103
1213
  name: "MSG",
1214
+ tags: ["sports"],
1104
1215
  stationId: "35402",
1105
1216
  providers: {
1106
1217
  directv: { channelSelector: "MSG", url: "https://stream.directv.com" },
@@ -1108,6 +1219,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1108
1219
  },
1109
1220
  msgsn: {
1110
1221
  name: "MSG Sportsnet",
1222
+ tags: ["sports"],
1111
1223
  stationId: "35383",
1112
1224
  providers: {
1113
1225
  directv: { channelSelector: "MSG Sportsnet HD 635", url: "https://stream.directv.com" },
@@ -1115,6 +1227,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1115
1227
  },
1116
1228
  msnow: {
1117
1229
  name: "MS NOW",
1230
+ tags: ["news"],
1118
1231
  stationId: "64241",
1119
1232
  providers: {
1120
1233
  cox: { channelSelector: "MS NOW", url: "https://watchtv.cox.com/listings" },
@@ -1130,6 +1243,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1130
1243
  },
1131
1244
  mtv: {
1132
1245
  name: "MTV",
1246
+ tags: ["entertainment"],
1133
1247
  pacificStationId: "64630",
1134
1248
  stationId: "60964",
1135
1249
  providers: {
@@ -1143,6 +1257,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1143
1257
  },
1144
1258
  mtv2: {
1145
1259
  name: "MTV2",
1260
+ tags: ["entertainment"],
1146
1261
  pacificStationId: "75506",
1147
1262
  stationId: "75077",
1148
1263
  providers: {
@@ -1154,6 +1269,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1154
1269
  },
1155
1270
  mtvclassic: {
1156
1271
  name: "MTV Classic",
1272
+ tags: ["entertainment"],
1157
1273
  stationId: "92240",
1158
1274
  providers: {
1159
1275
  cox: { channelSelector: "MTV Classic", url: "https://watchtv.cox.com/listings" },
@@ -1164,6 +1280,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1164
1280
  },
1165
1281
  natgeo: {
1166
1282
  name: "National Geographic",
1283
+ tags: ["documentary"],
1167
1284
  stationId: "49438",
1168
1285
  providers: {
1169
1286
  cox: { channelSelector: "Nat Geo", url: "https://watchtv.cox.com/listings" },
@@ -1178,6 +1295,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1178
1295
  },
1179
1296
  natgeop: {
1180
1297
  name: "National Geographic (Pacific)",
1298
+ tags: ["documentary"],
1181
1299
  stationId: "71601",
1182
1300
  providers: {
1183
1301
  site: { url: "https://www.nationalgeographic.com/tv/watch-live/91456580-f32f-417c-8e1a-9f82640832a7" },
@@ -1185,6 +1303,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1185
1303
  },
1186
1304
  natgeowild: {
1187
1305
  name: "Nat Geo Wild",
1306
+ tags: ["documentary"],
1188
1307
  stationId: "67331",
1189
1308
  providers: {
1190
1309
  cox: { channelSelector: "National Geographic WILD", url: "https://watchtv.cox.com/listings" },
@@ -1198,6 +1317,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1198
1317
  },
1199
1318
  nba: {
1200
1319
  name: "NBA TV",
1320
+ tags: ["sports"],
1201
1321
  stationId: "45526",
1202
1322
  providers: {
1203
1323
  cox: { channelSelector: "NBA TV", url: "https://watchtv.cox.com/listings" },
@@ -1210,6 +1330,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1210
1330
  },
1211
1331
  nbc: {
1212
1332
  name: "NBC",
1333
+ tags: ["local"],
1213
1334
  providers: {
1214
1335
  cox: { channelSelector: "NBC", url: "https://watchtv.cox.com/listings" },
1215
1336
  directv: { channelSelector: "NBC", url: "https://stream.directv.com" },
@@ -1223,6 +1344,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1223
1344
  },
1224
1345
  nbcnews: {
1225
1346
  name: "NBC News Now",
1347
+ tags: ["news"],
1226
1348
  stationId: "114174",
1227
1349
  providers: {
1228
1350
  cox: { channelSelector: "NBC News NOW", url: "https://watchtv.cox.com/listings" },
@@ -1236,6 +1358,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1236
1358
  },
1237
1359
  nbcsbayarea: {
1238
1360
  name: "NBC Sports Bay Area",
1361
+ tags: ["sports"],
1239
1362
  stationId: "63138",
1240
1363
  providers: {
1241
1364
  site: { url: "https://www.nbc.com/live?brand=rsn-bay-area&callsign=nbcsbayarea" },
@@ -1243,6 +1366,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1243
1366
  },
1244
1367
  nbcsboston: {
1245
1368
  name: "NBC Sports Boston",
1369
+ tags: ["sports"],
1246
1370
  stationId: "49198",
1247
1371
  providers: {
1248
1372
  site: { url: "https://www.nbc.com/live?brand=rsn-boston&callsign=nbcsboston" },
@@ -1250,6 +1374,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1250
1374
  },
1251
1375
  nbcscalifornia: {
1252
1376
  name: "NBC Sports California",
1377
+ tags: ["sports"],
1253
1378
  stationId: "45540",
1254
1379
  providers: {
1255
1380
  site: { url: "https://www.nbc.com/live?brand=rsn-california&callsign=nbcscalifornia" },
@@ -1257,6 +1382,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1257
1382
  },
1258
1383
  nbcsn: {
1259
1384
  name: "NBC Sports Network",
1385
+ tags: ["sports"],
1260
1386
  stationId: "194412",
1261
1387
  providers: {
1262
1388
  yttv: { channelSelector: "NBC Sports Network", url: "https://tv.youtube.com/live" },
@@ -1264,6 +1390,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1264
1390
  },
1265
1391
  nbcsphiladelphia: {
1266
1392
  name: "NBC Sports Philadelphia",
1393
+ tags: ["sports"],
1267
1394
  stationId: "32571",
1268
1395
  providers: {
1269
1396
  site: { url: "https://www.nbc.com/live?brand=rsn-philadelphia&callsign=nbcsphiladelphia" },
@@ -1271,6 +1398,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1271
1398
  },
1272
1399
  necn: {
1273
1400
  name: "NECN",
1401
+ tags: ["news"],
1274
1402
  stationId: "66278",
1275
1403
  providers: {
1276
1404
  site: { url: "https://www.nbc.com/live?brand=necn&callsign=necn" },
@@ -1278,6 +1406,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1278
1406
  },
1279
1407
  nfl: {
1280
1408
  name: "NFL Network",
1409
+ tags: ["sports"],
1281
1410
  stationId: "45399",
1282
1411
  providers: {
1283
1412
  cox: { channelSelector: "NFL Network", url: "https://watchtv.cox.com/listings" },
@@ -1291,6 +1420,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1291
1420
  },
1292
1421
  nhl: {
1293
1422
  name: "NHL Network",
1423
+ tags: ["sports"],
1294
1424
  stationId: "58690",
1295
1425
  providers: {
1296
1426
  cox: { channelSelector: "NHL Network", url: "https://watchtv.cox.com/listings" },
@@ -1301,6 +1431,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1301
1431
  },
1302
1432
  own: {
1303
1433
  name: "OWN",
1434
+ tags: ["lifestyle"],
1304
1435
  stationId: "70388",
1305
1436
  providers: {
1306
1437
  cox: { channelSelector: "OWN", url: "https://watchtv.cox.com/listings" },
@@ -1314,6 +1445,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1314
1445
  },
1315
1446
  oxygen: {
1316
1447
  name: "Oxygen",
1448
+ tags: ["entertainment"],
1317
1449
  stationId: "70522",
1318
1450
  providers: {
1319
1451
  cox: { channelSelector: "Oxygen True Crime", url: "https://watchtv.cox.com/listings" },
@@ -1327,6 +1459,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1327
1459
  },
1328
1460
  oxygenp: {
1329
1461
  name: "Oxygen (Pacific)",
1462
+ tags: ["entertainment"],
1330
1463
  stationId: "74032",
1331
1464
  providers: {
1332
1465
  site: { channelSelector: "Oxygen_West", url: "https://www.usanetwork.com/live" },
@@ -1334,6 +1467,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1334
1467
  },
1335
1468
  paramount: {
1336
1469
  name: "Paramount Network",
1470
+ tags: ["entertainment"],
1337
1471
  stationId: "59186",
1338
1472
  providers: {
1339
1473
  cox: { channelSelector: "Paramount Network", url: "https://watchtv.cox.com/listings" },
@@ -1345,6 +1479,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1345
1479
  },
1346
1480
  paramountp: {
1347
1481
  name: "Paramount (Pacific)",
1482
+ tags: ["entertainment"],
1348
1483
  stationId: "64593",
1349
1484
  providers: {
1350
1485
  yttv: { channelSelector: "Paramount Network", url: "https://tv.youtube.com/live" },
@@ -1352,6 +1487,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1352
1487
  },
1353
1488
  pbs: {
1354
1489
  name: "PBS",
1490
+ tags: ["local"],
1355
1491
  providers: {
1356
1492
  cox: { channelSelector: "PBS", url: "https://watchtv.cox.com/listings" },
1357
1493
  directv: { channelSelector: "PBS", url: "https://stream.directv.com" },
@@ -1363,6 +1499,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1363
1499
  },
1364
1500
  pbschicago: {
1365
1501
  name: "PBS Chicago (WTTW)",
1502
+ tags: ["local"],
1366
1503
  stationId: "30415",
1367
1504
  providers: {
1368
1505
  hulu: { channelSelector: "PBS", url: "https://www.hulu.com/live" },
@@ -1371,6 +1508,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1371
1508
  },
1372
1509
  pbslakeshore: {
1373
1510
  name: "PBS Lakeshore (WYIN)",
1511
+ tags: ["local"],
1374
1512
  stationId: "49237",
1375
1513
  providers: {
1376
1514
  hulu: { channelSelector: "Lakeshore PBS", url: "https://www.hulu.com/live" },
@@ -1379,6 +1517,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1379
1517
  },
1380
1518
  retroplex: {
1381
1519
  name: "RetroPlex",
1520
+ tags: ["movies", "starz"],
1382
1521
  stationId: "65791",
1383
1522
  providers: {
1384
1523
  hulu: { channelSelector: "RetroPlex (East)", url: "https://www.hulu.com/live" },
@@ -1388,6 +1527,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1388
1527
  },
1389
1528
  retroplexp: {
1390
1529
  name: "RetroPlex (Pacific)",
1530
+ tags: ["movies", "starz"],
1391
1531
  stationId: "65793",
1392
1532
  providers: {
1393
1533
  hulu: { channelSelector: "RetroPlex (West)", url: "https://www.hulu.com/live" },
@@ -1395,6 +1535,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1395
1535
  },
1396
1536
  science: {
1397
1537
  name: "Science",
1538
+ tags: ["documentary"],
1398
1539
  stationId: "57390",
1399
1540
  providers: {
1400
1541
  cox: { channelSelector: "Science Channel", url: "https://watchtv.cox.com/listings" },
@@ -1406,6 +1547,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1406
1547
  },
1407
1548
  showtime: {
1408
1549
  name: "Showtime",
1550
+ tags: ["movies", "showtime"],
1409
1551
  stationId: "91620",
1410
1552
  providers: {
1411
1553
  cox: { channelSelector: "PSHOh", url: "https://watchtv.cox.com/listings" },
@@ -1416,6 +1558,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1416
1558
  },
1417
1559
  showtimep: {
1418
1560
  name: "Showtime (Pacific)",
1561
+ tags: ["movies", "showtime"],
1419
1562
  stationId: "91621",
1420
1563
  providers: {
1421
1564
  paramountplus: { url: "https://www.paramountplus.com/live-tv/stream/showtime-west" },
@@ -1423,6 +1566,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1423
1566
  },
1424
1567
  smithsonian: {
1425
1568
  name: "Smithsonian Channel",
1569
+ tags: ["documentary"],
1426
1570
  pacificStationId: "82695",
1427
1571
  stationId: "58532",
1428
1572
  providers: {
@@ -1436,6 +1580,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1436
1580
  },
1437
1581
  sny: {
1438
1582
  name: "SportsNet New York",
1583
+ tags: ["sports"],
1439
1584
  stationId: "50038",
1440
1585
  providers: {
1441
1586
  directv: { channelSelector: "SportsNet New York HD 639", url: "https://stream.directv.com" },
@@ -1443,6 +1588,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1443
1588
  },
1444
1589
  starz: {
1445
1590
  name: "Starz",
1591
+ tags: ["movies", "starz"],
1446
1592
  stationId: "34941",
1447
1593
  providers: {
1448
1594
  cox: { channelSelector: "STARZ", url: "https://watchtv.cox.com/listings" },
@@ -1454,6 +1600,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1454
1600
  },
1455
1601
  starzcinema: {
1456
1602
  name: "Starz Cinema",
1603
+ tags: ["movies", "starz"],
1457
1604
  stationId: "67236",
1458
1605
  providers: {
1459
1606
  hulu: { channelSelector: "STARZ Cinema (East)", url: "https://www.hulu.com/live" },
@@ -1462,6 +1609,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1462
1609
  },
1463
1610
  starzcinemap: {
1464
1611
  name: "Starz Cinema (Pacific)",
1612
+ tags: ["movies", "starz"],
1465
1613
  stationId: "67365",
1466
1614
  providers: {
1467
1615
  hulu: { channelSelector: "STARZ Cinema (West)", url: "https://www.hulu.com/live" },
@@ -1469,6 +1617,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1469
1617
  },
1470
1618
  starzcomedy: {
1471
1619
  name: "Starz Comedy",
1620
+ tags: ["movies", "starz"],
1472
1621
  stationId: "57569",
1473
1622
  providers: {
1474
1623
  hulu: { channelSelector: "STARZ Comedy (East)", url: "https://www.hulu.com/live" },
@@ -1477,6 +1626,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1477
1626
  },
1478
1627
  starzcomedyp: {
1479
1628
  name: "Starz Comedy (Pacific)",
1629
+ tags: ["movies", "starz"],
1480
1630
  stationId: "57575",
1481
1631
  providers: {
1482
1632
  hulu: { channelSelector: "STARZ Comedy (West)", url: "https://www.hulu.com/live" },
@@ -1484,6 +1634,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1484
1634
  },
1485
1635
  starzedge: {
1486
1636
  name: "Starz Edge",
1637
+ tags: ["movies", "starz"],
1487
1638
  stationId: "57573",
1488
1639
  providers: {
1489
1640
  hulu: { channelSelector: "STARZ Edge (East)", url: "https://www.hulu.com/live" },
@@ -1492,6 +1643,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1492
1643
  },
1493
1644
  starzedgep: {
1494
1645
  name: "Starz Edge (Pacific)",
1646
+ tags: ["movies", "starz"],
1495
1647
  stationId: "57578",
1496
1648
  providers: {
1497
1649
  hulu: { channelSelector: "STARZ Edge (West)", url: "https://www.hulu.com/live" },
@@ -1499,6 +1651,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1499
1651
  },
1500
1652
  starzencore: {
1501
1653
  name: "Starz Encore",
1654
+ tags: ["movies", "starz"],
1502
1655
  stationId: "36225",
1503
1656
  providers: {
1504
1657
  cox: { channelSelector: "STZEH", url: "https://watchtv.cox.com/listings" },
@@ -1509,6 +1662,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1509
1662
  },
1510
1663
  starzencoreaction: {
1511
1664
  name: "Starz Encore Action",
1665
+ tags: ["movies", "starz"],
1512
1666
  stationId: "72015",
1513
1667
  providers: {
1514
1668
  cox: { channelSelector: "STZAH", url: "https://watchtv.cox.com/listings" },
@@ -1519,6 +1673,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1519
1673
  },
1520
1674
  starzencoreactionp: {
1521
1675
  name: "Starz Encore Action (Pacific)",
1676
+ tags: ["movies", "starz"],
1522
1677
  stationId: "103833",
1523
1678
  providers: {
1524
1679
  hulu: { channelSelector: "STARZ Encore Action (West)", url: "https://www.hulu.com/live" },
@@ -1526,6 +1681,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1526
1681
  },
1527
1682
  starzencoreblack: {
1528
1683
  name: "Starz Encore Black",
1684
+ tags: ["movies", "starz"],
1529
1685
  stationId: "72014",
1530
1686
  providers: {
1531
1687
  cox: { channelSelector: "STZBH", url: "https://watchtv.cox.com/listings" },
@@ -1536,6 +1692,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1536
1692
  },
1537
1693
  starzencoreblackp: {
1538
1694
  name: "Starz Encore Black (Pacific)",
1695
+ tags: ["movies", "starz"],
1539
1696
  stationId: "103834",
1540
1697
  providers: {
1541
1698
  hulu: { channelSelector: "STARZ Encore Black (West)", url: "https://www.hulu.com/live" },
@@ -1543,6 +1700,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1543
1700
  },
1544
1701
  starzencoreclassic: {
1545
1702
  name: "Starz Encore Classic",
1703
+ tags: ["movies", "starz"],
1546
1704
  stationId: "83404",
1547
1705
  providers: {
1548
1706
  hulu: { channelSelector: "STARZ Encore Classic (East)", url: "https://www.hulu.com/live" },
@@ -1551,6 +1709,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1551
1709
  },
1552
1710
  starzencoreclassicp: {
1553
1711
  name: "Starz Encore Classic (Pacific)",
1712
+ tags: ["movies", "starz"],
1554
1713
  stationId: "97233",
1555
1714
  providers: {
1556
1715
  hulu: { channelSelector: "STARZ Encore Classic (West)", url: "https://www.hulu.com/live" },
@@ -1558,6 +1717,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1558
1717
  },
1559
1718
  starzencoreespanol: {
1560
1719
  name: "Starz Encore Español",
1720
+ tags: ["movies", "starz"],
1561
1721
  stationId: "72016",
1562
1722
  providers: {
1563
1723
  hulu: { channelSelector: "STARZ Encore Español (East)", url: "https://www.hulu.com/live" },
@@ -1566,6 +1726,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1566
1726
  },
1567
1727
  starzencoreespanolp: {
1568
1728
  name: "Starz Encore Español (Pacific)",
1729
+ tags: ["movies", "starz"],
1569
1730
  stationId: "104730",
1570
1731
  providers: {
1571
1732
  hulu: { channelSelector: "STARZ Encore Español (West)", url: "https://www.hulu.com/live" },
@@ -1573,6 +1734,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1573
1734
  },
1574
1735
  starzencorefamily: {
1575
1736
  name: "Starz Encore Family",
1737
+ tags: ["kids", "movies", "starz"],
1576
1738
  stationId: "14886",
1577
1739
  providers: {
1578
1740
  hulu: { channelSelector: "STARZ Encore Family (East)", url: "https://www.hulu.com/live" },
@@ -1581,6 +1743,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1581
1743
  },
1582
1744
  starzencorefamilyp: {
1583
1745
  name: "Starz Encore Family (Pacific)",
1746
+ tags: ["kids", "movies", "starz"],
1584
1747
  stationId: "103829",
1585
1748
  providers: {
1586
1749
  hulu: { channelSelector: "STARZ Encore Family (West)", url: "https://www.hulu.com/live" },
@@ -1588,6 +1751,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1588
1751
  },
1589
1752
  starzencorep: {
1590
1753
  name: "Starz Encore (Pacific)",
1754
+ tags: ["movies", "starz"],
1591
1755
  stationId: "67237",
1592
1756
  providers: {
1593
1757
  hulu: { channelSelector: "STARZ Encore (West)", url: "https://www.hulu.com/live" },
@@ -1596,6 +1760,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1596
1760
  },
1597
1761
  starzencoresuspense: {
1598
1762
  name: "Starz Encore Suspense",
1763
+ tags: ["movies", "starz"],
1599
1764
  stationId: "83076",
1600
1765
  providers: {
1601
1766
  hulu: { channelSelector: "STARZ Encore Suspense (East)", url: "https://www.hulu.com/live" },
@@ -1604,6 +1769,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1604
1769
  },
1605
1770
  starzencoresuspensep: {
1606
1771
  name: "Starz Encore Suspense (Pacific)",
1772
+ tags: ["movies", "starz"],
1607
1773
  stationId: "103836",
1608
1774
  providers: {
1609
1775
  hulu: { channelSelector: "STARZ Encore Suspense (West)", url: "https://www.hulu.com/live" },
@@ -1611,6 +1777,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1611
1777
  },
1612
1778
  starzencorewesterns: {
1613
1779
  name: "Starz Encore Westerns",
1780
+ tags: ["movies", "starz"],
1614
1781
  stationId: "14765",
1615
1782
  providers: {
1616
1783
  hulu: { channelSelector: "STARZ Encore Westerns (East)", url: "https://www.hulu.com/live" },
@@ -1619,6 +1786,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1619
1786
  },
1620
1787
  starzencorewesternsp: {
1621
1788
  name: "Starz Encore Westerns (Pacific)",
1789
+ tags: ["movies", "starz"],
1622
1790
  stationId: "103856",
1623
1791
  providers: {
1624
1792
  hulu: { channelSelector: "STARZ Encore Westerns (West)", url: "https://www.hulu.com/live" },
@@ -1626,6 +1794,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1626
1794
  },
1627
1795
  starzinblack: {
1628
1796
  name: "Starz in Black",
1797
+ tags: ["movies", "starz"],
1629
1798
  stationId: "67235",
1630
1799
  providers: {
1631
1800
  hulu: { channelSelector: "STARZ in Black (East)", url: "https://www.hulu.com/live" },
@@ -1634,6 +1803,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1634
1803
  },
1635
1804
  starzinblackp: {
1636
1805
  name: "Starz in Black (Pacific)",
1806
+ tags: ["movies", "starz"],
1637
1807
  stationId: "67367",
1638
1808
  providers: {
1639
1809
  hulu: { channelSelector: "STARZ in Black (West)", url: "https://www.hulu.com/live" },
@@ -1641,6 +1811,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1641
1811
  },
1642
1812
  starzkids: {
1643
1813
  name: "Starz Kids",
1814
+ tags: ["kids", "starz"],
1644
1815
  stationId: "57581",
1645
1816
  providers: {
1646
1817
  hulu: { channelSelector: "STARZ Kids (East)", url: "https://www.hulu.com/live" },
@@ -1649,6 +1820,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1649
1820
  },
1650
1821
  starzkidsp: {
1651
1822
  name: "Starz Kids (Pacific)",
1823
+ tags: ["kids", "starz"],
1652
1824
  stationId: "57583",
1653
1825
  providers: {
1654
1826
  hulu: { channelSelector: "STARZ Kids (West)", url: "https://www.hulu.com/live" },
@@ -1656,6 +1828,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1656
1828
  },
1657
1829
  starzp: {
1658
1830
  name: "Starz (Pacific)",
1831
+ tags: ["movies", "starz"],
1659
1832
  stationId: "34949",
1660
1833
  providers: {
1661
1834
  hulu: { channelSelector: "STARZ (West)", url: "https://www.hulu.com/live" },
@@ -1664,6 +1837,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1664
1837
  },
1665
1838
  sundancetv: {
1666
1839
  name: "SundanceTV",
1840
+ tags: ["movies"],
1667
1841
  pacificStationId: "78806",
1668
1842
  stationId: "71280",
1669
1843
  providers: {
@@ -1676,6 +1850,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1676
1850
  },
1677
1851
  syfy: {
1678
1852
  name: "Syfy",
1853
+ tags: ["entertainment"],
1679
1854
  stationId: "58623",
1680
1855
  providers: {
1681
1856
  cox: { channelSelector: "SYFY", url: "https://watchtv.cox.com/listings" },
@@ -1690,6 +1865,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1690
1865
  },
1691
1866
  syfyp: {
1692
1867
  name: "Syfy (Pacific)",
1868
+ tags: ["entertainment"],
1693
1869
  stationId: "65626",
1694
1870
  providers: {
1695
1871
  site: { channelSelector: "Syfy_West", url: "https://www.usanetwork.com/live" },
@@ -1697,6 +1873,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1697
1873
  },
1698
1874
  tbs: {
1699
1875
  name: "TBS",
1876
+ tags: ["entertainment"],
1700
1877
  stationId: "58515",
1701
1878
  providers: {
1702
1879
  cox: { channelSelector: "TBS", url: "https://watchtv.cox.com/listings" },
@@ -1711,6 +1888,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1711
1888
  },
1712
1889
  tbsp: {
1713
1890
  name: "TBS (Pacific)",
1891
+ tags: ["entertainment"],
1714
1892
  stationId: "67890",
1715
1893
  providers: {
1716
1894
  hulu: { channelSelector: "TBS (West)", url: "https://www.hulu.com/live" },
@@ -1719,6 +1897,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1719
1897
  },
1720
1898
  tcm: {
1721
1899
  name: "TCM",
1900
+ tags: ["movies"],
1722
1901
  stationId: "64312",
1723
1902
  providers: {
1724
1903
  cox: { channelSelector: "TCM", url: "https://watchtv.cox.com/listings" },
@@ -1731,6 +1910,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1731
1910
  },
1732
1911
  tcmp: {
1733
1912
  name: "TCM (Pacific)",
1913
+ tags: ["movies"],
1734
1914
  stationId: "64312",
1735
1915
  tvgShift: 3,
1736
1916
  providers: {
@@ -1739,6 +1919,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1739
1919
  },
1740
1920
  tennis: {
1741
1921
  name: "Tennis Channel",
1922
+ tags: ["sports"],
1742
1923
  stationId: "60316",
1743
1924
  providers: {
1744
1925
  cox: { channelSelector: "Tennis Channel", url: "https://watchtv.cox.com/listings" },
@@ -1750,6 +1931,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1750
1931
  },
1751
1932
  tennis2: {
1752
1933
  name: "Tennis Channel 2",
1934
+ tags: ["sports"],
1753
1935
  stationId: "137752",
1754
1936
  providers: {
1755
1937
  cox: { channelSelector: "T2", url: "https://watchtv.cox.com/listings" },
@@ -1761,6 +1943,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1761
1943
  },
1762
1944
  tlc: {
1763
1945
  name: "TLC",
1946
+ tags: ["lifestyle"],
1764
1947
  pacificStationId: "79911",
1765
1948
  stationId: "57391",
1766
1949
  providers: {
@@ -1776,6 +1959,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1776
1959
  },
1777
1960
  tnt: {
1778
1961
  name: "TNT",
1962
+ tags: ["entertainment"],
1779
1963
  stationId: "42642",
1780
1964
  providers: {
1781
1965
  cox: { channelSelector: "TNT", url: "https://watchtv.cox.com/listings" },
@@ -1790,6 +1974,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1790
1974
  },
1791
1975
  tntp: {
1792
1976
  name: "TNT (Pacific)",
1977
+ tags: ["entertainment"],
1793
1978
  stationId: "61340",
1794
1979
  providers: {
1795
1980
  hulu: { channelSelector: "TNT (West)", url: "https://www.hulu.com/live" },
@@ -1798,6 +1983,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1798
1983
  },
1799
1984
  travel: {
1800
1985
  name: "Travel",
1986
+ tags: ["lifestyle"],
1801
1987
  pacificStationId: "64525",
1802
1988
  stationId: "59303",
1803
1989
  providers: {
@@ -1813,6 +1999,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1813
1999
  },
1814
2000
  trutv: {
1815
2001
  name: "truTV",
2002
+ tags: ["entertainment"],
1816
2003
  pacificStationId: "65717",
1817
2004
  stationId: "64490",
1818
2005
  providers: {
@@ -1828,6 +2015,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1828
2015
  },
1829
2016
  trutvp: {
1830
2017
  name: "truTV (Pacific)",
2018
+ tags: ["entertainment"],
1831
2019
  stationId: "65717",
1832
2020
  providers: {
1833
2021
  hulu: { channelSelector: "truTV (West)", url: "https://www.hulu.com/live" },
@@ -1835,6 +2023,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1835
2023
  },
1836
2024
  tvland: {
1837
2025
  name: "TV Land",
2026
+ tags: ["entertainment"],
1838
2027
  pacificStationId: "74134",
1839
2028
  stationId: "73541",
1840
2029
  providers: {
@@ -1848,6 +2037,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1848
2037
  },
1849
2038
  usa: {
1850
2039
  name: "USA Network",
2040
+ tags: ["entertainment"],
1851
2041
  stationId: "58452",
1852
2042
  providers: {
1853
2043
  cox: { channelSelector: "USA", url: "https://watchtv.cox.com/listings" },
@@ -1862,6 +2052,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1862
2052
  },
1863
2053
  usap: {
1864
2054
  name: "USA Network (Pacific)",
2055
+ tags: ["entertainment"],
1865
2056
  stationId: "74030",
1866
2057
  providers: {
1867
2058
  site: { channelSelector: "USA_West", url: "https://www.usanetwork.com/live" },
@@ -1869,6 +2060,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1869
2060
  },
1870
2061
  vh1: {
1871
2062
  name: "VH1",
2063
+ tags: ["entertainment"],
1872
2064
  pacificStationId: "64634",
1873
2065
  stationId: "60046",
1874
2066
  providers: {
@@ -1883,6 +2075,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1883
2075
  },
1884
2076
  vice: {
1885
2077
  name: "Vice",
2078
+ tags: ["entertainment"],
1886
2079
  pacificStationId: "92375",
1887
2080
  stationId: "65732",
1888
2081
  providers: {
@@ -1896,6 +2089,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1896
2089
  },
1897
2090
  weather: {
1898
2091
  name: "The Weather Channel",
2092
+ tags: ["news"],
1899
2093
  stationId: "58812",
1900
2094
  providers: {
1901
2095
  cox: { channelSelector: "Weather Channel", url: "https://watchtv.cox.com/listings" },
@@ -1908,6 +2102,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1908
2102
  },
1909
2103
  wetv: {
1910
2104
  name: "WE tv",
2105
+ tags: ["entertainment"],
1911
2106
  pacificStationId: "108192",
1912
2107
  stationId: "59296",
1913
2108
  providers: {
@@ -1920,6 +2115,7 @@ const BASE_CHANNEL_DEFINITIONS = {
1920
2115
  },
1921
2116
  yes: {
1922
2117
  name: "YES Network",
2118
+ tags: ["sports"],
1923
2119
  stationId: "63558",
1924
2120
  providers: {
1925
2121
  directv: { channelSelector: "Yes Network HD", url: "https://stream.directv.com" },
@@ -1977,7 +2173,8 @@ function generatePacificDefinitions(definitions) {
1977
2173
  generated[pacificKey] = {
1978
2174
  name: def.name + " (Pacific)",
1979
2175
  providers: {},
1980
- stationId: def.pacificStationId
2176
+ stationId: def.pacificStationId,
2177
+ ...(def.tags ? { tags: def.tags } : {})
1981
2178
  };
1982
2179
  }
1983
2180
  // Merge base and generated for Pacific lookup in Step 2.
@@ -2079,31 +2276,20 @@ function buildFlatEntry(def, variant) {
2079
2276
  if (channelNumber !== undefined) {
2080
2277
  entry.channelNumber = channelNumber;
2081
2278
  }
2279
+ // Tags from definition only (identity field, inherited by all variants).
2280
+ if (def.tags) {
2281
+ entry.tags = def.tags.slice();
2282
+ }
2082
2283
  // tvgShift from definition only (not overridable per-variant).
2083
2284
  if (def.tvgShift !== undefined) {
2084
2285
  entry.tvgShift = def.tvgShift;
2085
2286
  }
2086
2287
  // Provider-specific fields from ProviderVariant.
2087
- if (variant.channelSelector) {
2088
- entry.channelSelector = variant.channelSelector;
2089
- }
2090
- if (variant.dismissSelector) {
2091
- entry.dismissSelector = variant.dismissSelector;
2092
- }
2093
- if (variant.profile) {
2094
- entry.profile = variant.profile;
2095
- }
2096
- if (variant.provider) {
2097
- entry.provider = variant.provider;
2098
- }
2099
- if (variant.scrollSelector) {
2100
- entry.scrollSelector = variant.scrollSelector;
2101
- }
2102
- if (variant.scrollTarget) {
2103
- entry.scrollTarget = variant.scrollTarget;
2104
- }
2105
- if (variant.scrollToBottom !== undefined) {
2106
- entry.scrollToBottom = variant.scrollToBottom;
2288
+ const variantKeys = ["channelSelector", "dismissSelector", "profile", "provider", "scrollSelector", "scrollTarget", "scrollToBottom"];
2289
+ for (const key of variantKeys) {
2290
+ if (variant[key] !== undefined) {
2291
+ entry[key] = variant[key];
2292
+ }
2107
2293
  }
2108
2294
  return entry;
2109
2295
  }