PR#1 submitted with DirecTV Stream support.
This is going to be an excellent alternative to PrismCast, which only supports a single stream for this provider. In addition, given ch4c's hybrid use of Chrome + HDMI Encoder, this is a far better solution for remote users, as the encoded stream can be tailored more readily to the connection available. The ability to use a low power PC is also a big plus.
DirecTV Stream Support + M3U Playlist Enhancements
DirecTV Stream — New Service
Adds full DirecTV Stream support as a new streaming service source.
-
Channel discovery (
services/directv-service.js): Navigates to the DirecTV Stream guide page and extracts the full channel lineup directly from the React/Redux store viapage.evaluate(). Captures channel name, call sign, channel number, station ID (for Channels DVR EPG matching viatvc-guide-stationid), and logo. Local network affiliates (ABC, CBS, CW, Fox, NBC, PBS) are cross-referenced so the bare network name maps to the correct affiliate entry. -
Login (
login-manager.js): Implements a robust two-step authentication flow (email → Continue → password → Sign In). Login-state detection uses a polling approach that watches for both URL redirects away fromstream.directv.comand the appearance of a login form in the DOM, avoiding false "already logged in" results caused by the SPA's delayed auth redirect. -
Post-login interstitials: After login (and on every "already logged in" check), two interstitial screens are automatically handled:
-
Profile selector (
/user-profiles): Detected by URL, waits for profile tiles to render, then clicks the first profile. - Sports scores overlay: Polls for a "Hide Scores" button and clicks it. Only runs when a profile was actually selected in the current session, making the "already logged in" fast path a near-instant no-op when no interstitials are pending.
-
Profile selector (
M3U Playlist Enhancements
-
?services=filter:/m3u-manager/playlist.m3u?services=directv,slingreturns only channels belonging to the specified comma-separated service(s). -
?sort=parameter:/m3u-manager/playlist.m3u?sort=number(default, existing behavior) or?sort=name(alphabetical). Both params are independent and combinable:?services=directv&sort=name. -
Bulk enable/disable: Enable All / Disable All buttons added to the M3U Manager UI for DirecTV and Sling, positioned next to the "Show Enabled Only" toggle. Backed by a new
PATCH /m3u-manager/channels/:service/bulk-enableendpoint. - Per-service last-refresh timestamps: Each service tracks and displays when its channel list was last refreshed, consistent with the existing Sling behaviour.
Bug Fixes
-
Channels DVR URL construction:
CHANNELS_URLvalues with trailing slashes or embedded port numbers no longer produce malformed API URLs. AbuildCdvrUrl()helper normalises the base URL before appending the port and path.






