AndroidHDMI for Channels (ah4c): A virtual channel tuner using HDMI Encoder(s) + streaming stick(s)

This is how I "solved" it. It tunes to 242 then changes the channel twice to get to the proper 242.

usa="\"242\""

tuneChannel() {

  if [[ "$channelID" == "$usa" ]]; then
    $adbTarget shell input text $channelID; 
    sleep 1;
    $adbTarget shell input keyevent 166; 
    $adbTarget shell input keyevent 166;
  else
    $adbTarget shell input text $channelID; 
  fi
}
1 Like

Trying to get the 2 USA Olympic side channels with guide data on the Osprey. I'm not sure it supports deeplinks - which I think I've tracked down. I've experimented with @Hash0312 idea - except mine will need a 166 or 167 since they split the USA channel. Can't see how to get the guide date if I have go that way. Or this is gonna have to be a Firestick / DTV app setup? Right now, most of my recordings seem to randomly be picking one the 3 Olympic channels.

If tuning to 242, doesn't give you consistent results -- what if you tuned to a non-USA channel above or below and then sent a KEYCODE_CHANNEL_UP or KEYCODE_CHANNEL_DOWN as appropriate. BTW, I recommend using text-based ADB commands, rather than numeric codes for readability. Here's a list:

You could use 242A and 242B in the M3U for channel-id, channel-number, and at the end of the URL. These special channels would then tune to 243 (or whatever the next valid channel below 242 is), followed by one, two or three channel ups.

So, something like this (for example):

tuneChannel() {
  if [[ "$channelID" == 242 ]]; then
    $adbTarget shell input text "243"
    sleep 1
    $adbTarget shell input keyevent KEYCODE_CHANNEL_UP
    $adbTarget shell input keyevent KEYCODE_CHANNEL_UP
    $adbTarget shell input keyevent KEYCODE_CHANNEL_UP
  elif [[ "$channelID" == 242A ]]; then
    $adbTarget shell input text "243"
    sleep 1
    $adbTarget shell input keyevent KEYCODE_CHANNEL_UP
    $adbTarget shell input keyevent KEYCODE_CHANNEL_UP
  elif [[ "$channelID" == 242B ]]; then
    $adbTarget shell input text "243"
    sleep 1
    $adbTarget shell input keyevent KEYCODE_CHANNEL_UP
  else
    $adbTarget shell input text $channelID
  fi
}

Could be more elegant, but should get you through the Olympics, when you can revert to the original function.

EDIT: You could also use both the channel just below and the channel just above, and then do one KEYCODE_CHANNEL_DOWN rather than three channel ups. So for 242, tune to 241 (if that exists), and then do one channel down -- for fewer moves.

EDIT2: The USA Network M3U entry could be modified like so:

#EXTINF:-1 channel-id="242" channel-number="242",USA Network
http://{{ .IPADDRESS }}/play/tuner/242

#EXTINF:-1 channel-id="242A" channel-number="242A" tvc-guide-stationid="154942",Paris Extra 1
http://{{ .IPADDRESS }}/play/tuner/242A

#EXTINF:-1 channel-id="242B" channel-number="242B" tvc-guide-stationid="154943",Paris Extra 2
http://{{ .IPADDRESS }}/play/tuner/242B

You'd also need to reload the M3U in Channels after editing, and matchup the new channels to guide data.

The channels are officially called Paris Extra 1 and Paris Extra 2. DIRECTV just put them next to USA so they can be easy to find.

Gracenote has guide data for both of them PARIS1 (stationId 154942) and PARIS2 (stationId 154943)

While the Ospreay is the one platform that lets you use direct channel entry, they still haven't implemented support for subchannel numbering, so you might be better off using a 3rd party device like a firestick, onn or Shield that has the app where you can use the deeplinks.

The Paris Extra channels all being on 242 are just the tip of the iceberg. MLB Network, NFL Network (during the preseason), BTN (during the football season) and most of the RSNs in the 600s also have alternates, which in some cases appear before their main feed. And during the political conventions one of the dedicated channels for gavel to gavel coverage will be on 307-2 for satellite customers, which will cause problems for stream/internet customers if that 307 appears before NewsNation.

1 Like

Great info -- as usual. :slight_smile: I modified my suggested M3U above accordingly.

Updated for dtvstream.m3u included Paris1 and Paris2
also adds the latest "free" 4000 channels

#EXTM3U

#EXTINF:-1 channel-id="3" channel-number="3" tvc-guide-stationid="19611" tvg-group="" tvg-logo="",CBS-KYW
http://{{ .IPADDRESS }}/play/tuner/3

#EXTINF:-1 channel-id="6" channel-number="6" tvc-guide-stationid="19612" tvg-group="" tvg-logo="",ABC-WPVI
http://{{ .IPADDRESS }}/play/tuner/6

#EXTINF:-1 channel-id="10" channel-number="10" tvc-guide-stationid="19613" tvg-group="" tvg-logo="",NBC-WCAU
http://{{ .IPADDRESS }}/play/tuner/10

#EXTINF:-1 channel-id="12" channel-number="12" tvc-guide-stationid="24114" tvg-group="" tvg-logo="",PBS-WHYY
http://{{ .IPADDRESS }}/play/tuner/12

#EXTINF:-1 channel-id="17" channel-number="17" tvc-guide-stationid="32619" tvg-group="" tvg-logo="",CW-WPHL
http://{{ .IPADDRESS }}/play/tuner/17

#EXTINF:-1 channel-id="23" channel-number="23" tvc-guide-stationid="43689" tvg-group="" tvg-logo="",PBS-WNJS
http://{{ .IPADDRESS }}/play/tuner/23

#EXTINF:-1 channel-id="29" channel-number="29" tvc-guide-stationid="19614" tvg-group="" tvg-logo="",FOX-WTXF-TV
http://{{ .IPADDRESS }}/play/tuner/29

#EXTINF:-1 channel-id="39" channel-number="39" tvc-guide-stationid="24783" tvg-group="" tvg-logo="",PBS-WLVT
http://{{ .IPADDRESS }}/play/tuner/39

#EXTINF:-1 channel-id="57" channel-number="57" tvc-guide-stationid="34628" tvg-group="" tvg-logo="",WPSG
http://{{ .IPADDRESS }}/play/tuner/57

#EXTINF:-1 channel-id="2" channel-number="2" tvc-guide-stationid="10760" tvg-group="" tvg-logo="",FOX-KTVU
http://{{ .IPADDRESS }}/play/tuner/2

#EXTINF:-1 channel-id="4" channel-number="4" tvc-guide-stationid="10672" tvg-group="" tvg-logo="",CW-KRON
http://{{ .IPADDRESS }}/play/tuner/4

#EXTINF:-1 channel-id="5" channel-number="5" tvc-guide-stationid="10641" tvg-group="" tvg-logo="",CBS-KPIX
http://{{ .IPADDRESS }}/play/tuner/5

#EXTINF:-1 channel-id="7" channel-number="7" tvc-guide-stationid="10479" tvg-group="" tvg-logo="",ABC-KGO
http://{{ .IPADDRESS }}/play/tuner/7

#EXTINF:-1 channel-id="9" channel-number="9" tvc-guide-stationid="10653" tvg-group="" tvg-logo="",PBS-KQED
http://{{ .IPADDRESS }}/play/tuner/9

#EXTINF:-1 channel-id="11" channel-number="11" tvc-guide-stationid="10600" tvg-group="" tvg-logo="",NBC-KNTV
http://{{ .IPADDRESS }}/play/tuner/11

#EXTINF:-1 channel-id="14" channel-number="14" tvc-guide-stationid="10418" tvg-group="" tvg-logo="",Univision-KDTV
http://{{ .IPADDRESS }}/play/tuner/14

#EXTINF:-1 channel-id="22" channel-number="22" tvc-guide-stationid="10657" tvg-group="" tvg-logo="",PBS-KRCB
http://{{ .IPADDRESS }}/play/tuner/22

#EXTINF:-1 channel-id="36" channel-number="36" tvc-guide-stationid="10507" tvg-group="" tvg-logo="",KICU
http://{{ .IPADDRESS }}/play/tuner/36

#EXTINF:-1 channel-id="44" channel-number="44" tvc-guide-stationid="10345" tvg-group="" tvg-logo="",KPYX
http://{{ .IPADDRESS }}/play/tuner/44

#EXTINF:-1 channel-id="48" channel-number="48" tvc-guide-stationid="10703" tvg-group="" tvg-logo="",TMO-KSTS
http://{{ .IPADDRESS }}/play/tuner/48

#EXTINF:-1 channel-id="77" channel-number="77" tvc-guide-stationid="70436" tvg-group="" tvg-logo="",MeTV
http://{{ .IPADDRESS }}/play/tuner/77

#EXTINF:-1 channel-id="80" channel-number="80" tvc-guide-stationid="78851" tvg-group="" tvg-logo="",Cozi TV
http://{{ .IPADDRESS }}/play/tuner/80

#EXTINF:-1 channel-id="81" channel-number="81" tvc-guide-stationid="89922" tvg-group="" tvg-logo="",GRIT
http://{{ .IPADDRESS }}/play/tuner/81

#EXTINF:-1 channel-id="82" channel-number="82" tvc-guide-stationid="73067" tvg-group="" tvg-logo="",BounceTV
http://{{ .IPADDRESS }}/play/tuner/82

#EXTINF:-1 channel-id="83" channel-number="83" tvc-guide-stationid="132748" tvg-group="" tvg-logo="",GET
http://{{ .IPADDRESS }}/play/tuner/83

#EXTINF:-1 channel-id="202" channel-number="202" tvc-guide-stationid="58646" tvg-group="" tvg-logo="",CNNHD
http://{{ .IPADDRESS }}/play/tuner/202

#EXTINF:-1 channel-id="204" channel-number="204" tvc-guide-stationid="10145" tvg-group="" tvg-logo="",HLN
http://{{ .IPADDRESS }}/play/tuner/204

#EXTINF:-1 channel-id="206" channel-number="206" tvc-guide-stationid="32645" tvg-group="" tvg-logo="",ESPN HD
http://{{ .IPADDRESS }}/play/tuner/206

#EXTINF:-1 channel-id="207" channel-number="207" tvc-guide-stationid="16485" tvg-group="" tvg-logo="",ESPNEWS
http://{{ .IPADDRESS }}/play/tuner/207

#EXTINF:-1 channel-id="208" channel-number="208" tvc-guide-stationid="60696" tvg-group="" tvg-logo="",ESPNU HD
http://{{ .IPADDRESS }}/play/tuner/208

#EXTINF:-1 channel-id="209" channel-number="209" tvc-guide-stationid="45507" tvg-group="" tvg-logo="",ESPN2 HD
http://{{ .IPADDRESS }}/play/tuner/209

#EXTINF:-1 channel-id="211" channel-number="211" tvc-guide-stationid="65025" tvg-group="" tvg-logo="",NFL Red Zone
http://{{ .IPADDRESS }}/play/tuner/211

#EXTINF:-1 channel-id="212" channel-number="212" tvc-guide-stationid="45399" tvg-group="" tvg-logo="",NFL Network
http://{{ .IPADDRESS }}/play/tuner/212

#EXTINF:-1 channel-id="213" channel-number="213" tvc-guide-stationid="62081" tvg-group="" tvg-logo="",MLB Network
http://{{ .IPADDRESS }}/play/tuner/213

#EXTINF:-1 channel-id="213A" channel-number="213A" tvc-guide-stationid="62085" tvg-group="" tvg-logo="",MLB Network Alternate
http://{{ .IPADDRESS }}/play/tuner/213A

#EXTINF:-1 channel-id="215" channel-number="215" tvc-guide-stationid="58690" tvg-group="" tvg-logo="",NHL Network HD
http://{{ .IPADDRESS }}/play/tuner/215

#EXTINF:-1 channel-id="216" channel-number="216" tvc-guide-stationid="45526" tvg-group="" tvg-logo="",NBA TV
http://{{ .IPADDRESS }}/play/tuner/216

#EXTINF:-1 channel-id="217" channel-number="216" tvc-guide-stationid="60316" tvg-group="" tvg-logo="",Tennis Channel HD
http://{{ .IPADDRESS }}/play/tuner/217

#EXTINF:-1 channel-id="218" channel-number="218" tvc-guide-stationid="61854" tvg-group="" tvg-logo="",Golf Channel
http://{{ .IPADDRESS }}/play/tuner/218

#EXTINF:-1 channel-id="219" channel-number="219" tvc-guide-stationid="82547" tvg-group="" tvg-logo="",FOX Sports 1
http://{{ .IPADDRESS }}/play/tuner/219

#EXTINF:-1 channel-id="221" channel-number="221" tvc-guide-stationid="59250" tvg-group="" tvg-logo="",CBS Sports Network HD
http://{{ .IPADDRESS }}/play/tuner/221

#EXTINF:-1 channel-id="226" channel-number="226" tvc-guide-stationid="56032" tvg-group="" tvg-logo="",Shop LC
http://{{ .IPADDRESS }}/play/tuner/226

#EXTINF:-1 channel-id="229" channel-number="229" tvc-guide-stationid="14902" tvg-group="" tvg-logo="",HGTV
http://{{ .IPADDRESS }}/play/tuner/229

#EXTINF:-1 channel-id="230" channel-number="230" tvc-guide-stationid="67375" tvg-group="" tvg-logo="",Magnolia Network
http://{{ .IPADDRESS }}/play/tuner/230

#EXTINF:-1 channel-id="231" channel-number="231" tvc-guide-stationid="50747" tvg-group="" tvg-logo="",Food Network
http://{{ .IPADDRESS }}/play/tuner/231

#EXTINF:-1 channel-id="232" channel-number="232" tvc-guide-stationid="68065" tvg-group="" tvg-logo="",Cooking Channel
http://{{ .IPADDRESS }}/play/tuner/232

#EXTINF:-1 channel-id="233" channel-number="233" tvc-guide-stationid="68827" tvg-group="" tvg-logo="",GSN HD
http://{{ .IPADDRESS }}/play/tuner/233

#EXTINF:-1 channel-id="235" channel-number="235" tvc-guide-stationid="107076" tvg-group="" tvg-logo="",Tastemade
http://{{ .IPADDRESS }}/play/tuner/235

#EXTINF:-1 channel-id="236" channel-number="236" tvc-guide-stationid="61812" tvg-group="" tvg-logo="",E HD
http://{{ .IPADDRESS }}/play/tuner/236

#EXTINF:-1 channel-id="237" channel-number="237" tvc-guide-stationid="58625" tvg-group="" tvg-logo="",Bravo
http://{{ .IPADDRESS }}/play/tuner/237

#EXTINF:-1 channel-id="238" channel-number="238" tvc-guide-stationid="68385" tvg-group="" tvg-logo="",ReelzChannel HD
http://{{ .IPADDRESS }}/play/tuner/238

#EXTINF:-1 channel-id="239" channel-number="239" tvc-guide-stationid="71280" tvg-group="" tvg-logo="",Sundance TV
http://{{ .IPADDRESS }}/play/tuner/239

#EXTINF:-1 channel-id="240" channel-number="240" tvc-guide-stationid="62077" tvg-group="" tvg-logo="",HSN HD
http://{{ .IPADDRESS }}/play/tuner/240

#EXTINF:-1 channel-id="241" channel-number="241" tvc-guide-stationid="59186" tvg-group="" tvg-logo="",Paramount TV
http://{{ .IPADDRESS }}/play/tuner/241

#EXTINF:-1 channel-id="242" channel-number="242" tvc-guide-stationid="58452" tvg-group="" tvg-logo="",USA Network
http://{{ .IPADDRESS }}/play/tuner/242

#EXTINF:-1 channel-id="244" channel-number="244" tvc-guide-stationid="58623" tvg-group="" tvg-logo="",Syfy HD
http://{{ .IPADDRESS }}/play/tuner/244

#EXTINF:-1 channel-id="245" channel-number="245" tvc-guide-stationid="42642" tvg-group="" tvg-logo="",TNT HD
http://{{ .IPADDRESS }}/play/tuner/245

#EXTINF:-1 channel-id="246" channel-number="246" tvc-guide-stationid="64490" tvg-group="" tvg-logo="",truTV HD
http://{{ .IPADDRESS }}/play/tuner/246

#EXTINF:-1 channel-id="247" channel-number="247" tvc-guide-stationid="58515" tvg-group="" tvg-logo="",TBS HD
http://{{ .IPADDRESS }}/play/tuner/247

#EXTINF:-1 channel-id="248" channel-number="248" tvc-guide-stationid="58574" tvg-group="" tvg-logo="",FX HD
http://{{ .IPADDRESS }}/play/tuner/248

#EXTINF:-1 channel-id="249" channel-number="249" tvc-guide-stationid="62420" tvg-group="" tvg-logo="",Comedy Central
http://{{ .IPADDRESS }}/play/tuner/249

#EXTINF:-1 channel-id="251" channel-number="251" tvc-guide-stationid="70522" tvg-group="" tvg-logo="",Oxygen True Crime
http://{{ .IPADDRESS }}/play/tuner/251

#EXTINF:-1 channel-id="252" channel-number="252" tvc-guide-stationid="60150" tvg-group="" tvg-logo="",Lifetime
http://{{ .IPADDRESS }}/play/tuner/252

#EXTINF:-1 channel-id="253" channel-number="253" tvc-guide-stationid="55887" tvg-group="" tvg-logo="",LMN HD
http://{{ .IPADDRESS }}/play/tuner/253

#EXTINF:-1 channel-id="254" channel-number="254" tvc-guide-stationid="59337" tvg-group="" tvg-logo="",AMC HD
http://{{ .IPADDRESS }}/play/tuner/254

#EXTINF:-1 channel-id="256" channel-number="256" tvc-guide-stationid="64312" tvg-group="" tvg-logo="",TCM HD
http://{{ .IPADDRESS }}/play/tuner/256

#EXTINF:-1 channel-id="258" channel-number="258" tvc-guide-stationid="70253" tvg-group="" tvg-logo="",FX Movie Channel
http://{{ .IPADDRESS }}/play/tuner/258

#EXTINF:-1 channel-id="259" channel-number="259" tvc-guide-stationid="66379" tvg-group="" tvg-logo="",FXX HD
http://{{ .IPADDRESS }}/play/tuner/259

#EXTINF:-1 channel-id="260" channel-number="260" tvc-guide-stationid="59296" tvg-group="" tvg-logo="",WE TV
http://{{ .IPADDRESS }}/play/tuner/260

#EXTINF:-1 channel-id="261" channel-number="261" tvc-guide-stationid="16125" tvg-group="" tvg-logo="",Discovery Life
http://{{ .IPADDRESS }}/play/tuner/261

#EXTINF:-1 channel-id="264" channel-number="264" tvc-guide-stationid="64492" tvg-group="" tvg-logo="",BBC America
http://{{ .IPADDRESS }}/play/tuner/264

#EXTINF:-1 channel-id="265" channel-number="265" tvc-guide-stationid="51529" tvg-group="" tvg-logo="",A&E HD
http://{{ .IPADDRESS }}/play/tuner/265

#EXTINF:-1 channel-id="266" channel-number="266" tvc-guide-stationid="58988" tvg-group="" tvg-logo="",FYI HD
http://{{ .IPADDRESS }}/play/tuner/266

#EXTINF:-1 channel-id="267" channel-number="267" tvc-guide-stationid="126128" tvg-group="" tvg-logo="",EarthxTV
http://{{ .IPADDRESS }}/play/tuner/267

#EXTINF:-1 channel-id="269" channel-number="269" tvc-guide-stationid="57708" tvg-group="" tvg-logo="",HISTORY
http://{{ .IPADDRESS }}/play/tuner/269

#EXTINF:-1 channel-id="271" channel-number="271" tvc-guide-stationid="65732" tvg-group="" tvg-logo="",VICE HD
http://{{ .IPADDRESS }}/play/tuner/271

#EXTINF:-1 channel-id="272" channel-number="272" tvc-guide-stationid="46762" tvg-group="" tvg-logo="",LOGO HD
http://{{ .IPADDRESS }}/play/tuner/272

#EXTINF:-1 channel-id="273" channel-number="273" tvc-guide-stationid="68796" tvg-group="" tvg-logo="",POP HD
http://{{ .IPADDRESS }}/play/tuner/273

#EXTINF:-1 channel-id="274" channel-number="274" tvc-guide-stationid="69061" tvg-group="" tvg-logo="",Ovation HD
http://{{ .IPADDRESS }}/play/tuner/274

#EXTINF:-1 channel-id="275" channel-number="275" tvc-guide-stationid="60222" tvg-group="" tvg-logo="",QVC HD
http://{{ .IPADDRESS }}/play/tuner/275

#EXTINF:-1 channel-id="276" channel-number="276" tvc-guide-stationid="49438" tvg-group="" tvg-logo="",National Geographic Channel
http://{{ .IPADDRESS }}/play/tuner/276

#EXTINF:-1 channel-id="277" channel-number="277" tvc-guide-stationid="59303" tvg-group="" tvg-logo="",Travel Channel
http://{{ .IPADDRESS }}/play/tuner/277

#EXTINF:-1 channel-id="278" channel-number="278" tvc-guide-stationid="56905" tvg-group="" tvg-logo="",DSC HD
http://{{ .IPADDRESS }}/play/tuner/278

#EXTINF:-1 channel-id="279" channel-number="279" tvc-guide-stationid="70388" tvg-group="" tvg-logo="",OWN HD
http://{{ .IPADDRESS }}/play/tuner/279

#EXTINF:-1 channel-id="280" channel-number="280" tvc-guide-stationid="57391" tvg-group="" tvg-logo="",TLC HD
http://{{ .IPADDRESS }}/play/tuner/280

#EXTINF:-1 channel-id="281" channel-number="281" tvc-guide-stationid="31046" tvg-group="" tvg-logo="",MotorTrend
http://{{ .IPADDRESS }}/play/tuner/281

#EXTINF:-1 channel-id="282" channel-number="282" tvc-guide-stationid="57394" tvg-group="" tvg-logo="",Animal Planet
http://{{ .IPADDRESS }}/play/tuner/282

#EXTINF:-1 channel-id="283" channel-number="283" tvc-guide-stationid="67331" tvg-group="" tvg-logo="",Nat Geo WILD
http://{{ .IPADDRESS }}/play/tuner/283

#EXTINF:-1 channel-id="284" channel-number="284" tvc-guide-stationid="57390" tvg-group="" tvg-logo="",Science
http://{{ .IPADDRESS }}/play/tuner/284

#EXTINF:-1 channel-id="285" channel-number="285" tvc-guide-stationid="65342" tvg-group="" tvg-logo="",Investigation Discovery
http://{{ .IPADDRESS }}/play/tuner/285

#EXTINF:-1 channel-id="286" channel-number="286" tvc-guide-stationid="60468" tvg-group="" tvg-logo="",Destination America HD
http://{{ .IPADDRESS }}/play/tuner/286

#EXTINF:-1 channel-id="287" channel-number="287" tvc-guide-stationid="78808" tvg-group="" tvg-logo="",American Heroes
http://{{ .IPADDRESS }}/play/tuner/287

#EXTINF:-1 channel-id="288" channel-number="288" tvc-guide-stationid="112893" tvg-group="" tvg-logo="",PBS KIDS
http://{{ .IPADDRESS }}/play/tuner/288

#EXTINF:-1 channel-id="289" channel-number="289" tvc-guide-stationid="74885" tvg-group="" tvg-logo="",Disney Junior HD
http://{{ .IPADDRESS }}/play/tuner/289

#EXTINF:-1 channel-id="290" channel-number="290" tvc-guide-stationid="59684" tvg-group="" tvg-logo="",Disney Channel HD
http://{{ .IPADDRESS }}/play/tuner/290

#EXTINF:-1 channel-id="292" channel-number="292" tvc-guide-stationid="60006" tvg-group="" tvg-logo="",Disney XD HD
http://{{ .IPADDRESS }}/play/tuner/292

#EXTINF:-1 channel-id="293" channel-number="293" tvc-guide-stationid="50338" tvg-group="" tvg-logo="",Baby First HD
http://{{ .IPADDRESS }}/play/tuner/293

#EXTINF:-1 channel-id="294" channel-number="294" tvc-guide-stationid="67749" tvg-group="" tvg-logo="",Discovery Family Channel
http://{{ .IPADDRESS }}/play/tuner/294

#EXTINF:-1 channel-id="295" channel-number="295" tvc-guide-stationid="70225" tvg-group="" tvg-logo="",Universal Kids
http://{{ .IPADDRESS }}/play/tuner/295

#EXTINF:-1 channel-id="296" channel-number="296" tvc-guide-stationid="60048" tvg-group="" tvg-logo="",Cartoon Network
http://{{ .IPADDRESS }}/play/tuner/296

#EXTINF:-1 channel-id="298" channel-number="298" tvc-guide-stationid="21883" tvg-group="" tvg-logo="",BOOM
http://{{ .IPADDRESS }}/play/tuner/298

#EXTINF:-1 channel-id="299" channel-number="299" tvc-guide-stationid="59432" tvg-group="" tvg-logo="",Nickelodeon
http://{{ .IPADDRESS }}/play/tuner/299

#EXTINF:-1 channel-id="301" channel-number="301" tvc-guide-stationid="82649" tvg-group="" tvg-logo="",Nick Jr. HD
http://{{ .IPADDRESS }}/play/tuner/301

#EXTINF:-1 channel-id="302" channel-number="302" tvc-guide-stationid="30420" tvg-group="" tvg-logo="",Nicktoons
http://{{ .IPADDRESS }}/play/tuner/302

#EXTINF:-1 channel-id="303" channel-number="303" tvc-guide-stationid="59036" tvg-group="" tvg-logo="",TeenNick
http://{{ .IPADDRESS }}/play/tuner/303

#EXTINF:-1 channel-id="304" channel-number="304" tvc-guide-stationid="73541" tvg-group="" tvg-logo="",TV Land
http://{{ .IPADDRESS }}/play/tuner/304

#EXTINF:-1 channel-id="305" channel-number="305" tvc-guide-stationid="76894" tvg-group="" tvg-logo="",ION
http://{{ .IPADDRESS }}/play/tuner/305

#EXTINF:-1 channel-id="306" channel-number="306" tvc-guide-stationid="155159" tvg-group="" tvg-logo="",Merit Street
http://{{ .IPADDRESS }}/play/tuner/306

#EXTINF:-1 channel-id="307" channel-number="307" tvc-guide-stationid="91096" tvg-group="" tvg-logo="",NewsNation
http://{{ .IPADDRESS }}/play/tuner/307

#EXTINF:-1 channel-id="311" channel-number="311" tvc-guide-stationid="59615" tvg-group="" tvg-logo="",Freeform HD
http://{{ .IPADDRESS }}/play/tuner/311

#EXTINF:-1 channel-id="312" channel-number="312" tvc-guide-stationid="66268" tvg-group="" tvg-logo="",Hallmark Channel
http://{{ .IPADDRESS }}/play/tuner/312

#EXTINF:-1 channel-id="313" channel-number="313" tvc-guide-stationid="16604" tvg-group="" tvg-logo="",Jewelry TV
http://{{ .IPADDRESS }}/play/tuner/313

#EXTINF:-1 channel-id="314" channel-number="314" tvc-guide-stationid="122068" tvg-group="" tvg-logo="",Family Movie Classics
http://{{ .IPADDRESS }}/play/tuner/314

#EXTINF:-1 channel-id="315" channel-number="315" tvc-guide-stationid="82682" tvg-group="" tvg-logo="",QVC2
http://{{ .IPADDRESS }}/play/tuner/315

#EXTINF:-1 channel-id="318" channel-number="318" tvc-guide-stationid="101260" tvg-group="" tvg-logo="",QVC3
http://{{ .IPADDRESS }}/play/tuner/318

#EXTINF:-1 channel-id="320" channel-number="320" tvc-guide-stationid="102490" tvg-group="" tvg-logo="",Scientology Network
http://{{ .IPADDRESS }}/play/tuner/320

#EXTINF:-1 channel-id="326" channel-number="326" tvc-guide-stationid="82892" tvg-group="" tvg-logo="",Great American Family
http://{{ .IPADDRESS }}/play/tuner/326

#EXTINF:-1 channel-id="327" channel-number="327" tvc-guide-stationid="10138" tvg-group="" tvg-logo="",CMT
http://{{ .IPADDRESS }}/play/tuner/327

#EXTINF:-1 channel-id="328" channel-number="328" tvc-guide-stationid="61960" tvg-group="" tvg-logo="",TV One
http://{{ .IPADDRESS }}/play/tuner/328

#EXTINF:-1 channel-id="329" channel-number="329" tvc-guide-stationid="63236" tvg-group="" tvg-logo="",BET HD
http://{{ .IPADDRESS }}/play/tuner/329

#EXTINF:-1 channel-id="330" channel-number="330" tvc-guide-stationid="14897" tvg-group="" tvg-logo="",BHER
http://{{ .IPADDRESS }}/play/tuner/330

#EXTINF:-1 channel-id="331" channel-number="331" tvc-guide-stationid="60964" tvg-group="" tvg-logo="",MTV HD
http://{{ .IPADDRESS }}/play/tuner/331

#EXTINF:-1 channel-id="332" channel-number="332" tvc-guide-stationid="75077" tvg-group="" tvg-logo="",MTV2 HD
http://{{ .IPADDRESS }}/play/tuner/332

#EXTINF:-1 channel-id="333" channel-number="333" tvc-guide-stationid="59444" tvg-group="" tvg-logo="",IFC HD
http://{{ .IPADDRESS }}/play/tuner/333

#EXTINF:-1 channel-id="335" channel-number="335" tvc-guide-stationid="60046" tvg-group="" tvg-logo="",VH1 HD
http://{{ .IPADDRESS }}/play/tuner/335

#EXTINF:-1 channel-id="336" channel-number="336" tvc-guide-stationid="22561" tvg-group="" tvg-logo="",MTVClassic
http://{{ .IPADDRESS }}/play/tuner/336

#EXTINF:-1 channel-id="338" channel-number="338" tvc-guide-stationid="44940" tvg-group="" tvg-logo="",UPTV
http://{{ .IPADDRESS }}/play/tuner/338

#EXTINF:-1 channel-id="339" channel-number="339" tvc-guide-stationid="59116" tvg-group="" tvg-logo="",Fuse HD
http://{{ .IPADDRESS }}/play/tuner/339

#EXTINF:-1 channel-id="340" channel-number="340" tvc-guide-stationid="28506" tvg-group="" tvg-logo="",AXSTV
http://{{ .IPADDRESS }}/play/tuner/340

#EXTINF:-1 channel-id="341" channel-number="341" tvc-guide-stationid="110289" tvg-group="" tvg-logo="",Cleo TV
http://{{ .IPADDRESS }}/play/tuner/341

#EXTINF:-1 channel-id="342" channel-number="342" tvc-guide-stationid="132272" tvg-group="" tvg-logo="",theGrio
http://{{ .IPADDRESS }}/play/tuner/342

#EXTINF:-1 channel-id="345" channel-number="345" tvc-guide-stationid="63717" tvg-group="" tvg-logo="",RFD-TV
http://{{ .IPADDRESS }}/play/tuner/345

#EXTINF:-1 channel-id="346" channel-number="346" tvc-guide-stationid="89690" tvg-group="" tvg-logo="",BBC News
http://{{ .IPADDRESS }}/play/tuner/346

#EXTINF:-1 channel-id="347" channel-number="347" tvc-guide-stationid="114934" tvg-group="" tvg-logo="",The First
http://{{ .IPADDRESS }}/play/tuner/347

#EXTINF:-1 channel-id="349" channel-number="349" tvc-guide-stationid="97163" tvg-group="" tvg-logo="",Newsmax TV
http://{{ .IPADDRESS }}/play/tuner/349

#EXTINF:-1 channel-id="350" channel-number="350" tvc-guide-stationid="10161" tvg-group="" tvg-logo="",C-SPAN
http://{{ .IPADDRESS }}/play/tuner/350

#EXTINF:-1 channel-id="351" channel-number="351" tvc-guide-stationid="10162" tvg-group="" tvg-logo="",C-SPAN2
http://{{ .IPADDRESS }}/play/tuner/351

#EXTINF:-1 channel-id="353" channel-number="353" tvc-guide-stationid="71799" tvg-group="" tvg-logo="",Bloomberg TV
http://{{ .IPADDRESS }}/play/tuner/353

#EXTINF:-1 channel-id="354" channel-number="354" tvc-guide-stationid="109333" tvg-group="" tvg-logo="",Cheddar News
http://{{ .IPADDRESS }}/play/tuner/354

#EXTINF:-1 channel-id="355" channel-number="355" tvc-guide-stationid="58780" tvg-group="" tvg-logo="",CNBC HD
http://{{ .IPADDRESS }}/play/tuner/355

#EXTINF:-1 channel-id="356" channel-number="356" tvc-guide-stationid="64241" tvg-group="" tvg-logo="",MSNBC
http://{{ .IPADDRESS }}/play/tuner/356

#EXTINF:-1 channel-id="357" channel-number="357" tvc-guide-stationid="26849" tvg-group="" tvg-logo="",CNBC World
http://{{ .IPADDRESS }}/play/tuner/357

#EXTINF:-1 channel-id="358" channel-number="358" tvc-guide-stationid="10146" tvg-group="" tvg-logo="",CNNi HD
http://{{ .IPADDRESS }}/play/tuner/358

#EXTINF:-1 channel-id="359" channel-number="359" tvc-guide-stationid="58718" tvg-group="" tvg-logo="",Fox Business Network
http://{{ .IPADDRESS }}/play/tuner/359

#EXTINF:-1 channel-id="360" channel-number="360" tvc-guide-stationid="60179" tvg-group="" tvg-logo="",Fox News Channel
http://{{ .IPADDRESS }}/play/tuner/360

#EXTINF:-1 channel-id="361" channel-number="361" tvc-guide-stationid="91994" tvg-group="" tvg-logo="",AccuWeather
http://{{ .IPADDRESS }}/play/tuner/361

#EXTINF:-1 channel-id="362" channel-number="362" tvc-guide-stationid="58812" tvg-group="" tvg-logo="",The Weather Channel HD
http://{{ .IPADDRESS }}/play/tuner/362

#EXTINF:-1 channel-id="363" channel-number="363" tvc-guide-stationid="121307" tvg-group="" tvg-logo="",Fox Weather
http://{{ .IPADDRESS }}/play/tuner/363

#EXTINF:-1 channel-id="369" channel-number="369" tvc-guide-stationid="87001" tvg-group="" tvg-logo="",Daystar HD
http://{{ .IPADDRESS }}/play/tuner/369

#EXTINF:-1 channel-id="381" channel-number="381" tvc-guide-stationid="97409" tvg-group="" tvg-logo="",Aspire HD
http://{{ .IPADDRESS }}/play/tuner/381

#EXTINF:-1 channel-id="382" channel-number="382" tvc-guide-stationid="82470" tvg-group="" tvg-logo="",Comedy TV
http://{{ .IPADDRESS }}/play/tuner/382

#EXTINF:-1 channel-id="383" channel-number="383" tvc-guide-stationid="78850" tvg-group="" tvg-logo="",Justice Central HD
http://{{ .IPADDRESS }}/play/tuner/383

#EXTINF:-1 channel-id="384" channel-number="384" tvc-guide-stationid="83098" tvg-group="" tvg-logo="",Revolt HD
http://{{ .IPADDRESS }}/play/tuner/384

#EXTINF:-1 channel-id="385" channel-number="385" tvc-guide-stationid="110477" tvg-group="" tvg-logo="",Heroes & Icons
http://{{ .IPADDRESS }}/play/tuner/385

#EXTINF:-1 channel-id="386" channel-number="386" tvc-guide-stationid="72094" tvg-group="" tvg-logo="",FM HD
http://{{ .IPADDRESS }}/play/tuner/386

#EXTINF:-1 channel-id="402" channel-number="402" tvc-guide-stationid="68049" tvg-group="" tvg-logo="",Univision
http://{{ .IPADDRESS }}/play/tuner/402

#EXTINF:-1 channel-id="404" channel-number="404" tvc-guide-stationid="68367" tvg-group="" tvg-logo="",Galavision
http://{{ .IPADDRESS }}/play/tuner/404

#EXTINF:-1 channel-id="408" channel-number="408" tvc-guide-stationid="68040" tvg-group="" tvg-logo="",UniMas
http://{{ .IPADDRESS }}/play/tuner/408

#EXTINF:-1 channel-id="410" channel-number="410" tvc-guide-stationid="91588" tvg-group="" tvg-logo="",UNIVERSO
http://{{ .IPADDRESS }}/play/tuner/410

#EXTINF:-1 channel-id="464" channel-number="464" tvc-guide-stationid="77033" tvg-group="" tvg-logo="",TUDN HD
http://{{ .IPADDRESS }}/play/tuner/464

#EXTINF:-1 channel-id="501" channel-number="501" tvc-guide-stationid="19548" tvg-group="" tvg-logo="",HBO East
http://{{ .IPADDRESS }}/play/tuner/501

#EXTINF:-1 channel-id="502" channel-number="502" tvc-guide-stationid="59368" tvg-group="" tvg-logo="",HBO2 HD East
http://{{ .IPADDRESS }}/play/tuner/502

#EXTINF:-1 channel-id="503" channel-number="503" tvc-guide-stationid="59363" tvg-group="" tvg-logo="",HBO Signature
http://{{ .IPADDRESS }}/play/tuner/503

#EXTINF:-1 channel-id="504" channel-number="504" tvc-guide-stationid="19566" tvg-group="" tvg-logo="",HBO West HD
http://{{ .IPADDRESS }}/play/tuner/504

#EXTINF:-1 channel-id="505" channel-number="505" tvc-guide-stationid="59368" tvg-group="" tvg-logo="",HBO2 West HD
http://{{ .IPADDRESS }}/play/tuner/505

#EXTINF:-1 channel-id="506" channel-number="506" tvc-guide-stationid="59839" tvg-group="" tvg-logo="",HBOCHD
http://{{ .IPADDRESS }}/play/tuner/506

#EXTINF:-1 channel-id="507" channel-number="507" tvc-guide-stationid="59357" tvg-group="" tvg-logo="",HBO Family East
http://{{ .IPADDRESS }}/play/tuner/507

#EXTINF:-1 channel-id="509" channel-number="509" tvc-guide-stationid="59845" tvg-group="" tvg-logo="",HBO Zone HD
http://{{ .IPADDRESS }}/play/tuner/509

#EXTINF:-1 channel-id="511" channel-number="511" tvc-guide-stationid="59837" tvg-group="" tvg-logo="",HBO Latino
http://{{ .IPADDRESS }}/play/tuner/511

#EXTINF:-1 channel-id="535" channel-number="535" tvc-guide-stationid="36225" tvg-group="" tvg-logo="",STARZ ENCORE East
http://{{ .IPADDRESS }}/play/tuner/535

#EXTINF:-1 channel-id="536" channel-number="536" tvc-guide-stationid="17125" tvg-group="" tvg-logo="",STARZ ENCORE West
http://{{ .IPADDRESS }}/play/tuner/536

#EXTINF:-1 channel-id="537" channel-number="537" tvc-guide-stationid="14764" tvg-group="" tvg-logo="",STARZ ENCORE Classic
http://{{ .IPADDRESS }}/play/tuner/537

#EXTINF:-1 channel-id="538" channel-number="538" tvc-guide-stationid="102906" tvg-group="" tvg-logo="",STARZ ENCORE Westerns
http://{{ .IPADDRESS }}/play/tuner/538

#EXTINF:-1 channel-id="539" channel-number="539" tvc-guide-stationid="14766" tvg-group="" tvg-logo="",STARZ ENCORE Suspense
http://{{ .IPADDRESS }}/play/tuner/539

#EXTINF:-1 channel-id="540" channel-number="540" tvc-guide-stationid="14870" tvg-group="" tvg-logo="",STARZ ENCORE Black
http://{{ .IPADDRESS }}/play/tuner/540

#EXTINF:-1 channel-id="541" channel-number="541" tvc-guide-stationid="72015" tvg-group="" tvg-logo="",STARZ ENCORE Action
http://{{ .IPADDRESS }}/play/tuner/541

#EXTINF:-1 channel-id="542" channel-number="542" tvc-guide-stationid="102903" tvg-group="" tvg-logo="",STARZ ENCORE Family
http://{{ .IPADDRESS }}/play/tuner/542

#EXTINF:-1 channel-id="558" channel-number="558" tvc-guide-stationid="65687" tvg-group="" tvg-logo="",MGM+
http://{{ .IPADDRESS }}/play/tuner/558

#EXTINF:-1 channel-id="559" channel-number="559" tvc-guide-stationid="67929" tvg-group="" tvg-logo="",MGM+ HITS
http://{{ .IPADDRESS }}/play/tuner/559

#EXTINF:-1 channel-id="560" channel-number="560" tvc-guide-stationid="74073" tvg-group="" tvg-logo="",MGM+ MARQUEE
http://{{ .IPADDRESS }}/play/tuner/560

#EXTINF:-1 channel-id="565" channel-number="565" tvc-guide-stationid="46710" tvg-group="" tvg-logo="",Hallmark Mystery
http://{{ .IPADDRESS }}/play/tuner/565

#EXTINF:-1 channel-id="566" channel-number="566" tvc-guide-stationid="33668" tvg-group="" tvg-logo="",HDNM
http://{{ .IPADDRESS }}/play/tuner/566

#EXTINF:-1 channel-id="570" channel-number="570" tvc-guide-stationid="58532" tvg-group="" tvg-logo="",Smithsonian Channel HD
http://{{ .IPADDRESS }}/play/tuner/570

#EXTINF:-1 channel-id="573" channel-number="573" tvc-guide-stationid="67454" tvg-group="" tvg-logo="",Shorts TV HD
http://{{ .IPADDRESS }}/play/tuner/573

#EXTINF:-1 channel-id="602" channel-number="602" tvc-guide-stationid="21345" tvg-group="" tvg-logo="",FanDuel TV
http://{{ .IPADDRESS }}/play/tuner/602

#EXTINF:-1 channel-id="604" channel-number="604" tvc-guide-stationid="60111" tvg-group="" tvg-logo="",Pursuit Channel
http://{{ .IPADDRESS }}/play/tuner/604

#EXTINF:-1 channel-id="605" channel-number="605" tvc-guide-stationid="33930" tvg-group="" tvg-logo="",Sportsman Channel
http://{{ .IPADDRESS }}/play/tuner/605

#EXTINF:-1 channel-id="611" channel-number="611" tvc-guide-stationid="89714" tvg-group="" tvg-logo="",SEC Network
http://{{ .IPADDRESS }}/play/tuner/611

#EXTINF:-1 channel-id="612" channel-number="612" tvc-guide-stationid="111871" tvg-group="" tvg-logo="",ACC Network
http://{{ .IPADDRESS }}/play/tuner/612

#EXTINF:-1 channel-id="618" channel-number="618" tvc-guide-stationid="59305" tvg-group="" tvg-logo="",FOX Sports 2
http://{{ .IPADDRESS }}/play/tuner/618

#EXTINF:-1 channel-id="4009" channel-number="4009" tvc-guide-stationid="96827" tvg-group="" tvg-logo="",SCNEWS
http://{{ .IPADDRESS }}/play/tuner/4009

#EXTINF:-1 channel-id="4012" channel-number="4012" tvc-guide-stationid="137575" tvg-group="" tvg-logo="",TIME
http://{{ .IPADDRESS }}/play/tuner/4012

#EXTINF:-1 channel-id="4021" channel-number="4021" tvc-guide-stationid="147894" tvg-group="" tvg-logo="",YAHOOFS
http://{{ .IPADDRESS }}/play/tuner/4021

#EXTINF:-1 channel-id="4105" channel-number="4105" tvc-guide-stationid="112732" tvg-group="" tvg-logo="",SPORTSGRID
http://{{ .IPADDRESS }}/play/tuner/4105

#EXTINF:-1 channel-id="4110" channel-number="4110" tvc-guide-stationid="124313" tvg-group="" tvg-logo="",FUELFUB
http://{{ .IPADDRESS }}/play/tuner/4110

#EXTINF:-1 channel-id="4120" channel-number="4120" tvc-guide-stationid="124817" tvg-group="" tvg-logo="",ORIGIN SPORTS
http://{{ .IPADDRESS }}/play/tuner/4120

#EXTINF:-1 channel-id="4125" channel-number="4125" tvc-guide-stationid="124636" tvg-group="" tvg-logo="",WSN
http://{{ .IPADDRESS }}/play/tuner/4125

#EXTINF:-1 channel-id="4140" channel-number="4140" tvc-guide-stationid="124268" tvg-group="" tvg-logo="",PKGFAST
http://{{ .IPADDRESS }}/play/tuner/4140

#EXTINF:-1 channel-id="4190" channel-number="4190" tvc-guide-stationid="116748" tvg-group="" tvg-logo="",PLAYERS
http://{{ .IPADDRESS }}/play/tuner/4190

#EXTINF:-1 channel-id="4191" channel-number="4191" tvc-guide-stationid="123515" tvg-group="" tvg-logo="",POWERNATION
http://{{ .IPADDRESS }}/play/tuner/4191

#EXTINF:-1 channel-id="4192" channel-number="4192" tvc-guide-stationid="124630" tvg-group="" tvg-logo="",RA
http://{{ .IPADDRESS }}/play/tuner/4192

#EXTINF:-1 channel-id="4209" channel-number="4209" tvc-guide-stationid="135378" tvg-group="" tvg-logo="",HerSphere
http://{{ .IPADDRESS }}/play/tuner/4209

#EXTINF:-1 channel-id="4219" channel-number="4219" tvc-guide-stationid="114491" tvg-group="" tvg-logo="",Bob Ross Channel
http://{{ .IPADDRESS }}/play/tuner/4219

#EXTINF:-1 channel-id="4221" channel-number="4221" tvc-guide-stationid="124998" tvg-group="" tvg-logo="",Horror by Alter
http://{{ .IPADDRESS }}/play/tuner/4221

#EXTINF:-1 channel-id="4229" channel-number="4229" tvc-guide-stationid="124328" tvg-group="" tvg-logo="",El Rey Rebel
http://{{ .IPADDRESS }}/play/tuner/4229

#EXTINF:-1 channel-id="4230" channel-number="4230" tvc-guide-stationid="123605" tvg-group="" tvg-logo="",Court TV
http://{{ .IPADDRESS }}/play/tuner/4230

#EXTINF:-1 channel-id="4255" channel-number="4255" tvc-guide-stationid="119233" tvg-group="" tvg-logo="",Nosey
http://{{ .IPADDRESS }}/play/tuner/4255

#EXTINF:-1 channel-id="4301" channel-number="4301" tvc-guide-stationid="121204" tvg-group="" tvg-logo="",FLARMY
http://{{ .IPADDRESS }}/play/tuner/4301

#EXTINF:-1 channel-id="4305" channel-number="4305" tvc-guide-stationid="115447" tvg-group="" tvg-logo="",Comedy Dynamics
http://{{ .IPADDRESS }}/play/tuner/4305

#EXTINF:-1 channel-id="4321" channel-number="4321" tvc-guide-stationid="125128" tvg-group="" tvg-logo="",AGRMGT
http://{{ .IPADDRESS }}/play/tuner/4321

#EXTINF:-1 channel-id="4322" channel-number="4322" tvc-guide-stationid="120377" tvg-group="" tvg-logo="",AWTYSTR
http://{{ .IPADDRESS }}/play/tuner/4322

#EXTINF:-1 channel-id="4346" channel-number="4346" tvc-guide-stationid="147688" tvg-group="" tvg-logo="",DOG
http://{{ .IPADDRESS }}/play/tuner/4346

#EXTINF:-1 channel-id="4358" channel-number="4358" tvc-guide-stationid="120351" tvg-group="" tvg-logo="",Tastemade Travel
http://{{ .IPADDRESS }}/play/tuner/4358

#EXTINF:-1 channel-id="4359" channel-number="4359" tvc-guide-stationid="125187" tvg-group="" tvg-logo="",Tastemade Home
http://{{ .IPADDRESS }}/play/tuner/4359

#EXTINF:-1 channel-id="4365" channel-number="4365" tvc-guide-stationid="118087" tvg-group="" tvg-logo="",The Design Network
http://{{ .IPADDRESS }}/play/tuner/4365

#EXTINF:-1 channel-id="4367" channel-number="4367" tvc-guide-stationid="127174" tvg-group="" tvg-logo="",ATHFHM
http://{{ .IPADDRESS }}/play/tuner/4367

#EXTINF:-1 channel-id="4370" channel-number="4370" tvc-guide-stationid="149441" tvg-group="" tvg-logo="",MeatEater
http://{{ .IPADDRESS }}/play/tuner/4370

#EXTINF:-1 channel-id="4401" channel-number="4401" tvc-guide-stationid="119212" tvg-group="" tvg-logo="",FOX SOUL
http://{{ .IPADDRESS }}/play/tuner/4401

#EXTINF:-1 channel-id="4404" channel-number="4404" tvc-guide-stationid="146144" tvg-group="" tvg-logo="",Ebony TV
http://{{ .IPADDRESS }}/play/tuner/4404

#EXTINF:-1 channel-id="4416" channel-number="4416" tvc-guide-stationid="110480" tvg-group="" tvg-logo="",Dove TV
http://{{ .IPADDRESS }}/play/tuner/4416

#EXTINF:-1 channel-id="4470" channel-number="4470" tvc-guide-stationid="126364" tvg-group="" tvg-logo="",LOVE NATURE
http://{{ .IPADDRESS }}/play/tuner/4470

#EXTINF:-1 channel-id="4490" channel-number="4490" tvc-guide-stationid="112881" tvg-group="" tvg-logo="",Alien Nation
http://{{ .IPADDRESS }}/play/tuner/4490

#EXTINF:-1 channel-id="4501" channel-number="4501" tvc-guide-stationid="115944" tvg-group="" tvg-logo="",MovieSphere
http://{{ .IPADDRESS }}/play/tuner/4501

#EXTINF:-1 channel-id="4720" channel-number="4720" tvc-guide-stationid="158862" tvg-group="" tvg-logo="",SOMOSN
http://{{ .IPADDRESS }}/play/tuner/4720

#EXTINF:-1 channel-id="4721" channel-number="4721" tvc-guide-stationid="121165" tvg-group="" tvg-logo="",PETCOLL
http://{{ .IPADDRESS }}/play/tuner/4721

#EXTINF:-1 channel-id="exit" channel-number="" tvc-guide-stationid="" tvg-group="" tvg-logo="",Exit DirecTV
http://{{ .IPADDRESS }}/play/tuner/exit

#EXTINF:-1 channel-id="reboot" channel-number="" tvc-guide-stationid="" tvg-group="" tvg-logo="",Reboot FireTV
http://{{ .IPADDRESS }}/play/tuner/reboot

#EXTINF:-1 channel-id="242A" channel-number="242A" tvc-guide-stationid="154942" tvg-group="" tvg-logo="",OLYX1
http://{{ .IPADDRESS }}/play/tuner/242A

#EXTINF:-1 channel-id="242B" channel-number="242B" tvc-guide-stationid="154943" tvg-group="" tvg-logo="",OLYX2
http://{{ .IPADDRESS }}/play/tuner/242B

2 Likes

I must have a syntax error somewhere. It changes to the initial channel 242, but does not do the adb channel up / down commands. I can open adb shell and they do work as expected manually.

tuneChannel() {
  if [[ "$channelID" == 242 ]]; then
    $adbTarget shell input text "244"
    sleep 1
    $adbTarget shell input keyevent KEYCODE_CHANNEL_DOWN
    $adbTarget shell input keyevent KEYCODE_CHANNEL_DOWN
  elif [[ "$channelID" == 242A ]]; then
    $adbTarget shell input text "244"
    sleep 1;
    $adbTarget shell input keyevent KEYCODE_CHANNEL_DOWN
  elif [[ "$channelID" == 242B ]]; then
    $adbTarget shell input text "241"
    sleep 1
    $adbTarget shell input keyevent KEYCODE_CHANNEL_UP
    $adbTarget shell input keyevent KEYCODE_CHANNEL_UP
    $adbTarget shell input keyevent KEYCODE_CHANNEL_UP
  else
    $adbTarget shell input text $channelID
  fi
}

Log:
[EXECUTE] Stderr: '+ channelID='"242B"'
+ specialID=242B
+ streamerIP=10.0.0.61:5555
+ streamerNoPort=10.0.0.61
+ adbTarget='adb -s 10.0.0.61:5555'
+ m3uName=directv.m3u
+ trap finish EXIT
+ main
+ matchEncoderURL
+ case "$streamerIP" in
+ encoderURL=http://10.0.0.60/0.ts
+ tuneChannel
+ [[ "242B" == 242 ]]
+ [[ "242B" == 242A ]]
+ [[ "242B" == 242B ]]
+ adb -s 10.0.0.61:5555 shell input text '"242B"'
+ finish
+ echo 'bmitune.sh is exiting for 10.0.0.61:5555 with exit code 0'

Prolly something I'm overlooking

Try putting double quotes around the numbers in the conditionals:

tuneChannel() {
  if [[ "$channelID" == "242" ]]; then
    $adbTarget shell input text "244"
    sleep 1
    $adbTarget shell input keyevent KEYCODE_CHANNEL_DOWN
    $adbTarget shell input keyevent KEYCODE_CHANNEL_DOWN
  elif [[ "$channelID" == "242A" ]]; then
    $adbTarget shell input text "244"
    sleep 1;
    $adbTarget shell input keyevent KEYCODE_CHANNEL_DOWN
  elif [[ "$channelID" == "242B" ]]; then
    $adbTarget shell input text "241"
    sleep 1
    $adbTarget shell input keyevent KEYCODE_CHANNEL_UP
    $adbTarget shell input keyevent KEYCODE_CHANNEL_UP
    $adbTarget shell input keyevent KEYCODE_CHANNEL_UP
  else
    $adbTarget shell input text $channelID
  fi
}

I did try that earlier, here it is just now - still not getting the adb commands to process. The only thing I noticed was that it divided out the channels with a \

[EXECUTE] Stderr: '+ channelID='"242B"'
+ specialID=242B
+ streamerIP=10.0.0.62:5555
+ streamerNoPort=10.0.0.62
+ adbTarget='adb -s 10.0.0.62:5555'
+ m3uName=directv.m3u
+ trap finish EXIT
+ main
+ matchEncoderURL
+ case "$streamerIP" in
+ encoderURL=http://10.0.0.60/4.ts
+ tuneChannel
+ [[ "242B" == \2\4\2 ]]
+ [[ "242B" == \2\4\2\A ]]
+ [[ "242B" == \2\4\2\B ]]
+ adb -s 10.0.0.62:5555 shell input text '"242B"'
+ finish
+ echo 'bmitune.sh is exiting for 10.0.0.62:5555 with exit code 0'

How about:

tuneChannel() {
  if [[ "$channelID" == \"242\" ]]; then
    $adbTarget shell input text "244"
    sleep 1
    $adbTarget shell input keyevent KEYCODE_CHANNEL_DOWN
    $adbTarget shell input keyevent KEYCODE_CHANNEL_DOWN
  elif [[ "$channelID" == \"242A\" ]]; then
    $adbTarget shell input text "244"
    sleep 1;
    $adbTarget shell input keyevent KEYCODE_CHANNEL_DOWN
  elif [[ "$channelID" == \"242B\" ]]; then
    $adbTarget shell input text "241"
    sleep 1
    $adbTarget shell input keyevent KEYCODE_CHANNEL_UP
    $adbTarget shell input keyevent KEYCODE_CHANNEL_UP
    $adbTarget shell input keyevent KEYCODE_CHANNEL_UP
  else
    $adbTarget shell input text $channelID
  fi
}

You nailed it! Seeing the adb commands come through now. Look like I need some fine adjustments with sleep timings - but easier to trace now.

As always - you've been a great help!!

Dumb question, but where do I go to make those changes?

There are no dumb questions - ever. It's in the bmitune file for whatever setup you're using. Usually in your /data/ah4c/scripts.

New bnhf/ah4c:latest (aka bnhf/ah4c:2024.07.29) pushed today.

Fixes/improvements include:

  • Reworked dtvdeeplinks scripts due to changes to the DirecTV app. Active audio is now confirmed before sending the deeplink, as the links were being ignored if the app wasn't already running.

  • Added Paris Extra 1 and Paris Extra 2 to dtvdeeplinks.m3u.

  • Updated dtvstream.m3u based on recent additions by @gfhartzell as described here:

Can you post your bmitune? Or where do I add it in the file?

You'll see the tuneChannel section in your bmitune file. You may need to fine tune the keyevents for your setup..

tuneChannel() {
  if [[ "$channelID" == \"242\" ]]; then
    $adbTarget shell input text "244"
    sleep 1
    $adbTarget shell input keyevent KEYCODE_CHANNEL_DOWN
  elif [[ "$channelID" == \"242A\" ]]; then
    $adbTarget shell input text "244"
    sleep 1;
    $adbTarget shell input keyevent KEYCODE_CHANNEL_DOWN
    $adbTarget shell input keyevent KEYCODE_CHANNEL_DOWN
  elif [[ "$channelID" == \"242B\" ]]; then
    $adbTarget shell input text "241"
    sleep 1
    $adbTarget shell input keyevent KEYCODE_CHANNEL_UP
    $adbTarget shell input keyevent KEYCODE_CHANNEL_UP
  else
    $adbTarget shell input text $channelID
  fi
}

Do you know the nbctve://live/ deep links for the paris extra 1/2 channels on the NBC app so I can tune to them with ADB?

Sorry, no.

New bnhf/ah4c:latest (aka bnhf/ah4c:2024.07.30) pushed with improvements to the dtvdeeplinks scripts.

Specifically, if the DTV app is already running, and it's been less than 4 hours since it was last used -- deeplinks will be sent as before. If either of those tests is false, the app will be launched and active audio detected first before sending the deeplink. This restores tuning speeds to previous (fast) levels.

Here's something that might help someone else. I'm not sure if it's due to my "cheapest I could find" EXVIST H.264/H.265 encoder or something else entirely, but sometimes (not always) channels DVR says it sees EOF soon after the actual video starts playing.

2024/08/05 15:54:28.454989 [SNR] Buffer statistics for "TV/Alma's Way/Alma's Way S01E11 2021-10-19 Socks for Sale Almas Anim 2024-08-05-1554.mpg": buf=0% drop=0%
2024/08/05 15:54:28.459657 [DVR] Job 1722898417-chKHET Alma's Way ended prematurely: 5m31.540346421s

As a result, it closes the connection, and ah4c runs the stop script. If it's a record job in channels DVR, it tries again and again and does not succeed (because it starts the turning process from the beginning each time).

There's a lot I don't know about MPEGTS, but I suspect that when the video starts playing either the software on my device or the firmware on the decoder says, "well, things have changed, so I'm going to end that stream and start a new one". I poked around a bit and tried a lot of things in my knuckle-dragging way. Without understanding what is actually going on, I have finally hit upon something that works around the problem.

The TSDuck toolkit is able to analyze and do a lot of things with transport streams. It's possible to use it as a very simple streaming server at the output of its pipeline. It can also be configured to overlook a few things, like an unexpected EOF. For the EOF thing, you can tell it to go back to the source and start reading again. With those things, I was able to construct a simple proxy that reads the stream out of my encoder and makes it available for chanels DVR (via ah4c). Since there is no transcoding, it doesn't use much resource.

If you have a similar problem or if you just want to see more details, there is a docker image on Docker hub at wjcarpenter/tsduck-proxy. The artifacts for building that docker image can be found in this GitLab repo: tsduck-proxy · main · WJCarpenter / tv scraps · GitLab