From d3a38b949f360f14d6385135186c3db75d95057e Mon Sep 17 00:00:00 2001 From: zangmiao Date: Sat, 31 Aug 2024 20:05:54 +0800 Subject: [PATCH] update readme --- .github/workflows/desktop.yml | 12 +++---- .github/workflows/docker-build.yml | 2 +- .github/workflows/docker-packages.yml | 2 +- Makefile | 2 +- README.md | 46 +++++++----------------- cn.md | 48 ++++++++------------------ dockerfile | 2 +- icon.png | Bin 0 -> 30712 bytes 8 files changed, 36 insertions(+), 78 deletions(-) create mode 100644 icon.png diff --git a/.github/workflows/desktop.yml b/.github/workflows/desktop.yml index ab3f37a..2425dbc 100644 --- a/.github/workflows/desktop.yml +++ b/.github/workflows/desktop.yml @@ -48,11 +48,11 @@ jobs: with: node-version: 18 - - name: Checkout iptv-checker-web + - name: Checkout iptv-checker-ui-interface uses: actions/checkout@v4 with: - repository: zhimin-dev/iptv-checker-web - path: iptv-checker-web + repository: zhimin-dev/iptv-checker-ui-interface + path: iptv-checker-ui-interface - name: install Rust stable uses: actions-rs/toolchain@v1 @@ -70,7 +70,7 @@ jobs: sudo apt-get install -y webkit2gtk-4.0 - name: install app dependencies and build it - working-directory: ./iptv-checker-web + working-directory: ./iptv-checker-ui-interface run: yarn && yarn build - uses: tauri-apps/tauri-action@v0 @@ -81,7 +81,7 @@ jobs: - name: Build archive shell: bash - working-directory: ./iptv-checker-web + working-directory: ./iptv-checker-ui-interface run: | binaryName="iptv-checker-desktop" gitTagName="${{github.ref_name}}" @@ -134,4 +134,4 @@ jobs: uses: softprops/action-gh-release@v1 with: files: | - ./iptv-checker-web/${{ env.ASSET }} + ./iptv-checker-ui-interface/${{ env.ASSET }} diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index 0b5cf0c..90975e8 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -30,7 +30,7 @@ jobs: echo ::set-output name=tags::${TAGS} mkdir iptv-checker && cp dockerfile iptv-checker/dockerfile git clone https://github.com/zhimin-dev/iptv-checker-rs.git - git clone https://github.com/zhimin-dev/iptv-checker-web.git + git clone https://github.com/zhimin-dev/iptv-checker-ui-interface.git - name: Setup Docker Buildx Command id: buildx diff --git a/.github/workflows/docker-packages.yml b/.github/workflows/docker-packages.yml index cd5dc23..0bb39fa 100644 --- a/.github/workflows/docker-packages.yml +++ b/.github/workflows/docker-packages.yml @@ -31,7 +31,7 @@ jobs: echo ::set-output name=tags::${TAGS} mkdir iptv-checker && cp dockerfile iptv-checker/dockerfile git clone https://github.com/zhimin-dev/iptv-checker-rs.git - git clone https://github.com/zhimin-dev/iptv-checker-web.git + git clone https://github.com/zhimin-dev/iptv-checker-ui-interface.git - name: Setup Docker Buildx Command id: buildx diff --git a/Makefile b/Makefile index 6929927..6e2ca42 100644 --- a/Makefile +++ b/Makefile @@ -4,4 +4,4 @@ all: migrate migrate: rm -rf ../iptv-checker-rs/web/ - cp -rf ../iptv-checker-web/dist/ ../iptv-checker-rs/web/ \ No newline at end of file + cp -rf ../iptv-checker-ui-interface/dist/ ../iptv-checker-rs/web/ \ No newline at end of file diff --git a/README.md b/README.md index 45e60fa..96e85e1 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,16 @@ -iptv-checker +iptv-checker [中文版本](https://github.com/zhimin-dev/iptv-checker/blob/main/cn.md) -# iptv-checker +## iptv-checker -This project is split into 2 projects +IPTV checker tool for Docker && Desktop && CMD, check your playlist is available -- Frontend [iptv-checker-web:v4.0.1](https://github.com/zhimin-dev/iptv-checker-web), providing the backend page for iptv-checker -- Backend [iptv-checker-rs:v4.0.1](https://github.com/zhimin-dev/iptv-checker-rs), providing cmd commands and web API for IPTV +- For container versions, go to the [docker hub](https://hub.docker.com/r/zmisgod/iptvchecker) page to find the relevant commands -## Docker Local Packaging +- In command-line mode, go to [GitHub's release page](https://github.com/zhimin-dev/iptv-checker/releases) and look for the download file with a version number that starts with `v`(default version) -First, clone the following 3 projects to your local machine (for example, place them in a node folder). Below is an example of the folder structure. - -- node - - iptv-checker - - iptv-checker-web - - iptv-checker-rs - -```bash -# Enter the node folder -cd node - -# Execute build -docker build -f iptv-checker/dockerfile -t ipserver . - -# Run -docker run -d -p 8081:8089 --name myIp ipserver - -# Alternatively, specify the port (this time specifying the port as 10001, you need to change the two 10001 places below), output file mapping to local directory -docker run -d -p 8081:10001 -e WEB_PORT=10001 -v ~/icStatic/output:/app/static/output --name myIp ipserver -``` +- For the desktop version, please go to [GitHub's release page](https://github.com/zhimin-dev/iptv-checker/releases) and look for the download file with a version number that starts with `d`(means desktop) ### Docker Official Package Usage @@ -40,19 +20,15 @@ Run the docker version of iptv-checker with the following commands ```bash docker pull zmisgod/iptvchecker + docker run -d -p 8081:8089 --name myIp zmisgod/iptvchecker + +# Alternatively, specify the port (this time specifying the port as 10001, you need to change the two 10001 places below), output file mapping to local directory +docker run -d -p 8081:10001 -e WEB_PORT=10001 -v ~/icStatic/output:/app/static/output --name myIp ipserver ``` Then open your browser and visit `http://127.0.0.1:8081/`. -### Docker Local Multi-Platform Package Method - -```bash -docker buildx create --name mybuilder -docker buildx inspect --bootstrap -docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t zmisgod/iptvchecker:latest --push -f iptv-checker/dockerfile . -``` - ### Docker-Compose Deployment ```bash @@ -61,6 +37,8 @@ docker-compose up -d ## Changelog +- v4.0.2 + - fixed the issue that it could not be played on the Windows platform - v4.0.1 - Bug Fixes - Issue with the source input box not recognizing data diff --git a/cn.md b/cn.md index da245ba..6d327fd 100644 --- a/cn.md +++ b/cn.md @@ -1,36 +1,16 @@ -iptv-checker +iptv-checker [English Version](https://github.com/zhimin-dev/iptv-checker/blob/main/README.md) -# iptv-checker +## iptv-checker -本项目拆成2个项目 +适用于Docker & Desktop & & CMD的IPTV检查工具,请检查您的播放列表是否可用 -- 前端[iptv-checker-web:v4.0.1](https://github.com/zhimin-dev/iptv-checker-web),提供iptv-checker后台页面 -- 后端[iptv-checker-rs:v4.0.1](https://github.com/zhimin-dev/iptv-checker-rs),提供iptv的cmd命令以及web api +- 对于容器版本,请前往 [docker hub](https://hub.docker.com/r/zmisgod/iptvchecker) 页面查找相关命令 -## docker本地打包 +- 在命令行模式下,转到 [GitHub 的发布页面](https://github.com/zhimin-dev/iptv-checker/releases) 并查找版本号以 'v' 开头的下载文件 -先将下面3个项目clone到本地(比如放在node文件夹下),下面为文件夹目录示例 - -- node - - iptv-checker - - iptv-checker-web - - iptv-checker-rs - -```bash -# 进入node文件夹 -cd node - -# 执行build -docker build -f iptv-checker/dockerfile -t ipserver . - -# 运行 -docker run -d -p 8081:8089 --name myIp ipserver - -# 或者指定端口(本次指定端口为 10001,下面2个10001的地方都需要改动)、输出文件映射本地目录 -docker run -d -p 8081:10001 -e WEB_PORT=10001 -v ~/icStatic/output:/app/static/output --name myIp ipserver -``` +- 对于桌面版本,请前往 [GitHub 的发布页面](https://github.com/zhimin-dev/iptv-checker/releases) 并查找版本号以 'd' 开头的下载文件 ### Docker官方包使用方法 @@ -39,20 +19,18 @@ docker run -d -p 8081:10001 -e WEB_PORT=10001 -v ~/icStatic/output:/app/static/o 按照下面的命令运行docker版本的iptv-checker ```bash +# 拉取镜像 docker pull zmisgod/iptvchecker + +# 运行镜像 docker run -d -p 8081:8089 --name myIp zmisgod/iptvchecker + +# 或者指定端口(本次指定端口为 10001,下面2个10001的地方都需要改动)、输出文件映射本地目录 +docker run -d -p 8081:10001 -e WEB_PORT=10001 -v ~/icStatic/output:/app/static/output --name myIp ipserver ``` 再打开浏览器访问`http://127.0.0.1:8081/`即可 -### Docker本地打多平台包方法 - -```bash -docker buildx create --name mybuilder -docker buildx inspect --bootstrap -docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t zmisgod/iptvchecker:latest --push -f iptv-checker/dockerfile . -``` - ### Docker-Compose 部署 ```bash @@ -61,6 +39,8 @@ docker-compose up -d ## 更新日志 +- v4.0.2 + - 修复windows平台无法播放的问题 - v4.0.1 - bug修复 - 检测源输入框无法识别数据问题 diff --git a/dockerfile b/dockerfile index f8facfc..056f96d 100644 --- a/dockerfile +++ b/dockerfile @@ -3,7 +3,7 @@ FROM debian:buster-slim as frontend-builder # 设置工作目录 WORKDIR /usr/src/app # 复制前端代码 -COPY iptv-checker-web/dist ./frontend +COPY iptv-checker-ui-interface/dist ./frontend # 后端构建阶段 FROM rust:latest as backend-builder diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..38536668e05d100da8f2b807b4ce1a8ed5d598b0 GIT binary patch literal 30712 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 QZtaEp22hf!lrReTf6$!L*Z=?k literal 0 HcmV?d00001