-
Notifications
You must be signed in to change notification settings - Fork 5
Z ‐ Archive ‐ Design plan
Invidious companion will work with Invidious.
It is designed to offload the work of handling the retrieval of the video streams URLs from YouTube and helping this retrieval (proxy, google account, potoken). That's the only scope it will be designed for, any other features is outside of the scope of this project.
Invidious companion will be written in https://deno.com in order to create a fast program and being able to compile it into different CPU architectures.
The user will have two possibilities of configuring it with Invidious:
- If the user has enabled
external_port
filled in, he has to configure the HTTP routes inside its reverse proxy - If the user does not have
external_port
filled in, invidious will proxy the HTTP requests to the Invidious companion
In the config.yaml, the invidious companion will be configured through a parameter called invidious_companion:
. It will be an URL for on which the application is listening to.
Different domain will be supported.
It will expose these HTTP routes:
-
/api/manifest/dash/id/
: DASH endpoint for video.js -
/latest_version
: non dash endpoint (medium) for video.js
The features:
- Based on youtube.js
- Can handle potoken generation automatically thanks to https://github.com/LuanRT/BgUtils
- Allow logging into a Google account (youtube oauth2)
- Proxy support (HTTP and socks) - will need to merge https://github.com/iv-org/invidious/pull/4270 too and ask the user to set its proxy in two places
It will expose these HTTP routes:
-
/api/v1/videos/
: Single endpoint from Invidious for requesting video stream URLs -
/api/manifest/hls_playlist/
: livestream for video.js -
/api/manifest/hls_variant/
: livestream for video.js - in another future, HLS support for Apple devices -
/videoplayback
: strip out the videoplayback proxy from invidious and allow invidious companion to proxy it instead
The features:
- Implement basic features of smart-ipv6-rotator? Or work better with smart-ipv6-rotator (related to https://github.com/iv-org/smart-ipv6-rotator/issues/2)
Or implement an IP rotation feature like in https://gist.github.com/unixfox/2a9dbcb23d8f69c4582f7c85a849d5cc