ADBTuner: A "channel tuning" application for networked Google TV / Android TV devices

Oh my bad, should have been more specific. Were you loading a channel from YouTube TV, or Hulu. or ?

1 Like

Oh, sorry. It was YouTube TV.

Awesome! Yeah, that was something I made a special effort to address.

1 Like

Here is a log from the container from start up to channel preview.

adbtuner
date
stream
content
2023/07/08 15:36:46
stdout
INFO:     172.17.0.1:54010 - "GET /admin/tuner/status?_=1688855200889 HTTP/1.1" 200 OK
2023/07/08 15:35:46
stdout
INFO:     172.17.0.1:53964 - "GET /admin/tuner/status?_=1688855200888 HTTP/1.1" 200 OK
2023/07/08 15:34:46
stdout
INFO:     172.17.0.1:53920 - "GET /admin/tuner/status?_=1688855200887 HTTP/1.1" 200 OK
2023/07/08 15:33:46
stdout
INFO:     172.17.0.1:53874 - "GET /admin/tuner/status?_=1688855200886 HTTP/1.1" 200 OK
2023/07/08 15:32:46
stdout
INFO:     172.17.0.1:53828 - "GET /admin/tuner/status?_=1688855200885 HTTP/1.1" 200 OK
2023/07/08 15:32:41
stdout
INFO:     172.17.0.1:53828 - "GET /admin/tuner/status?_=1688855200884 HTTP/1.1" 200 OK
2023/07/08 15:32:35
stdout
INFO:     172.17.0.1:53818 - "GET /admin/tuner/status?_=1688855200883 HTTP/1.1" 200 OK
2023/07/08 15:32:30
stdout
INFO:     172.17.0.1:53818 - "GET /admin/tuner/status?_=1688855200882 HTTP/1.1" 200 OK
2023/07/08 15:32:25
stdout
INFO:     172.17.0.1:53812 - "GET /admin/tuner/status?_=1688855200881 HTTP/1.1" 200 OK
2023/07/08 15:32:19
stdout
INFO:     172.17.0.1:53802 - "GET /admin/tuner/status?_=1688855200880 HTTP/1.1" 200 OK
2023/07/08 15:32:14
stdout
INFO:     172.17.0.1:53802 - "GET /admin/tuner/status?_=1688855200879 HTTP/1.1" 200 OK
2023/07/08 15:32:08
stdout
INFO:     172.17.0.1:53796 - "GET /admin/tuner/status?_=1688855200878 HTTP/1.1" 200 OK
2023/07/08 15:32:03
stdout
INFO:     172.17.0.1:53794 - "GET /admin/tuner/status?_=1688855200877 HTTP/1.1" 200 OK
2023/07/08 15:31:57
stdout
INFO:     172.17.0.1:53788 - "GET /admin/tuner/status?_=1688855200876 HTTP/1.1" 200 OK
2023/07/08 15:31:52
stdout
INFO:     172.17.0.1:53780 - "GET /admin/tuner/status?_=1688855200875 HTTP/1.1" 200 OK
2023/07/08 15:31:47
stdout
INFO:     172.17.0.1:53774 - "GET /admin/tuner/status?_=1688855200874 HTTP/1.1" 200 OK
2023/07/08 15:31:42
stdout
INFO:     172.17.0.1:53764 - "GET /admin/tuner/status?_=1688855200873 HTTP/1.1" 200 OK
2023/07/08 15:31:37
stdout
INFO:     172.17.0.1:53764 - "GET /admin/tuner/status?_=1688855200872 HTTP/1.1" 200 OK
2023/07/08 15:31:32
stdout
INFO:     172.17.0.1:53758 - "GET /admin/tuner/status?_=1688855200871 HTTP/1.1" 200 OK
2023/07/08 15:31:27
stdout
INFO:     172.17.0.1:53758 - "GET /admin/tuner/status?_=1688855200870 HTTP/1.1" 200 OK
2023/07/08 15:31:22
stdout
INFO:     172.17.0.1:53752 - "GET /admin/tuner/status?_=1688855200869 HTTP/1.1" 200 OK
2023/07/08 15:31:17
stdout
INFO:     172.17.0.1:53742 - "GET /admin/tuner/status?_=1688855200868 HTTP/1.1" 200 OK
2023/07/08 15:31:12
stdout
INFO:     172.17.0.1:53742 - "GET /admin/tuner/status?_=1688855200867 HTTP/1.1" 200 OK
2023/07/08 15:31:07
stdout
INFO:     172.17.0.1:53732 - "GET /admin/tuner/status?_=1688855200866 HTTP/1.1" 200 OK
2023/07/08 15:31:02
stdout
INFO:     172.17.0.1:53732 - "GET /admin/tuner/status?_=1688855200865 HTTP/1.1" 200 OK
2023/07/08 15:30:57
stdout
INFO:     172.17.0.1:53732 - "GET /admin/tuner/status?_=1688855200864 HTTP/1.1" 200 OK
2023/07/08 15:30:52
stdout
INFO:     172.17.0.1:53716 - "GET /admin/tuner/status?_=1688855200863 HTTP/1.1" 200 OK
2023/07/08 15:30:47
stdout
INFO:     172.17.0.1:53716 - "GET /admin/tuner/status?_=1688855200862 HTTP/1.1" 200 OK
2023/07/08 15:30:42
stdout
INFO:     172.17.0.1:53716 - "GET /admin/tuner/status?_=1688855200861 HTTP/1.1" 200 OK
2023/07/08 15:30:37
stdout
INFO:     172.17.0.1:53704 - "GET /admin/tuner/status?_=1688855200860 HTTP/1.1" 200 OK
2023/07/08 15:30:32
stdout
INFO:     172.17.0.1:53704 - "GET /admin/tuner/status?_=1688855200859 HTTP/1.1" 200 OK
2023/07/08 15:30:27
stdout
INFO:     172.17.0.1:53704 - "GET /admin/tuner/status?_=1688855200858 HTTP/1.1" 200 OK
2023/07/08 15:30:22
stdout
INFO:     172.17.0.1:53698 - "GET /admin/tuner/status?_=1688855200857 HTTP/1.1" 200 OK
2023/07/08 15:30:17
stdout
INFO:     172.17.0.1:53688 - "GET /admin/tuner/status?_=1688855200856 HTTP/1.1" 200 OK
2023/07/08 15:30:12
stdout
INFO:     172.17.0.1:53688 - "GET /admin/tuner/status?_=1688855200855 HTTP/1.1" 200 OK
2023/07/08 15:30:07
stdout
INFO:     172.17.0.1:53678 - "GET /admin/tuner/status?_=1688855200854 HTTP/1.1" 200 OK
2023/07/08 15:30:02
stdout
INFO:     172.17.0.1:53678 - "GET /admin/tuner/status?_=1688855200853 HTTP/1.1" 200 OK
2023/07/08 15:29:57
stdout
INFO:     172.17.0.1:53672 - "GET /admin/tuner/status?_=1688855200852 HTTP/1.1" 200 OK
2023/07/08 15:29:52
stdout
INFO:     172.17.0.1:53672 - "GET /admin/tuner/status?_=1688855200851 HTTP/1.1" 200 OK
2023/07/08 15:29:47
stdout
INFO:     172.17.0.1:53662 - "GET /admin/tuner/status?_=1688855200850 HTTP/1.1" 200 OK
2023/07/08 15:29:42
stdout
INFO:     172.17.0.1:53662 - "GET /admin/tuner/status?_=1688855200849 HTTP/1.1" 200 OK
2023/07/08 15:29:37
stdout
INFO:     172.17.0.1:53652 - "GET /admin/tuner/status?_=1688855200848 HTTP/1.1" 200 OK
2023/07/08 15:29:32
stdout
INFO:     172.17.0.1:53652 - "GET /admin/tuner/status?_=1688855200847 HTTP/1.1" 200 OK
2023/07/08 15:29:27
stdout
INFO:     172.17.0.1:53650 - "GET /admin/tuner/status?_=1688855200846 HTTP/1.1" 200 OK
2023/07/08 15:29:22
stdout
INFO:     172.17.0.1:53626 - "GET /admin/tuner/status?_=1688855200845 HTTP/1.1" 200 OK
2023/07/08 15:29:22
stderr
httpx.ConnectError: [Errno 111] Connection refused
2023/07/08 15:29:22
stderr
    raise mapped_exc(message) from exc
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 77, in map_httpcore_exceptions
2023/07/08 15:29:22
stderr
    self.gen.throw(typ, value, traceback)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/contextlib.py", line 155, in __exit__
2023/07/08 15:29:22
stderr
    with map_httpcore_exceptions():
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 217, in handle_request
2023/07/08 15:29:22
stderr
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023/07/08 15:29:22
stderr
    response = transport.handle_request(request)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 1002, in _send_single_request
2023/07/08 15:29:22
stderr
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023/07/08 15:29:22
stderr
    response = self._send_single_request(request)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 966, in _send_handling_redirects
2023/07/08 15:29:22
stderr
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023/07/08 15:29:22
stderr
    response = self._send_handling_redirects(
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 929, in _send_handling_auth
2023/07/08 15:29:22
stderr
               ^^^^^^^^^^^^^^^^^^^^^^^^^
2023/07/08 15:29:22
stderr
    response = self._send_handling_auth(
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 901, in send
2023/07/08 15:29:22
stderr
               ^^^^^^^^^^
2023/07/08 15:29:22
stderr
    response = self.send(
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 857, in stream
2023/07/08 15:29:22
stderr
           ^^^^^^^^^^^^^^
2023/07/08 15:29:22
stderr
    return next(self.gen)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/contextlib.py", line 137, in __enter__
2023/07/08 15:29:22
stderr
    with client.stream(
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpx/_api.py", line 152, in stream
2023/07/08 15:29:22
stderr
           ^^^^^^^^^^^^^^
2023/07/08 15:29:22
stderr
    return next(self.gen)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/contextlib.py", line 137, in __enter__
2023/07/08 15:29:22
stderr
    with httpx.stream("GET", tuner.streaming_endpoint) as r:
2023/07/08 15:29:22
stderr
  File "/app/server.py", line 472, in iter
2023/07/08 15:29:22
stderr
    async for chunk in self.body_iterator:
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/starlette/responses.py", line 262, in stream_response
2023/07/08 15:29:22
stderr
    await func()
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/starlette/responses.py", line 273, in wrap
2023/07/08 15:29:22
stderr
    raise exceptions[0]
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 597, in __aexit__
2023/07/08 15:29:22
stderr
    async with anyio.create_task_group() as task_group:
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/starlette/responses.py", line 270, in __call__
2023/07/08 15:29:22
stderr
    await response(scope, receive, send)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 69, in app
2023/07/08 15:29:22
stderr
    await self.app(scope, receive, send)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 276, in handle
2023/07/08 15:29:22
stderr
    await route.handle(scope, receive, send)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 718, in __call__
2023/07/08 15:29:22
stderr
    await self.app(scope, receive, send)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in __call__
2023/07/08 15:29:22
stderr
    raise e
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in __call__
2023/07/08 15:29:22
stderr
    await self.app(scope, receive, sender)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
2023/07/08 15:29:22
stderr
    raise exc
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
2023/07/08 15:29:22
stderr
    await self.app(scope, receive, send_wrapper)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/sessions.py", line 86, in __call__
2023/07/08 15:29:22
stderr
    await self.app(scope, receive, _send)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 162, in __call__
2023/07/08 15:29:22
stderr
    raise exc
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 184, in __call__
2023/07/08 15:29:22
stderr
    await self.middleware_stack(scope, receive, send)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 122, in __call__
2023/07/08 15:29:22
stderr
    await super().__call__(scope, receive, send)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 284, in __call__
2023/07/08 15:29:22
stderr
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023/07/08 15:29:22
stderr
    return await self.app(scope, receive, send)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
2023/07/08 15:29:22
stderr
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023/07/08 15:29:22
stderr
    result = await app(  # type: ignore[func-returns-value]
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 435, in run_asgi
2023/07/08 15:29:22
stderr
Traceback (most recent call last):
2023/07/08 15:29:22
stderr

2023/07/08 15:29:22
stderr
The above exception was the direct cause of the following exception:
2023/07/08 15:29:22
stderr

2023/07/08 15:29:22
stderr
httpcore.ConnectError: [Errno 111] Connection refused
2023/07/08 15:29:22
stderr
    raise to_exc(exc) from exc
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions
2023/07/08 15:29:22
stderr
    self.gen.throw(typ, value, traceback)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/contextlib.py", line 155, in __exit__
2023/07/08 15:29:22
stderr
    with map_exceptions(exc_map):
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpcore/backends/sync.py", line 99, in connect_tcp
2023/07/08 15:29:22
stderr
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023/07/08 15:29:22
stderr
    stream = self._network_backend.connect_tcp(**kwargs)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/connection.py", line 117, in _connect
2023/07/08 15:29:22
stderr
             ^^^^^^^^^^^^^^^^^^^^^^
2023/07/08 15:29:22
stderr
    stream = self._connect(request)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/connection.py", line 69, in handle_request
2023/07/08 15:29:22
stderr
    raise exc
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/connection.py", line 92, in handle_request
2023/07/08 15:29:22
stderr
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023/07/08 15:29:22
stderr
    response = connection.handle_request(request)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/connection_pool.py", line 245, in handle_request
2023/07/08 15:29:22
stderr
    raise exc
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/connection_pool.py", line 261, in handle_request
2023/07/08 15:29:22
stderr
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023/07/08 15:29:22
stderr
    resp = self._pool.handle_request(req)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 218, in handle_request
2023/07/08 15:29:22
stderr
    yield
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 60, in map_httpcore_exceptions
2023/07/08 15:29:22
stderr
Traceback (most recent call last):
2023/07/08 15:29:22
stderr

2023/07/08 15:29:22
stderr
The above exception was the direct cause of the following exception:
2023/07/08 15:29:22
stderr

2023/07/08 15:29:22
stderr
ConnectionRefusedError: [Errno 111] Connection refused
2023/07/08 15:29:22
stderr
    sock.connect(sa)
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/socket.py", line 836, in create_connection
2023/07/08 15:29:22
stderr
    raise exceptions[0]
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/socket.py", line 851, in create_connection
2023/07/08 15:29:22
stderr
           ^^^^^^^^^^^^^^^^^^^^^^^^^
2023/07/08 15:29:22
stderr
    sock = socket.create_connection(
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpcore/backends/sync.py", line 100, in connect_tcp
2023/07/08 15:29:22
stderr
    yield
2023/07/08 15:29:22
stderr
  File "/usr/local/lib/python3.11/site-packages/httpcore/_exceptions.py", line 10, in map_exceptions
2023/07/08 15:29:22
stderr
Traceback (most recent call last):
2023/07/08 15:29:22
stderr
ERROR:    Exception in ASGI application
2023/07/08 15:29:22
stdout
INFO:     172.17.0.1:53622 - "GET /stream/1/2 HTTP/1.1" 200 OK
2023/07/08 15:29:22
stdout
INFO:root:ADB: Closing connection - 192.168.254.12
2023/07/08 15:29:22
stdout
INFO:root:Tuner: Compatibility Mode - Tuner released after 21.5 seconds. Display was off, application (com.philo.philo) was closed.
2023/07/08 15:29:17
stdout
INFO:     172.17.0.1:53626 - "GET /admin/tuner/status?_=1688855200844 HTTP/1.1" 200 OK
2023/07/08 15:29:12
stdout
INFO:     172.17.0.1:53626 - "GET /admin/tuner/status?_=1688855200843 HTTP/1.1" 200 OK
2023/07/08 15:29:11
stdout
INFO:root:Tuner: Waiting 7 seconds to allow sleeping device to setup.
2023/07/08 15:29:09
stdout
INFO:root:ADB: 192.168.254.12 - am start -a android.intent.action.VIEW -d "https://www.philo.com/player/player/channel/Q2hhbm5lbDo2MDg1NDg4OTk2NDg0Mzg2MTc"
2023/07/08 15:29:07
stdout
INFO:root:ADB: 192.168.254.12 - am force-stop com.philo.philo
2023/07/08 15:29:07
stdout
INFO:root:ADB: Force stopping com.philo.philo.
2023/07/08 15:29:07
stdout
INFO:     172.17.0.1:53626 - "GET /admin/tuner/status?_=1688855200842 HTTP/1.1" 200 OK
2023/07/08 15:29:06
stdout
INFO:root:ADB: 192.168.254.12 - input keyevent KEYCODE_MEDIA_STOP
2023/07/08 15:29:06
stdout
INFO:root:ADB: Stopping media playback.
2023/07/08 15:29:05
stdout
INFO:root:ADB: 192.168.254.12 - pidof com.philo.philo
2023/07/08 15:29:04
stdout
INFO:root:ADB: 192.168.254.12 - pm list packages
2023/07/08 15:29:02
stdout
INFO:     172.17.0.1:53626 - "GET /admin/tuner/status?_=1688855200841 HTTP/1.1" 200 OK
2023/07/08 15:29:02
stdout
INFO:root:ADB: 192.168.254.12 - pm list packages
2023/07/08 15:29:01
stdout
INFO:root:ADB: 192.168.254.12 - input keyevent KEYCODE_WAKEUP
2023/07/08 15:29:01
stdout
INFO:root:ADB: Android Version: 7.0.
2023/07/08 15:29:00
stdout
INFO:root:ADB: 192.168.254.12 - getprop ro.build.version.release
2023/07/08 15:29:00
stdout
INFO:root:ADB: 192.168.254.12 - dumpsys display
2023/07/08 15:29:00
stdout
INFO:root:ADB: Connected.
2023/07/08 15:29:00
stdout
INFO:root:ADB: Connecting to device (attempt 1).
2023/07/08 15:29:00
stdout
INFO:root:Tuner: Tuning to AXS TV on Channel 1
2023/07/08 15:29:00
stdout
INFO:     172.17.0.1:53622 - "GET /stream/2 HTTP/1.1" 307 Temporary Redirect
2023/07/08 15:29:00
stdout
INFO:root:Using tuner id: 1
2023/07/08 15:29:00
stdout
INFO:root:Reserved tuner 1
2023/07/08 15:28:57
stdout
INFO:     172.17.0.1:53622 - "GET /admin/tuner/status?_=1688855200840 HTTP/1.1" 200 OK
2023/07/08 15:28:52
stdout
INFO:     172.17.0.1:53616 - "GET /admin/tuner/status?_=1688855200839 HTTP/1.1" 200 OK
2023/07/08 15:28:47
stdout
INFO:     172.17.0.1:53606 - "GET /admin/tuner/status?_=1688855200838 HTTP/1.1" 200 OK
2023/07/08 15:28:42
stdout
INFO:     172.17.0.1:53606 - "GET /admin/tuner/status?_=1688855200837 HTTP/1.1" 200 OK
2023/07/08 15:28:37
stdout
INFO:     172.17.0.1:53596 - "GET /admin/tuner/status?_=1688855200836 HTTP/1.1" 200 OK
2023/07/08 15:28:32
stdout
INFO:     172.17.0.1:53596 - "GET /admin/tuner/status?_=1688855200835 HTTP/1.1" 200 OK
2023/07/08 15:28:27
stdout
INFO:     172.17.0.1:53590 - "GET /admin/tuner/status?_=1688855200834 HTTP/1.1" 200 OK
2023/07/08 15:28:22
stdout
INFO:     172.17.0.1:53590 - "GET /admin/tuner/status?_=1688855200833 HTTP/1.1" 200 OK
2023/07/08 15:28:17
stdout
INFO:     172.17.0.1:53578 - "GET /admin/tuner/status?_=1688855200832 HTTP/1.1" 200 OK
2023/07/08 15:28:12
stdout
INFO:     172.17.0.1:53578 - "GET /admin/tuner/status?_=1688855200831 HTTP/1.1" 200 OK
2023/07/08 15:28:07
stdout
INFO:     172.17.0.1:53568 - "GET /admin/tuner/status?_=1688855200830 HTTP/1.1" 200 OK
2023/07/08 15:28:02
stdout
INFO:     172.17.0.1:53568 - "GET /admin/tuner/status?_=1688855200829 HTTP/1.1" 200 OK
2023/07/08 15:27:57
stdout
INFO:     172.17.0.1:53562 - "GET /admin/tuner/status?_=1688855200828 HTTP/1.1" 200 OK
2023/07/08 15:27:52
stdout
INFO:     172.17.0.1:53562 - "GET /admin/tuner/status?_=1688855200827 HTTP/1.1" 200 OK
2023/07/08 15:27:47
stdout
INFO:     172.17.0.1:53552 - "GET /admin/tuner/status?_=1688855200826 HTTP/1.1" 200 OK
2023/07/08 15:27:42
stdout
INFO:     172.17.0.1:53552 - "GET /admin/tuner/status?_=1688855200825 HTTP/1.1" 200 OK
2023/07/08 15:27:37
stdout
INFO:     172.17.0.1:53542 - "GET /admin/tuner/status?_=1688855200824 HTTP/1.1" 200 OK
2023/07/08 15:27:32
stdout
INFO:     172.17.0.1:53542 - "GET /admin/tuner/status?_=1688855200823 HTTP/1.1" 200 OK
2023/07/08 15:27:27
stdout
INFO:     172.17.0.1:53542 - "GET /admin/tuner/status?_=1688855200822 HTTP/1.1" 200 OK
2023/07/08 15:27:22
stdout
INFO:     172.17.0.1:53532 - "GET /admin/tuner/status?_=1688855200821 HTTP/1.1" 200 OK
2023/07/08 15:27:17
stdout
INFO:     172.17.0.1:53532 - "GET /admin/tuner/status?_=1688855200820 HTTP/1.1" 200 OK
2023/07/08 15:27:12
stdout
INFO:     172.17.0.1:53522 - "GET /admin/tuner/status?_=1688855200819 HTTP/1.1" 200 OK
2023/07/08 15:27:07
stdout
INFO:     172.17.0.1:53522 - "GET /admin/tuner/status?_=1688855200818 HTTP/1.1" 200 OK
2023/07/08 15:27:02
stdout
INFO:     172.17.0.1:53516 - "GET /admin/tuner/status?_=1688855200817 HTTP/1.1" 200 OK
2023/07/08 15:26:57
stdout
INFO:     172.17.0.1:53510 - "GET /admin/tuner/status?_=1688855200816 HTTP/1.1" 200 OK
2023/07/08 15:26:52
stdout
INFO:     172.17.0.1:53510 - "GET /admin/tuner/status?_=1688855200815 HTTP/1.1" 200 OK
2023/07/08 15:26:47
stdout
INFO:     172.17.0.1:53498 - "GET /admin/tuner/status?_=1688855200814 HTTP/1.1" 200 OK
2023/07/08 15:26:42
stdout
INFO:     172.17.0.1:53500 - "GET /admin/tuner/status?_=1688855200813 HTTP/1.1" 200 OK
2023/07/08 15:26:42
stdout
INFO:     172.17.0.1:53500 - "GET /js/main.js?t=1688855202 HTTP/1.1" 200 OK
2023/07/08 15:26:42
stdout
INFO:     172.17.0.1:53500 - "GET /css/style.css?t=1688855202 HTTP/1.1" 200 OK
2023/07/08 15:26:42
stdout
INFO:     172.17.0.1:53500 - "GET / HTTP/1.1" 200 OK
2023/07/08 15:26:19
stderr
INFO:     Uvicorn running on http://0.0.0.0:5592 (Press CTRL+C to quit)
2023/07/08 15:26:19
stderr
INFO:     Application startup complete.
2023/07/08 15:26:19
stderr
INFO:     Waiting for application startup.
2023/07/08 15:26:19
stderr
INFO:     Started server process [7]
2023/07/08 15:26:17
stderr
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
2023/07/08 15:26:17
stderr
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.

Has anyone setup Paramount + Can't seem to figure out how to bypass the splash screen and or profile page. Showtime is live and would be nice to add in ADBTuner. I was able to link showtime anytime but the video quality is horrible. Image is too soft.

Do you have the correct URL for your HDMI encoder stream configured? If you paste it into VLC (file -> open network) does it display the Android UI in VLC?

Edit: Just pushed an updated build that handles this situation gracefully. It's definitely failing to connect to your HDMI streamer.

1 Like

I took a quick look and was unsuccessful. The following gets me to Live TV, but no matter what URL I tried it always just played the first live channel (my local CBS).

Maybe you might have better luck though. This was on a Chromecast, the application's package name might be different on FireTV.

Think maybe we should make a separate thread for figuring out things like this? It's related, but also something that would be beneficial to some of the other projects?

Hi there,
Just browsed the log and looks like things are working with the latest build but I can't use my Firestick.
The system has Android 7.
I've got this new Walmart On box that I will work on putting online. I looked over the system and saw that it stopped the stream and closed the connection.
I appreciate the new build.
.

This solution, and the original, both require an HDMI-IP encoding device, correct? Just making sure, as I have several available Tivo Stream 4K and CCGTV devices right now - just don't want to buy something I don't need. If I do in fact need one, what are the current recommendations on devices that are most economical and manageable for these solutions?

1 Like

There was talk on the HDMI Channels thread about how to set up Weatherscan just like in the Chrome Capture thread. Any idea what the package name and component would be here to use the default Fire Stick browser?

3 Likes

I was thinking of picking up this device to use with Channels and the project.
https://www.amazon.com/EXVIST-Encoder-Hikvision-Streaming-Facebook/dp/B08FDZRP9G/ref=sr_1_4?crid=1AYYKF7WX3TNE&keywords=cctv+video+encoder&qid=1688865777&sprefix=cctv+video+encoder%2Caps%2C150&sr=8-4
The box would be right noext to the access point so no problem there.
I wanted to consider this as an idea.
if anyone else has some suggests, i would love to hear.

thanks

2 Likes

I have this one which I think the same as the encoder you are looking at except that it does not have the WiFi module. It's cheaper.
https://www.amazon.com/dp/B08FDZ2VNZ

If you can load developer Tools menu loader, you can enable what is called system Ex-ray on the device.
Now, launch Silk.
You will see the needed package information.
When you are done, go back into developer tools shortcut to disable X-ray mode.

thanks

The following will load Weatherscan in the Silk Browser on a FireTV device, but it won't go into fullscreen so you will be stuck with an address bar. Maybe there is another installable browser that can be configured to default to fullscreen?

{
    "provider_name": "Web",
    "number": 20000,
    "name": "Weatherscan",
    "url": "https://weatherscan.net/",
    "package_name": "com.amazon.cloud9",
    "alternate_package_name": "",
    "component": "com.amazon.cloud9.browsing.BrowserActivity",
    "compatibility_mode": true,
    "tvc_guide_stationid": ""
}

I don't really intend to support the loading of webpages via ADBTuner, but if it can be done in the same way media is loaded that could be a nice bonus.

2 Likes

Thanks! I got it working, but as I think about it more, I think I'll use Chrome Capture for Weatherscan, so as not to affect the load times for YouTube TV channels. I also started getting some weird behavior right after viewing Weatherscan, where channels would load on the encoder (I could see them if checking in VLC), but not pass through to the Channels client, which would eventually time out. That could be completely unrelated, though, and just coincidence. I rebooted everything (Channels, ADBTuner, my encoders, and both Fire devices) and all is back to normal.

1 Like

Complete (standard US-East) YoutubeTV .json for import into ADBTuner. With guide numbers.

I have exported a .json of all the standard YoutubeTV channels for everyone with a YoutubeTV subscription to share. About 100 channels. Many of these are also available via TVE. Please be aware that the links will be East Coast when applicable. Also I excluded locals like ABC, NBC, FOX because they are geoblocked and would not be useable by most people here. Also I do not subscribe to any additional YoutubeTV packages like Starz and Sports and whatnot so those are not included.

TIP: My channel number scheme starts in the 3000s. This can be easily changed by using a text editor and doing a search/replace for "3: and replace with a starting point you like. For example replacing ":3 with ":42 will mean that channel 3121 will become 42121.

4 Likes

Ya'll making me go broke. I just got a new mini M2 and now this to play around with. Oh what fun I will have!!!
Anyone know if I will be able to get the USA EAST feed via Hulu if my zip is set to San Diego, CA?

What is the streaming endpoint? Would that be like a h.264 encoder box? If so, what protocals are supported? Does it have to be http, or can it be rtsp?

2 Likes

As far as I can gather this Philo URL is for the show and not for the channel itself

Thank you for putting this together. Especially with the Gracenote station IDs. This will be a big help!

@hiperwall Yes, this would most commonly be used with a encoder box like you describe. At the moment ADBTuner only supports HTTP/MPEGTS.

@joagomez In my experience, the Philo URLs that contain /player/player/channel/ are for a specific channel. The Philo URLs that contain /player/player/broadcast/ are for specific shows.

I posted a update over the weekend that adds some status indicators for each "tuner component."

If any of your devices are running an Android version lower than 9 you will also now see a warning in the web interface. Those devices will work, but it will require enabling "compatibility mode" for all of the channels which will result in slower tuning time and other downgrades.

1 Like