prismcast 1.5.2 → 1.7.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 (239) hide show
  1. package/README.md +44 -28
  2. package/dist/app.d.ts +5 -0
  3. package/dist/app.js +63 -5
  4. package/dist/app.js.map +1 -1
  5. package/dist/browser/cdp.js +1 -1
  6. package/dist/browser/cdp.js.map +1 -1
  7. package/dist/browser/channelSelection.d.ts +10 -34
  8. package/dist/browser/channelSelection.js +31 -96
  9. package/dist/browser/channelSelection.js.map +1 -1
  10. package/dist/browser/display.d.ts +19 -0
  11. package/dist/browser/display.js +16 -11
  12. package/dist/browser/display.js.map +1 -1
  13. package/dist/browser/index.d.ts +31 -54
  14. package/dist/browser/index.js +334 -272
  15. package/dist/browser/index.js.map +1 -1
  16. package/dist/browser/login.d.ts +65 -0
  17. package/dist/browser/login.js +193 -0
  18. package/dist/browser/login.js.map +1 -0
  19. package/dist/browser/precaching.js +15 -3
  20. package/dist/browser/precaching.js.map +1 -1
  21. package/dist/browser/tuning/comcastPolymer.d.ts +23 -0
  22. package/dist/browser/tuning/comcastPolymer.js +655 -0
  23. package/dist/browser/tuning/comcastPolymer.js.map +1 -0
  24. package/dist/browser/tuning/cox.d.ts +2 -0
  25. package/dist/browser/tuning/cox.js +14 -0
  26. package/dist/browser/tuning/cox.js.map +1 -0
  27. package/dist/browser/tuning/directv.js +14 -1
  28. package/dist/browser/tuning/directv.js.map +1 -1
  29. package/dist/browser/tuning/fox.js +14 -2
  30. package/dist/browser/tuning/fox.js.map +1 -1
  31. package/dist/browser/tuning/hbo.js +12 -1
  32. package/dist/browser/tuning/hbo.js.map +1 -1
  33. package/dist/browser/tuning/hulu.js +24 -1
  34. package/dist/browser/tuning/hulu.js.map +1 -1
  35. package/dist/browser/tuning/shared.d.ts +46 -0
  36. package/dist/browser/tuning/shared.js +100 -0
  37. package/dist/browser/tuning/shared.js.map +1 -0
  38. package/dist/browser/tuning/sling.js +35 -5
  39. package/dist/browser/tuning/sling.js.map +1 -1
  40. package/dist/browser/tuning/spectrum.js +13 -1
  41. package/dist/browser/tuning/spectrum.js.map +1 -1
  42. package/dist/browser/tuning/thumbnailRow.js +1 -1
  43. package/dist/browser/tuning/thumbnailRow.js.map +1 -1
  44. package/dist/browser/tuning/tileClick.js +1 -1
  45. package/dist/browser/tuning/tileClick.js.map +1 -1
  46. package/dist/browser/tuning/xfinity.d.ts +2 -0
  47. package/dist/browser/tuning/xfinity.js +14 -0
  48. package/dist/browser/tuning/xfinity.js.map +1 -0
  49. package/dist/browser/tuning/youtubeTv.js +15 -1
  50. package/dist/browser/tuning/youtubeTv.js.map +1 -1
  51. package/dist/browser/video.d.ts +20 -0
  52. package/dist/browser/video.js +168 -124
  53. package/dist/browser/video.js.map +1 -1
  54. package/dist/channels/index.d.ts +2 -2
  55. package/dist/channels/index.js +2075 -683
  56. package/dist/channels/index.js.map +1 -1
  57. package/dist/config/health.d.ts +28 -28
  58. package/dist/config/health.js +72 -54
  59. package/dist/config/health.js.map +1 -1
  60. package/dist/config/index.js +29 -64
  61. package/dist/config/index.js.map +1 -1
  62. package/dist/config/paths.d.ts +12 -0
  63. package/dist/config/paths.js +16 -0
  64. package/dist/config/paths.js.map +1 -1
  65. package/dist/config/profiles.d.ts +3 -2
  66. package/dist/config/profiles.js +45 -34
  67. package/dist/config/profiles.js.map +1 -1
  68. package/dist/config/providerPacks.js +4 -1
  69. package/dist/config/providerPacks.js.map +1 -1
  70. package/dist/config/providers.d.ts +19 -5
  71. package/dist/config/providers.js +123 -93
  72. package/dist/config/providers.js.map +1 -1
  73. package/dist/config/sites.d.ts +28 -0
  74. package/dist/config/sites.js +104 -127
  75. package/dist/config/sites.js.map +1 -1
  76. package/dist/config/userChannels.d.ts +53 -2
  77. package/dist/config/userChannels.js +222 -13
  78. package/dist/config/userChannels.js.map +1 -1
  79. package/dist/config/userConfig.d.ts +2 -1
  80. package/dist/config/userConfig.js +6 -15
  81. package/dist/config/userConfig.js.map +1 -1
  82. package/dist/config/userProfiles.d.ts +0 -1
  83. package/dist/config/userProfiles.js +18 -10
  84. package/dist/config/userProfiles.js.map +1 -1
  85. package/dist/hdhr/channelMap.d.ts +1 -1
  86. package/dist/hdhr/channelMap.js +4 -4
  87. package/dist/hdhr/channelMap.js.map +1 -1
  88. package/dist/index.js +25 -22
  89. package/dist/index.js.map +1 -1
  90. package/dist/native/decrypt.d.ts +32 -0
  91. package/dist/native/decrypt.js +85 -0
  92. package/dist/native/decrypt.js.map +1 -0
  93. package/dist/native/index.d.ts +61 -0
  94. package/dist/native/index.js +342 -0
  95. package/dist/native/index.js.map +1 -0
  96. package/dist/native/intercept.d.ts +35 -0
  97. package/dist/native/intercept.js +184 -0
  98. package/dist/native/intercept.js.map +1 -0
  99. package/dist/native/probe.d.ts +49 -0
  100. package/dist/native/probe.js +294 -0
  101. package/dist/native/probe.js.map +1 -0
  102. package/dist/native/proxy.d.ts +54 -0
  103. package/dist/native/proxy.js +947 -0
  104. package/dist/native/proxy.js.map +1 -0
  105. package/dist/routes/components.d.ts +43 -0
  106. package/dist/routes/components.js +122 -0
  107. package/dist/routes/components.js.map +1 -1
  108. package/dist/routes/config/channels/index.d.ts +2 -2
  109. package/dist/routes/config/channels/index.js +1 -1
  110. package/dist/routes/config/channels/index.js.map +1 -1
  111. package/dist/routes/config/channels/routes.js +443 -65
  112. package/dist/routes/config/channels/routes.js.map +1 -1
  113. package/dist/routes/config/channels/table.d.ts +76 -0
  114. package/dist/routes/config/channels/table.js +369 -89
  115. package/dist/routes/config/channels/table.js.map +1 -1
  116. package/dist/routes/config/index.d.ts +1 -1
  117. package/dist/routes/config/index.js +1 -1
  118. package/dist/routes/config/index.js.map +1 -1
  119. package/dist/routes/config/providers.d.ts +6 -6
  120. package/dist/routes/config/providers.js +73 -99
  121. package/dist/routes/config/providers.js.map +1 -1
  122. package/dist/routes/debug.js +5 -5
  123. package/dist/routes/debug.js.map +1 -1
  124. package/dist/routes/hls.js +12 -2
  125. package/dist/routes/hls.js.map +1 -1
  126. package/dist/routes/index.d.ts +0 -15
  127. package/dist/routes/index.js +2 -16
  128. package/dist/routes/index.js.map +1 -1
  129. package/dist/routes/providers.js +106 -3
  130. package/dist/routes/providers.js.map +1 -1
  131. package/dist/routes/root/content.js +124 -47
  132. package/dist/routes/root/content.js.map +1 -1
  133. package/dist/routes/root/index.js +2 -1
  134. package/dist/routes/root/index.js.map +1 -1
  135. package/dist/routes/root/scripts/channels.js +772 -312
  136. package/dist/routes/root/scripts/channels.js.map +1 -1
  137. package/dist/routes/root/scripts/config.js +596 -544
  138. package/dist/routes/root/scripts/config.js.map +1 -1
  139. package/dist/routes/root/scripts/index.d.ts +1 -0
  140. package/dist/routes/root/scripts/index.js +1 -0
  141. package/dist/routes/root/scripts/index.js.map +1 -1
  142. package/dist/routes/root/scripts/shared.d.ts +6 -0
  143. package/dist/routes/root/scripts/shared.js +391 -0
  144. package/dist/routes/root/scripts/shared.js.map +1 -0
  145. package/dist/routes/root/scripts/status.js +49 -33
  146. package/dist/routes/root/scripts/status.js.map +1 -1
  147. package/dist/routes/root/styles.js +117 -10
  148. package/dist/routes/root/styles.js.map +1 -1
  149. package/dist/service/commands.js +2 -1
  150. package/dist/service/commands.js.map +1 -1
  151. package/dist/streaming/fmp4Segmenter.d.ts +5 -0
  152. package/dist/streaming/fmp4Segmenter.js +146 -42
  153. package/dist/streaming/fmp4Segmenter.js.map +1 -1
  154. package/dist/streaming/hls.d.ts +24 -19
  155. package/dist/streaming/hls.js +603 -297
  156. package/dist/streaming/hls.js.map +1 -1
  157. package/dist/streaming/hlsResume.d.ts +16 -3
  158. package/dist/streaming/hlsResume.js +35 -8
  159. package/dist/streaming/hlsResume.js.map +1 -1
  160. package/dist/streaming/hlsSegments.d.ts +41 -2
  161. package/dist/streaming/hlsSegments.js +131 -28
  162. package/dist/streaming/hlsSegments.js.map +1 -1
  163. package/dist/streaming/lifecycle.js +27 -13
  164. package/dist/streaming/lifecycle.js.map +1 -1
  165. package/dist/streaming/monitor.d.ts +1 -0
  166. package/dist/streaming/monitor.js +862 -474
  167. package/dist/streaming/monitor.js.map +1 -1
  168. package/dist/streaming/mp4Parser.d.ts +52 -6
  169. package/dist/streaming/mp4Parser.js +156 -30
  170. package/dist/streaming/mp4Parser.js.map +1 -1
  171. package/dist/streaming/mpegts.d.ts +2 -2
  172. package/dist/streaming/mpegts.js +156 -109
  173. package/dist/streaming/mpegts.js.map +1 -1
  174. package/dist/streaming/playlistBuilder.d.ts +38 -0
  175. package/dist/streaming/playlistBuilder.js +66 -0
  176. package/dist/streaming/playlistBuilder.js.map +1 -0
  177. package/dist/streaming/preroll.d.ts +126 -0
  178. package/dist/streaming/preroll.js +434 -0
  179. package/dist/streaming/preroll.js.map +1 -0
  180. package/dist/streaming/pretune.d.ts +8 -0
  181. package/dist/streaming/pretune.js +226 -0
  182. package/dist/streaming/pretune.js.map +1 -0
  183. package/dist/streaming/recovery.d.ts +0 -6
  184. package/dist/streaming/recovery.js +0 -8
  185. package/dist/streaming/recovery.js.map +1 -1
  186. package/dist/streaming/registry.d.ts +57 -9
  187. package/dist/streaming/registry.js +26 -7
  188. package/dist/streaming/registry.js.map +1 -1
  189. package/dist/streaming/setup.d.ts +8 -1
  190. package/dist/streaming/setup.js +71 -27
  191. package/dist/streaming/setup.js.map +1 -1
  192. package/dist/streaming/showInfo.d.ts +29 -4
  193. package/dist/streaming/showInfo.js +210 -38
  194. package/dist/streaming/showInfo.js.map +1 -1
  195. package/dist/streaming/statusEmitter.d.ts +20 -6
  196. package/dist/streaming/statusEmitter.js +31 -7
  197. package/dist/streaming/statusEmitter.js.map +1 -1
  198. package/dist/types/channels.d.ts +32 -0
  199. package/dist/types/config.d.ts +2 -2
  200. package/dist/types/index.d.ts +2 -2
  201. package/dist/types/index.js.map +1 -1
  202. package/dist/types/profiles.d.ts +13 -1
  203. package/dist/types/selection.d.ts +5 -1
  204. package/dist/types/shared.d.ts +1 -1
  205. package/dist/types/streaming.d.ts +7 -0
  206. package/dist/utils/chromeFetch.d.ts +20 -0
  207. package/dist/utils/chromeFetch.js +43 -0
  208. package/dist/utils/chromeFetch.js.map +1 -0
  209. package/dist/utils/debugFilter.d.ts +0 -5
  210. package/dist/utils/debugFilter.js +20 -11
  211. package/dist/utils/debugFilter.js.map +1 -1
  212. package/dist/utils/delay.d.ts +28 -0
  213. package/dist/utils/delay.js +35 -1
  214. package/dist/utils/delay.js.map +1 -1
  215. package/dist/utils/evaluate.js +6 -11
  216. package/dist/utils/evaluate.js.map +1 -1
  217. package/dist/utils/ffmpeg.d.ts +14 -12
  218. package/dist/utils/ffmpeg.js +114 -134
  219. package/dist/utils/ffmpeg.js.map +1 -1
  220. package/dist/utils/format.d.ts +6 -0
  221. package/dist/utils/format.js +8 -0
  222. package/dist/utils/format.js.map +1 -1
  223. package/dist/utils/index.d.ts +3 -0
  224. package/dist/utils/index.js +3 -0
  225. package/dist/utils/index.js.map +1 -1
  226. package/dist/utils/logEmitter.js +1 -1
  227. package/dist/utils/logEmitter.js.map +1 -1
  228. package/dist/utils/pid.d.ts +40 -0
  229. package/dist/utils/pid.js +83 -0
  230. package/dist/utils/pid.js.map +1 -0
  231. package/dist/utils/retry.d.ts +15 -9
  232. package/dist/utils/retry.js +7 -23
  233. package/dist/utils/retry.js.map +1 -1
  234. package/dist/utils/timing.d.ts +5 -0
  235. package/dist/utils/timing.js +13 -0
  236. package/dist/utils/timing.js.map +1 -0
  237. package/dist/utils/version.js +2 -2
  238. package/dist/utils/version.js.map +1 -1
  239. package/package.json +7 -7
@@ -1,724 +1,2116 @@
1
- /* Map short channel names to streaming configurations. Users request streams via /stream/nbc instead of full URLs.
1
+ // 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
+ const SITE_KEY = "site";
3
+ /* Nested channel definitions. Each entry maps a channel key to a ChannelDefinition with identity fields (name, stationId) and a providers map keyed by provider
4
+ * slug. The "site" key represents the channel's own streaming website. All other keys are multi-provider platform slugs (cox, directv, hulu, sling, spectrum,
5
+ * xfinity, yttv, foxone, paramountplus).
2
6
  *
3
- * Channel properties:
4
- * - name: Display name shown in Channels DVR (required for canonical channels, inherited by variants).
5
- * - url: Streaming site URL.
6
- * - profile: Site behavior profile (optional). Use "auto" or omit to auto-detect from URL domain. See config/profiles.ts for available profiles.
7
- * - stationId: Gracenote station ID for guide data (optional). Local affiliates (ABC, CBS, NBC) vary by region.
8
- * - pacificStationId: Gracenote station ID for the Pacific timezone feed (optional). When set on an East canonical, the system auto-generates a Pacific
9
- * canonical ("{key}p") and matching provider variants at startup. See generatePacificEntries() below for details, examples, and how to add new channels.
10
- * - channelSelector: Channel identifier for multi-channel pages. For thumbnailRow/tileClick profiles, this is a slug matched against image URLs. For directvGrid
11
- * (directvStream), this is the channel name from the DirecTV Stream Redux store (e.g., CNN, ESPN, NBC). For foxGrid (foxLive), this is the station code matched
12
- * against GuideChannelLogo button titles (e.g., FOXD2C, FNC, FS1). For guideGrid (huluLive), this is the exact channel name matched against image alt text. For
13
- * hboGrid (hboMax), this is the channel name matched against the live channel rail tile text (e.g., HBO, HBO Hits). For slingGrid (slingLive), this is the
14
- * channel name as it appears in the Sling TV guide grid data-testid attributes. For spectrumGrid (spectrum), this is the channel name from the Spectrum TV guide
15
- * rowheaders (e.g., ESPN, CNN, Discovery Channel) or a network name (e.g., NBC) for local affiliates. For youtubeGrid (youtubeTV), this is the channel name
16
- * from the YouTube TV guide or a network name (e.g., NBC) for local affiliates.
17
- * - provider: Display name override for the provider selection dropdown (optional). Normally auto-derived from the URL domain via DOMAIN_CONFIG in
18
- * config/profiles.ts. Only needed when a channel's display name should differ from the domain-level default.
7
+ * At module load, the flattener compiles these nested definitions into the flat ChannelMap consumed by the rest of the codebase. Each variant entry gets
8
+ * canonicalKey set to its parent definition's key, which buildProviderGroups in providers.ts uses to assemble provider groups.
19
9
  *
20
- * Provider variants: Channels are grouped by key prefix convention — a key like "espn-disneyplus" is a variant of "espn" because it starts with "espn-" and
21
- * "espn" exists as a channel. Variants inherit `name` and `stationId` from the canonical entry. See config/providers.ts for grouping details.
10
+ * Canonical resolution rules:
11
+ * 1. If "site" exists in providers, the canonical always gets the site URL.
12
+ * 2. Otherwise, the provider whose key sorts first alphabetically (computed, not source-order) becomes canonical.
22
13
  *
23
- * IMPORTANT: Avoid hyphenated keys that would unintentionally match an existing channel. If "foo" exists, "foo-bar" becomes its variant. Use non-hyphenated keys
24
- * for independent channels (e.g., "cnni" instead of "cnn-international").
14
+ * Adding a new provider never changes canonicals unless a "site" entry is introduced.
15
+ *
16
+ * Pacific timezone support:
17
+ * - pacificStationId on an East ChannelDefinition triggers auto-generation of a Pacific sibling.
18
+ * - Manual Pacific definitions (keys ending in "p") can pre-declare overrides (e.g., West-specific channelSelectors).
19
+ * - Pacific generation merges inherited providers from the East definition into the Pacific definition, skipping providers whose channelSelector contains
20
+ * "East" or "West" and never overwriting existing Pacific providers. See generatePacificDefinitions() for full rules.
25
21
  *
26
22
  * FAST channels: This list contains only traditional linear TV networks and public broadcasters — no FAST (Free Ad-Supported Streaming Television) channels.
27
23
  * FAST channels from platforms like Pluto TV or Tubi should not be added here. Users who want FAST content can add them as user-defined channels through the
28
- * web UI or user channels file, or preferably use dedicated high-quality integrations such as Plex Channels, Pluto for Channels, or Tubi for Channels. Any
29
- * FAST channel listed here would be by exception only.
24
+ * web UI or user channels file, or preferably use dedicated high-quality integrations such as Plex Channels, Pluto for Channels, or Tubi for Channels.
30
25
  */
31
- /* eslint-disable @stylistic/max-len */
32
- const BASE_CHANNELS = {
33
- abc: { name: "ABC", url: "https://abc.com/watch-live" },
34
- "abc-directv": { channelSelector: "ABC", url: "https://stream.directv.com" },
35
- "abc-hulu": { channelSelector: "ABC", url: "https://www.hulu.com/live" },
36
- "abc-sling": { channelSelector: "ABC", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
37
- "abc-spectrum": { channelSelector: "ABC", url: "https://watch.spectrum.net/guide" },
38
- "abc-yttv": { channelSelector: "ABC", url: "https://tv.youtube.com/live" },
39
- abcnews: { channelSelector: "ABC News Live", name: "ABC News Live", stationId: "113380", url: "https://www.hulu.com/live" },
40
- "abcnews-directv": { channelSelector: "ABC News Live", url: "https://stream.directv.com" },
41
- "abcnews-sling": { channelSelector: "ABC News Live", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
42
- "abcnews-yttv": { channelSelector: "ABC News Live", url: "https://tv.youtube.com/live" },
43
- ae: { name: "A&E", pacificStationId: "57439", stationId: "51529", url: "https://play.aetv.com/live" },
44
- "ae-directv": { channelSelector: "A&E", url: "https://stream.directv.com" },
45
- "ae-hulu": { channelSelector: "A&E", url: "https://www.hulu.com/live" },
46
- "ae-sling": { channelSelector: "A&E", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
47
- "ae-spectrum": { channelSelector: "A&E", url: "https://watch.spectrum.net/guide" },
48
- "ae-yttv": { channelSelector: "A&E", url: "https://tv.youtube.com/live" },
49
- ahc: { name: "American Heroes", stationId: "78808", url: "https://watch.foodnetwork.com/channel/ahc" },
50
- "ahc-spectrum": { channelSelector: "American Heroes Channel", url: "https://watch.spectrum.net/guide" },
51
- amc: { channelSelector: "AMC", name: "AMC", pacificStationId: "78836", stationId: "59337", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
52
- "amc-directv": { channelSelector: "AMC", url: "https://stream.directv.com" },
53
- "amc-spectrum": { channelSelector: "AMC", url: "https://watch.spectrum.net/guide" },
54
- "amc-yttv": { channelSelector: "AMC", url: "https://tv.youtube.com/live" },
55
- amcthrillers: { channelSelector: "AMC Thrillers", name: "AMC Thrillers", stationId: "115678", url: "https://tv.youtube.com/live" },
56
- "amcthrillers-sling": { channelSelector: "AMC Thrillers", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
57
- animal: { name: "Animal Planet", pacificStationId: "68785", stationId: "57394", url: "https://watch.foodnetwork.com/channel/animal-planet" },
58
- "animal-directv": { channelSelector: "Animal Planet", url: "https://stream.directv.com" },
59
- "animal-hulu": { channelSelector: "Animal Planet", url: "https://www.hulu.com/live" },
60
- "animal-spectrum": { channelSelector: "Animal Planet", url: "https://watch.spectrum.net/guide" },
61
- "animal-yttv": { channelSelector: "Animal Planet", url: "https://tv.youtube.com/live" },
62
- axstv: { channelSelector: "AXS TV", name: "AXS TV", stationId: "28506", url: "https://stream.directv.com" },
63
- "axstv-spectrum": { channelSelector: "AXS TV", url: "https://watch.spectrum.net/guide" },
64
- bbcamerica: { channelSelector: "BBC America", name: "BBC America", pacificStationId: "76739", stationId: "64492", url: "https://tv.youtube.com/live" },
65
- "bbcamerica-directv": { channelSelector: "BBC America", url: "https://stream.directv.com" },
66
- "bbcamerica-sling": { channelSelector: "BBC America", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
67
- "bbcamerica-spectrum": { channelSelector: "BBC America", url: "https://watch.spectrum.net/guide" },
68
- bbcnews: { channelSelector: "BBC News", name: "BBC News", stationId: "101449", url: "https://tv.youtube.com/live" },
69
- "bbcnews-directv": { channelSelector: "BBC News", url: "https://stream.directv.com" },
70
- "bbcnews-sling": { channelSelector: "BBC News", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
71
- "bbcnews-spectrum": { channelSelector: "BBC World News", url: "https://watch.spectrum.net/guide" },
72
- bet: { name: "BET", pacificStationId: "64673", stationId: "63236", url: "https://www.bet.com/live-tv" },
73
- "bet-directv": { channelSelector: "BET", url: "https://stream.directv.com" },
74
- "bet-hulu": { channelSelector: "BET", url: "https://www.hulu.com/live" },
75
- "bet-sling": { channelSelector: "BET", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
76
- "bet-spectrum": { channelSelector: "BET", url: "https://watch.spectrum.net/guide" },
77
- "bet-yttv": { channelSelector: "BET", url: "https://tv.youtube.com/live" },
78
- bether: { channelSelector: "BET Her", name: "BET Her", pacificStationId: "97360", stationId: "63220", url: "https://tv.youtube.com/live" },
79
- "bether-directv": { channelSelector: "BET Her", url: "https://stream.directv.com" },
80
- "bether-spectrum": { channelSelector: "BET Her", url: "https://watch.spectrum.net/guide" },
81
- bigten: { name: "Big 10", stationId: "58321", url: "https://www.foxsports.com/live/btn" },
82
- "bigten-directv": { channelSelector: "Big Ten", url: "https://stream.directv.com" },
83
- "bigten-foxcom": { channelSelector: "BTN", url: "https://www.fox.com/live/channels" },
84
- "bigten-hulu": { channelSelector: "Big Ten Network", url: "https://www.hulu.com/live" },
85
- "bigten-spectrum": { channelSelector: "Big Ten Network", url: "https://watch.spectrum.net/guide" },
86
- "bigten-yttv": { channelSelector: "BTN", url: "https://tv.youtube.com/live" },
87
- bloomberg: { channelSelector: "Bloomberg Television", name: "Bloomberg Television", stationId: "71799", url: "https://www.hulu.com/live" },
88
- "bloomberg-directv": { channelSelector: "Bloomberg TV", url: "https://stream.directv.com" },
89
- "bloomberg-sling": { channelSelector: "Bloomberg TV+", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
90
- "bloomberg-spectrum": { channelSelector: "Bloomberg TV", url: "https://watch.spectrum.net/guide" },
91
- "bloomberg-yttv": { channelSelector: "Bloomberg TV+", url: "https://tv.youtube.com/live" },
92
- bloombergoriginals: { channelSelector: "Bloomberg Originals", name: "Bloomberg Originals", stationId: "175656", url: "https://tv.youtube.com/live" },
93
- bravo: { name: "Bravo", stationId: "58625", url: "https://www.nbc.com/live?brand=bravo&callsign=bravo_east" },
94
- "bravo-directv": { channelSelector: "Bravo", url: "https://stream.directv.com" },
95
- "bravo-hulu": { channelSelector: "Bravo", url: "https://www.hulu.com/live" },
96
- "bravo-sling": { channelSelector: "Bravo", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
97
- "bravo-spectrum": { channelSelector: "Bravo", url: "https://watch.spectrum.net/guide" },
98
- "bravo-yttv": { channelSelector: "Bravo", url: "https://tv.youtube.com/live" },
99
- bravop: { name: "Bravo (Pacific)", stationId: "73994", url: "https://www.nbc.com/live?brand=bravo&callsign=bravo_west" },
100
- cartoon: { channelSelector: "Cartoon Network", name: "Cartoon Network", pacificStationId: "67703", stationId: "60048", url: "https://tv.youtube.com/live" },
101
- "cartoon-directv": { channelSelector: "Cartoon Network", url: "https://stream.directv.com" },
102
- "cartoon-hulu": { channelSelector: "Cartoon Network (East)", url: "https://www.hulu.com/live" },
103
- "cartoon-spectrum": { channelSelector: "Cartoon Network", url: "https://watch.spectrum.net/guide" },
104
- "cartoonp-hulu": { channelSelector: "Cartoon Network (West)", url: "https://www.hulu.com/live" },
105
- cbs: { name: "CBS", url: "https://www.cbs.com/live-tv/stream" },
106
- "cbs-directv": { channelSelector: "CBS", url: "https://stream.directv.com" },
107
- "cbs-hulu": { channelSelector: "CBS", url: "https://www.hulu.com/live" },
108
- "cbs-paramountplus": { name: "CBS", url: "https://www.paramountplus.com/live-tv/" },
109
- "cbs-spectrum": { channelSelector: "CBS", url: "https://watch.spectrum.net/guide" },
110
- "cbs-yttv": { channelSelector: "CBS", url: "https://tv.youtube.com/live" },
111
- cbsnews: { channelSelector: "CBS News 24/7", name: "CBS News 24/7", stationId: "104846", url: "https://www.hulu.com/live" },
112
- "cbsnews-sling": { channelSelector: "CBS News 24/7", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
113
- cbssports: { channelSelector: "CBS Sports Network", name: "CBS Sports Network", stationId: "59250", url: "https://www.hulu.com/live" },
114
- "cbssports-spectrum": { channelSelector: "CBS Sports Network", url: "https://watch.spectrum.net/guide" },
115
- "cbssports-yttv": { channelSelector: "CBS Sports Network", url: "https://tv.youtube.com/live" },
116
- cmt: { channelSelector: "CMT", name: "CMT", pacificStationId: "64610", stationId: "59440", url: "https://www.hulu.com/live" },
117
- "cmt-directv": { channelSelector: "CMT", url: "https://stream.directv.com" },
118
- "cmt-spectrum": { channelSelector: "CMT", url: "https://watch.spectrum.net/guide" },
119
- "cmt-yttv": { channelSelector: "CMT", url: "https://tv.youtube.com/live" },
120
- cnbc: { name: "CNBC", stationId: "58780", url: "https://www.cnbc.com/live-tv" },
121
- "cnbc-directv": { channelSelector: "CNBC", url: "https://stream.directv.com" },
122
- "cnbc-hulu": { channelSelector: "CNBC", url: "https://www.hulu.com/live" },
123
- "cnbc-spectrum": { channelSelector: "CNBC", url: "https://watch.spectrum.net/guide" },
124
- "cnbc-usa": { channelSelector: "CNBC_US", url: "https://www.usanetwork.com/live" },
125
- "cnbc-yttv": { channelSelector: "CNBC", url: "https://tv.youtube.com/live" },
126
- cnbcworld: { channelSelector: "CNBC World", name: "CNBC World", stationId: "26849", url: "https://stream.directv.com" },
127
- "cnbcworld-spectrum": { channelSelector: "CNBC World", url: "https://watch.spectrum.net/guide" },
128
- cnn: { name: "CNN", stationId: "58646", url: "https://www.cnn.com/videos/cnn" },
129
- "cnn-directv": { channelSelector: "CNN", url: "https://stream.directv.com" },
130
- "cnn-hulu": { channelSelector: "CNN", url: "https://www.hulu.com/live" },
131
- "cnn-sling": { channelSelector: "CNN", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
132
- "cnn-spectrum": { channelSelector: "CNN", url: "https://watch.spectrum.net/guide" },
133
- "cnn-yttv": { channelSelector: "CNN", url: "https://tv.youtube.com/live" },
134
- cnni: { name: "CNN International", stationId: "83110", url: "https://www.cnn.com/videos/cnn-i" },
135
- "cnni-directv": { channelSelector: "CNNi HD East", url: "https://stream.directv.com" },
136
- "cnni-hulu": { channelSelector: "CNN International", url: "https://www.hulu.com/live" },
137
- "cnni-yttv": { channelSelector: "CNN International", url: "https://tv.youtube.com/live" },
138
- "comedycentral": { channelSelector: "Comedy Central", name: "Comedy Central", pacificStationId: "64599", stationId: "62420", url: "https://www.hulu.com/live" },
139
- "comedycentral-directv": { channelSelector: "Comedy Central", url: "https://stream.directv.com" },
140
- "comedycentral-sling": { channelSelector: "Comedy Central", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
141
- "comedycentral-spectrum": { channelSelector: "Comedy Central", url: "https://watch.spectrum.net/guide" },
142
- "comedycentral-yttv": { channelSelector: "Comedy Central", url: "https://tv.youtube.com/live" },
143
- cooking: { name: "Cooking", stationId: "68065", url: "https://watch.foodnetwork.com/channel/cooking-channel" },
144
- "cooking-directv": { channelSelector: "Cooking Channel", url: "https://stream.directv.com" },
145
- "cooking-spectrum": { channelSelector: "Cooking Channel", url: "https://watch.spectrum.net/guide" },
146
- cspan: { name: "C-SPAN", stationId: "68344", url: "https://www.c-span.org/networks/?autoplay=true&channel=c-span" },
147
- "cspan-directv": { channelSelector: "C-SPAN", url: "https://stream.directv.com" },
148
- "cspan-hulu": { channelSelector: "C-SPAN", url: "https://www.hulu.com/live" },
149
- "cspan-spectrum": { channelSelector: "C-SPAN", url: "https://watch.spectrum.net/guide" },
150
- "cspan-yttv": { channelSelector: "C-SPAN", url: "https://tv.youtube.com/live" },
151
- cspan2: { name: "C-SPAN 2", stationId: "68334", url: "https://www.c-span.org/networks/?autoplay=true&channel=c-span-2" },
152
- "cspan2-directv": { channelSelector: "C-SPAN2", url: "https://stream.directv.com" },
153
- "cspan2-hulu": { channelSelector: "C-SPAN2", url: "https://www.hulu.com/live" },
154
- "cspan2-spectrum": { channelSelector: "C-SPAN 2", url: "https://watch.spectrum.net/guide" },
155
- "cspan2-yttv": { channelSelector: "C-SPAN2", url: "https://tv.youtube.com/live" },
156
- cspan3: { name: "C-SPAN 3", stationId: "68332", url: "https://www.c-span.org/networks/?autoplay=true&channel=c-span-3" },
157
- "cspan3-hulu": { channelSelector: "C-SPAN3", url: "https://www.hulu.com/live" },
158
- "cspan3-spectrum": { channelSelector: "C-SPAN 3", url: "https://watch.spectrum.net/guide" },
159
- "cspan3-yttv": { channelSelector: "C-SPAN3", url: "https://tv.youtube.com/live" },
160
- cw: { channelSelector: "CW", name: "CW", url: "https://www.hulu.com/live" },
161
- "cw-directv": { channelSelector: "CW", url: "https://stream.directv.com" },
162
- "cw-spectrum": { channelSelector: "CW", url: "https://watch.spectrum.net/guide" },
163
- "cw-yttv": { channelSelector: "CW", url: "https://tv.youtube.com/live" },
164
- discovery: { name: "Discovery", pacificStationId: "80399", stationId: "56905", url: "https://watch.foodnetwork.com/channel/discovery" },
165
- "discovery-directv": { channelSelector: "Discovery", url: "https://stream.directv.com" },
166
- "discovery-hulu": { channelSelector: "Discovery", url: "https://www.hulu.com/live" },
167
- "discovery-sling": { channelSelector: "Discovery", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
168
- "discovery-spectrum": { channelSelector: "Discovery Channel", url: "https://watch.spectrum.net/guide" },
169
- "discovery-yttv": { channelSelector: "Discovery Channel", url: "https://tv.youtube.com/live" },
170
- discoverylife: { name: "Discovery Life", stationId: "92204", url: "https://watch.foodnetwork.com/channel/discovery-life" },
171
- "discoverylife-directv": { channelSelector: "Discovery Life", url: "https://stream.directv.com" },
172
- "discoverylife-spectrum": { channelSelector: "Discovery Life", url: "https://watch.spectrum.net/guide" },
173
- discoveryturbo: { name: "Discovery Turbo", stationId: "31046", url: "https://watch.foodnetwork.com/channel/motortrend" },
174
- "discoveryturbo-directv": { channelSelector: "Discovery Turbo", url: "https://stream.directv.com" },
175
- "discoveryturbo-hulu": { channelSelector: "Discovery Turbo", url: "https://www.hulu.com/live" },
176
- "discoveryturbo-sling": { channelSelector: "Discovery Turbo", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
177
- "discoveryturbo-spectrum": { channelSelector: "Discovery Turbo", url: "https://watch.spectrum.net/guide" },
178
- "discoveryturbo-yttv": { channelSelector: "Discovery Turbo", url: "https://tv.youtube.com/live" },
179
- disney: { name: "Disney", pacificStationId: "63320", stationId: "59684", url: "https://disneynow.com/watch-live?brand=004" },
180
- "disney-directv": { channelSelector: "Disney Channel", url: "https://stream.directv.com" },
181
- "disney-hulu": { channelSelector: "Disney Channel", url: "https://www.hulu.com/live" },
182
- "disney-sling": { channelSelector: "Disney Channel", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
183
- "disney-spectrum": { channelSelector: "Disney Channel", url: "https://watch.spectrum.net/guide" },
184
- "disney-yttv": { channelSelector: "Disney Channel", url: "https://tv.youtube.com/live" },
185
- disneyjr: { name: "Disney Jr.", pacificStationId: "75004", stationId: "74885", url: "https://disneynow.com/watch-live?brand=008" },
186
- "disneyjr-directv": { channelSelector: "Disney Junior", url: "https://stream.directv.com" },
187
- "disneyjr-hulu": { channelSelector: "Disney Junior", url: "https://www.hulu.com/live" },
188
- "disneyjr-spectrum": { channelSelector: "Disney Junior", url: "https://watch.spectrum.net/guide" },
189
- "disneyjr-yttv": { channelSelector: "Disney Junior", url: "https://tv.youtube.com/live" },
190
- disneyxd: { name: "Disney XD", pacificStationId: "63322", stationId: "60006", url: "https://disneynow.com/watch-live?brand=009" },
191
- "disneyxd-hulu": { channelSelector: "Disney XD", url: "https://www.hulu.com/live" },
192
- "disneyxd-spectrum": { channelSelector: "Disney XD", url: "https://watch.spectrum.net/guide" },
193
- "disneyxd-yttv": { channelSelector: "Disney XD", url: "https://tv.youtube.com/live" },
194
- e: { channelSelector: "E-_East", name: "E!", stationId: "61812", url: "https://www.usanetwork.com/live" },
195
- "e-directv": { channelSelector: "E!", url: "https://stream.directv.com" },
196
- "e-hulu": { channelSelector: "E!", url: "https://www.hulu.com/live" },
197
- "e-sling": { channelSelector: "E!", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
198
- "e-spectrum": { channelSelector: "E!", url: "https://watch.spectrum.net/guide" },
199
- "e-yttv": { channelSelector: "E!", url: "https://tv.youtube.com/live" },
200
- ep: { channelSelector: "E-_West", name: "E! (Pacific)", stationId: "91579", url: "https://www.usanetwork.com/live" },
201
- espn: { name: "ESPN", stationId: "32645", url: "https://www.espn.com/watch/player?network=espn" },
202
- "espn-directv": { channelSelector: "ESPN", url: "https://stream.directv.com" },
203
- "espn-disneyplus": { channelSelector: "poster_linear_espn_none", url: "https://www.disneyplus.com/browse/live" },
204
- "espn-hulu": { channelSelector: "ESPN", url: "https://www.hulu.com/live" },
205
- "espn-sling": { channelSelector: "ESPN", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
206
- "espn-spectrum": { channelSelector: "ESPN", url: "https://watch.spectrum.net/guide" },
207
- "espn-yttv": { channelSelector: "ESPN", url: "https://tv.youtube.com/live" },
208
- espn2: { name: "ESPN2", stationId: "45507", url: "https://www.espn.com/watch/player?network=espn2" },
209
- "espn2-directv": { channelSelector: "ESPN2", url: "https://stream.directv.com" },
210
- "espn2-disneyplus": { channelSelector: "poster_linear_espn2_none", url: "https://www.disneyplus.com/browse/live" },
211
- "espn2-hulu": { channelSelector: "ESPN2", url: "https://www.hulu.com/live" },
212
- "espn2-sling": { channelSelector: "ESPN2", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
213
- "espn2-spectrum": { channelSelector: "ESPN2", url: "https://watch.spectrum.net/guide" },
214
- "espn2-yttv": { channelSelector: "ESPN2", url: "https://tv.youtube.com/live" },
215
- espnacc: { name: "ACC Network", stationId: "111871", url: "https://www.espn.com/watch/player?network=acc" },
216
- "espnacc-directv": { channelSelector: "ACC Network", url: "https://stream.directv.com" },
217
- "espnacc-disneyplus": { channelSelector: "poster_linear_acc-network_none", url: "https://www.disneyplus.com/browse/live" },
218
- "espnacc-hulu": { channelSelector: "ACC Network", url: "https://www.hulu.com/live" },
219
- "espnacc-spectrum": { channelSelector: "ACC Network", url: "https://watch.spectrum.net/guide" },
220
- "espnacc-yttv": { channelSelector: "ACC Network", url: "https://tv.youtube.com/live" },
221
- espndeportes: { name: "ESPN Deportes", stationId: "71914", url: "https://www.espn.com/watch/player?network=espndeportes" },
222
- "espndeportes-disneyplus": { channelSelector: "poster_linear_espn-deportes_none", url: "https://www.disneyplus.com/browse/live" },
223
- "espndeportes-spectrum": { channelSelector: "ESPN Deportes", url: "https://watch.spectrum.net/guide" },
224
- "espndeportes-yttv": { channelSelector: "ESPN Deportes", url: "https://tv.youtube.com/live" },
225
- espnews: { name: "ESPNews", stationId: "59976", url: "https://www.espn.com/watch/player?network=espnews" },
226
- "espnews-directv": { channelSelector: "ESPNews", url: "https://stream.directv.com" },
227
- "espnews-disneyplus": { channelSelector: "poster_linear_espnews_none", url: "https://www.disneyplus.com/browse/live" },
228
- "espnews-hulu": { channelSelector: "ESPNEWS", url: "https://www.hulu.com/live" },
229
- "espnews-spectrum": { channelSelector: "ESPNews", url: "https://watch.spectrum.net/guide" },
230
- "espnews-yttv": { channelSelector: "ESPNEWS", url: "https://tv.youtube.com/live" },
231
- espnsec: { name: "SEC Network", stationId: "89714", url: "https://www.espn.com/watch/player?network=sec" },
232
- "espnsec-directv": { channelSelector: "SEC Network", url: "https://stream.directv.com" },
233
- "espnsec-disneyplus": { channelSelector: "poster_linear_sec-network_none", url: "https://www.disneyplus.com/browse/live" },
234
- "espnsec-hulu": { channelSelector: "SEC Network", url: "https://www.hulu.com/live" },
235
- "espnsec-spectrum": { channelSelector: "SEC Network", url: "https://watch.spectrum.net/guide" },
236
- "espnsec-yttv": { channelSelector: "SEC Network", url: "https://tv.youtube.com/live" },
237
- espnu: { name: "ESPNU", stationId: "60696", url: "https://www.espn.com/watch/player?network=espnu" },
238
- "espnu-directv": { channelSelector: "ESPNU", url: "https://stream.directv.com" },
239
- "espnu-disneyplus": { channelSelector: "poster_linear_espnu_none", url: "https://www.disneyplus.com/browse/live" },
240
- "espnu-hulu": { channelSelector: "ESPNU", url: "https://www.hulu.com/live" },
241
- "espnu-spectrum": { channelSelector: "ESPNU", url: "https://watch.spectrum.net/guide" },
242
- "espnu-yttv": { channelSelector: "ESPNU", url: "https://tv.youtube.com/live" },
243
- fbc: { name: "Fox Business", stationId: "58718", url: "https://www.foxbusiness.com/video/5640669329001" },
244
- "fbc-directv": { channelSelector: "Fox Business Network", url: "https://stream.directv.com" },
245
- "fbc-foxcom": { channelSelector: "FBN", url: "https://www.fox.com/live/channels" },
246
- "fbc-hulu": { channelSelector: "Fox Business", url: "https://www.hulu.com/live" },
247
- "fbc-spectrum": { channelSelector: "Fox Business Network", url: "https://watch.spectrum.net/guide" },
248
- "fbc-yttv": { channelSelector: "Fox Business", url: "https://tv.youtube.com/live" },
249
- fnc: { name: "Fox News", stationId: "60179", url: "https://www.foxnews.com/video/5614615980001" },
250
- "fnc-directv": { channelSelector: "Fox News Channel", url: "https://stream.directv.com" },
251
- "fnc-foxcom": { channelSelector: "FNC", url: "https://www.fox.com/live/channels" },
252
- "fnc-hulu": { channelSelector: "Fox News", url: "https://www.hulu.com/live" },
253
- "fnc-sling": { channelSelector: "Fox News", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
254
- "fnc-spectrum": { channelSelector: "Fox News Channel", url: "https://watch.spectrum.net/guide" },
255
- "fnc-yttv": { channelSelector: "Fox News", url: "https://tv.youtube.com/live" },
256
- food: { name: "Food Network", pacificStationId: "82119", stationId: "50747", url: "https://watch.foodnetwork.com/channel/food-network" },
257
- "food-directv": { channelSelector: "Food Network", url: "https://stream.directv.com" },
258
- "food-hulu": { channelSelector: "Food Network", url: "https://www.hulu.com/live" },
259
- "food-sling": { channelSelector: "Food Network", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
260
- "food-spectrum": { channelSelector: "Food Network", url: "https://watch.spectrum.net/guide" },
261
- "food-yttv": { channelSelector: "Food Network", url: "https://tv.youtube.com/live" },
262
- fox: { channelSelector: "FOXD2C", name: "Fox", url: "https://www.fox.com/live/channels" },
263
- "fox-directv": { channelSelector: "FOX", url: "https://stream.directv.com" },
264
- "fox-hulu": { channelSelector: "Fox", url: "https://www.hulu.com/live" },
265
- "fox-sling": { channelSelector: "FOX", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
266
- "fox-spectrum": { channelSelector: "FOX", url: "https://watch.spectrum.net/guide" },
267
- "fox-yttv": { channelSelector: "FOX", url: "https://tv.youtube.com/live" },
268
- foxdeportes: { name: "Fox Deportes", stationId: "72189", url: "https://www.foxsports.com/live/foxdep" },
269
- "foxdeportes-foxcom": { channelSelector: "FOXD", url: "https://www.fox.com/live/channels" },
270
- "foxdeportes-spectrum": { channelSelector: "FOX Deportes", url: "https://watch.spectrum.net/guide" },
271
- "foxdeportes-yttv": { channelSelector: "Fox Deportes", url: "https://tv.youtube.com/live" },
272
- foxsoccerplus: { name: "Fox Soccer Plus", stationId: "66879", url: "https://www.foxsports.com/live/fsp" },
273
- "foxsoccerplus-yttv": { channelSelector: "FOX Soccer Plus", url: "https://tv.youtube.com/live" },
274
- france24: { name: "France 24", stationId: "60961", url: "https://www.france24.com/en/live" },
275
- "france24-sling": { channelSelector: "France 24 (English)", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
276
- france24fr: { name: "France 24 (French)", stationId: "58685", url: "https://www.france24.com/fr/direct" },
277
- "france24fr-sling": { channelSelector: "France 24", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
278
- freeform: { name: "Freeform", stationId: "59615", url: "https://www.freeform.com/watch-live/885c669e-fa9a-4039-b42e-6c85c90cc86d" },
279
- "freeform-directv": { channelSelector: "Freeform HD", url: "https://stream.directv.com" },
280
- "freeform-hulu": { channelSelector: "Freeform", url: "https://www.hulu.com/live" },
281
- "freeform-spectrum": { channelSelector: "Freeform", url: "https://watch.spectrum.net/guide" },
282
- "freeform-yttv": { channelSelector: "Freeform", url: "https://tv.youtube.com/live" },
283
- freeformp: { name: "Freeform (Pacific)", stationId: "63324", url: "https://www.freeform.com/watch-live/3507c750-e86a-4c0f-8ff4-dd23c4859009" },
284
- fs1: { name: "FS1", stationId: "82547", url: "https://www.foxsports.com/live/fs1" },
285
- "fs1-directv": { channelSelector: "FOX Sports 1", url: "https://stream.directv.com" },
286
- "fs1-foxcom": { channelSelector: "FS1", url: "https://www.fox.com/live/channels" },
287
- "fs1-hulu": { channelSelector: "FS1", url: "https://www.hulu.com/live" },
288
- "fs1-sling": { channelSelector: "FOX Sports 1", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
289
- "fs1-spectrum": { channelSelector: "FS1", url: "https://watch.spectrum.net/guide" },
290
- "fs1-yttv": { channelSelector: "FS1", url: "https://tv.youtube.com/live" },
291
- fs2: { name: "FS2", stationId: "59305", url: "https://www.foxsports.com/live/fs2" },
292
- "fs2-directv": { channelSelector: "FOX Sports 2", url: "https://stream.directv.com" },
293
- "fs2-foxcom": { channelSelector: "FS2", url: "https://www.fox.com/live/channels" },
294
- "fs2-hulu": { channelSelector: "FS2", url: "https://www.hulu.com/live" },
295
- "fs2-spectrum": { channelSelector: "Fox Sports 2", url: "https://watch.spectrum.net/guide" },
296
- "fs2-yttv": { channelSelector: "FS2", url: "https://tv.youtube.com/live" },
297
- fx: { name: "FX", stationId: "58574", url: "https://abc.com/watch-live/93256af4-5e80-4558-aa2e-2bdfffa119a0" },
298
- "fx-directv": { channelSelector: "FX", url: "https://stream.directv.com" },
299
- "fx-hulu": { channelSelector: "FX", url: "https://www.hulu.com/live" },
300
- "fx-sling": { channelSelector: "FX", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
301
- "fx-spectrum": { channelSelector: "FX", url: "https://watch.spectrum.net/guide" },
302
- "fx-yttv": { channelSelector: "FX", url: "https://tv.youtube.com/live" },
303
- fxm: { name: "FXM", pacificStationId: "98488", stationId: "70253", url: "https://abc.com/watch-live/d298ab7e-c6b1-4efa-ac6e-a52dceed92ee" },
304
- "fxm-directv": { channelSelector: "FX Movie Channel", url: "https://stream.directv.com" },
305
- "fxm-hulu": { channelSelector: "FXM", url: "https://www.hulu.com/live" },
306
- "fxm-spectrum": { channelSelector: "FXM", url: "https://watch.spectrum.net/guide" },
307
- "fxm-yttv": { channelSelector: "FXM", url: "https://tv.youtube.com/live" },
308
- fxp: { name: "FX (Pacific)", stationId: "59814", url: "https://abc.com/watch-live/2cee3401-f63b-42d0-b32e-962fef610b9e" },
309
- fxx: { name: "FXX", stationId: "66379", url: "https://abc.com/watch-live/49f4a471-8d36-4728-8457-ea65cbbc84ea" },
310
- "fxx-directv": { channelSelector: "FXX", url: "https://stream.directv.com" },
311
- "fxx-hulu": { channelSelector: "FXX", url: "https://www.hulu.com/live" },
312
- "fxx-spectrum": { channelSelector: "FXX", url: "https://watch.spectrum.net/guide" },
313
- "fxx-yttv": { channelSelector: "FXX", url: "https://tv.youtube.com/live" },
314
- fxxp: { name: "FXX (Pacific)", stationId: "82571", url: "https://abc.com/watch-live/e4c83395-62ed-4a49-829a-c55ab3c33e7d" },
315
- fyi: { name: "FYI", pacificStationId: "92372", stationId: "58988", url: "https://play.fyi.tv/live" },
316
- "fyi-directv": { channelSelector: "FYI", url: "https://stream.directv.com" },
317
- "fyi-hulu": { channelSelector: "FYI", url: "https://www.hulu.com/live" },
318
- "fyi-spectrum": { channelSelector: "FYI", url: "https://watch.spectrum.net/guide" },
319
- gameshow: { channelSelector: "Game Show Network", name: "Game Show Network", pacificStationId: "90210", stationId: "68827", url: "https://www.hulu.com/live" },
320
- "gameshow-directv": { channelSelector: "GSN HD", url: "https://stream.directv.com" },
321
- "gameshow-spectrum": { channelSelector: "Game Show Network", url: "https://watch.spectrum.net/guide" },
322
- "gameshow-yttv": { channelSelector: "Game Show Network", url: "https://tv.youtube.com/live" },
323
- golf: { name: "Golf", stationId: "61854", url: "https://www.golfchannel.com/watch/live" },
324
- "golf-directv": { channelSelector: "Golf Channel", url: "https://stream.directv.com" },
325
- "golf-hulu": { channelSelector: "Golf Channel", url: "https://www.hulu.com/live" },
326
- "golf-spectrum": { channelSelector: "Golf Channel", url: "https://watch.spectrum.net/guide" },
327
- "golf-usa": { channelSelector: "gc", url: "https://www.usanetwork.com/live" },
328
- "golf-yttv": { channelSelector: "Golf Channel", url: "https://tv.youtube.com/live" },
329
- hallmark: { name: "Hallmark", pacificStationId: "66415", stationId: "66268", url: "https://www.watchhallmarktv.com/playback/item/live" },
330
- "hallmark-directv": { channelSelector: "Hallmark Channel", url: "https://stream.directv.com" },
331
- "hallmark-hulu": { channelSelector: "Hallmark Channel", url: "https://www.hulu.com/live" },
332
- "hallmark-spectrum": { channelSelector: "Hallmark Channel", url: "https://watch.spectrum.net/guide" },
333
- "hallmark-yttv": { channelSelector: "Hallmark Channel", url: "https://tv.youtube.com/live" },
334
- hallmarkfamily: { name: "Hallmark Family", stationId: "105723", url: "https://www.watchhallmarktv.com/playback/item/hdlive" },
335
- "hallmarkfamily-spectrum": { channelSelector: "Hallmark Family", url: "https://watch.spectrum.net/guide" },
336
- "hallmarkfamily-yttv": { channelSelector: "Hallmark Family", url: "https://tv.youtube.com/live" },
337
- hallmarkmystery: { name: "Hallmark Mystery", pacificStationId: "66412", stationId: "46710", url: "https://www.watchhallmarktv.com/playback/item/hmmlive" },
338
- "hallmarkmystery-hulu": { channelSelector: "Hallmark Mystery", url: "https://www.hulu.com/live" },
339
- "hallmarkmystery-spectrum": { channelSelector: "Hallmark Mystery", url: "https://watch.spectrum.net/guide" },
340
- "hallmarkmystery-yttv": { channelSelector: "Hallmark Mystery", url: "https://tv.youtube.com/live" },
341
- hbo: { channelSelector: "HBO", name: "HBO", stationId: "19548", url: "https://play.hbomax.com" },
342
- "hbo-yttv": { channelSelector: "HBO East", url: "https://tv.youtube.com/live" },
343
- hbocomedy: { channelSelector: "HBO Comedy", name: "HBO Comedy", stationId: "59839", url: "https://play.hbomax.com" },
344
- "hbocomedy-yttv": { channelSelector: "HBO Comedy East", url: "https://tv.youtube.com/live" },
345
- hbodrama: { channelSelector: "HBO Drama", name: "HBO Drama", stationId: "59363", url: "https://play.hbomax.com" },
346
- "hbodrama-yttv": { channelSelector: "HBO Drama East", url: "https://tv.youtube.com/live" },
347
- hbohits: { channelSelector: "HBO Hits", name: "HBO Hits", stationId: "59368", url: "https://play.hbomax.com" },
348
- "hbohits-yttv": { channelSelector: "HBO Hits East", url: "https://tv.youtube.com/live" },
349
- hbomovies: { channelSelector: "HBO Movies", name: "HBO Movies", stationId: "59845", url: "https://play.hbomax.com" },
350
- "hbomovies-yttv": { channelSelector: "HBO Movies East", url: "https://tv.youtube.com/live" },
351
- hgtv: { name: "HGTV", pacificStationId: "87317", stationId: "49788", url: "https://watch.foodnetwork.com/channel/hgtv" },
352
- "hgtv-directv": { channelSelector: "HGTV", url: "https://stream.directv.com" },
353
- "hgtv-hulu": { channelSelector: "HGTV", url: "https://www.hulu.com/live" },
354
- "hgtv-sling": { channelSelector: "HGTV", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
355
- "hgtv-spectrum": { channelSelector: "HGTV", url: "https://watch.spectrum.net/guide" },
356
- "hgtv-yttv": { channelSelector: "HGTV", url: "https://tv.youtube.com/live" },
357
- history: { name: "History", pacificStationId: "88545", stationId: "57708", url: "https://play.history.com/live" },
358
- "history-directv": { channelSelector: "HISTORY", url: "https://stream.directv.com" },
359
- "history-hulu": { channelSelector: "The HISTORY Channel", url: "https://www.hulu.com/live" },
360
- "history-sling": { channelSelector: "History", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
361
- "history-spectrum": { channelSelector: "History", url: "https://watch.spectrum.net/guide" },
362
- hln: { name: "HLN", stationId: "64549", url: "https://www.cnn.com/videos/hln" },
363
- "hln-directv": { channelSelector: "HLN", url: "https://stream.directv.com" },
364
- "hln-hulu": { channelSelector: "HLN", url: "https://www.hulu.com/live" },
365
- "hln-sling": { channelSelector: "HLN", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
366
- "hln-spectrum": { channelSelector: "HLN", url: "https://watch.spectrum.net/guide" },
367
- "hln-yttv": { channelSelector: "HLN", url: "https://tv.youtube.com/live" },
368
- id: { name: "Investigation Discovery", pacificStationId: "80309", stationId: "65342", url: "https://watch.foodnetwork.com/channel/investigation-discovery" },
369
- "id-directv": { channelSelector: "Investigation Discovery", url: "https://stream.directv.com" },
370
- "id-hulu": { channelSelector: "Investigation Discovery", url: "https://www.hulu.com/live" },
371
- "id-sling": { channelSelector: "Investigation Discovery", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
372
- "id-spectrum": { channelSelector: "Investigation Discovery", url: "https://watch.spectrum.net/guide" },
373
- "id-yttv": { channelSelector: "ID", url: "https://tv.youtube.com/live" },
374
- ifc: { channelSelector: "IFC", name: "IFC", pacificStationId: "109735", stationId: "59444", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
375
- "ifc-directv": { channelSelector: "IFC", url: "https://stream.directv.com" },
376
- "ifc-spectrum": { channelSelector: "IFC", url: "https://watch.spectrum.net/guide" },
377
- "ifc-yttv": { channelSelector: "IFC", url: "https://tv.youtube.com/live" },
378
- indieplex: { channelSelector: "IndiePlex (East)", name: "IndiePlex", stationId: "65795", url: "https://www.hulu.com/live" },
379
- "indieplex-sling": { channelSelector: "IndiePlex", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
380
- "indieplex-spectrum": { channelSelector: "IndiePlex", url: "https://watch.spectrum.net/guide" },
381
- indieplexp: { channelSelector: "IndiePlex (West)", name: "IndiePlex (Pacific)", stationId: "65796", url: "https://www.hulu.com/live" },
382
- lifetime: { name: "Lifetime", pacificStationId: "60250", stationId: "60150", url: "https://play.mylifetime.com/live" },
383
- "lifetime-directv": { channelSelector: "Lifetime", url: "https://stream.directv.com" },
384
- "lifetime-hulu": { channelSelector: "Lifetime", url: "https://www.hulu.com/live" },
385
- "lifetime-sling": { channelSelector: "Lifetime", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
386
- "lifetime-spectrum": { channelSelector: "Lifetime", url: "https://watch.spectrum.net/guide" },
387
- lmn: { channelSelector: "LMN", name: "Lifetime Movie Network", pacificStationId: "92373", stationId: "55887", url: "https://www.hulu.com/live" },
388
- "lmn-directv": { channelSelector: "Lifetime Movie Network", url: "https://stream.directv.com" },
389
- "lmn-spectrum": { channelSelector: "LMN", url: "https://watch.spectrum.net/guide" },
390
- magnolia: { name: "Magnolia Network", pacificStationId: "122081", stationId: "67375", url: "https://watch.foodnetwork.com/channel/magnolia-network-preview-atve-us" },
391
- "magnolia-directv": { channelSelector: "Magnolia Network", url: "https://stream.directv.com" },
392
- "magnolia-hulu": { channelSelector: "Magnolia Network", url: "https://www.hulu.com/live" },
393
- "magnolia-spectrum": { channelSelector: "Magnolia Network", url: "https://watch.spectrum.net/guide" },
394
- "magnolia-yttv": { channelSelector: "Magnolia Network", url: "https://tv.youtube.com/live" },
395
- mgmplus: { channelSelector: "MGM+", name: "MGM+", pacificStationId: "95927", stationId: "65687", url: "https://stream.directv.com" },
396
- mlb: { channelSelector: "MLB Network", name: "MLB Network", stationId: "62081", url: "https://www.hulu.com/live" },
397
- "mlb-directv": { channelSelector: "MLB Network", url: "https://stream.directv.com" },
398
- "mlb-spectrum": { channelSelector: "MLB Network", url: "https://watch.spectrum.net/guide" },
399
- movieplex: { channelSelector: "MoviePlex (East)", name: "MoviePlex", stationId: "83075", url: "https://www.hulu.com/live" },
400
- "movieplex-spectrum": { channelSelector: "Movieplex", url: "https://watch.spectrum.net/guide" },
401
- movieplexp: { channelSelector: "MoviePlex (West)", name: "MoviePlex (Pacific)", stationId: "105963", url: "https://www.hulu.com/live" },
402
- msg: { channelSelector: "MSG", name: "MSG", stationId: "35402", url: "https://stream.directv.com" },
403
- msgsn: { channelSelector: "MSG Sportsnet HD 635", name: "MSG Sportsnet", stationId: "35383", url: "https://stream.directv.com" },
404
- msnow: { name: "MS NOW", stationId: "64241", url: "https://www.ms.now/live" },
405
- "msnow-directv": { channelSelector: "MS Now", url: "https://stream.directv.com" },
406
- "msnow-hulu": { channelSelector: "MS NOW", url: "https://www.hulu.com/live" },
407
- "msnow-sling": { channelSelector: "MS NOW", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
408
- "msnow-spectrum": { channelSelector: "MS NOW", url: "https://watch.spectrum.net/guide" },
409
- "msnow-usa": { channelSelector: "image-23", url: "https://www.usanetwork.com/live" },
410
- "msnow-yttv": { channelSelector: "MS NOW", url: "https://tv.youtube.com/live" },
411
- mtv: { channelSelector: "MTV", name: "MTV", pacificStationId: "64630", stationId: "60964", url: "https://www.hulu.com/live" },
412
- "mtv-directv": { channelSelector: "MTV", url: "https://stream.directv.com" },
413
- "mtv-spectrum": { channelSelector: "MTV", url: "https://watch.spectrum.net/guide" },
414
- "mtv-yttv": { channelSelector: "MTV", url: "https://tv.youtube.com/live" },
415
- mtv2: { channelSelector: "MTV2", name: "MTV2", pacificStationId: "75506", stationId: "75077", url: "https://stream.directv.com" },
416
- "mtv2-spectrum": { channelSelector: "MTV2", url: "https://watch.spectrum.net/guide" },
417
- mtvclassic: { channelSelector: "MTV Classic", name: "MTV Classic", stationId: "92240", url: "https://stream.directv.com" },
418
- "mtvclassic-spectrum": { channelSelector: "MTV Classic", url: "https://watch.spectrum.net/guide" },
419
- natgeo: { name: "National Geographic", stationId: "49438", url: "https://www.nationalgeographic.com/tv/watch-live/0826a9a3-3384-4bb5-8841-91f01cb0e3a7" },
420
- "natgeo-directv": { channelSelector: "National Geographic Channel", url: "https://stream.directv.com" },
421
- "natgeo-hulu": { channelSelector: "National Geographic", url: "https://www.hulu.com/live" },
422
- "natgeo-sling": { channelSelector: "National Geographic", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
423
- "natgeo-spectrum": { channelSelector: "National Geographic", url: "https://watch.spectrum.net/guide" },
424
- "natgeo-yttv": { channelSelector: "Nat Geo", url: "https://tv.youtube.com/live" },
425
- natgeop: { name: "National Geographic (Pacific)", stationId: "71601", url: "https://www.nationalgeographic.com/tv/watch-live/91456580-f32f-417c-8e1a-9f82640832a7" },
426
- natgeowild: { name: "Nat Geo Wild", stationId: "67331", url: "https://www.nationalgeographic.com/tv/watch-live/239b9590-583f-4955-a499-22e9eefff9cf" },
427
- "natgeowild-directv": { channelSelector: "Nat Geo WILD", url: "https://stream.directv.com" },
428
- "natgeowild-hulu": { channelSelector: "Nat Geo WILD", url: "https://www.hulu.com/live" },
429
- "natgeowild-spectrum": { channelSelector: "NatGeo Wild", url: "https://watch.spectrum.net/guide" },
430
- "natgeowild-yttv": { channelSelector: "Nat Geo WILD", url: "https://tv.youtube.com/live" },
431
- nba: { name: "NBA TV", stationId: "45526", url: "https://www.nba.com/watch/nba-tv" },
432
- "nba-directv": { channelSelector: "NBA TV", url: "https://stream.directv.com" },
433
- "nba-spectrum": { channelSelector: "NBA TV", url: "https://watch.spectrum.net/guide" },
434
- "nba-yttv": { channelSelector: "NBA TV", url: "https://tv.youtube.com/live" },
435
- nbc: { name: "NBC", url: "https://www.nbc.com/live?brand=nbc&callsign=nbc" },
436
- "nbc-directv": { channelSelector: "NBC", url: "https://stream.directv.com" },
437
- "nbc-hulu": { channelSelector: "NBC", url: "https://www.hulu.com/live" },
438
- "nbc-sling": { channelSelector: "NBC", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
439
- "nbc-spectrum": { channelSelector: "NBC", url: "https://watch.spectrum.net/guide" },
440
- "nbc-yttv": { channelSelector: "NBC", url: "https://tv.youtube.com/live" },
441
- nbcnews: { name: "NBC News Now", stationId: "114174", url: "https://www.nbc.com/live?brand=nbc-news&callsign=nbcnews" },
442
- "nbcnews-directv": { channelSelector: "NBC News Now", url: "https://stream.directv.com" },
443
- "nbcnews-hulu": { channelSelector: "NBC News NOW", url: "https://www.hulu.com/live" },
444
- "nbcnews-sling": { channelSelector: "NBC News Now", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
445
- "nbcnews-yttv": { channelSelector: "NBC News NOW", url: "https://tv.youtube.com/live" },
446
- nbcsbayarea: { name: "NBC Sports Bay Area", stationId: "63138", url: "https://www.nbc.com/live?brand=rsn-bay-area&callsign=nbcsbayarea" },
447
- nbcsboston: { name: "NBC Sports Boston", stationId: "49198", url: "https://www.nbc.com/live?brand=rsn-boston&callsign=nbcsboston" },
448
- nbcscalifornia: { name: "NBC Sports California", stationId: "45540", url: "https://www.nbc.com/live?brand=rsn-california&callsign=nbcscalifornia" },
449
- nbcsn: { channelSelector: "NBC Sports Network", name: "NBC Sports Network", stationId: "194412", url: "https://tv.youtube.com/live" },
450
- nbcsphiladelphia: { name: "NBC Sports Philadelphia", stationId: "32571", url: "https://www.nbc.com/live?brand=rsn-philadelphia&callsign=nbcsphiladelphia" },
451
- necn: { name: "NECN", stationId: "66278", url: "https://www.nbc.com/live?brand=necn&callsign=necn" },
452
- nfl: { channelSelector: "NFL Network", name: "NFL Network", stationId: "45399", url: "https://www.hulu.com/live" },
453
- "nfl-directv": { channelSelector: "NFL Network", url: "https://stream.directv.com" },
454
- "nfl-sling": { channelSelector: "NFL Network", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
455
- "nfl-spectrum": { channelSelector: "NFL Network", url: "https://watch.spectrum.net/guide" },
456
- "nfl-yttv": { channelSelector: "NFL Network", url: "https://tv.youtube.com/live" },
457
- nhl: { channelSelector: "NHL Network HD", name: "NHL Network", stationId: "58690", url: "https://stream.directv.com" },
458
- "nhl-spectrum": { channelSelector: "NHL Network", url: "https://watch.spectrum.net/guide" },
459
- own: { name: "OWN", stationId: "70388", url: "https://watch.foodnetwork.com/channel/own" },
460
- "own-directv": { channelSelector: "OWN", url: "https://stream.directv.com" },
461
- "own-hulu": { channelSelector: "Oprah Winfrey Network", url: "https://www.hulu.com/live" },
462
- "own-spectrum": { channelSelector: "OWN", url: "https://watch.spectrum.net/guide" },
463
- "own-yttv": { channelSelector: "OWN", url: "https://tv.youtube.com/live" },
464
- oxygen: { channelSelector: "Oxygen_East", name: "Oxygen", stationId: "70522", url: "https://www.usanetwork.com/live" },
465
- "oxygen-directv": { channelSelector: "Oxygen True Crime", url: "https://stream.directv.com" },
466
- "oxygen-hulu": { channelSelector: "Oxygen True Crime", url: "https://www.hulu.com/live" },
467
- "oxygen-spectrum": { channelSelector: "Oxygen", url: "https://watch.spectrum.net/guide" },
468
- "oxygen-yttv": { channelSelector: "Oxygen True Crime", url: "https://tv.youtube.com/live" },
469
- oxygenp: { channelSelector: "Oxygen_West", name: "Oxygen (Pacific)", stationId: "74032", url: "https://www.usanetwork.com/live" },
470
- paramount: { channelSelector: "Paramount Network", name: "Paramount Network", stationId: "59186", url: "https://www.hulu.com/live" },
471
- "paramount-spectrum": { channelSelector: "Paramount Network", url: "https://watch.spectrum.net/guide" },
472
- "paramount-yttv": { channelSelector: "Paramount", url: "https://tv.youtube.com/live" },
473
- paramountp: { name: "Paramount (Pacific)", stationId: "64593", url: "https://tv.youtube.com/live" },
474
- "paramountp-yttv": { channelSelector: "Paramount Network", url: "https://tv.youtube.com/live" },
475
- pbs: { channelSelector: "PBS", name: "PBS", url: "https://www.hulu.com/live" },
476
- "pbs-directv": { channelSelector: "PBS", url: "https://stream.directv.com" },
477
- "pbs-spectrum": { channelSelector: "PBS", url: "https://watch.spectrum.net/guide" },
478
- "pbs-yttv": { channelSelector: "PBS", url: "https://tv.youtube.com/live" },
479
- pbschicago: { name: "PBS Chicago (WTTW)", stationId: "30415", url: "https://www.wttw.com/wttw-live-stream" },
480
- "pbschicago-hulu": { channelSelector: "PBS", url: "https://www.hulu.com/live" },
481
- pbslakeshore: { name: "PBS Lakeshore (WYIN)", stationId: "49237", url: "https://video.lakeshorepbs.org/livestream" },
482
- "pbslakeshore-hulu": { channelSelector: "Lakeshore PBS", url: "https://www.hulu.com/live" },
483
- retroplex: { channelSelector: "RetroPlex (East)", name: "RetroPlex", stationId: "65791", url: "https://www.hulu.com/live" },
484
- "retroplex-sling": { channelSelector: "RetroPlex", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
485
- "retroplex-spectrum": { channelSelector: "RetroPlex", url: "https://watch.spectrum.net/guide" },
486
- retroplexp: { channelSelector: "RetroPlex (West)", name: "RetroPlex (Pacific)", stationId: "65793", url: "https://www.hulu.com/live" },
487
- science: { name: "Science", stationId: "57390", url: "https://watch.foodnetwork.com/channel/science" },
488
- "science-directv": { channelSelector: "Science", url: "https://stream.directv.com" },
489
- "science-spectrum": { channelSelector: "Science", url: "https://watch.spectrum.net/guide" },
490
- showtime: { name: "Showtime", stationId: "91620", url: "https://www.paramountplus.com/live-tv/stream/showtime-east" },
491
- "showtime-yttv": { channelSelector: "Showtime East", url: "https://tv.youtube.com/live" },
492
- showtimep: { name: "Showtime (Pacific)", stationId: "91621", url: "https://www.paramountplus.com/live-tv/stream/showtime-west" },
493
- smithsonian: { channelSelector: "Smithsonian Channel", name: "Smithsonian Channel", pacificStationId: "82695", stationId: "58532", url: "https://www.hulu.com/live" },
494
- "smithsonian-directv": { channelSelector: "Smithsonian Channel HD", url: "https://stream.directv.com" },
495
- "smithsonian-spectrum": { channelSelector: "Smithsonian Channel", url: "https://watch.spectrum.net/guide" },
496
- "smithsonian-yttv": { channelSelector: "Smithsonian Channel", url: "https://tv.youtube.com/live" },
497
- sny: { channelSelector: "SportsNet New York HD 639", name: "SportsNet New York", stationId: "50038", url: "https://stream.directv.com" },
498
- starz: { name: "Starz", stationId: "34941", url: "https://www.starz.com/us/en/play/2" },
499
- "starz-hulu": { channelSelector: "STARZ (East)", url: "https://www.hulu.com/live" },
500
- starzcinema: { channelSelector: "STARZ Cinema (East)", name: "Starz Cinema", stationId: "67236", url: "https://www.hulu.com/live" },
501
- "starzcinema-sling": { channelSelector: "Starz Cinema", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
502
- starzcinemap: { channelSelector: "STARZ Cinema (West)", name: "Starz Cinema (Pacific)", stationId: "67365", url: "https://www.hulu.com/live" },
503
- starzcomedy: { channelSelector: "STARZ Comedy (East)", name: "Starz Comedy", stationId: "57569", url: "https://www.hulu.com/live" },
504
- "starzcomedy-sling": { channelSelector: "Starz Comedy", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
505
- starzcomedyp: { channelSelector: "STARZ Comedy (West)", name: "Starz Comedy (Pacific)", stationId: "57575", url: "https://www.hulu.com/live" },
506
- starzedge: { channelSelector: "STARZ Edge (East)", name: "Starz Edge", stationId: "57573", url: "https://www.hulu.com/live" },
507
- "starzedge-sling": { channelSelector: "Starz Edge", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
508
- starzedgep: { channelSelector: "STARZ Edge (West)", name: "Starz Edge (Pacific)", stationId: "57578", url: "https://www.hulu.com/live" },
509
- starzencore: { channelSelector: "STARZ Encore (East)", name: "Starz Encore", stationId: "36225", url: "https://www.hulu.com/live" },
510
- "starzencore-sling": { channelSelector: "Starz Encore", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
511
- starzencoreaction: { channelSelector: "STARZ Encore Action (East)", name: "Starz Encore Action", stationId: "72015", url: "https://www.hulu.com/live" },
512
- "starzencoreaction-sling": { channelSelector: "Starz Encore Action", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
513
- starzencoreactionp: { channelSelector: "STARZ Encore Action (West)", name: "Starz Encore Action (Pacific)", stationId: "103833", url: "https://www.hulu.com/live" },
514
- starzencoreblack: { channelSelector: "STARZ Encore Black (East)", name: "Starz Encore Black", stationId: "72014", url: "https://www.hulu.com/live" },
515
- "starzencoreblack-sling": { channelSelector: "Starz Encore Black", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
516
- starzencoreblackp: { channelSelector: "STARZ Encore Black (West)", name: "Starz Encore Black (Pacific)", stationId: "103834", url: "https://www.hulu.com/live" },
517
- starzencoreclassic: { channelSelector: "STARZ Encore Classic (East)", name: "Starz Encore Classic", stationId: "83404", url: "https://www.hulu.com/live" },
518
- "starzencoreclassic-sling": { channelSelector: "Starz Encore Classic", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
519
- starzencoreclassicp: { channelSelector: "STARZ Encore Classic (West)", name: "Starz Encore Classic (Pacific)", stationId: "97233", url: "https://www.hulu.com/live" },
520
- starzencoreespanol: { channelSelector: "STARZ Encore Español (East)", name: "Starz Encore Español", stationId: "72016", url: "https://www.hulu.com/live" },
521
- "starzencoreespanol-sling": { channelSelector: "Starz Encore Español", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
522
- starzencoreespanolp: { channelSelector: "STARZ Encore Español (West)", name: "Starz Encore Español (Pacific)", stationId: "104730", url: "https://www.hulu.com/live" },
523
- starzencorefamily: { channelSelector: "STARZ Encore Family (East)", name: "Starz Encore Family", stationId: "14886", url: "https://www.hulu.com/live" },
524
- "starzencorefamily-sling": { channelSelector: "Starz Encore Family", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
525
- starzencorefamilyp: { channelSelector: "STARZ Encore Family (West)", name: "Starz Encore Family (Pacific)", stationId: "103829", url: "https://www.hulu.com/live" },
526
- starzencorep: { channelSelector: "STARZ Encore (West)", name: "Starz Encore (Pacific)", stationId: "67237", url: "https://www.hulu.com/live" },
527
- starzencoresuspense: { channelSelector: "STARZ Encore Suspense (East)", name: "Starz Encore Suspense", stationId: "83076", url: "https://www.hulu.com/live" },
528
- "starzencoresuspense-sling": { channelSelector: "Starz Encore Suspense", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
529
- starzencoresuspensep: { channelSelector: "STARZ Encore Suspense (West)", name: "Starz Encore Suspense (Pacific)", stationId: "103836", url: "https://www.hulu.com/live" },
530
- starzencorewesterns: { channelSelector: "STARZ Encore Westerns (East)", name: "Starz Encore Westerns", stationId: "14765", url: "https://www.hulu.com/live" },
531
- starzencorewesternsp: { channelSelector: "STARZ Encore Westerns (West)", name: "Starz Encore Westerns (Pacific)", stationId: "103856", url: "https://www.hulu.com/live" },
532
- starzinblack: { channelSelector: "STARZ in Black (East)", name: "Starz in Black", stationId: "67235", url: "https://www.hulu.com/live" },
533
- "starzinblack-sling": { channelSelector: "Starz in Black", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
534
- starzinblackp: { channelSelector: "STARZ in Black (West)", name: "Starz in Black (Pacific)", stationId: "67367", url: "https://www.hulu.com/live" },
535
- starzkids: { channelSelector: "STARZ Kids (East)", name: "Starz Kids", stationId: "57581", url: "https://www.hulu.com/live" },
536
- starzkidsp: { channelSelector: "STARZ Kids (West)", name: "Starz Kids (Pacific)", stationId: "57583", url: "https://www.hulu.com/live" },
537
- starzp: { channelSelector: "STARZ (West)", name: "Starz (Pacific)", stationId: "34949", url: "https://www.hulu.com/live" },
538
- sundancetv: { channelSelector: "SundanceTV", name: "SundanceTV", pacificStationId: "78806", stationId: "71280", url: "https://tv.youtube.com/live" },
539
- "sundancetv-directv": { channelSelector: "Sundance TV", url: "https://stream.directv.com" },
540
- "sundancetv-spectrum": { channelSelector: "SundanceTV", url: "https://watch.spectrum.net/guide" },
541
- syfy: { channelSelector: "Syfy_East", name: "Syfy", stationId: "58623", url: "https://www.usanetwork.com/live" },
542
- "syfy-directv": { channelSelector: "Syfy", url: "https://stream.directv.com" },
543
- "syfy-hulu": { channelSelector: "SYFY", url: "https://www.hulu.com/live" },
544
- "syfy-sling": { channelSelector: "SYFY", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
545
- "syfy-spectrum": { channelSelector: "Syfy", url: "https://watch.spectrum.net/guide" },
546
- "syfy-yttv": { channelSelector: "SYFY", url: "https://tv.youtube.com/live" },
547
- syfyp: { channelSelector: "Syfy_West", name: "Syfy (Pacific)", stationId: "65626", url: "https://www.usanetwork.com/live" },
548
- tbs: { name: "TBS", stationId: "58515", url: "https://www.tbs.com/watchtbs/east" },
549
- "tbs-directv": { channelSelector: "TBS", url: "https://stream.directv.com" },
550
- "tbs-hulu": { channelSelector: "TBS (East)", url: "https://www.hulu.com/live" },
551
- "tbs-sling": { channelSelector: "TBS", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
552
- "tbs-spectrum": { channelSelector: "TBS", url: "https://watch.spectrum.net/guide" },
553
- "tbs-yttv": { channelSelector: "TBS", url: "https://tv.youtube.com/live" },
554
- tbsp: { name: "TBS (Pacific)", stationId: "67890", url: "https://www.tbs.com/watchtbs/west" },
555
- "tbsp-hulu": { channelSelector: "TBS (West)", url: "https://www.hulu.com/live" },
556
- tcm: { channelSelector: "TCM (East)", name: "TCM", stationId: "64312", url: "https://www.hulu.com/live" },
557
- "tcm-directv": { channelSelector: "TCM", url: "https://stream.directv.com" },
558
- "tcm-spectrum": { channelSelector: "TCM", url: "https://watch.spectrum.net/guide" },
559
- "tcm-yttv": { channelSelector: "Turner Classic Movies", url: "https://tv.youtube.com/live" },
560
- tcmp: { channelSelector: "TCM (West)", name: "TCM (Pacific)", stationId: "64312", tvgShift: 3, url: "https://www.hulu.com/live" },
561
- tennis: { channelSelector: "Tennis Channel", name: "Tennis Channel", stationId: "60316", url: "https://tv.youtube.com/live" },
562
- "tennis-directv": { channelSelector: "Tennis Channel HD", url: "https://stream.directv.com" },
563
- "tennis-spectrum": { channelSelector: "Tennis Channel", url: "https://watch.spectrum.net/guide" },
564
- tennis2: { channelSelector: "T2", name: "Tennis Channel 2", stationId: "137752", url: "https://tv.youtube.com/live" },
565
- "tennis2-hulu": { channelSelector: "Tennis Channel 2", url: "https://www.hulu.com/live" },
566
- "tennis2-sling": { channelSelector: "T2", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
567
- tlc: { name: "TLC", pacificStationId: "79911", stationId: "57391", url: "https://watch.foodnetwork.com/channel/tlc" },
568
- "tlc-directv": { channelSelector: "TLC", url: "https://stream.directv.com" },
569
- "tlc-hulu": { channelSelector: "TLC", url: "https://www.hulu.com/live" },
570
- "tlc-sling": { channelSelector: "TLC", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
571
- "tlc-spectrum": { channelSelector: "TLC", url: "https://watch.spectrum.net/guide" },
572
- "tlc-yttv": { channelSelector: "TLC", url: "https://tv.youtube.com/live" },
573
- tnt: { name: "TNT", stationId: "42642", url: "https://www.tntdrama.com/watchtnt/east" },
574
- "tnt-directv": { channelSelector: "TNT", url: "https://stream.directv.com" },
575
- "tnt-hulu": { channelSelector: "TNT (East)", url: "https://www.hulu.com/live" },
576
- "tnt-sling": { channelSelector: "TNT", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
577
- "tnt-spectrum": { channelSelector: "TNT", url: "https://watch.spectrum.net/guide" },
578
- "tnt-yttv": { channelSelector: "TNT", url: "https://tv.youtube.com/live" },
579
- tntp: { name: "TNT (Pacific)", stationId: "61340", url: "https://www.tntdrama.com/watchtnt/west" },
580
- "tntp-hulu": { channelSelector: "TNT (West)", url: "https://www.hulu.com/live" },
581
- travel: { name: "Travel", pacificStationId: "64525", stationId: "59303", url: "https://watch.foodnetwork.com/channel/travel-channel" },
582
- "travel-directv": { channelSelector: "Travel Channel", url: "https://stream.directv.com" },
583
- "travel-hulu": { channelSelector: "Travel Channel", url: "https://www.hulu.com/live" },
584
- "travel-sling": { channelSelector: "Travel Channel", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
585
- "travel-spectrum": { channelSelector: "Travel Channel", url: "https://watch.spectrum.net/guide" },
586
- "travel-yttv": { channelSelector: "Travel Channel", url: "https://tv.youtube.com/live" },
587
- trutv: { name: "truTV", pacificStationId: "65717", stationId: "64490", url: "https://www.trutv.com/watchtrutv/east" },
588
- "trutv-directv": { channelSelector: "truTV", url: "https://stream.directv.com" },
589
- "trutv-hulu": { channelSelector: "truTV (East)", url: "https://www.hulu.com/live" },
590
- "trutv-sling": { channelSelector: "truTV", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
591
- "trutv-spectrum": { channelSelector: "truTV", url: "https://watch.spectrum.net/guide" },
592
- "trutv-yttv": { channelSelector: "truTV", url: "https://tv.youtube.com/live" },
593
- "trutvp-hulu": { channelSelector: "truTV (West)", url: "https://www.hulu.com/live" },
594
- tvland: { channelSelector: "TV Land", name: "TV Land", pacificStationId: "74134", stationId: "73541", url: "https://tv.youtube.com/live" },
595
- "tvland-directv": { channelSelector: "TV Land", url: "https://stream.directv.com" },
596
- "tvland-hulu": { channelSelector: "TV Land", url: "https://www.hulu.com/live" },
597
- "tvland-spectrum": { channelSelector: "TV Land", url: "https://watch.spectrum.net/guide" },
598
- usa: { channelSelector: "USA_East", name: "USA Network", stationId: "58452", url: "https://www.usanetwork.com/live" },
599
- "usa-directv": { channelSelector: "USA Network", url: "https://stream.directv.com" },
600
- "usa-hulu": { channelSelector: "USA", url: "https://www.hulu.com/live" },
601
- "usa-sling": { channelSelector: "USA", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
602
- "usa-spectrum": { channelSelector: "USA", url: "https://watch.spectrum.net/guide" },
603
- "usa-yttv": { channelSelector: "USA", url: "https://tv.youtube.com/live" },
604
- usap: { channelSelector: "USA_West", name: "USA Network (Pacific)", stationId: "74030", url: "https://www.usanetwork.com/live" },
605
- vh1: { name: "VH1", pacificStationId: "64634", stationId: "60046", url: "https://www.vh1.com/live-tv" },
606
- "vh1-directv": { channelSelector: "VH1", url: "https://stream.directv.com" },
607
- "vh1-hulu": { channelSelector: "VH1", url: "https://www.hulu.com/live" },
608
- "vh1-spectrum": { channelSelector: "VH1", url: "https://watch.spectrum.net/guide" },
609
- "vh1-yttv": { channelSelector: "VH1", url: "https://tv.youtube.com/live" },
610
- vice: { channelSelector: "Vice", name: "Vice", pacificStationId: "92375", stationId: "65732", url: "https://www.hulu.com/live" },
611
- "vice-directv": { channelSelector: "VICE", url: "https://stream.directv.com" },
612
- "vice-sling": { channelSelector: "VICE", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
613
- "vice-spectrum": { channelSelector: "Vice", url: "https://watch.spectrum.net/guide" },
614
- weather: { channelSelector: "The Weather Channel", name: "The Weather Channel", stationId: "58812", url: "https://www.hulu.com/live" },
615
- "weather-directv": { channelSelector: "The Weather Channel HD", url: "https://stream.directv.com" },
616
- "weather-spectrum": { channelSelector: "The Weather Channel", url: "https://watch.spectrum.net/guide" },
617
- "weather-yttv": { channelSelector: "The Weather Channel", url: "https://tv.youtube.com/live" },
618
- wetv: { channelSelector: "WE tv", name: "WE tv", pacificStationId: "108192", stationId: "59296", url: "https://tv.youtube.com/live" },
619
- "wetv-directv": { channelSelector: "WE TV", url: "https://stream.directv.com" },
620
- "wetv-spectrum": { channelSelector: "WE tv", url: "https://watch.spectrum.net/guide" },
621
- yes: { channelSelector: "Yes Network HD", name: "YES Network", stationId: "63558", url: "https://stream.directv.com" },
622
- "yes-spectrum": { channelSelector: "YES Network", url: "https://watch.spectrum.net/guide" }
26
+ /* eslint-disable @hjdhjd/blank-line-after-open-brace, @stylistic/comma-dangle, sort-keys */
27
+ const BASE_CHANNEL_DEFINITIONS = {
28
+ abc: {
29
+ name: "ABC",
30
+ providers: {
31
+ cox: { channelSelector: "ABC", url: "https://watchtv.cox.com/listings" },
32
+ directv: { channelSelector: "ABC", url: "https://stream.directv.com" },
33
+ hulu: { channelSelector: "ABC", url: "https://www.hulu.com/live" },
34
+ site: { url: "https://abc.com/watch-live" },
35
+ sling: { channelSelector: "ABC", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
36
+ spectrum: { channelSelector: "ABC", url: "https://watch.spectrum.net/guide" },
37
+ xfinity: { channelSelector: "ABC", url: "https://www.xfinity.com/stream/listings" },
38
+ yttv: { channelSelector: "ABC", url: "https://tv.youtube.com/live" },
39
+ },
40
+ },
41
+ abcnews: {
42
+ name: "ABC News Live",
43
+ stationId: "113380",
44
+ providers: {
45
+ cox: { channelSelector: "ABCNL", url: "https://watchtv.cox.com/listings" },
46
+ directv: { channelSelector: "ABC News Live", url: "https://stream.directv.com" },
47
+ hulu: { channelSelector: "ABC News Live", url: "https://www.hulu.com/live" },
48
+ sling: { channelSelector: "ABC News Live", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
49
+ xfinity: { channelSelector: "ABCNL", url: "https://www.xfinity.com/stream/listings" },
50
+ yttv: { channelSelector: "ABC News Live", url: "https://tv.youtube.com/live" },
51
+ },
52
+ },
53
+ ae: {
54
+ name: "A&E",
55
+ pacificStationId: "57439",
56
+ stationId: "51529",
57
+ providers: {
58
+ cox: { channelSelector: "A&E", url: "https://watchtv.cox.com/listings" },
59
+ directv: { channelSelector: "A&E", url: "https://stream.directv.com" },
60
+ hulu: { channelSelector: "A&E", url: "https://www.hulu.com/live" },
61
+ site: { url: "https://play.aetv.com/live" },
62
+ sling: { channelSelector: "A&E", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
63
+ spectrum: { channelSelector: "A&E", url: "https://watch.spectrum.net/guide" },
64
+ xfinity: { channelSelector: "A&E", url: "https://www.xfinity.com/stream/listings" },
65
+ yttv: { channelSelector: "A&E", url: "https://tv.youtube.com/live" },
66
+ },
67
+ },
68
+ ahc: {
69
+ name: "American Heroes",
70
+ stationId: "78808",
71
+ providers: {
72
+ cox: { channelSelector: "American Heroes", url: "https://watchtv.cox.com/listings" },
73
+ site: { url: "https://watch.foodnetwork.com/channel/ahc" },
74
+ spectrum: { channelSelector: "American Heroes Channel", url: "https://watch.spectrum.net/guide" },
75
+ xfinity: { channelSelector: "American Heroes", url: "https://www.xfinity.com/stream/listings" },
76
+ },
77
+ },
78
+ amc: {
79
+ name: "AMC",
80
+ pacificStationId: "78836",
81
+ stationId: "59337",
82
+ providers: {
83
+ cox: { channelSelector: "AMC", url: "https://watchtv.cox.com/listings" },
84
+ directv: { channelSelector: "AMC", url: "https://stream.directv.com" },
85
+ sling: { channelSelector: "AMC", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
86
+ spectrum: { channelSelector: "AMC", url: "https://watch.spectrum.net/guide" },
87
+ xfinity: { channelSelector: "AMC", url: "https://www.xfinity.com/stream/listings" },
88
+ yttv: { channelSelector: "AMC", url: "https://tv.youtube.com/live" },
89
+ },
90
+ },
91
+ amcthrillers: {
92
+ name: "AMC Thrillers",
93
+ stationId: "115678",
94
+ providers: {
95
+ sling: { channelSelector: "AMC Thrillers", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
96
+ yttv: { channelSelector: "AMC Thrillers", url: "https://tv.youtube.com/live" },
97
+ },
98
+ },
99
+ animal: {
100
+ name: "Animal Planet",
101
+ pacificStationId: "68785",
102
+ stationId: "57394",
103
+ providers: {
104
+ cox: { channelSelector: "Animal Planet", url: "https://watchtv.cox.com/listings" },
105
+ directv: { channelSelector: "Animal Planet", url: "https://stream.directv.com" },
106
+ hulu: { channelSelector: "Animal Planet", url: "https://www.hulu.com/live" },
107
+ site: { url: "https://watch.foodnetwork.com/channel/animal-planet" },
108
+ spectrum: { channelSelector: "Animal Planet", url: "https://watch.spectrum.net/guide" },
109
+ xfinity: { channelSelector: "Animal Planet", url: "https://www.xfinity.com/stream/listings" },
110
+ yttv: { channelSelector: "Animal Planet", url: "https://tv.youtube.com/live" },
111
+ },
112
+ },
113
+ axstv: {
114
+ name: "AXS TV",
115
+ stationId: "28506",
116
+ providers: {
117
+ cox: { channelSelector: "AXS TV", url: "https://watchtv.cox.com/listings" },
118
+ directv: { channelSelector: "AXS TV", url: "https://stream.directv.com" },
119
+ spectrum: { channelSelector: "AXS TV", url: "https://watch.spectrum.net/guide" },
120
+ xfinity: { channelSelector: "AXS TV", url: "https://www.xfinity.com/stream/listings" },
121
+ },
122
+ },
123
+ bbcamerica: {
124
+ name: "BBC America",
125
+ pacificStationId: "76739",
126
+ stationId: "64492",
127
+ providers: {
128
+ cox: { channelSelector: "BBC America", url: "https://watchtv.cox.com/listings" },
129
+ directv: { channelSelector: "BBC America", url: "https://stream.directv.com" },
130
+ sling: { channelSelector: "BBC America", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
131
+ spectrum: { channelSelector: "BBC America", url: "https://watch.spectrum.net/guide" },
132
+ xfinity: { channelSelector: "BBC America", url: "https://www.xfinity.com/stream/listings" },
133
+ yttv: { channelSelector: "BBC America", url: "https://tv.youtube.com/live" },
134
+ },
135
+ },
136
+ bbcnews: {
137
+ name: "BBC News (North America)",
138
+ stationId: "101449",
139
+ providers: {
140
+ cox: { channelSelector: "BBC News", url: "https://watchtv.cox.com/listings" },
141
+ directv: { channelSelector: "BBC News", url: "https://stream.directv.com" },
142
+ sling: { channelSelector: "BBC News", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
143
+ spectrum: { channelSelector: "BBC World News", url: "https://watch.spectrum.net/guide" },
144
+ xfinity: { channelSelector: "BBC News", url: "https://www.xfinity.com/stream/listings" },
145
+ yttv: { channelSelector: "BBC News", url: "https://tv.youtube.com/live" },
146
+ },
147
+ },
148
+ bet: {
149
+ name: "BET",
150
+ pacificStationId: "64673",
151
+ stationId: "63236",
152
+ providers: {
153
+ cox: { channelSelector: "BET", url: "https://watchtv.cox.com/listings" },
154
+ directv: { channelSelector: "BET", url: "https://stream.directv.com" },
155
+ hulu: { channelSelector: "BET", url: "https://www.hulu.com/live" },
156
+ site: { url: "https://www.bet.com/live-tv" },
157
+ sling: { channelSelector: "BET", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
158
+ spectrum: { channelSelector: "BET", url: "https://watch.spectrum.net/guide" },
159
+ xfinity: { channelSelector: "BET", url: "https://www.xfinity.com/stream/listings" },
160
+ yttv: { channelSelector: "BET", url: "https://tv.youtube.com/live" },
161
+ },
162
+ },
163
+ bether: {
164
+ name: "BET Her",
165
+ pacificStationId: "97360",
166
+ stationId: "63220",
167
+ providers: {
168
+ cox: { channelSelector: "BET Her", url: "https://watchtv.cox.com/listings" },
169
+ directv: { channelSelector: "BET Her", url: "https://stream.directv.com" },
170
+ spectrum: { channelSelector: "BET Her", url: "https://watch.spectrum.net/guide" },
171
+ xfinity: { channelSelector: "BET Her", url: "https://www.xfinity.com/stream/listings" },
172
+ yttv: { channelSelector: "BET Her", url: "https://tv.youtube.com/live" },
173
+ },
174
+ },
175
+ bigten: {
176
+ name: "Big 10",
177
+ stationId: "58321",
178
+ providers: {
179
+ cox: { channelSelector: "Big Ten Network", url: "https://watchtv.cox.com/listings" },
180
+ directv: { channelSelector: "Big Ten", url: "https://stream.directv.com" },
181
+ foxone: { channelSelector: "BTN", url: "https://www.fox.com/live/channels" },
182
+ hulu: { channelSelector: "Big Ten Network", url: "https://www.hulu.com/live" },
183
+ site: { url: "https://www.foxsports.com/live/btn" },
184
+ spectrum: { channelSelector: "Big Ten Network", url: "https://watch.spectrum.net/guide" },
185
+ xfinity: { channelSelector: "Big Ten Network", url: "https://www.xfinity.com/stream/listings" },
186
+ yttv: { channelSelector: "BTN", url: "https://tv.youtube.com/live" },
187
+ },
188
+ },
189
+ bloomberg: {
190
+ name: "Bloomberg Television",
191
+ stationId: "71799",
192
+ providers: {
193
+ cox: { channelSelector: "Bloomberg", url: "https://watchtv.cox.com/listings" },
194
+ directv: { channelSelector: "Bloomberg TV", url: "https://stream.directv.com" },
195
+ hulu: { channelSelector: "Bloomberg Television", url: "https://www.hulu.com/live" },
196
+ sling: { channelSelector: "Bloomberg TV+", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
197
+ spectrum: { channelSelector: "Bloomberg TV", url: "https://watch.spectrum.net/guide" },
198
+ xfinity: { channelSelector: "Bloomberg", url: "https://www.xfinity.com/stream/listings" },
199
+ yttv: { channelSelector: "Bloomberg TV+", url: "https://tv.youtube.com/live" },
200
+ },
201
+ },
202
+ bloombergoriginals: {
203
+ name: "Bloomberg Originals",
204
+ stationId: "175656",
205
+ providers: {
206
+ yttv: { channelSelector: "Bloomberg Originals", url: "https://tv.youtube.com/live" },
207
+ },
208
+ },
209
+ bravo: {
210
+ name: "Bravo",
211
+ stationId: "58625",
212
+ providers: {
213
+ cox: { channelSelector: "Bravo", url: "https://watchtv.cox.com/listings" },
214
+ directv: { channelSelector: "Bravo", url: "https://stream.directv.com" },
215
+ hulu: { channelSelector: "Bravo", url: "https://www.hulu.com/live" },
216
+ site: { url: "https://www.nbc.com/live?brand=bravo&callsign=bravo_east" },
217
+ sling: { channelSelector: "Bravo", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
218
+ spectrum: { channelSelector: "Bravo", url: "https://watch.spectrum.net/guide" },
219
+ xfinity: { channelSelector: "Bravo", url: "https://www.xfinity.com/stream/listings" },
220
+ yttv: { channelSelector: "Bravo", url: "https://tv.youtube.com/live" },
221
+ },
222
+ },
223
+ bravop: {
224
+ name: "Bravo (Pacific)",
225
+ stationId: "73994",
226
+ providers: {
227
+ site: { url: "https://www.nbc.com/live?brand=bravo&callsign=bravo_west" },
228
+ },
229
+ },
230
+ cartoon: {
231
+ name: "Cartoon Network",
232
+ pacificStationId: "67703",
233
+ stationId: "60048",
234
+ providers: {
235
+ cox: { channelSelector: "Cartoon Network", url: "https://watchtv.cox.com/listings" },
236
+ directv: { channelSelector: "Cartoon Network", url: "https://stream.directv.com" },
237
+ hulu: { channelSelector: "Cartoon Network (East)", url: "https://www.hulu.com/live" },
238
+ spectrum: { channelSelector: "Cartoon Network", url: "https://watch.spectrum.net/guide" },
239
+ xfinity: { channelSelector: "Cartoon Network", url: "https://www.xfinity.com/stream/listings" },
240
+ yttv: { channelSelector: "Cartoon Network", url: "https://tv.youtube.com/live" },
241
+ },
242
+ },
243
+ cartoonp: {
244
+ name: "Cartoon Network (Pacific)",
245
+ stationId: "67703",
246
+ providers: {
247
+ hulu: { channelSelector: "Cartoon Network (West)", url: "https://www.hulu.com/live" },
248
+ },
249
+ },
250
+ cbs: {
251
+ name: "CBS",
252
+ providers: {
253
+ cox: { channelSelector: "CBS", url: "https://watchtv.cox.com/listings" },
254
+ directv: { channelSelector: "CBS", url: "https://stream.directv.com" },
255
+ hulu: { channelSelector: "CBS", url: "https://www.hulu.com/live" },
256
+ paramountplus: { url: "https://www.paramountplus.com/live-tv/" },
257
+ site: { url: "https://www.cbs.com/live-tv/stream" },
258
+ spectrum: { channelSelector: "CBS", url: "https://watch.spectrum.net/guide" },
259
+ xfinity: { channelSelector: "CBS", url: "https://www.xfinity.com/stream/listings" },
260
+ yttv: { channelSelector: "CBS", url: "https://tv.youtube.com/live" },
261
+ },
262
+ },
263
+ cbsnews: {
264
+ name: "CBS News 24/7",
265
+ stationId: "104846",
266
+ providers: {
267
+ hulu: { channelSelector: "CBS News 24/7", url: "https://www.hulu.com/live" },
268
+ sling: { channelSelector: "CBS News 24/7", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
269
+ },
270
+ },
271
+ cbssports: {
272
+ name: "CBS Sports Network",
273
+ stationId: "59250",
274
+ providers: {
275
+ cox: { channelSelector: "CBS Sports Network", url: "https://watchtv.cox.com/listings" },
276
+ hulu: { channelSelector: "CBS Sports Network", url: "https://www.hulu.com/live" },
277
+ spectrum: { channelSelector: "CBS Sports Network", url: "https://watch.spectrum.net/guide" },
278
+ xfinity: { channelSelector: "CBS Sports Network", url: "https://www.xfinity.com/stream/listings" },
279
+ yttv: { channelSelector: "CBS Sports Network", url: "https://tv.youtube.com/live" },
280
+ },
281
+ },
282
+ cmt: {
283
+ name: "CMT",
284
+ pacificStationId: "64610",
285
+ stationId: "59440",
286
+ providers: {
287
+ cox: { channelSelector: "CMT", url: "https://watchtv.cox.com/listings" },
288
+ directv: { channelSelector: "CMT", url: "https://stream.directv.com" },
289
+ hulu: { channelSelector: "CMT", url: "https://www.hulu.com/live" },
290
+ spectrum: { channelSelector: "CMT", url: "https://watch.spectrum.net/guide" },
291
+ xfinity: { channelSelector: "CMT", url: "https://www.xfinity.com/stream/listings" },
292
+ yttv: { channelSelector: "CMT", url: "https://tv.youtube.com/live" },
293
+ },
294
+ },
295
+ cnbc: {
296
+ name: "CNBC",
297
+ stationId: "58780",
298
+ providers: {
299
+ cox: { channelSelector: "CNBC", url: "https://watchtv.cox.com/listings" },
300
+ directv: { channelSelector: "CNBC", url: "https://stream.directv.com" },
301
+ hulu: { channelSelector: "CNBC", url: "https://www.hulu.com/live" },
302
+ site: { url: "https://www.cnbc.com/live-tv" },
303
+ spectrum: { channelSelector: "CNBC", url: "https://watch.spectrum.net/guide" },
304
+ usa: { channelSelector: "CNBC_US", url: "https://www.usanetwork.com/live" },
305
+ xfinity: { channelSelector: "CNBC", url: "https://www.xfinity.com/stream/listings" },
306
+ yttv: { channelSelector: "CNBC", url: "https://tv.youtube.com/live" },
307
+ },
308
+ },
309
+ cnbcworld: {
310
+ name: "CNBC World",
311
+ stationId: "26849",
312
+ providers: {
313
+ directv: { channelSelector: "CNBC World", url: "https://stream.directv.com" },
314
+ spectrum: { channelSelector: "CNBC World", url: "https://watch.spectrum.net/guide" },
315
+ },
316
+ },
317
+ cnn: {
318
+ name: "CNN",
319
+ stationId: "58646",
320
+ providers: {
321
+ cox: { channelSelector: "CNN", url: "https://watchtv.cox.com/listings" },
322
+ directv: { channelSelector: "CNN", url: "https://stream.directv.com" },
323
+ hulu: { channelSelector: "CNN", url: "https://www.hulu.com/live" },
324
+ site: { url: "https://www.cnn.com/videos/cnn" },
325
+ sling: { channelSelector: "CNN", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
326
+ spectrum: { channelSelector: "CNN", url: "https://watch.spectrum.net/guide" },
327
+ xfinity: { channelSelector: "CNN", url: "https://www.xfinity.com/stream/listings" },
328
+ yttv: { channelSelector: "CNN", url: "https://tv.youtube.com/live" },
329
+ },
330
+ },
331
+ cnni: {
332
+ name: "CNN International",
333
+ stationId: "83110",
334
+ providers: {
335
+ directv: { channelSelector: "CNNi HD East", url: "https://stream.directv.com" },
336
+ hulu: { channelSelector: "CNN International", url: "https://www.hulu.com/live" },
337
+ site: { url: "https://www.cnn.com/videos/cnn-i" },
338
+ yttv: { channelSelector: "CNN International", url: "https://tv.youtube.com/live" },
339
+ },
340
+ },
341
+ comedycentral: {
342
+ name: "Comedy Central",
343
+ pacificStationId: "64599",
344
+ stationId: "62420",
345
+ providers: {
346
+ cox: { channelSelector: "Comedy Central", url: "https://watchtv.cox.com/listings" },
347
+ directv: { channelSelector: "Comedy Central", url: "https://stream.directv.com" },
348
+ hulu: { channelSelector: "Comedy Central", url: "https://www.hulu.com/live" },
349
+ sling: { channelSelector: "Comedy Central", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
350
+ spectrum: { channelSelector: "Comedy Central", url: "https://watch.spectrum.net/guide" },
351
+ xfinity: { channelSelector: "Comedy Central", url: "https://www.xfinity.com/stream/listings" },
352
+ yttv: { channelSelector: "Comedy Central", url: "https://tv.youtube.com/live" },
353
+ },
354
+ },
355
+ cooking: {
356
+ name: "Cooking",
357
+ stationId: "68065",
358
+ providers: {
359
+ cox: { channelSelector: "Cooking Channel", url: "https://watchtv.cox.com/listings" },
360
+ directv: { channelSelector: "Cooking Channel", url: "https://stream.directv.com" },
361
+ site: { url: "https://watch.foodnetwork.com/channel/cooking-channel" },
362
+ spectrum: { channelSelector: "Cooking Channel", url: "https://watch.spectrum.net/guide" },
363
+ xfinity: { channelSelector: "Cooking Channel", url: "https://www.xfinity.com/stream/listings" },
364
+ },
365
+ },
366
+ cspan: {
367
+ name: "C-SPAN",
368
+ stationId: "68344",
369
+ providers: {
370
+ cox: { channelSelector: "C-SPAN", url: "https://watchtv.cox.com/listings" },
371
+ directv: { channelSelector: "C-SPAN", url: "https://stream.directv.com" },
372
+ hulu: { channelSelector: "C-SPAN", url: "https://www.hulu.com/live" },
373
+ site: { url: "https://www.c-span.org/networks/?autoplay=true&channel=c-span" },
374
+ spectrum: { channelSelector: "C-SPAN", url: "https://watch.spectrum.net/guide" },
375
+ xfinity: { channelSelector: "C-SPAN", url: "https://www.xfinity.com/stream/listings" },
376
+ yttv: { channelSelector: "C-SPAN", url: "https://tv.youtube.com/live" },
377
+ },
378
+ },
379
+ cspan2: {
380
+ name: "C-SPAN 2",
381
+ stationId: "68334",
382
+ providers: {
383
+ cox: { channelSelector: "CPN2D", url: "https://watchtv.cox.com/listings" },
384
+ directv: { channelSelector: "C-SPAN2", url: "https://stream.directv.com" },
385
+ hulu: { channelSelector: "C-SPAN2", url: "https://www.hulu.com/live" },
386
+ site: { url: "https://www.c-span.org/networks/?autoplay=true&channel=c-span-2" },
387
+ spectrum: { channelSelector: "C-SPAN 2", url: "https://watch.spectrum.net/guide" },
388
+ xfinity: { channelSelector: "CPN2D", url: "https://www.xfinity.com/stream/listings" },
389
+ yttv: { channelSelector: "C-SPAN2", url: "https://tv.youtube.com/live" },
390
+ },
391
+ },
392
+ cspan3: {
393
+ name: "C-SPAN 3",
394
+ stationId: "68332",
395
+ providers: {
396
+ cox: { channelSelector: "CPN3H", url: "https://watchtv.cox.com/listings" },
397
+ hulu: { channelSelector: "C-SPAN3", url: "https://www.hulu.com/live" },
398
+ site: { url: "https://www.c-span.org/networks/?autoplay=true&channel=c-span-3" },
399
+ spectrum: { channelSelector: "C-SPAN 3", url: "https://watch.spectrum.net/guide" },
400
+ xfinity: { channelSelector: "CPN3H", url: "https://www.xfinity.com/stream/listings" },
401
+ yttv: { channelSelector: "C-SPAN3", url: "https://tv.youtube.com/live" },
402
+ },
403
+ },
404
+ cw: {
405
+ name: "CW",
406
+ providers: {
407
+ cox: { channelSelector: "CW TV", url: "https://watchtv.cox.com/listings" },
408
+ directv: { channelSelector: "CW", url: "https://stream.directv.com" },
409
+ hulu: { channelSelector: "CW", url: "https://www.hulu.com/live" },
410
+ spectrum: { channelSelector: "CW", url: "https://watch.spectrum.net/guide" },
411
+ xfinity: { channelSelector: "CW TV", url: "https://www.xfinity.com/stream/listings" },
412
+ yttv: { channelSelector: "CW", url: "https://tv.youtube.com/live" },
413
+ },
414
+ },
415
+ discovery: {
416
+ name: "Discovery",
417
+ pacificStationId: "80399",
418
+ stationId: "56905",
419
+ providers: {
420
+ cox: { channelSelector: "Discovery Channel", url: "https://watchtv.cox.com/listings" },
421
+ directv: { channelSelector: "Discovery", url: "https://stream.directv.com" },
422
+ hulu: { channelSelector: "Discovery", url: "https://www.hulu.com/live" },
423
+ site: { url: "https://watch.foodnetwork.com/channel/discovery" },
424
+ sling: { channelSelector: "Discovery", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
425
+ spectrum: { channelSelector: "Discovery Channel", url: "https://watch.spectrum.net/guide" },
426
+ xfinity: { channelSelector: "Discovery Channel", url: "https://www.xfinity.com/stream/listings" },
427
+ yttv: { channelSelector: "Discovery Channel", url: "https://tv.youtube.com/live" },
428
+ },
429
+ },
430
+ discoverylife: {
431
+ name: "Discovery Life",
432
+ stationId: "92204",
433
+ providers: {
434
+ cox: { channelSelector: "Discovery Life", url: "https://watchtv.cox.com/listings" },
435
+ directv: { channelSelector: "Discovery Life", url: "https://stream.directv.com" },
436
+ site: { url: "https://watch.foodnetwork.com/channel/discovery-life" },
437
+ spectrum: { channelSelector: "Discovery Life", url: "https://watch.spectrum.net/guide" },
438
+ xfinity: { channelSelector: "Discovery Life", url: "https://www.xfinity.com/stream/listings" },
439
+ },
440
+ },
441
+ discoveryturbo: {
442
+ name: "Discovery Turbo",
443
+ stationId: "31046",
444
+ providers: {
445
+ cox: { channelSelector: "Discovery Turbo", url: "https://watchtv.cox.com/listings" },
446
+ directv: { channelSelector: "Discovery Turbo", url: "https://stream.directv.com" },
447
+ hulu: { channelSelector: "Discovery Turbo", url: "https://www.hulu.com/live" },
448
+ site: { url: "https://watch.foodnetwork.com/channel/motortrend" },
449
+ sling: { channelSelector: "Discovery Turbo", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
450
+ spectrum: { channelSelector: "Discovery Turbo", url: "https://watch.spectrum.net/guide" },
451
+ xfinity: { channelSelector: "Discovery Turbo", url: "https://www.xfinity.com/stream/listings" },
452
+ yttv: { channelSelector: "Discovery Turbo", url: "https://tv.youtube.com/live" },
453
+ },
454
+ },
455
+ disney: {
456
+ name: "Disney",
457
+ pacificStationId: "63320",
458
+ stationId: "59684",
459
+ providers: {
460
+ cox: { channelSelector: "Disney Channel", url: "https://watchtv.cox.com/listings" },
461
+ directv: { channelSelector: "Disney Channel", url: "https://stream.directv.com" },
462
+ hulu: { channelSelector: "Disney Channel", url: "https://www.hulu.com/live" },
463
+ site: { url: "https://disneynow.com/watch-live?brand=004" },
464
+ sling: { channelSelector: "Disney Channel", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
465
+ spectrum: { channelSelector: "Disney Channel", url: "https://watch.spectrum.net/guide" },
466
+ xfinity: { channelSelector: "Disney Channel", url: "https://www.xfinity.com/stream/listings" },
467
+ yttv: { channelSelector: "Disney Channel", url: "https://tv.youtube.com/live" },
468
+ },
469
+ },
470
+ disneyjr: {
471
+ name: "Disney Jr.",
472
+ pacificStationId: "75004",
473
+ stationId: "74885",
474
+ providers: {
475
+ cox: { channelSelector: "Disney Jr.", url: "https://watchtv.cox.com/listings" },
476
+ directv: { channelSelector: "Disney Junior", url: "https://stream.directv.com" },
477
+ hulu: { channelSelector: "Disney Junior", url: "https://www.hulu.com/live" },
478
+ site: { url: "https://disneynow.com/watch-live?brand=008" },
479
+ spectrum: { channelSelector: "Disney Junior", url: "https://watch.spectrum.net/guide" },
480
+ xfinity: { channelSelector: "Disney Jr.", url: "https://www.xfinity.com/stream/listings" },
481
+ yttv: { channelSelector: "Disney Junior", url: "https://tv.youtube.com/live" },
482
+ },
483
+ },
484
+ disneyxd: {
485
+ name: "Disney XD",
486
+ pacificStationId: "63322",
487
+ stationId: "60006",
488
+ providers: {
489
+ cox: { channelSelector: "Disney XD", url: "https://watchtv.cox.com/listings" },
490
+ hulu: { channelSelector: "Disney XD", url: "https://www.hulu.com/live" },
491
+ site: { url: "https://disneynow.com/watch-live?brand=009" },
492
+ spectrum: { channelSelector: "Disney XD", url: "https://watch.spectrum.net/guide" },
493
+ xfinity: { channelSelector: "Disney XD", url: "https://www.xfinity.com/stream/listings" },
494
+ yttv: { channelSelector: "Disney XD", url: "https://tv.youtube.com/live" },
495
+ },
496
+ },
497
+ e: {
498
+ name: "E!",
499
+ stationId: "61812",
500
+ providers: {
501
+ cox: { channelSelector: "E!", url: "https://watchtv.cox.com/listings" },
502
+ directv: { channelSelector: "E!", url: "https://stream.directv.com" },
503
+ hulu: { channelSelector: "E!", url: "https://www.hulu.com/live" },
504
+ site: { channelSelector: "E-_East", url: "https://www.usanetwork.com/live" },
505
+ sling: { channelSelector: "E!", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
506
+ spectrum: { channelSelector: "E!", url: "https://watch.spectrum.net/guide" },
507
+ xfinity: { channelSelector: "E!", url: "https://www.xfinity.com/stream/listings" },
508
+ yttv: { channelSelector: "E!", url: "https://tv.youtube.com/live" },
509
+ },
510
+ },
511
+ ep: {
512
+ name: "E! (Pacific)",
513
+ stationId: "91579",
514
+ providers: {
515
+ site: { channelSelector: "E-_West", url: "https://www.usanetwork.com/live" },
516
+ },
517
+ },
518
+ espn: {
519
+ name: "ESPN",
520
+ stationId: "32645",
521
+ providers: {
522
+ cox: { channelSelector: "ESPN", url: "https://watchtv.cox.com/listings" },
523
+ directv: { channelSelector: "ESPN", url: "https://stream.directv.com" },
524
+ disneyplus: { channelSelector: "poster_linear_espn_none", url: "https://www.disneyplus.com/browse/live" },
525
+ hulu: { channelSelector: "ESPN", url: "https://www.hulu.com/live" },
526
+ site: { url: "https://www.espn.com/watch/player?network=espn" },
527
+ sling: { channelSelector: "ESPN", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
528
+ spectrum: { channelSelector: "ESPN", url: "https://watch.spectrum.net/guide" },
529
+ xfinity: { channelSelector: "ESPN", url: "https://www.xfinity.com/stream/listings" },
530
+ yttv: { channelSelector: "ESPN", url: "https://tv.youtube.com/live" },
531
+ },
532
+ },
533
+ espn2: {
534
+ name: "ESPN2",
535
+ stationId: "45507",
536
+ providers: {
537
+ cox: { channelSelector: "ES2HD", url: "https://watchtv.cox.com/listings" },
538
+ directv: { channelSelector: "ESPN2", url: "https://stream.directv.com" },
539
+ disneyplus: { channelSelector: "poster_linear_espn2_none", url: "https://www.disneyplus.com/browse/live" },
540
+ hulu: { channelSelector: "ESPN2", url: "https://www.hulu.com/live" },
541
+ site: { url: "https://www.espn.com/watch/player?network=espn2" },
542
+ sling: { channelSelector: "ESPN2", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
543
+ spectrum: { channelSelector: "ESPN2", url: "https://watch.spectrum.net/guide" },
544
+ xfinity: { channelSelector: "ES2HD", url: "https://www.xfinity.com/stream/listings" },
545
+ yttv: { channelSelector: "ESPN2", url: "https://tv.youtube.com/live" },
546
+ },
547
+ },
548
+ espnacc: {
549
+ name: "ACC Network",
550
+ stationId: "111871",
551
+ providers: {
552
+ cox: { channelSelector: "ACC Network", url: "https://watchtv.cox.com/listings" },
553
+ directv: { channelSelector: "ACC Network", url: "https://stream.directv.com" },
554
+ disneyplus: { channelSelector: "poster_linear_acc-network_none", url: "https://www.disneyplus.com/browse/live" },
555
+ hulu: { channelSelector: "ACC Network", url: "https://www.hulu.com/live" },
556
+ site: { url: "https://www.espn.com/watch/player?network=acc" },
557
+ spectrum: { channelSelector: "ACC Network", url: "https://watch.spectrum.net/guide" },
558
+ xfinity: { channelSelector: "ACC Network", url: "https://www.xfinity.com/stream/listings" },
559
+ yttv: { channelSelector: "ACC Network", url: "https://tv.youtube.com/live" },
560
+ },
561
+ },
562
+ espndeportes: {
563
+ name: "ESPN Deportes",
564
+ stationId: "71914",
565
+ providers: {
566
+ cox: { channelSelector: "ESPN Deportes", url: "https://watchtv.cox.com/listings" },
567
+ disneyplus: { channelSelector: "poster_linear_espn-deportes_none", url: "https://www.disneyplus.com/browse/live" },
568
+ site: { url: "https://www.espn.com/watch/player?network=espndeportes" },
569
+ spectrum: { channelSelector: "ESPN Deportes", url: "https://watch.spectrum.net/guide" },
570
+ xfinity: { channelSelector: "ESPN Deportes", url: "https://www.xfinity.com/stream/listings" },
571
+ yttv: { channelSelector: "ESPN Deportes", url: "https://tv.youtube.com/live" },
572
+ },
573
+ },
574
+ espnews: {
575
+ name: "ESPNews",
576
+ stationId: "59976",
577
+ providers: {
578
+ cox: { channelSelector: "ESWHD", url: "https://watchtv.cox.com/listings" },
579
+ directv: { channelSelector: "ESPNews", url: "https://stream.directv.com" },
580
+ disneyplus: { channelSelector: "poster_linear_espnews_none", url: "https://www.disneyplus.com/browse/live" },
581
+ hulu: { channelSelector: "ESPNEWS", url: "https://www.hulu.com/live" },
582
+ site: { url: "https://www.espn.com/watch/player?network=espnews" },
583
+ spectrum: { channelSelector: "ESPNews", url: "https://watch.spectrum.net/guide" },
584
+ xfinity: { channelSelector: "ESWHD", url: "https://www.xfinity.com/stream/listings" },
585
+ yttv: { channelSelector: "ESPNEWS", url: "https://tv.youtube.com/live" },
586
+ },
587
+ },
588
+ espnsec: {
589
+ name: "SEC Network",
590
+ stationId: "89714",
591
+ providers: {
592
+ cox: { channelSelector: "SEC", url: "https://watchtv.cox.com/listings" },
593
+ directv: { channelSelector: "SEC Network", url: "https://stream.directv.com" },
594
+ disneyplus: { channelSelector: "poster_linear_sec-network_none", url: "https://www.disneyplus.com/browse/live" },
595
+ hulu: { channelSelector: "SEC Network", url: "https://www.hulu.com/live" },
596
+ site: { url: "https://www.espn.com/watch/player?network=sec" },
597
+ spectrum: { channelSelector: "SEC Network", url: "https://watch.spectrum.net/guide" },
598
+ xfinity: { channelSelector: "SEC", url: "https://www.xfinity.com/stream/listings" },
599
+ yttv: { channelSelector: "SEC Network", url: "https://tv.youtube.com/live" },
600
+ },
601
+ },
602
+ espnu: {
603
+ name: "ESPNU",
604
+ stationId: "60696",
605
+ providers: {
606
+ cox: { channelSelector: "ESPNU", url: "https://watchtv.cox.com/listings" },
607
+ directv: { channelSelector: "ESPNU", url: "https://stream.directv.com" },
608
+ disneyplus: { channelSelector: "poster_linear_espnu_none", url: "https://www.disneyplus.com/browse/live" },
609
+ hulu: { channelSelector: "ESPNU", url: "https://www.hulu.com/live" },
610
+ site: { url: "https://www.espn.com/watch/player?network=espnu" },
611
+ spectrum: { channelSelector: "ESPNU", url: "https://watch.spectrum.net/guide" },
612
+ xfinity: { channelSelector: "ESPNU", url: "https://www.xfinity.com/stream/listings" },
613
+ yttv: { channelSelector: "ESPNU", url: "https://tv.youtube.com/live" },
614
+ },
615
+ },
616
+ fbc: {
617
+ name: "Fox Business",
618
+ stationId: "58718",
619
+ providers: {
620
+ cox: { channelSelector: "Fox Business", url: "https://watchtv.cox.com/listings" },
621
+ directv: { channelSelector: "Fox Business Network", url: "https://stream.directv.com" },
622
+ foxone: { channelSelector: "FBN", url: "https://www.fox.com/live/channels" },
623
+ hulu: { channelSelector: "Fox Business", url: "https://www.hulu.com/live" },
624
+ site: { url: "https://www.foxbusiness.com/video/5640669329001" },
625
+ spectrum: { channelSelector: "Fox Business Network", url: "https://watch.spectrum.net/guide" },
626
+ xfinity: { channelSelector: "Fox Business", url: "https://www.xfinity.com/stream/listings" },
627
+ yttv: { channelSelector: "Fox Business", url: "https://tv.youtube.com/live" },
628
+ },
629
+ },
630
+ fnc: {
631
+ name: "Fox News",
632
+ stationId: "60179",
633
+ providers: {
634
+ cox: { channelSelector: "Fox News", url: "https://watchtv.cox.com/listings" },
635
+ directv: { channelSelector: "Fox News Channel", url: "https://stream.directv.com" },
636
+ foxone: { channelSelector: "FNC", url: "https://www.fox.com/live/channels" },
637
+ hulu: { channelSelector: "Fox News", url: "https://www.hulu.com/live" },
638
+ site: { url: "https://www.foxnews.com/video/5614615980001" },
639
+ sling: { channelSelector: "Fox News", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
640
+ spectrum: { channelSelector: "Fox News Channel", url: "https://watch.spectrum.net/guide" },
641
+ xfinity: { channelSelector: "Fox News", url: "https://www.xfinity.com/stream/listings" },
642
+ yttv: { channelSelector: "Fox News", url: "https://tv.youtube.com/live" },
643
+ },
644
+ },
645
+ food: {
646
+ name: "Food Network",
647
+ pacificStationId: "82119",
648
+ stationId: "50747",
649
+ providers: {
650
+ cox: { channelSelector: "Food Network", url: "https://watchtv.cox.com/listings" },
651
+ directv: { channelSelector: "Food Network", url: "https://stream.directv.com" },
652
+ hulu: { channelSelector: "Food Network", url: "https://www.hulu.com/live" },
653
+ site: { url: "https://watch.foodnetwork.com/channel/food-network" },
654
+ sling: { channelSelector: "Food Network", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
655
+ spectrum: { channelSelector: "Food Network", url: "https://watch.spectrum.net/guide" },
656
+ xfinity: { channelSelector: "Food Network", url: "https://www.xfinity.com/stream/listings" },
657
+ yttv: { channelSelector: "Food Network", url: "https://tv.youtube.com/live" },
658
+ },
659
+ },
660
+ fox: {
661
+ name: "Fox",
662
+ providers: {
663
+ cox: { channelSelector: "Fox", url: "https://watchtv.cox.com/listings" },
664
+ directv: { channelSelector: "FOX", url: "https://stream.directv.com" },
665
+ foxone: { channelSelector: "FOXD2C", url: "https://www.fox.com/live/channels" },
666
+ hulu: { channelSelector: "Fox", url: "https://www.hulu.com/live" },
667
+ sling: { channelSelector: "FOX", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
668
+ spectrum: { channelSelector: "FOX", url: "https://watch.spectrum.net/guide" },
669
+ xfinity: { channelSelector: "Fox", url: "https://www.xfinity.com/stream/listings" },
670
+ yttv: { channelSelector: "FOX", url: "https://tv.youtube.com/live" },
671
+ },
672
+ },
673
+ foxdeportes: {
674
+ name: "Fox Deportes",
675
+ stationId: "72189",
676
+ providers: {
677
+ cox: { channelSelector: "Fox Deportes", url: "https://watchtv.cox.com/listings" },
678
+ foxone: { channelSelector: "FOXD", url: "https://www.fox.com/live/channels" },
679
+ site: { url: "https://www.foxsports.com/live/foxdep" },
680
+ spectrum: { channelSelector: "FOX Deportes", url: "https://watch.spectrum.net/guide" },
681
+ xfinity: { channelSelector: "Fox Deportes", url: "https://www.xfinity.com/stream/listings" },
682
+ yttv: { channelSelector: "Fox Deportes", url: "https://tv.youtube.com/live" },
683
+ },
684
+ },
685
+ foxsoccerplus: {
686
+ name: "Fox Soccer Plus",
687
+ stationId: "66879",
688
+ providers: {
689
+ site: { url: "https://www.foxsports.com/live/fsp" },
690
+ yttv: { channelSelector: "FOX Soccer Plus", url: "https://tv.youtube.com/live" },
691
+ },
692
+ },
693
+ france24: {
694
+ name: "France 24",
695
+ stationId: "60961",
696
+ providers: {
697
+ site: { url: "https://www.france24.com/en/live" },
698
+ sling: { channelSelector: "France 24 (English)", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
699
+ },
700
+ },
701
+ france24fr: {
702
+ name: "France 24 (French)",
703
+ stationId: "58685",
704
+ providers: {
705
+ site: { url: "https://www.france24.com/fr/direct" },
706
+ sling: { channelSelector: "France 24", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
707
+ },
708
+ },
709
+ freeform: {
710
+ name: "Freeform",
711
+ stationId: "59615",
712
+ providers: {
713
+ cox: { channelSelector: "Freeform", url: "https://watchtv.cox.com/listings" },
714
+ directv: { channelSelector: "Freeform HD", url: "https://stream.directv.com" },
715
+ hulu: { channelSelector: "Freeform", url: "https://www.hulu.com/live" },
716
+ site: { url: "https://www.freeform.com/watch-live/885c669e-fa9a-4039-b42e-6c85c90cc86d" },
717
+ spectrum: { channelSelector: "Freeform", url: "https://watch.spectrum.net/guide" },
718
+ xfinity: { channelSelector: "Freeform", url: "https://www.xfinity.com/stream/listings" },
719
+ yttv: { channelSelector: "Freeform", url: "https://tv.youtube.com/live" },
720
+ },
721
+ },
722
+ freeformp: {
723
+ name: "Freeform (Pacific)",
724
+ stationId: "63324",
725
+ providers: {
726
+ site: { url: "https://www.freeform.com/watch-live/3507c750-e86a-4c0f-8ff4-dd23c4859009" },
727
+ },
728
+ },
729
+ fs1: {
730
+ name: "FS1",
731
+ stationId: "82547",
732
+ providers: {
733
+ cox: { channelSelector: "FOX Sports 1", url: "https://watchtv.cox.com/listings" },
734
+ directv: { channelSelector: "FOX Sports 1", url: "https://stream.directv.com" },
735
+ foxone: { channelSelector: "FS1", url: "https://www.fox.com/live/channels" },
736
+ hulu: { channelSelector: "FS1", url: "https://www.hulu.com/live" },
737
+ site: { url: "https://www.foxsports.com/live/fs1" },
738
+ sling: { channelSelector: "FOX Sports 1", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
739
+ spectrum: { channelSelector: "FS1", url: "https://watch.spectrum.net/guide" },
740
+ xfinity: { channelSelector: "FOX Sports 1", url: "https://www.xfinity.com/stream/listings" },
741
+ yttv: { channelSelector: "FS1", url: "https://tv.youtube.com/live" },
742
+ },
743
+ },
744
+ fs2: {
745
+ name: "FS2",
746
+ stationId: "59305",
747
+ providers: {
748
+ cox: { channelSelector: "FOX Sports 2", url: "https://watchtv.cox.com/listings" },
749
+ directv: { channelSelector: "FOX Sports 2", url: "https://stream.directv.com" },
750
+ foxone: { channelSelector: "FS2", url: "https://www.fox.com/live/channels" },
751
+ hulu: { channelSelector: "FS2", url: "https://www.hulu.com/live" },
752
+ site: { url: "https://www.foxsports.com/live/fs2" },
753
+ spectrum: { channelSelector: "Fox Sports 2", url: "https://watch.spectrum.net/guide" },
754
+ xfinity: { channelSelector: "FOX Sports 2", url: "https://www.xfinity.com/stream/listings" },
755
+ yttv: { channelSelector: "FS2", url: "https://tv.youtube.com/live" },
756
+ },
757
+ },
758
+ fx: {
759
+ name: "FX",
760
+ stationId: "58574",
761
+ providers: {
762
+ cox: { channelSelector: "FX", url: "https://watchtv.cox.com/listings" },
763
+ directv: { channelSelector: "FX", url: "https://stream.directv.com" },
764
+ hulu: { channelSelector: "FX", url: "https://www.hulu.com/live" },
765
+ site: { url: "https://abc.com/watch-live/93256af4-5e80-4558-aa2e-2bdfffa119a0" },
766
+ sling: { channelSelector: "FX", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
767
+ spectrum: { channelSelector: "FX", url: "https://watch.spectrum.net/guide" },
768
+ xfinity: { channelSelector: "FX", url: "https://www.xfinity.com/stream/listings" },
769
+ yttv: { channelSelector: "FX", url: "https://tv.youtube.com/live" },
770
+ },
771
+ },
772
+ fxm: {
773
+ name: "FXM",
774
+ pacificStationId: "98488",
775
+ stationId: "70253",
776
+ providers: {
777
+ cox: { channelSelector: "FXM", url: "https://watchtv.cox.com/listings" },
778
+ directv: { channelSelector: "FX Movie Channel", url: "https://stream.directv.com" },
779
+ hulu: { channelSelector: "FXM", url: "https://www.hulu.com/live" },
780
+ site: { url: "https://abc.com/watch-live/d298ab7e-c6b1-4efa-ac6e-a52dceed92ee" },
781
+ spectrum: { channelSelector: "FXM", url: "https://watch.spectrum.net/guide" },
782
+ xfinity: { channelSelector: "FXM", url: "https://www.xfinity.com/stream/listings" },
783
+ yttv: { channelSelector: "FXM", url: "https://tv.youtube.com/live" },
784
+ },
785
+ },
786
+ fxp: {
787
+ name: "FX (Pacific)",
788
+ stationId: "59814",
789
+ providers: {
790
+ site: { url: "https://abc.com/watch-live/2cee3401-f63b-42d0-b32e-962fef610b9e" },
791
+ },
792
+ },
793
+ fxx: {
794
+ name: "FXX",
795
+ stationId: "66379",
796
+ providers: {
797
+ cox: { channelSelector: "FXX", url: "https://watchtv.cox.com/listings" },
798
+ directv: { channelSelector: "FXX", url: "https://stream.directv.com" },
799
+ hulu: { channelSelector: "FXX", url: "https://www.hulu.com/live" },
800
+ site: { url: "https://abc.com/watch-live/49f4a471-8d36-4728-8457-ea65cbbc84ea" },
801
+ spectrum: { channelSelector: "FXX", url: "https://watch.spectrum.net/guide" },
802
+ xfinity: { channelSelector: "FXX", url: "https://www.xfinity.com/stream/listings" },
803
+ yttv: { channelSelector: "FXX", url: "https://tv.youtube.com/live" },
804
+ },
805
+ },
806
+ fxxp: {
807
+ name: "FXX (Pacific)",
808
+ stationId: "82571",
809
+ providers: {
810
+ site: { url: "https://abc.com/watch-live/e4c83395-62ed-4a49-829a-c55ab3c33e7d" },
811
+ },
812
+ },
813
+ fyi: {
814
+ name: "FYI",
815
+ pacificStationId: "92372",
816
+ stationId: "58988",
817
+ providers: {
818
+ cox: { channelSelector: "FYI", url: "https://watchtv.cox.com/listings" },
819
+ directv: { channelSelector: "FYI", url: "https://stream.directv.com" },
820
+ hulu: { channelSelector: "FYI", url: "https://www.hulu.com/live" },
821
+ site: { url: "https://play.fyi.tv/live" },
822
+ spectrum: { channelSelector: "FYI", url: "https://watch.spectrum.net/guide" },
823
+ xfinity: { channelSelector: "FYI", url: "https://www.xfinity.com/stream/listings" },
824
+ },
825
+ },
826
+ gameshow: {
827
+ name: "Game Show Network",
828
+ pacificStationId: "90210",
829
+ stationId: "68827",
830
+ providers: {
831
+ cox: { channelSelector: "Game Show Network", url: "https://watchtv.cox.com/listings" },
832
+ directv: { channelSelector: "GSN HD", url: "https://stream.directv.com" },
833
+ hulu: { channelSelector: "Game Show Network", url: "https://www.hulu.com/live" },
834
+ spectrum: { channelSelector: "Game Show Network", url: "https://watch.spectrum.net/guide" },
835
+ xfinity: { channelSelector: "Game Show Network", url: "https://www.xfinity.com/stream/listings" },
836
+ yttv: { channelSelector: "Game Show Network", url: "https://tv.youtube.com/live" },
837
+ },
838
+ },
839
+ golf: {
840
+ name: "Golf",
841
+ stationId: "61854",
842
+ providers: {
843
+ cox: { channelSelector: "Golf Channel", url: "https://watchtv.cox.com/listings" },
844
+ directv: { channelSelector: "Golf Channel", url: "https://stream.directv.com" },
845
+ hulu: { channelSelector: "Golf Channel", url: "https://www.hulu.com/live" },
846
+ site: { url: "https://www.golfchannel.com/watch/live" },
847
+ spectrum: { channelSelector: "Golf Channel", url: "https://watch.spectrum.net/guide" },
848
+ usa: { channelSelector: "gc", url: "https://www.usanetwork.com/live" },
849
+ xfinity: { channelSelector: "Golf Channel", url: "https://www.xfinity.com/stream/listings" },
850
+ yttv: { channelSelector: "Golf Channel", url: "https://tv.youtube.com/live" },
851
+ },
852
+ },
853
+ hallmark: {
854
+ name: "Hallmark",
855
+ pacificStationId: "66415",
856
+ stationId: "66268",
857
+ providers: {
858
+ cox: { channelSelector: "Hallmark Channel", url: "https://watchtv.cox.com/listings" },
859
+ directv: { channelSelector: "Hallmark Channel", url: "https://stream.directv.com" },
860
+ hulu: { channelSelector: "Hallmark Channel", url: "https://www.hulu.com/live" },
861
+ spectrum: { channelSelector: "Hallmark Channel", url: "https://watch.spectrum.net/guide" },
862
+ xfinity: { channelSelector: "Hallmark Channel", url: "https://www.xfinity.com/stream/listings" },
863
+ yttv: { channelSelector: "Hallmark Channel", url: "https://tv.youtube.com/live" },
864
+ },
865
+ },
866
+ hallmarkfamily: {
867
+ name: "Hallmark Family",
868
+ stationId: "105723",
869
+ providers: {
870
+ cox: { channelSelector: "HFM", url: "https://watchtv.cox.com/listings" },
871
+ spectrum: { channelSelector: "Hallmark Family", url: "https://watch.spectrum.net/guide" },
872
+ xfinity: { channelSelector: "HFM", url: "https://www.xfinity.com/stream/listings" },
873
+ yttv: { channelSelector: "Hallmark Family", url: "https://tv.youtube.com/live" },
874
+ },
875
+ },
876
+ hallmarkmystery: {
877
+ name: "Hallmark Mystery",
878
+ pacificStationId: "66412",
879
+ stationId: "46710",
880
+ providers: {
881
+ cox: { channelSelector: "HMYS", url: "https://watchtv.cox.com/listings" },
882
+ hulu: { channelSelector: "Hallmark Mystery", url: "https://www.hulu.com/live" },
883
+ spectrum: { channelSelector: "Hallmark Mystery", url: "https://watch.spectrum.net/guide" },
884
+ xfinity: { channelSelector: "HMYS", url: "https://www.xfinity.com/stream/listings" },
885
+ yttv: { channelSelector: "Hallmark Mystery", url: "https://tv.youtube.com/live" },
886
+ },
887
+ },
888
+ hbo: {
889
+ name: "HBO",
890
+ stationId: "19548",
891
+ providers: {
892
+ cox: { channelSelector: "HBO", url: "https://watchtv.cox.com/listings" },
893
+ site: { channelSelector: "HBO", url: "https://play.hbomax.com" },
894
+ xfinity: { channelSelector: "HBO", url: "https://www.xfinity.com/stream/listings" },
895
+ yttv: { channelSelector: "HBO East", url: "https://tv.youtube.com/live" },
896
+ },
897
+ },
898
+ hbocomedy: {
899
+ name: "HBO Comedy",
900
+ stationId: "59839",
901
+ providers: {
902
+ cox: { channelSelector: "HBOCH", url: "https://watchtv.cox.com/listings" },
903
+ site: { channelSelector: "HBO Comedy", url: "https://play.hbomax.com" },
904
+ xfinity: { channelSelector: "HBOCH", url: "https://www.xfinity.com/stream/listings" },
905
+ yttv: { channelSelector: "HBO Comedy East", url: "https://tv.youtube.com/live" },
906
+ },
907
+ },
908
+ hbodrama: {
909
+ name: "HBO Drama",
910
+ stationId: "59363",
911
+ providers: {
912
+ cox: { channelSelector: "HBOSH", url: "https://watchtv.cox.com/listings" },
913
+ site: { channelSelector: "HBO Drama", url: "https://play.hbomax.com" },
914
+ xfinity: { channelSelector: "HBOSH", url: "https://www.xfinity.com/stream/listings" },
915
+ yttv: { channelSelector: "HBO Drama East", url: "https://tv.youtube.com/live" },
916
+ },
917
+ },
918
+ hbohits: {
919
+ name: "HBO Hits",
920
+ stationId: "59368",
921
+ providers: {
922
+ cox: { channelSelector: "HBO2H", url: "https://watchtv.cox.com/listings" },
923
+ site: { channelSelector: "HBO Hits", url: "https://play.hbomax.com" },
924
+ xfinity: { channelSelector: "HBO2H", url: "https://www.xfinity.com/stream/listings" },
925
+ yttv: { channelSelector: "HBO Hits East", url: "https://tv.youtube.com/live" },
926
+ },
927
+ },
928
+ hbomovies: {
929
+ name: "HBO Movies",
930
+ stationId: "59845",
931
+ providers: {
932
+ cox: { channelSelector: "HBOZH", url: "https://watchtv.cox.com/listings" },
933
+ site: { channelSelector: "HBO Movies", url: "https://play.hbomax.com" },
934
+ xfinity: { channelSelector: "HBOZH", url: "https://www.xfinity.com/stream/listings" },
935
+ yttv: { channelSelector: "HBO Movies East", url: "https://tv.youtube.com/live" },
936
+ },
937
+ },
938
+ hgtv: {
939
+ name: "HGTV",
940
+ pacificStationId: "87317",
941
+ stationId: "49788",
942
+ providers: {
943
+ cox: { channelSelector: "HGTV", url: "https://watchtv.cox.com/listings" },
944
+ directv: { channelSelector: "HGTV", url: "https://stream.directv.com" },
945
+ hulu: { channelSelector: "HGTV", url: "https://www.hulu.com/live" },
946
+ site: { url: "https://watch.foodnetwork.com/channel/hgtv" },
947
+ sling: { channelSelector: "HGTV", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
948
+ spectrum: { channelSelector: "HGTV", url: "https://watch.spectrum.net/guide" },
949
+ xfinity: { channelSelector: "HGTV", url: "https://www.xfinity.com/stream/listings" },
950
+ yttv: { channelSelector: "HGTV", url: "https://tv.youtube.com/live" },
951
+ },
952
+ },
953
+ history: {
954
+ name: "History",
955
+ pacificStationId: "88545",
956
+ stationId: "57708",
957
+ providers: {
958
+ cox: { channelSelector: "History", url: "https://watchtv.cox.com/listings" },
959
+ directv: { channelSelector: "HISTORY", url: "https://stream.directv.com" },
960
+ hulu: { channelSelector: "The HISTORY Channel", url: "https://www.hulu.com/live" },
961
+ site: { url: "https://play.history.com/live" },
962
+ sling: { channelSelector: "History", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
963
+ spectrum: { channelSelector: "History", url: "https://watch.spectrum.net/guide" },
964
+ xfinity: { channelSelector: "History", url: "https://www.xfinity.com/stream/listings" },
965
+ },
966
+ },
967
+ hln: {
968
+ name: "HLN",
969
+ stationId: "64549",
970
+ providers: {
971
+ cox: { channelSelector: "HLN", url: "https://watchtv.cox.com/listings" },
972
+ directv: { channelSelector: "HLN", url: "https://stream.directv.com" },
973
+ hulu: { channelSelector: "HLN", url: "https://www.hulu.com/live" },
974
+ site: { url: "https://www.cnn.com/videos/hln" },
975
+ sling: { channelSelector: "HLN", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
976
+ spectrum: { channelSelector: "HLN", url: "https://watch.spectrum.net/guide" },
977
+ xfinity: { channelSelector: "HLN", url: "https://www.xfinity.com/stream/listings" },
978
+ yttv: { channelSelector: "HLN", url: "https://tv.youtube.com/live" },
979
+ },
980
+ },
981
+ id: {
982
+ name: "Investigation Discovery",
983
+ pacificStationId: "80309",
984
+ stationId: "65342",
985
+ providers: {
986
+ cox: { channelSelector: "Investigation Discovery", url: "https://watchtv.cox.com/listings" },
987
+ directv: { channelSelector: "Investigation Discovery", url: "https://stream.directv.com" },
988
+ hulu: { channelSelector: "Investigation Discovery", url: "https://www.hulu.com/live" },
989
+ site: { url: "https://watch.foodnetwork.com/channel/investigation-discovery" },
990
+ sling: { channelSelector: "Investigation Discovery", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
991
+ spectrum: { channelSelector: "Investigation Discovery", url: "https://watch.spectrum.net/guide" },
992
+ xfinity: { channelSelector: "Investigation Discovery", url: "https://www.xfinity.com/stream/listings" },
993
+ yttv: { channelSelector: "ID", url: "https://tv.youtube.com/live" },
994
+ },
995
+ },
996
+ ifc: {
997
+ name: "IFC",
998
+ pacificStationId: "109735",
999
+ stationId: "59444",
1000
+ providers: {
1001
+ cox: { channelSelector: "IFC", url: "https://watchtv.cox.com/listings" },
1002
+ directv: { channelSelector: "IFC", url: "https://stream.directv.com" },
1003
+ sling: { channelSelector: "IFC", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1004
+ spectrum: { channelSelector: "IFC", url: "https://watch.spectrum.net/guide" },
1005
+ xfinity: { channelSelector: "IFC", url: "https://www.xfinity.com/stream/listings" },
1006
+ yttv: { channelSelector: "IFC", url: "https://tv.youtube.com/live" },
1007
+ },
1008
+ },
1009
+ indieplex: {
1010
+ name: "IndiePlex",
1011
+ stationId: "65795",
1012
+ providers: {
1013
+ hulu: { channelSelector: "IndiePlex (East)", url: "https://www.hulu.com/live" },
1014
+ sling: { channelSelector: "IndiePlex", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1015
+ spectrum: { channelSelector: "IndiePlex", url: "https://watch.spectrum.net/guide" },
1016
+ },
1017
+ },
1018
+ indieplexp: {
1019
+ name: "IndiePlex (Pacific)",
1020
+ stationId: "65796",
1021
+ providers: {
1022
+ hulu: { channelSelector: "IndiePlex (West)", url: "https://www.hulu.com/live" },
1023
+ },
1024
+ },
1025
+ lifetime: {
1026
+ name: "Lifetime",
1027
+ pacificStationId: "60250",
1028
+ stationId: "60150",
1029
+ providers: {
1030
+ cox: { channelSelector: "Lifetime", url: "https://watchtv.cox.com/listings" },
1031
+ directv: { channelSelector: "Lifetime", url: "https://stream.directv.com" },
1032
+ hulu: { channelSelector: "Lifetime", url: "https://www.hulu.com/live" },
1033
+ site: { url: "https://play.mylifetime.com/live" },
1034
+ sling: { channelSelector: "Lifetime", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1035
+ spectrum: { channelSelector: "Lifetime", url: "https://watch.spectrum.net/guide" },
1036
+ xfinity: { channelSelector: "Lifetime", url: "https://www.xfinity.com/stream/listings" },
1037
+ },
1038
+ },
1039
+ lmn: {
1040
+ name: "Lifetime Movie Network",
1041
+ pacificStationId: "92373",
1042
+ stationId: "55887",
1043
+ providers: {
1044
+ cox: { channelSelector: "Lifetime Movies", url: "https://watchtv.cox.com/listings" },
1045
+ directv: { channelSelector: "Lifetime Movie Network", url: "https://stream.directv.com" },
1046
+ hulu: { channelSelector: "LMN", url: "https://www.hulu.com/live" },
1047
+ spectrum: { channelSelector: "LMN", url: "https://watch.spectrum.net/guide" },
1048
+ xfinity: { channelSelector: "Lifetime Movies", url: "https://www.xfinity.com/stream/listings" },
1049
+ },
1050
+ },
1051
+ magnolia: {
1052
+ name: "Magnolia Network",
1053
+ pacificStationId: "122081",
1054
+ stationId: "67375",
1055
+ providers: {
1056
+ cox: { channelSelector: "Magnolia Network", url: "https://watchtv.cox.com/listings" },
1057
+ directv: { channelSelector: "Magnolia Network", url: "https://stream.directv.com" },
1058
+ hulu: { channelSelector: "Magnolia Network", url: "https://www.hulu.com/live" },
1059
+ site: { url: "https://watch.foodnetwork.com/channel/magnolia-network-preview-atve-us" },
1060
+ spectrum: { channelSelector: "Magnolia Network", url: "https://watch.spectrum.net/guide" },
1061
+ xfinity: { channelSelector: "Magnolia Network", url: "https://www.xfinity.com/stream/listings" },
1062
+ yttv: { channelSelector: "Magnolia Network", url: "https://tv.youtube.com/live" },
1063
+ },
1064
+ },
1065
+ mgmplus: {
1066
+ name: "MGM+",
1067
+ pacificStationId: "95927",
1068
+ stationId: "65687",
1069
+ providers: {
1070
+ cox: { channelSelector: "MGM+", url: "https://watchtv.cox.com/listings" },
1071
+ directv: { channelSelector: "MGM+", url: "https://stream.directv.com" },
1072
+ xfinity: { channelSelector: "MGM+", url: "https://www.xfinity.com/stream/listings" },
1073
+ },
1074
+ },
1075
+ mlb: {
1076
+ name: "MLB Network",
1077
+ stationId: "62081",
1078
+ providers: {
1079
+ cox: { channelSelector: "MLB Network", url: "https://watchtv.cox.com/listings" },
1080
+ directv: { channelSelector: "MLB Network", url: "https://stream.directv.com" },
1081
+ hulu: { channelSelector: "MLB Network", url: "https://www.hulu.com/live" },
1082
+ spectrum: { channelSelector: "MLB Network", url: "https://watch.spectrum.net/guide" },
1083
+ xfinity: { channelSelector: "MLB Network", url: "https://www.xfinity.com/stream/listings" },
1084
+ },
1085
+ },
1086
+ movieplex: {
1087
+ name: "MoviePlex",
1088
+ stationId: "83075",
1089
+ providers: {
1090
+ hulu: { channelSelector: "MoviePlex (East)", url: "https://www.hulu.com/live" },
1091
+ sling: { channelSelector: "MoviePlex", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1092
+ spectrum: { channelSelector: "Movieplex", url: "https://watch.spectrum.net/guide" },
1093
+ },
1094
+ },
1095
+ movieplexp: {
1096
+ name: "MoviePlex (Pacific)",
1097
+ stationId: "105963",
1098
+ providers: {
1099
+ hulu: { channelSelector: "MoviePlex (West)", url: "https://www.hulu.com/live" },
1100
+ },
1101
+ },
1102
+ msg: {
1103
+ name: "MSG",
1104
+ stationId: "35402",
1105
+ providers: {
1106
+ directv: { channelSelector: "MSG", url: "https://stream.directv.com" },
1107
+ },
1108
+ },
1109
+ msgsn: {
1110
+ name: "MSG Sportsnet",
1111
+ stationId: "35383",
1112
+ providers: {
1113
+ directv: { channelSelector: "MSG Sportsnet HD 635", url: "https://stream.directv.com" },
1114
+ },
1115
+ },
1116
+ msnow: {
1117
+ name: "MS NOW",
1118
+ stationId: "64241",
1119
+ providers: {
1120
+ cox: { channelSelector: "MS NOW", url: "https://watchtv.cox.com/listings" },
1121
+ directv: { channelSelector: "MS Now", url: "https://stream.directv.com" },
1122
+ hulu: { channelSelector: "MS NOW", url: "https://www.hulu.com/live" },
1123
+ site: { url: "https://www.ms.now/live" },
1124
+ sling: { channelSelector: "MS NOW", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1125
+ spectrum: { channelSelector: "MS NOW", url: "https://watch.spectrum.net/guide" },
1126
+ usa: { channelSelector: "image-23", url: "https://www.usanetwork.com/live" },
1127
+ xfinity: { channelSelector: "MS NOW", url: "https://www.xfinity.com/stream/listings" },
1128
+ yttv: { channelSelector: "MS NOW", url: "https://tv.youtube.com/live" },
1129
+ },
1130
+ },
1131
+ mtv: {
1132
+ name: "MTV",
1133
+ pacificStationId: "64630",
1134
+ stationId: "60964",
1135
+ providers: {
1136
+ cox: { channelSelector: "MTV", url: "https://watchtv.cox.com/listings" },
1137
+ directv: { channelSelector: "MTV", url: "https://stream.directv.com" },
1138
+ hulu: { channelSelector: "MTV", url: "https://www.hulu.com/live" },
1139
+ spectrum: { channelSelector: "MTV", url: "https://watch.spectrum.net/guide" },
1140
+ xfinity: { channelSelector: "MTV", url: "https://www.xfinity.com/stream/listings" },
1141
+ yttv: { channelSelector: "MTV", url: "https://tv.youtube.com/live" },
1142
+ },
1143
+ },
1144
+ mtv2: {
1145
+ name: "MTV2",
1146
+ pacificStationId: "75506",
1147
+ stationId: "75077",
1148
+ providers: {
1149
+ cox: { channelSelector: "MTV2", url: "https://watchtv.cox.com/listings" },
1150
+ directv: { channelSelector: "MTV2", url: "https://stream.directv.com" },
1151
+ spectrum: { channelSelector: "MTV2", url: "https://watch.spectrum.net/guide" },
1152
+ xfinity: { channelSelector: "MTV2", url: "https://www.xfinity.com/stream/listings" },
1153
+ },
1154
+ },
1155
+ mtvclassic: {
1156
+ name: "MTV Classic",
1157
+ stationId: "92240",
1158
+ providers: {
1159
+ cox: { channelSelector: "MTV Classic", url: "https://watchtv.cox.com/listings" },
1160
+ directv: { channelSelector: "MTV Classic", url: "https://stream.directv.com" },
1161
+ spectrum: { channelSelector: "MTV Classic", url: "https://watch.spectrum.net/guide" },
1162
+ xfinity: { channelSelector: "MTV Classic", url: "https://www.xfinity.com/stream/listings" },
1163
+ },
1164
+ },
1165
+ natgeo: {
1166
+ name: "National Geographic",
1167
+ stationId: "49438",
1168
+ providers: {
1169
+ cox: { channelSelector: "Nat Geo", url: "https://watchtv.cox.com/listings" },
1170
+ directv: { channelSelector: "National Geographic Channel", url: "https://stream.directv.com" },
1171
+ hulu: { channelSelector: "National Geographic", url: "https://www.hulu.com/live" },
1172
+ site: { url: "https://www.nationalgeographic.com/tv/watch-live/0826a9a3-3384-4bb5-8841-91f01cb0e3a7" },
1173
+ sling: { channelSelector: "National Geographic", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1174
+ spectrum: { channelSelector: "National Geographic", url: "https://watch.spectrum.net/guide" },
1175
+ xfinity: { channelSelector: "Nat Geo", url: "https://www.xfinity.com/stream/listings" },
1176
+ yttv: { channelSelector: "Nat Geo", url: "https://tv.youtube.com/live" },
1177
+ },
1178
+ },
1179
+ natgeop: {
1180
+ name: "National Geographic (Pacific)",
1181
+ stationId: "71601",
1182
+ providers: {
1183
+ site: { url: "https://www.nationalgeographic.com/tv/watch-live/91456580-f32f-417c-8e1a-9f82640832a7" },
1184
+ },
1185
+ },
1186
+ natgeowild: {
1187
+ name: "Nat Geo Wild",
1188
+ stationId: "67331",
1189
+ providers: {
1190
+ cox: { channelSelector: "National Geographic WILD", url: "https://watchtv.cox.com/listings" },
1191
+ directv: { channelSelector: "Nat Geo WILD", url: "https://stream.directv.com" },
1192
+ hulu: { channelSelector: "Nat Geo WILD", url: "https://www.hulu.com/live" },
1193
+ site: { url: "https://www.nationalgeographic.com/tv/watch-live/239b9590-583f-4955-a499-22e9eefff9cf" },
1194
+ spectrum: { channelSelector: "NatGeo Wild", url: "https://watch.spectrum.net/guide" },
1195
+ xfinity: { channelSelector: "National Geographic WILD", url: "https://www.xfinity.com/stream/listings" },
1196
+ yttv: { channelSelector: "Nat Geo WILD", url: "https://tv.youtube.com/live" },
1197
+ },
1198
+ },
1199
+ nba: {
1200
+ name: "NBA TV",
1201
+ stationId: "45526",
1202
+ providers: {
1203
+ cox: { channelSelector: "NBA TV", url: "https://watchtv.cox.com/listings" },
1204
+ directv: { channelSelector: "NBA TV", url: "https://stream.directv.com" },
1205
+ site: { url: "https://www.nba.com/watch/nba-tv" },
1206
+ spectrum: { channelSelector: "NBA TV", url: "https://watch.spectrum.net/guide" },
1207
+ xfinity: { channelSelector: "NBA TV", url: "https://www.xfinity.com/stream/listings" },
1208
+ yttv: { channelSelector: "NBA TV", url: "https://tv.youtube.com/live" },
1209
+ },
1210
+ },
1211
+ nbc: {
1212
+ name: "NBC",
1213
+ providers: {
1214
+ cox: { channelSelector: "NBC", url: "https://watchtv.cox.com/listings" },
1215
+ directv: { channelSelector: "NBC", url: "https://stream.directv.com" },
1216
+ hulu: { channelSelector: "NBC", url: "https://www.hulu.com/live" },
1217
+ site: { url: "https://www.nbc.com/live?brand=nbc&callsign=nbc" },
1218
+ sling: { channelSelector: "NBC", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1219
+ spectrum: { channelSelector: "NBC", url: "https://watch.spectrum.net/guide" },
1220
+ xfinity: { channelSelector: "NBC", url: "https://www.xfinity.com/stream/listings" },
1221
+ yttv: { channelSelector: "NBC", url: "https://tv.youtube.com/live" },
1222
+ },
1223
+ },
1224
+ nbcnews: {
1225
+ name: "NBC News Now",
1226
+ stationId: "114174",
1227
+ providers: {
1228
+ cox: { channelSelector: "NBC News NOW", url: "https://watchtv.cox.com/listings" },
1229
+ directv: { channelSelector: "NBC News Now", url: "https://stream.directv.com" },
1230
+ hulu: { channelSelector: "NBC News NOW", url: "https://www.hulu.com/live" },
1231
+ site: { url: "https://www.nbc.com/live?brand=nbc-news&callsign=nbcnews" },
1232
+ sling: { channelSelector: "NBC News Now", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1233
+ xfinity: { channelSelector: "NBC News NOW", url: "https://www.xfinity.com/stream/listings" },
1234
+ yttv: { channelSelector: "NBC News NOW", url: "https://tv.youtube.com/live" },
1235
+ },
1236
+ },
1237
+ nbcsbayarea: {
1238
+ name: "NBC Sports Bay Area",
1239
+ stationId: "63138",
1240
+ providers: {
1241
+ site: { url: "https://www.nbc.com/live?brand=rsn-bay-area&callsign=nbcsbayarea" },
1242
+ },
1243
+ },
1244
+ nbcsboston: {
1245
+ name: "NBC Sports Boston",
1246
+ stationId: "49198",
1247
+ providers: {
1248
+ site: { url: "https://www.nbc.com/live?brand=rsn-boston&callsign=nbcsboston" },
1249
+ },
1250
+ },
1251
+ nbcscalifornia: {
1252
+ name: "NBC Sports California",
1253
+ stationId: "45540",
1254
+ providers: {
1255
+ site: { url: "https://www.nbc.com/live?brand=rsn-california&callsign=nbcscalifornia" },
1256
+ },
1257
+ },
1258
+ nbcsn: {
1259
+ name: "NBC Sports Network",
1260
+ stationId: "194412",
1261
+ providers: {
1262
+ yttv: { channelSelector: "NBC Sports Network", url: "https://tv.youtube.com/live" },
1263
+ },
1264
+ },
1265
+ nbcsphiladelphia: {
1266
+ name: "NBC Sports Philadelphia",
1267
+ stationId: "32571",
1268
+ providers: {
1269
+ site: { url: "https://www.nbc.com/live?brand=rsn-philadelphia&callsign=nbcsphiladelphia" },
1270
+ },
1271
+ },
1272
+ necn: {
1273
+ name: "NECN",
1274
+ stationId: "66278",
1275
+ providers: {
1276
+ site: { url: "https://www.nbc.com/live?brand=necn&callsign=necn" },
1277
+ },
1278
+ },
1279
+ nfl: {
1280
+ name: "NFL Network",
1281
+ stationId: "45399",
1282
+ providers: {
1283
+ cox: { channelSelector: "NFL Network", url: "https://watchtv.cox.com/listings" },
1284
+ directv: { channelSelector: "NFL Network", url: "https://stream.directv.com" },
1285
+ hulu: { channelSelector: "NFL Network", url: "https://www.hulu.com/live" },
1286
+ sling: { channelSelector: "NFL Network", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1287
+ spectrum: { channelSelector: "NFL Network", url: "https://watch.spectrum.net/guide" },
1288
+ xfinity: { channelSelector: "NFL Network", url: "https://www.xfinity.com/stream/listings" },
1289
+ yttv: { channelSelector: "NFL Network", url: "https://tv.youtube.com/live" },
1290
+ },
1291
+ },
1292
+ nhl: {
1293
+ name: "NHL Network",
1294
+ stationId: "58690",
1295
+ providers: {
1296
+ cox: { channelSelector: "NHL Network", url: "https://watchtv.cox.com/listings" },
1297
+ directv: { channelSelector: "NHL Network HD", url: "https://stream.directv.com" },
1298
+ spectrum: { channelSelector: "NHL Network", url: "https://watch.spectrum.net/guide" },
1299
+ xfinity: { channelSelector: "NHL Network", url: "https://www.xfinity.com/stream/listings" },
1300
+ },
1301
+ },
1302
+ own: {
1303
+ name: "OWN",
1304
+ stationId: "70388",
1305
+ providers: {
1306
+ cox: { channelSelector: "OWN", url: "https://watchtv.cox.com/listings" },
1307
+ directv: { channelSelector: "OWN", url: "https://stream.directv.com" },
1308
+ hulu: { channelSelector: "Oprah Winfrey Network", url: "https://www.hulu.com/live" },
1309
+ site: { url: "https://watch.foodnetwork.com/channel/own" },
1310
+ spectrum: { channelSelector: "OWN", url: "https://watch.spectrum.net/guide" },
1311
+ xfinity: { channelSelector: "OWN", url: "https://www.xfinity.com/stream/listings" },
1312
+ yttv: { channelSelector: "OWN", url: "https://tv.youtube.com/live" },
1313
+ },
1314
+ },
1315
+ oxygen: {
1316
+ name: "Oxygen",
1317
+ stationId: "70522",
1318
+ providers: {
1319
+ cox: { channelSelector: "Oxygen True Crime", url: "https://watchtv.cox.com/listings" },
1320
+ directv: { channelSelector: "Oxygen True Crime", url: "https://stream.directv.com" },
1321
+ hulu: { channelSelector: "Oxygen True Crime", url: "https://www.hulu.com/live" },
1322
+ site: { channelSelector: "Oxygen_East", url: "https://www.usanetwork.com/live" },
1323
+ spectrum: { channelSelector: "Oxygen", url: "https://watch.spectrum.net/guide" },
1324
+ xfinity: { channelSelector: "Oxygen True Crime", url: "https://www.xfinity.com/stream/listings" },
1325
+ yttv: { channelSelector: "Oxygen True Crime", url: "https://tv.youtube.com/live" },
1326
+ },
1327
+ },
1328
+ oxygenp: {
1329
+ name: "Oxygen (Pacific)",
1330
+ stationId: "74032",
1331
+ providers: {
1332
+ site: { channelSelector: "Oxygen_West", url: "https://www.usanetwork.com/live" },
1333
+ },
1334
+ },
1335
+ paramount: {
1336
+ name: "Paramount Network",
1337
+ stationId: "59186",
1338
+ providers: {
1339
+ cox: { channelSelector: "Paramount Network", url: "https://watchtv.cox.com/listings" },
1340
+ hulu: { channelSelector: "Paramount Network", url: "https://www.hulu.com/live" },
1341
+ spectrum: { channelSelector: "Paramount Network", url: "https://watch.spectrum.net/guide" },
1342
+ xfinity: { channelSelector: "Paramount Network", url: "https://www.xfinity.com/stream/listings" },
1343
+ yttv: { channelSelector: "Paramount", url: "https://tv.youtube.com/live" },
1344
+ },
1345
+ },
1346
+ paramountp: {
1347
+ name: "Paramount (Pacific)",
1348
+ stationId: "64593",
1349
+ providers: {
1350
+ yttv: { channelSelector: "Paramount Network", url: "https://tv.youtube.com/live" },
1351
+ },
1352
+ },
1353
+ pbs: {
1354
+ name: "PBS",
1355
+ providers: {
1356
+ cox: { channelSelector: "PBS", url: "https://watchtv.cox.com/listings" },
1357
+ directv: { channelSelector: "PBS", url: "https://stream.directv.com" },
1358
+ hulu: { channelSelector: "PBS", url: "https://www.hulu.com/live" },
1359
+ spectrum: { channelSelector: "PBS", url: "https://watch.spectrum.net/guide" },
1360
+ xfinity: { channelSelector: "PBS", url: "https://www.xfinity.com/stream/listings" },
1361
+ yttv: { channelSelector: "PBS", url: "https://tv.youtube.com/live" },
1362
+ },
1363
+ },
1364
+ pbschicago: {
1365
+ name: "PBS Chicago (WTTW)",
1366
+ stationId: "30415",
1367
+ providers: {
1368
+ hulu: { channelSelector: "PBS", url: "https://www.hulu.com/live" },
1369
+ site: { url: "https://www.wttw.com/wttw-live-stream" },
1370
+ },
1371
+ },
1372
+ pbslakeshore: {
1373
+ name: "PBS Lakeshore (WYIN)",
1374
+ stationId: "49237",
1375
+ providers: {
1376
+ hulu: { channelSelector: "Lakeshore PBS", url: "https://www.hulu.com/live" },
1377
+ site: { url: "https://video.lakeshorepbs.org/livestream" },
1378
+ },
1379
+ },
1380
+ retroplex: {
1381
+ name: "RetroPlex",
1382
+ stationId: "65791",
1383
+ providers: {
1384
+ hulu: { channelSelector: "RetroPlex (East)", url: "https://www.hulu.com/live" },
1385
+ sling: { channelSelector: "RetroPlex", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1386
+ spectrum: { channelSelector: "RetroPlex", url: "https://watch.spectrum.net/guide" },
1387
+ },
1388
+ },
1389
+ retroplexp: {
1390
+ name: "RetroPlex (Pacific)",
1391
+ stationId: "65793",
1392
+ providers: {
1393
+ hulu: { channelSelector: "RetroPlex (West)", url: "https://www.hulu.com/live" },
1394
+ },
1395
+ },
1396
+ science: {
1397
+ name: "Science",
1398
+ stationId: "57390",
1399
+ providers: {
1400
+ cox: { channelSelector: "Science Channel", url: "https://watchtv.cox.com/listings" },
1401
+ directv: { channelSelector: "Science", url: "https://stream.directv.com" },
1402
+ site: { url: "https://watch.foodnetwork.com/channel/science" },
1403
+ spectrum: { channelSelector: "Science", url: "https://watch.spectrum.net/guide" },
1404
+ xfinity: { channelSelector: "Science Channel", url: "https://www.xfinity.com/stream/listings" },
1405
+ },
1406
+ },
1407
+ showtime: {
1408
+ name: "Showtime",
1409
+ stationId: "91620",
1410
+ providers: {
1411
+ cox: { channelSelector: "PSHOh", url: "https://watchtv.cox.com/listings" },
1412
+ paramountplus: { url: "https://www.paramountplus.com/live-tv/stream/showtime-east" },
1413
+ xfinity: { channelSelector: "PSHOh", url: "https://www.xfinity.com/stream/listings" },
1414
+ yttv: { channelSelector: "Showtime East", url: "https://tv.youtube.com/live" },
1415
+ },
1416
+ },
1417
+ showtimep: {
1418
+ name: "Showtime (Pacific)",
1419
+ stationId: "91621",
1420
+ providers: {
1421
+ paramountplus: { url: "https://www.paramountplus.com/live-tv/stream/showtime-west" },
1422
+ },
1423
+ },
1424
+ smithsonian: {
1425
+ name: "Smithsonian Channel",
1426
+ pacificStationId: "82695",
1427
+ stationId: "58532",
1428
+ providers: {
1429
+ cox: { channelSelector: "Smithsonian", url: "https://watchtv.cox.com/listings" },
1430
+ directv: { channelSelector: "Smithsonian Channel HD", url: "https://stream.directv.com" },
1431
+ hulu: { channelSelector: "Smithsonian Channel", url: "https://www.hulu.com/live" },
1432
+ spectrum: { channelSelector: "Smithsonian Channel", url: "https://watch.spectrum.net/guide" },
1433
+ xfinity: { channelSelector: "Smithsonian", url: "https://www.xfinity.com/stream/listings" },
1434
+ yttv: { channelSelector: "Smithsonian Channel", url: "https://tv.youtube.com/live" },
1435
+ },
1436
+ },
1437
+ sny: {
1438
+ name: "SportsNet New York",
1439
+ stationId: "50038",
1440
+ providers: {
1441
+ directv: { channelSelector: "SportsNet New York HD 639", url: "https://stream.directv.com" },
1442
+ },
1443
+ },
1444
+ starz: {
1445
+ name: "Starz",
1446
+ stationId: "34941",
1447
+ providers: {
1448
+ cox: { channelSelector: "STARZ", url: "https://watchtv.cox.com/listings" },
1449
+ hulu: { channelSelector: "STARZ (East)", url: "https://www.hulu.com/live" },
1450
+ site: { url: "https://www.starz.com/us/en/play/2" },
1451
+ sling: { channelSelector: "STARZ", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1452
+ xfinity: { channelSelector: "STARZ", url: "https://www.xfinity.com/stream/listings" },
1453
+ },
1454
+ },
1455
+ starzcinema: {
1456
+ name: "Starz Cinema",
1457
+ stationId: "67236",
1458
+ providers: {
1459
+ hulu: { channelSelector: "STARZ Cinema (East)", url: "https://www.hulu.com/live" },
1460
+ sling: { channelSelector: "Starz Cinema", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1461
+ },
1462
+ },
1463
+ starzcinemap: {
1464
+ name: "Starz Cinema (Pacific)",
1465
+ stationId: "67365",
1466
+ providers: {
1467
+ hulu: { channelSelector: "STARZ Cinema (West)", url: "https://www.hulu.com/live" },
1468
+ },
1469
+ },
1470
+ starzcomedy: {
1471
+ name: "Starz Comedy",
1472
+ stationId: "57569",
1473
+ providers: {
1474
+ hulu: { channelSelector: "STARZ Comedy (East)", url: "https://www.hulu.com/live" },
1475
+ sling: { channelSelector: "Starz Comedy", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1476
+ },
1477
+ },
1478
+ starzcomedyp: {
1479
+ name: "Starz Comedy (Pacific)",
1480
+ stationId: "57575",
1481
+ providers: {
1482
+ hulu: { channelSelector: "STARZ Comedy (West)", url: "https://www.hulu.com/live" },
1483
+ },
1484
+ },
1485
+ starzedge: {
1486
+ name: "Starz Edge",
1487
+ stationId: "57573",
1488
+ providers: {
1489
+ hulu: { channelSelector: "STARZ Edge (East)", url: "https://www.hulu.com/live" },
1490
+ sling: { channelSelector: "Starz Edge", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1491
+ },
1492
+ },
1493
+ starzedgep: {
1494
+ name: "Starz Edge (Pacific)",
1495
+ stationId: "57578",
1496
+ providers: {
1497
+ hulu: { channelSelector: "STARZ Edge (West)", url: "https://www.hulu.com/live" },
1498
+ },
1499
+ },
1500
+ starzencore: {
1501
+ name: "Starz Encore",
1502
+ stationId: "36225",
1503
+ providers: {
1504
+ cox: { channelSelector: "STZEH", url: "https://watchtv.cox.com/listings" },
1505
+ hulu: { channelSelector: "STARZ Encore (East)", url: "https://www.hulu.com/live" },
1506
+ sling: { channelSelector: "Starz Encore", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1507
+ xfinity: { channelSelector: "STZEH", url: "https://www.xfinity.com/stream/listings" },
1508
+ },
1509
+ },
1510
+ starzencoreaction: {
1511
+ name: "Starz Encore Action",
1512
+ stationId: "72015",
1513
+ providers: {
1514
+ cox: { channelSelector: "STZAH", url: "https://watchtv.cox.com/listings" },
1515
+ hulu: { channelSelector: "STARZ Encore Action (East)", url: "https://www.hulu.com/live" },
1516
+ sling: { channelSelector: "Starz Encore Action", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1517
+ xfinity: { channelSelector: "STZAH", url: "https://www.xfinity.com/stream/listings" },
1518
+ },
1519
+ },
1520
+ starzencoreactionp: {
1521
+ name: "Starz Encore Action (Pacific)",
1522
+ stationId: "103833",
1523
+ providers: {
1524
+ hulu: { channelSelector: "STARZ Encore Action (West)", url: "https://www.hulu.com/live" },
1525
+ },
1526
+ },
1527
+ starzencoreblack: {
1528
+ name: "Starz Encore Black",
1529
+ stationId: "72014",
1530
+ providers: {
1531
+ cox: { channelSelector: "STZBH", url: "https://watchtv.cox.com/listings" },
1532
+ hulu: { channelSelector: "STARZ Encore Black (East)", url: "https://www.hulu.com/live" },
1533
+ sling: { channelSelector: "Starz Encore Black", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1534
+ xfinity: { channelSelector: "STZBH", url: "https://www.xfinity.com/stream/listings" },
1535
+ },
1536
+ },
1537
+ starzencoreblackp: {
1538
+ name: "Starz Encore Black (Pacific)",
1539
+ stationId: "103834",
1540
+ providers: {
1541
+ hulu: { channelSelector: "STARZ Encore Black (West)", url: "https://www.hulu.com/live" },
1542
+ },
1543
+ },
1544
+ starzencoreclassic: {
1545
+ name: "Starz Encore Classic",
1546
+ stationId: "83404",
1547
+ providers: {
1548
+ hulu: { channelSelector: "STARZ Encore Classic (East)", url: "https://www.hulu.com/live" },
1549
+ sling: { channelSelector: "Starz Encore Classic", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1550
+ },
1551
+ },
1552
+ starzencoreclassicp: {
1553
+ name: "Starz Encore Classic (Pacific)",
1554
+ stationId: "97233",
1555
+ providers: {
1556
+ hulu: { channelSelector: "STARZ Encore Classic (West)", url: "https://www.hulu.com/live" },
1557
+ },
1558
+ },
1559
+ starzencoreespanol: {
1560
+ name: "Starz Encore Español",
1561
+ stationId: "72016",
1562
+ providers: {
1563
+ hulu: { channelSelector: "STARZ Encore Español (East)", url: "https://www.hulu.com/live" },
1564
+ sling: { channelSelector: "Starz Encore Español", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1565
+ },
1566
+ },
1567
+ starzencoreespanolp: {
1568
+ name: "Starz Encore Español (Pacific)",
1569
+ stationId: "104730",
1570
+ providers: {
1571
+ hulu: { channelSelector: "STARZ Encore Español (West)", url: "https://www.hulu.com/live" },
1572
+ },
1573
+ },
1574
+ starzencorefamily: {
1575
+ name: "Starz Encore Family",
1576
+ stationId: "14886",
1577
+ providers: {
1578
+ hulu: { channelSelector: "STARZ Encore Family (East)", url: "https://www.hulu.com/live" },
1579
+ sling: { channelSelector: "Starz Encore Family", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1580
+ },
1581
+ },
1582
+ starzencorefamilyp: {
1583
+ name: "Starz Encore Family (Pacific)",
1584
+ stationId: "103829",
1585
+ providers: {
1586
+ hulu: { channelSelector: "STARZ Encore Family (West)", url: "https://www.hulu.com/live" },
1587
+ },
1588
+ },
1589
+ starzencorep: {
1590
+ name: "Starz Encore (Pacific)",
1591
+ stationId: "67237",
1592
+ providers: {
1593
+ hulu: { channelSelector: "STARZ Encore (West)", url: "https://www.hulu.com/live" },
1594
+ sling: { channelSelector: "Starz Encore West", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1595
+ },
1596
+ },
1597
+ starzencoresuspense: {
1598
+ name: "Starz Encore Suspense",
1599
+ stationId: "83076",
1600
+ providers: {
1601
+ hulu: { channelSelector: "STARZ Encore Suspense (East)", url: "https://www.hulu.com/live" },
1602
+ sling: { channelSelector: "Starz Encore Suspense", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1603
+ },
1604
+ },
1605
+ starzencoresuspensep: {
1606
+ name: "Starz Encore Suspense (Pacific)",
1607
+ stationId: "103836",
1608
+ providers: {
1609
+ hulu: { channelSelector: "STARZ Encore Suspense (West)", url: "https://www.hulu.com/live" },
1610
+ },
1611
+ },
1612
+ starzencorewesterns: {
1613
+ name: "Starz Encore Westerns",
1614
+ stationId: "14765",
1615
+ providers: {
1616
+ hulu: { channelSelector: "STARZ Encore Westerns (East)", url: "https://www.hulu.com/live" },
1617
+ sling: { channelSelector: "Starz Encore Westerns", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1618
+ },
1619
+ },
1620
+ starzencorewesternsp: {
1621
+ name: "Starz Encore Westerns (Pacific)",
1622
+ stationId: "103856",
1623
+ providers: {
1624
+ hulu: { channelSelector: "STARZ Encore Westerns (West)", url: "https://www.hulu.com/live" },
1625
+ },
1626
+ },
1627
+ starzinblack: {
1628
+ name: "Starz in Black",
1629
+ stationId: "67235",
1630
+ providers: {
1631
+ hulu: { channelSelector: "STARZ in Black (East)", url: "https://www.hulu.com/live" },
1632
+ sling: { channelSelector: "Starz in Black", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1633
+ },
1634
+ },
1635
+ starzinblackp: {
1636
+ name: "Starz in Black (Pacific)",
1637
+ stationId: "67367",
1638
+ providers: {
1639
+ hulu: { channelSelector: "STARZ in Black (West)", url: "https://www.hulu.com/live" },
1640
+ },
1641
+ },
1642
+ starzkids: {
1643
+ name: "Starz Kids",
1644
+ stationId: "57581",
1645
+ providers: {
1646
+ hulu: { channelSelector: "STARZ Kids (East)", url: "https://www.hulu.com/live" },
1647
+ sling: { channelSelector: "Starz Kids", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1648
+ },
1649
+ },
1650
+ starzkidsp: {
1651
+ name: "Starz Kids (Pacific)",
1652
+ stationId: "57583",
1653
+ providers: {
1654
+ hulu: { channelSelector: "STARZ Kids (West)", url: "https://www.hulu.com/live" },
1655
+ },
1656
+ },
1657
+ starzp: {
1658
+ name: "Starz (Pacific)",
1659
+ stationId: "34949",
1660
+ providers: {
1661
+ hulu: { channelSelector: "STARZ (West)", url: "https://www.hulu.com/live" },
1662
+ sling: { channelSelector: "Starz West", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1663
+ },
1664
+ },
1665
+ sundancetv: {
1666
+ name: "SundanceTV",
1667
+ pacificStationId: "78806",
1668
+ stationId: "71280",
1669
+ providers: {
1670
+ cox: { channelSelector: "SundanceTV", url: "https://watchtv.cox.com/listings" },
1671
+ directv: { channelSelector: "Sundance TV", url: "https://stream.directv.com" },
1672
+ spectrum: { channelSelector: "SundanceTV", url: "https://watch.spectrum.net/guide" },
1673
+ xfinity: { channelSelector: "SundanceTV", url: "https://www.xfinity.com/stream/listings" },
1674
+ yttv: { channelSelector: "SundanceTV", url: "https://tv.youtube.com/live" },
1675
+ },
1676
+ },
1677
+ syfy: {
1678
+ name: "Syfy",
1679
+ stationId: "58623",
1680
+ providers: {
1681
+ cox: { channelSelector: "SYFY", url: "https://watchtv.cox.com/listings" },
1682
+ directv: { channelSelector: "Syfy", url: "https://stream.directv.com" },
1683
+ hulu: { channelSelector: "SYFY", url: "https://www.hulu.com/live" },
1684
+ site: { channelSelector: "Syfy_East", url: "https://www.usanetwork.com/live" },
1685
+ sling: { channelSelector: "SYFY", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1686
+ spectrum: { channelSelector: "Syfy", url: "https://watch.spectrum.net/guide" },
1687
+ xfinity: { channelSelector: "SYFY", url: "https://www.xfinity.com/stream/listings" },
1688
+ yttv: { channelSelector: "SYFY", url: "https://tv.youtube.com/live" },
1689
+ },
1690
+ },
1691
+ syfyp: {
1692
+ name: "Syfy (Pacific)",
1693
+ stationId: "65626",
1694
+ providers: {
1695
+ site: { channelSelector: "Syfy_West", url: "https://www.usanetwork.com/live" },
1696
+ },
1697
+ },
1698
+ tbs: {
1699
+ name: "TBS",
1700
+ stationId: "58515",
1701
+ providers: {
1702
+ cox: { channelSelector: "TBS", url: "https://watchtv.cox.com/listings" },
1703
+ directv: { channelSelector: "TBS", url: "https://stream.directv.com" },
1704
+ hulu: { channelSelector: "TBS (East)", url: "https://www.hulu.com/live" },
1705
+ site: { url: "https://www.tbs.com/watchtbs/east" },
1706
+ sling: { channelSelector: "TBS", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1707
+ spectrum: { channelSelector: "TBS", url: "https://watch.spectrum.net/guide" },
1708
+ xfinity: { channelSelector: "TBS", url: "https://www.xfinity.com/stream/listings" },
1709
+ yttv: { channelSelector: "TBS", url: "https://tv.youtube.com/live" },
1710
+ },
1711
+ },
1712
+ tbsp: {
1713
+ name: "TBS (Pacific)",
1714
+ stationId: "67890",
1715
+ providers: {
1716
+ hulu: { channelSelector: "TBS (West)", url: "https://www.hulu.com/live" },
1717
+ site: { url: "https://www.tbs.com/watchtbs/west" },
1718
+ },
1719
+ },
1720
+ tcm: {
1721
+ name: "TCM",
1722
+ stationId: "64312",
1723
+ providers: {
1724
+ cox: { channelSelector: "TCM", url: "https://watchtv.cox.com/listings" },
1725
+ directv: { channelSelector: "TCM", url: "https://stream.directv.com" },
1726
+ hulu: { channelSelector: "TCM (East)", url: "https://www.hulu.com/live" },
1727
+ spectrum: { channelSelector: "TCM", url: "https://watch.spectrum.net/guide" },
1728
+ xfinity: { channelSelector: "TCM", url: "https://www.xfinity.com/stream/listings" },
1729
+ yttv: { channelSelector: "Turner Classic Movies", url: "https://tv.youtube.com/live" },
1730
+ },
1731
+ },
1732
+ tcmp: {
1733
+ name: "TCM (Pacific)",
1734
+ stationId: "64312",
1735
+ tvgShift: 3,
1736
+ providers: {
1737
+ hulu: { channelSelector: "TCM (West)", url: "https://www.hulu.com/live" },
1738
+ },
1739
+ },
1740
+ tennis: {
1741
+ name: "Tennis Channel",
1742
+ stationId: "60316",
1743
+ providers: {
1744
+ cox: { channelSelector: "Tennis Channel", url: "https://watchtv.cox.com/listings" },
1745
+ directv: { channelSelector: "Tennis Channel HD", url: "https://stream.directv.com" },
1746
+ spectrum: { channelSelector: "Tennis Channel", url: "https://watch.spectrum.net/guide" },
1747
+ xfinity: { channelSelector: "Tennis Channel", url: "https://www.xfinity.com/stream/listings" },
1748
+ yttv: { channelSelector: "Tennis Channel", url: "https://tv.youtube.com/live" },
1749
+ },
1750
+ },
1751
+ tennis2: {
1752
+ name: "Tennis Channel 2",
1753
+ stationId: "137752",
1754
+ providers: {
1755
+ cox: { channelSelector: "T2", url: "https://watchtv.cox.com/listings" },
1756
+ hulu: { channelSelector: "Tennis Channel 2", url: "https://www.hulu.com/live" },
1757
+ sling: { channelSelector: "T2", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1758
+ xfinity: { channelSelector: "T2", url: "https://www.xfinity.com/stream/listings" },
1759
+ yttv: { channelSelector: "T2", url: "https://tv.youtube.com/live" },
1760
+ },
1761
+ },
1762
+ tlc: {
1763
+ name: "TLC",
1764
+ pacificStationId: "79911",
1765
+ stationId: "57391",
1766
+ providers: {
1767
+ cox: { channelSelector: "TLC", url: "https://watchtv.cox.com/listings" },
1768
+ directv: { channelSelector: "TLC", url: "https://stream.directv.com" },
1769
+ hulu: { channelSelector: "TLC", url: "https://www.hulu.com/live" },
1770
+ site: { url: "https://watch.foodnetwork.com/channel/tlc" },
1771
+ sling: { channelSelector: "TLC", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1772
+ spectrum: { channelSelector: "TLC", url: "https://watch.spectrum.net/guide" },
1773
+ xfinity: { channelSelector: "TLC", url: "https://www.xfinity.com/stream/listings" },
1774
+ yttv: { channelSelector: "TLC", url: "https://tv.youtube.com/live" },
1775
+ },
1776
+ },
1777
+ tnt: {
1778
+ name: "TNT",
1779
+ stationId: "42642",
1780
+ providers: {
1781
+ cox: { channelSelector: "TNT", url: "https://watchtv.cox.com/listings" },
1782
+ directv: { channelSelector: "TNT", url: "https://stream.directv.com" },
1783
+ hulu: { channelSelector: "TNT (East)", url: "https://www.hulu.com/live" },
1784
+ site: { url: "https://www.tntdrama.com/watchtnt/east" },
1785
+ sling: { channelSelector: "TNT", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1786
+ spectrum: { channelSelector: "TNT", url: "https://watch.spectrum.net/guide" },
1787
+ xfinity: { channelSelector: "TNT", url: "https://www.xfinity.com/stream/listings" },
1788
+ yttv: { channelSelector: "TNT", url: "https://tv.youtube.com/live" },
1789
+ },
1790
+ },
1791
+ tntp: {
1792
+ name: "TNT (Pacific)",
1793
+ stationId: "61340",
1794
+ providers: {
1795
+ hulu: { channelSelector: "TNT (West)", url: "https://www.hulu.com/live" },
1796
+ site: { url: "https://www.tntdrama.com/watchtnt/west" },
1797
+ },
1798
+ },
1799
+ travel: {
1800
+ name: "Travel",
1801
+ pacificStationId: "64525",
1802
+ stationId: "59303",
1803
+ providers: {
1804
+ cox: { channelSelector: "Travel Channel", url: "https://watchtv.cox.com/listings" },
1805
+ directv: { channelSelector: "Travel Channel", url: "https://stream.directv.com" },
1806
+ hulu: { channelSelector: "Travel Channel", url: "https://www.hulu.com/live" },
1807
+ site: { url: "https://watch.foodnetwork.com/channel/travel-channel" },
1808
+ sling: { channelSelector: "Travel Channel", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1809
+ spectrum: { channelSelector: "Travel Channel", url: "https://watch.spectrum.net/guide" },
1810
+ xfinity: { channelSelector: "Travel Channel", url: "https://www.xfinity.com/stream/listings" },
1811
+ yttv: { channelSelector: "Travel Channel", url: "https://tv.youtube.com/live" },
1812
+ },
1813
+ },
1814
+ trutv: {
1815
+ name: "truTV",
1816
+ pacificStationId: "65717",
1817
+ stationId: "64490",
1818
+ providers: {
1819
+ cox: { channelSelector: "truTV", url: "https://watchtv.cox.com/listings" },
1820
+ directv: { channelSelector: "truTV", url: "https://stream.directv.com" },
1821
+ hulu: { channelSelector: "truTV (East)", url: "https://www.hulu.com/live" },
1822
+ site: { url: "https://www.trutv.com/watchtrutv/east" },
1823
+ sling: { channelSelector: "truTV", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1824
+ spectrum: { channelSelector: "truTV", url: "https://watch.spectrum.net/guide" },
1825
+ xfinity: { channelSelector: "truTV", url: "https://www.xfinity.com/stream/listings" },
1826
+ yttv: { channelSelector: "truTV", url: "https://tv.youtube.com/live" },
1827
+ },
1828
+ },
1829
+ trutvp: {
1830
+ name: "truTV (Pacific)",
1831
+ stationId: "65717",
1832
+ providers: {
1833
+ hulu: { channelSelector: "truTV (West)", url: "https://www.hulu.com/live" },
1834
+ },
1835
+ },
1836
+ tvland: {
1837
+ name: "TV Land",
1838
+ pacificStationId: "74134",
1839
+ stationId: "73541",
1840
+ providers: {
1841
+ cox: { channelSelector: "TV Land", url: "https://watchtv.cox.com/listings" },
1842
+ directv: { channelSelector: "TV Land", url: "https://stream.directv.com" },
1843
+ hulu: { channelSelector: "TV Land", url: "https://www.hulu.com/live" },
1844
+ spectrum: { channelSelector: "TV Land", url: "https://watch.spectrum.net/guide" },
1845
+ xfinity: { channelSelector: "TV Land", url: "https://www.xfinity.com/stream/listings" },
1846
+ yttv: { channelSelector: "TV Land", url: "https://tv.youtube.com/live" },
1847
+ },
1848
+ },
1849
+ usa: {
1850
+ name: "USA Network",
1851
+ stationId: "58452",
1852
+ providers: {
1853
+ cox: { channelSelector: "USA", url: "https://watchtv.cox.com/listings" },
1854
+ directv: { channelSelector: "USA Network", url: "https://stream.directv.com" },
1855
+ hulu: { channelSelector: "USA", url: "https://www.hulu.com/live" },
1856
+ site: { channelSelector: "USA_East", url: "https://www.usanetwork.com/live" },
1857
+ sling: { channelSelector: "USA", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1858
+ spectrum: { channelSelector: "USA", url: "https://watch.spectrum.net/guide" },
1859
+ xfinity: { channelSelector: "USA", url: "https://www.xfinity.com/stream/listings" },
1860
+ yttv: { channelSelector: "USA", url: "https://tv.youtube.com/live" },
1861
+ },
1862
+ },
1863
+ usap: {
1864
+ name: "USA Network (Pacific)",
1865
+ stationId: "74030",
1866
+ providers: {
1867
+ site: { channelSelector: "USA_West", url: "https://www.usanetwork.com/live" },
1868
+ },
1869
+ },
1870
+ vh1: {
1871
+ name: "VH1",
1872
+ pacificStationId: "64634",
1873
+ stationId: "60046",
1874
+ providers: {
1875
+ cox: { channelSelector: "VH1", url: "https://watchtv.cox.com/listings" },
1876
+ directv: { channelSelector: "VH1", url: "https://stream.directv.com" },
1877
+ hulu: { channelSelector: "VH1", url: "https://www.hulu.com/live" },
1878
+ site: { url: "https://www.vh1.com/live-tv" },
1879
+ spectrum: { channelSelector: "VH1", url: "https://watch.spectrum.net/guide" },
1880
+ xfinity: { channelSelector: "VH1", url: "https://www.xfinity.com/stream/listings" },
1881
+ yttv: { channelSelector: "VH1", url: "https://tv.youtube.com/live" },
1882
+ },
1883
+ },
1884
+ vice: {
1885
+ name: "Vice",
1886
+ pacificStationId: "92375",
1887
+ stationId: "65732",
1888
+ providers: {
1889
+ cox: { channelSelector: "VICE", url: "https://watchtv.cox.com/listings" },
1890
+ directv: { channelSelector: "VICE", url: "https://stream.directv.com" },
1891
+ hulu: { channelSelector: "Vice", url: "https://www.hulu.com/live" },
1892
+ sling: { channelSelector: "VICE", url: "https://watch.sling.com/dashboard/grid_guide/grid_guide_a_z" },
1893
+ spectrum: { channelSelector: "Vice", url: "https://watch.spectrum.net/guide" },
1894
+ xfinity: { channelSelector: "VICE", url: "https://www.xfinity.com/stream/listings" },
1895
+ },
1896
+ },
1897
+ weather: {
1898
+ name: "The Weather Channel",
1899
+ stationId: "58812",
1900
+ providers: {
1901
+ cox: { channelSelector: "Weather Channel", url: "https://watchtv.cox.com/listings" },
1902
+ directv: { channelSelector: "The Weather Channel HD", url: "https://stream.directv.com" },
1903
+ hulu: { channelSelector: "The Weather Channel", url: "https://www.hulu.com/live" },
1904
+ spectrum: { channelSelector: "The Weather Channel", url: "https://watch.spectrum.net/guide" },
1905
+ xfinity: { channelSelector: "Weather Channel", url: "https://www.xfinity.com/stream/listings" },
1906
+ yttv: { channelSelector: "The Weather Channel", url: "https://tv.youtube.com/live" },
1907
+ },
1908
+ },
1909
+ wetv: {
1910
+ name: "WE tv",
1911
+ pacificStationId: "108192",
1912
+ stationId: "59296",
1913
+ providers: {
1914
+ cox: { channelSelector: "WE tv", url: "https://watchtv.cox.com/listings" },
1915
+ directv: { channelSelector: "WE TV", url: "https://stream.directv.com" },
1916
+ spectrum: { channelSelector: "WE tv", url: "https://watch.spectrum.net/guide" },
1917
+ xfinity: { channelSelector: "WE tv", url: "https://www.xfinity.com/stream/listings" },
1918
+ yttv: { channelSelector: "WE tv", url: "https://tv.youtube.com/live" },
1919
+ },
1920
+ },
1921
+ yes: {
1922
+ name: "YES Network",
1923
+ stationId: "63558",
1924
+ providers: {
1925
+ directv: { channelSelector: "Yes Network HD", url: "https://stream.directv.com" },
1926
+ spectrum: { channelSelector: "YES Network", url: "https://watch.spectrum.net/guide" },
1927
+ },
1928
+ },
623
1929
  };
624
- /* eslint-enable @stylistic/max-len */
1930
+ /* eslint-enable @hjdhjd/blank-line-after-open-brace, @stylistic/comma-dangle, sort-keys */
625
1931
  // Pacific channel auto-generation.
626
- /* PrismCast automatically generates Pacific timezone channel entries to reduce manual maintenance. Two tiers of generation run at module load, producing entries
627
- * that are functionally identical to hand-written ones. Generated entries never override manually-defined entries — if a key already exists in BASE_CHANNELS,
628
- * the manual definition takes precedence.
1932
+ /* PrismCast automatically generates Pacific timezone channel definitions to reduce manual maintenance. Generation runs at module load, producing definitions
1933
+ * that are functionally identical to hand-written ones. Generated definitions never override manually-defined ones — if a key already exists in
1934
+ * BASE_CHANNEL_DEFINITIONS, the manual definition takes precedence.
629
1935
  *
630
- * Tier 1 — Pacific canonicals via pacificStationId:
1936
+ * Step 1 — Generate Pacific ChannelDefinitions from East entries with pacificStationId:
631
1937
  *
632
- * When an East canonical has a pacificStationId field, the system generates a "{key}p" entry with the Pacific station ID, the same url and channelSelector,
633
- * and " (Pacific)" appended to the name. This works for channels where providers serve region-appropriate content via a single URL. Channels with distinct
634
- * Pacific URLs (e.g., bravo_west vs bravo_east) or different Pacific channelSelectors (e.g., E-_West vs E-_East) must define their Pacific canonical manually.
1938
+ * When an East definition has a pacificStationId field and no "{key}p" entry exists in BASE_CHANNEL_DEFINITIONS, a new Pacific ChannelDefinition is created
1939
+ * with the Pacific station ID, " (Pacific)" appended to the name, and an empty providers map (to be filled by Step 2).
635
1940
  *
636
- * Example — adding pacificStationId to the East canonical:
637
- * animal: { name: "Animal Planet", pacificStationId: "68785", stationId: "57394", url: "..." }
1941
+ * Example — adding pacificStationId to the East definition:
1942
+ * animal: { name: "Animal Planet", pacificStationId: "68785", stationId: "57394", providers: { ... } }
638
1943
  * Auto-generates:
639
- * animalp: { name: "Animal Planet (Pacific)", stationId: "68785", url: "..." }
1944
+ * animalp: { name: "Animal Planet (Pacific)", stationId: "68785", providers: {} }
640
1945
  *
641
- * Tier 2 — Pacific provider variants from East provider variants:
1946
+ * Step 2 — Merge East providers into Pacific definitions:
642
1947
  *
643
- * For each East variant "{key}-{provider}", if a Pacific canonical "{key}p" exists (manual or generated), the system generates "{key}p-{provider}" with the
644
- * same channelSelector and url. Providers serve region-appropriate feeds with a single selector — the Pacific variant's inherited stationId provides the
645
- * correct timezone guide data. Variants with "East" or "West" in the channelSelector are skipped — these have explicit timezone entries on the provider and
646
- * need manual Pacific definitions (e.g., Hulu's "TBS (East)" / "TBS (West)").
1948
+ * For every Pacific definition "{key}p" (manual or generated), if a corresponding East definition "{key}" exists, its providers are merged into the Pacific
1949
+ * definition. Providers are skipped if: (a) they already exist in the Pacific definition, or (b) their channelSelector contains "East" or "West" (these have
1950
+ * timezone-specific entries and need manual Pacific definitions with the correct West selector).
647
1951
  *
648
- * Example — East variant with a Pacific canonical present:
649
- * "animal-hulu": { channelSelector: "Animal Planet", url: "https://www.hulu.com/live" }
650
- * Auto-generates (because animalp exists):
651
- * "animalp-hulu": { channelSelector: "Animal Planet", url: "https://www.hulu.com/live" }
1952
+ * Example — East providers merged into auto-generated Pacific:
1953
+ * animal's cox provider: { channelSelector: "Animal Planet", url: "https://watchtv.cox.com/listings" }
1954
+ * Merges into animalp as:
1955
+ * animalp's cox provider: { channelSelector: "Animal Planet", url: "https://watchtv.cox.com/listings" }
652
1956
  *
653
1957
  * Adding a new channel with Pacific support:
654
1958
  *
655
1959
  * 1. Look up both East and Pacific HD station IDs in Gracenote (http://localhost:8089/tms/stations/<search>).
656
- * 2. Add the East canonical with both IDs: mychannel: { name: "...", pacificStationId: "PACIFIC_ID", stationId: "EAST_ID", url: "..." }
657
- * 3. Add East provider variants: "mychannel-hulu": { channelSelector: "...", url: "https://www.hulu.com/live" }
658
- * 4. The system auto-generates mychannelp (Pacific canonical) and mychannelp-hulu (Pacific provider variant).
659
- * 5. If the Pacific version needs a different URL or channelSelector, skip pacificStationId and define the Pacific canonical manually instead.
660
- *
661
- * Manual entries always take precedence — generated entries never overwrite existing keys in BASE_CHANNELS.
1960
+ * 2. Add the East definition with both IDs: mychannel: { name: "...", pacificStationId: "PACIFIC_ID", stationId: "EAST_ID", providers: { ... } }
1961
+ * 3. The system auto-generates mychannelp (Pacific definition) and merges all compatible providers.
1962
+ * 4. If the Pacific version needs a different URL or channelSelector for specific providers, define mychannelp manually with those overrides.
662
1963
  */
663
- function generatePacificEntries(channels) {
1964
+ function generatePacificDefinitions(definitions) {
664
1965
  const eastWestPattern = /east|west/i;
665
1966
  const generated = {};
666
- // Tier 1: Generate Pacific canonicals from East canonicals with pacificStationId.
667
- for (const [key, channel] of Object.entries(channels)) {
668
- if (!channel.pacificStationId) {
1967
+ // Step 1: Generate Pacific ChannelDefinitions from East entries with pacificStationId.
1968
+ for (const [key, def] of Object.entries(definitions)) {
1969
+ if (!def.pacificStationId) {
669
1970
  continue;
670
1971
  }
671
1972
  const pacificKey = key + "p";
672
- // Manual Pacific canonical takes precedence.
673
- if (pacificKey in channels) {
1973
+ // Manual Pacific definition takes precedence — don't generate.
1974
+ if (pacificKey in definitions) {
674
1975
  continue;
675
1976
  }
676
- const entry = {
677
- ...(channel.channelSelector ? { channelSelector: channel.channelSelector } : {}),
678
- name: (channel.name ?? key) + " (Pacific)",
679
- stationId: channel.pacificStationId,
680
- url: channel.url
1977
+ generated[pacificKey] = {
1978
+ name: def.name + " (Pacific)",
1979
+ providers: {},
1980
+ stationId: def.pacificStationId
681
1981
  };
682
- generated[pacificKey] = entry;
683
1982
  }
684
- // Merge manual and generated entries for Pacific canonical lookup in Tier 2.
685
- const allChannels = { ...channels, ...generated };
686
- // Tier 2: Generate Pacific provider variants from East provider variants.
687
- for (const [key, channel] of Object.entries(channels)) {
688
- const dashIndex = key.indexOf("-");
689
- if (dashIndex === -1) {
1983
+ // Merge base and generated for Pacific lookup in Step 2.
1984
+ const allDefinitions = { ...definitions, ...generated };
1985
+ // Step 2: Merge East providers into Pacific definitions (both manual and generated). For manually-defined Pacific entries, we create a copy with a fresh
1986
+ // providers map to avoid mutating the input definitions.
1987
+ for (const [pacKey, originalPacDef] of Object.entries(allDefinitions)) {
1988
+ // Only process Pacific keys (ending in "p" with a corresponding East key).
1989
+ if (!pacKey.endsWith("p")) {
690
1990
  continue;
691
1991
  }
692
- const baseKey = key.substring(0, dashIndex);
693
- const providerSuffix = key.substring(dashIndex);
694
- // The base key must exist as a canonical entry (otherwise this is not a provider variant).
695
- if (!(baseKey in channels)) {
1992
+ const eastKey = pacKey.slice(0, -1);
1993
+ const eastDef = definitions[eastKey];
1994
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
1995
+ if (!eastDef) {
696
1996
  continue;
697
1997
  }
698
- const pacificCanonicalKey = baseKey + "p";
699
- const pacificVariantKey = pacificCanonicalKey + providerSuffix;
700
- // A Pacific canonical must exist (manual or generated) for the variant to be meaningful.
701
- if (!(pacificCanonicalKey in allChannels)) {
702
- continue;
1998
+ // Create a copy with a fresh providers map so we never mutate the input definitions (which are the module-level BASE_CHANNEL_DEFINITIONS).
1999
+ const pacDef = { ...originalPacDef, providers: { ...originalPacDef.providers } };
2000
+ // Merge each East provider into the Pacific definition, skipping existing and East/West-specific selectors.
2001
+ for (const [slug, variant] of Object.entries(eastDef.providers)) {
2002
+ // Don't overwrite existing Pacific providers (manual overrides take precedence).
2003
+ if (slug in pacDef.providers) {
2004
+ continue;
2005
+ }
2006
+ // Skip providers with timezone-specific channelSelectors — these need manual Pacific entries.
2007
+ if (variant.channelSelector && eastWestPattern.test(variant.channelSelector)) {
2008
+ continue;
2009
+ }
2010
+ // Copy the provider variant. We spread to create a new object so the East and Pacific definitions don't share references.
2011
+ pacDef.providers[slug] = { ...variant };
703
2012
  }
704
- // Manual Pacific variant takes precedence.
705
- if ((pacificVariantKey in channels) || (pacificVariantKey in generated)) {
2013
+ generated[pacKey] = pacDef;
2014
+ }
2015
+ return generated;
2016
+ }
2017
+ // Channel definition flattener.
2018
+ /* The flattener compiles nested ChannelDefinition entries into the flat ChannelMap consumed by the rest of the codebase. For each definition, it produces a
2019
+ * canonical flat entry (keyed by the definition key) and variant flat entries (keyed as "{definitionKey}-{providerSlug}").
2020
+ *
2021
+ * Canonical resolution:
2022
+ * 1. If "site" exists in providers, the site provider populates the canonical entry. No "{key}-site" variant is emitted.
2023
+ * 2. Otherwise, providers are sorted alphabetically by key. The first provider populates the canonical entry. No variant key is emitted for it.
2024
+ * 3. All remaining providers produce variant entries keyed as "{key}-{slug}".
2025
+ *
2026
+ * Identity fields (name, stationId, channelNumber, tvgShift) are set on the canonical entry and inherited by all variants. Provider-specific fields
2027
+ * (channelSelector, url, profile, etc.) come from each ProviderVariant. ProviderVariant fields override ChannelDefinition fields when both are set.
2028
+ */
2029
+ function flattenChannelDefinitions(definitions) {
2030
+ const channels = {};
2031
+ for (const [key, def] of Object.entries(definitions)) {
2032
+ const slugs = Object.keys(def.providers).sort();
2033
+ if (slugs.length === 0) {
706
2034
  continue;
707
2035
  }
708
- // Skip when the East variant's channelSelector contains timezone-specific terms. These channels have provider-specific East/West entries
709
- // (e.g., Hulu's "TBS (East)" / "TBS (West)") and need manually-defined Pacific variants with the correct West selector.
710
- if (channel.channelSelector && eastWestPattern.test(channel.channelSelector)) {
711
- continue;
2036
+ // Determine the canonical provider: "site" wins, otherwise first alphabetically.
2037
+ const canonicalSlug = slugs.includes(SITE_KEY) ? SITE_KEY : slugs[0];
2038
+ const canonicalVariant = def.providers[canonicalSlug];
2039
+ // Build the canonical flat entry with identity fields + canonical provider's fields. pacificStationId is set only on the canonical entry — it drives Pacific
2040
+ // auto-generation and is not meaningful on provider variants.
2041
+ const canonicalEntry = buildFlatEntry(def, canonicalVariant);
2042
+ if (def.pacificStationId) {
2043
+ canonicalEntry.pacificStationId = def.pacificStationId;
2044
+ }
2045
+ channels[key] = canonicalEntry;
2046
+ // Build variant entries for all non-canonical providers. Each variant gets canonicalKey set to the definition key so that buildProviderGroups can group
2047
+ // channels by a single mechanism — scanning canonicalKey — regardless of whether the channel is predefined or user-defined.
2048
+ for (const slug of slugs) {
2049
+ if (slug === canonicalSlug) {
2050
+ continue;
2051
+ }
2052
+ const variantKey = key + "-" + slug;
2053
+ const variant = def.providers[slug];
2054
+ const variantEntry = buildFlatEntry(def, variant);
2055
+ variantEntry.canonicalKey = key;
2056
+ channels[variantKey] = variantEntry;
712
2057
  }
713
- const entry = {
714
- ...(channel.channelSelector ? { channelSelector: channel.channelSelector } : {}),
715
- url: channel.url
716
- };
717
- generated[pacificVariantKey] = entry;
718
2058
  }
719
- return generated;
2059
+ return channels;
2060
+ }
2061
+ /**
2062
+ * Builds a flat Channel entry by merging a ChannelDefinition's identity fields with a ProviderVariant's provider-specific fields. ProviderVariant fields
2063
+ * override ChannelDefinition fields when both are set.
2064
+ * @param def - The parent ChannelDefinition with identity fields.
2065
+ * @param variant - The ProviderVariant with provider-specific fields.
2066
+ * @returns A flat Channel entry.
2067
+ */
2068
+ function buildFlatEntry(def, variant) {
2069
+ const entry = {
2070
+ name: def.name,
2071
+ url: variant.url
2072
+ };
2073
+ // Identity fields from ChannelDefinition. pacificStationId is intentionally omitted here — it is set only on the canonical entry by the flattener.
2074
+ if (def.stationId) {
2075
+ entry.stationId = def.stationId;
2076
+ }
2077
+ // channelNumber: variant override wins, then definition default.
2078
+ const channelNumber = variant.channelNumber ?? def.channelNumber;
2079
+ if (channelNumber !== undefined) {
2080
+ entry.channelNumber = channelNumber;
2081
+ }
2082
+ // tvgShift from definition only (not overridable per-variant).
2083
+ if (def.tvgShift !== undefined) {
2084
+ entry.tvgShift = def.tvgShift;
2085
+ }
2086
+ // 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;
2107
+ }
2108
+ return entry;
720
2109
  }
721
- export const CHANNELS = { ...generatePacificEntries(BASE_CHANNELS), ...BASE_CHANNELS };
722
- // Re-export CHANNELS as PREDEFINED_CHANNELS for use in userChannels.ts where the distinction between predefined and user channels is important.
723
- export { CHANNELS as PREDEFINED_CHANNELS };
2110
+ // Compile the nested definitions into flat output.
2111
+ // Pacific-generated entries take precedence over base entries because Step 2 of Pacific generation produces enhanced copies of manual Pacific definitions
2112
+ // (e.g., cartoonp with merged East providers). Base entries for non-Pacific keys are unaffected since they don't appear in the generated map.
2113
+ const allDefinitions = { ...BASE_CHANNEL_DEFINITIONS, ...generatePacificDefinitions(BASE_CHANNEL_DEFINITIONS) };
2114
+ const CHANNELS = flattenChannelDefinitions(allDefinitions);
2115
+ export { CHANNELS, CHANNELS as PREDEFINED_CHANNELS };
724
2116
  //# sourceMappingURL=index.js.map