From 135a5d152f772db286d533d415840a39b6d0dd34 Mon Sep 17 00:00:00 2001 From: Aetherinox Date: Thu, 20 Feb 2025 14:43:33 -0700 Subject: [PATCH] docs(readme): update --- README.md | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 111 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9748ed55..baf7a22a 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,9 @@
- [About](#about) + - [How It Works](#how-it-works) - [Building `tvapp` Image](#building-tvapp-image) +- [How It Works](#how-it-works-1) - [Before Building](#before-building) - [LF over CRLF](#lf-over-crlf) - [Set `+x / 0755` Permissions](#set-x--0755-permissions) @@ -58,8 +60,31 @@ ## About +**TVApp2** is a docker image which allows you to download M3U playlist and EPG guide data which can be plugged into your IPTV applications such as Jellyfin, Plex, and Emby. It is a revision of the original app by dtankdempse which is no longer available. This app fetches data for: + +- TheTvApp +- TVPass +- MoveOnJoy +- More coming soon + +
+ +This project contains several repositories which all share the same code; use them as backups: + +- [https://github.com/iFlip721/tvapp2](https://github.com/iFlip721/tvapp2) +- [https://github.com/Aetherinox/tvapp2](https://github.com/Aetherinox/tvapp2) +- [https://git.binaryninja.net/pub_projects/tvapp2](https://git.binaryninja.net/pub_projects/tvapp2) + +
+ +### How It Works + +
+ - TVApp2 makes fetch request to [tvapp2-externals](https://git.binaryninja.net/pub_projects/tvapp2-externals 'tvapp2-externals') making updates to external formats agnostic to pushing a new container image. -- TVApp2 makes fetch request to [XMLTV-EPG](https://git.binaryninja.net/pub_projects/XMLTV-EPG 'XMLTV-EPG') making updates to EPG data based on customized channel ids. Channel ids are specific to each EPG record which makes obfusctaing channel ids difficult. +- TVApp2 makes fetch request to [XMLTV-EPG](https://git.binaryninja.net/pub_projects/XMLTV-EPG 'XMLTV-EPG') making updates to EPG data based on customized channel ids. Channel ids are specific to each EPG record which makes obfuscating channel ids difficult. + +
```mermaid graph TD @@ -77,20 +102,103 @@ C(XMLTV-EPG) ---> E{Pull Dynamic EPG} ## Building `tvapp` Image -These instructions outline how to build your own tvapp2 docker image. When building your images with the commands provided below, ensure you create two sets of tags: +These instructions outline how the TVApp2 docker image is set up, and how to build your own TVApp2 docker image. + +
+ +## How It Works + +The TVApp2 application requires one dependency docker image, which is utilized as the base image and contains Alpine linux. You may use the pre-compiled docker image provided by us on Github, or you may choose to build your own. The base alpine image is available at: + +- https://github.com/Aetherinox/docker-base-alpine + +
+ +This base Alpine image contains [s6-overlay](https://github.com/just-containers/s6-overlay) and comes with several features such as plugins, service management, migration tools, etc. + +
+ +The process of building both images are outlined below. But please remember that you do not need to build the base Alpine image; we already provide it at: https://github.com/Aetherinox/docker-base-alpine/pkgs/container/alpine-base + +
+ +```mermaid +%%{init: { 'themeVariables': { 'fontSize': '10px' }}}%% +flowchart TB + +subgraph GRAPH_TVAPP ["Build thetvapp:latest"] + direction TB + obj_step10["`> git clone https://git.binaryninja.net/pub_projects/tvapp2.git`"] + obj_step11["`**Dockerfile + Dockerfile.aarch64**`"] + obj_step12["`> docker build \ + --build-arg VERSION=1.0.0 \ + --build-arg BUILD_DATE=20250218 \ + -t tvapp:latest \ + -t tvapp:1.0.0-amd64 \ + -f Dockerfile . \`"] + obj_step13["`Download **alpine-base** from branch **docker/alpine-base**`"] + obj_step14["`New Image: **thetvapp:latest**`"] + + style obj_step10 text-align:center,stroke-width:1px,stroke:#555 + style obj_step11 text-align:left,stroke-width:1px,stroke:#555 + style obj_step12 text-align:left,stroke-width:1px,stroke:#555 + style obj_step13 text-align:left,stroke-width:1px,stroke:#555 +end + +style GRAPH_TVAPP text-align:center,stroke-width:1px,stroke:transparent,fill:transparent + +subgraph GRAPH_ALPINE["Build alpine-base:latest Image"] +direction TB + obj_step20["`> git clone -b docker/alpine-base github.com/Aetherinox/docker-base-alpine.git`"] + obj_step21["`**Dockerfile + Dockerfile.aarch64**`"] + obj_step22["`> docker build \ + --build-arg VERSION=3.20 \ + --build-arg BUILD_DATE=20250218 \ + -t docker-alpine-base:latest \ + -t docker-alpine-base:3.20-amd64 \ + -f Dockerfile . \`"] + obj_step23["`Download files from branch **docker/core**`"] + obj_step24["`New Image: **alpine-base:latest**`"] + + style obj_step20 text-align:center,stroke-width:1px,stroke:#555 + style obj_step21 text-align:left,stroke-width:1px,stroke:#555 + style obj_step22 text-align:left,stroke-width:1px,stroke:#555 + style obj_step23 text-align:left,stroke-width:1px,stroke:#555 +end + +style GRAPH_ALPINE text-align:center,stroke-width:1px,stroke:transparent,fill:transparent + +GRAPH_TVAPP --> obj_step10 --> obj_step11 --> obj_step12 --> obj_step13 --> obj_step14 +GRAPH_ALPINE --> obj_step20 --> obj_step21 --> obj_step22 --> obj_step23 --> obj_step24 +``` + +
+ +When building your TVApp2 images with the commands provided below, ensure you create two sets of tags: | Architecture | Dockerfile | Tags | | ------------ | -------------------- | ----------------------------------------------------------------------- | | `amd64` | `Dockerfile` | `tvapp2:latest`
`tvapp2:1.0.0`
`tvapp2:1.0.0-amd64` | | `arm64` | `Dockerfile.aarch64` | `tvapp2:1.0.0-arm64` | +
+ The `amd64` arch gets a few extra tags because it should be the default image people clone.
### Before Building -Prior to building the docker image, you **must** ensure the following conditions are met. If the below tasks are not performed, your docker container will throw the following errors when started: +Prior to building the docker image, you **must** ensure the sections below are completed. + +- [LF over CRLF](#lf-over-crlf) +- [Set +x / 0755 Permissions](#set-x--0755-permissions) + +
+ + If the listed tasks above are not performed, your docker container will throw the following errors when started: - `Failed to open apk database: Permission denied` - `s6-rc: warning: unable to start service init-adduser: command exited 127`