diff --git a/apps/slash/data.yml b/apps/slash/data.yml index 527a5a6f..953ad7cb 100644 --- a/apps/slash/data.yml +++ b/apps/slash/data.yml @@ -12,7 +12,7 @@ additionalProperties: shortDescZh: 一个开源、自托管书签和链接共享平台 shortDescEn: An open source, self-hosted bookmarks and link sharing platform type: tool - crossVersionUpdate: false + crossVersionUpdate: true limit: 0 recommend: 0 website: https://demo.slash.yourselfhosted.com/ diff --git a/apps/streaming-media-server-pro/2023-01-03/.env.sample b/apps/streaming-media-server-pro/2023-01-03/.env.sample new file mode 100644 index 00000000..8334ea38 --- /dev/null +++ b/apps/streaming-media-server-pro/2023-01-03/.env.sample @@ -0,0 +1,2 @@ +CONTAINER_NAME="streaming-media-server-pro" +PANEL_APP_PORT_HTTP="40115" diff --git a/apps/streaming-media-server-pro/2023-01-03/data.yml b/apps/streaming-media-server-pro/2023-01-03/data.yml new file mode 100644 index 00000000..f59ef559 --- /dev/null +++ b/apps/streaming-media-server-pro/2023-01-03/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: 40115 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number diff --git a/apps/streaming-media-server-pro/2023-01-03/data/assets/config.ini b/apps/streaming-media-server-pro/2023-01-03/data/assets/config.ini new file mode 100644 index 00000000..cd41a818 --- /dev/null +++ b/apps/streaming-media-server-pro/2023-01-03/data/assets/config.ini @@ -0,0 +1,35 @@ +# Config配置教程链接 +# Configuration tutorial view link: https://www.cnblogs.com/1314h/p/16651157.html +[default] +# mysql:视频缓存到mysql,否则缓存到本地 +defaultdb = +# local:本地多线程下载 online:远程分布式下载 +downchoose = local +port = 8080 +localhost = +vbuffer = 3 +downurls = ["%(localhost)s/url3?url="] + +[advanced] +host1 = https://4gtvfreepc-cds.cdn.hinet.net +host2 = https://4gtvfree-cds.cdn.hinet.net +tvglogo = fsHEAD_FRAME +proxies = +debug = False + +[mysql] +host = 127.0.0.1 +user = root +password = 123456789 +port = 3306 +database = media + +[redis] +host = 127.0.0.1 +port = 6379 +password = 123456789 + +[other] +xmlowner = +xmlrepo = +xmlaccess_token = \ No newline at end of file diff --git a/apps/streaming-media-server-pro/2023-01-03/docker-compose.yml b/apps/streaming-media-server-pro/2023-01-03/docker-compose.yml new file mode 100644 index 00000000..d4af5c8c --- /dev/null +++ b/apps/streaming-media-server-pro/2023-01-03/docker-compose.yml @@ -0,0 +1,18 @@ +version: '3' +services: + streaming-media-server-pro: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:8080" + volumes: + - ./data/assets:/code/app/assets + image: 239144498/streaming:2023-01-03 + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/streaming-media-server-pro/README.md b/apps/streaming-media-server-pro/README.md new file mode 100644 index 00000000..44e55a7c --- /dev/null +++ b/apps/streaming-media-server-pro/README.md @@ -0,0 +1,180 @@ +
+
+
+
+目录
+-------------------
+- [Streaming-Media-Server-Pro](#streaming-media-server-pro)
+- [更新日志](#更新日志)
+- [目录](#目录)
+- [项目树形图](#项目树形图)
+- [核心功能](#核心功能)
+- [程序接口指南](#程序接口指南)
+- [播放效果](#播放效果)
+- [原理介绍](#原理介绍)
+- [文字详解](#文字详解)
+- [使用方式](#使用方式)
+ - [python部署:](#python部署)
+ - [安装依赖](#安装依赖)
+ - [运行](#运行)
+- [现已支持频道](#现已支持频道)
+- [License](#license)
+
+项目树形图
+---
+
+```
+.
+├── app
+│ ├── __init__.py
+│ ├── main.py
+│ ├── log
+│ ├── api
+│ │ ├── __init__.py
+│ │ ├── a4gtv
+│ │ │ ├── __init__.py
+│ │ │ ├── endecrypt.py
+│ │ │ ├── generateEpg.py
+│ │ │ ├── tasks.py
+│ │ │ ├── tools.py
+│ │ │ └── utile.py
+│ │ └── v2
+│ │ ├── __init__.py
+│ │ └── endpoints
+│ │ ├── __init__.py
+│ │ ├── more.py
+│ │ └── sgtv.py
+│ ├── assets
+│ │ ├── EPG.xml
+│ │ ├── diyepg.txt
+│ ├── common
+│ │ ├── __init__.py
+│ │ ├── costum_logging.py
+│ │ ├── diyEpg.py
+│ │ ├── gitrepo.py
+│ │ └── header.py
+│ ├── conf
+│ │ ├── __init__.py
+│ │ ├── config.ini
+│ │ └── config.py
+│ ├── db
+│ │ ├── __init__.py
+│ │ ├── DBtools.py
+│ │ └── dbMysql.py
+│ └── scheams
+│ ├── __init__.py
+│ └── basic.py
+├── main.py
+├── requirements.txt
+├── Dockerfile
+├── README.md
+├── Procfile
+└── LICENSE
+
+```
+
+核心功能
+---
+
+- 高效流媒体(具有缓冲区)
+- 代理任意视频网站的视频流
+- 生成m3u文件
+- 生成m3u8文件
+- 异步下载流
+- 流媒体转发
+- 生成[EPG节目单](https://agit.ai/239144498/demo/raw/branch/master/4gtvchannel.xml) 每日实时更新
+- 分布式处理ts片
+- Redis缓存参数
+- MySql缓存数据
+- 正向代理请求
+- 自定义节目频道
+- 自定义电视台标
+- 自定义清晰度
+- 支持反向代理或使用CDN(负载均衡)
+
+程序接口指南
+---
+[https://stream.naihe.cf/docs](https://stream.naihe.cf/docs)
+
+
+播放效果
+---
+
+
+
+
+
+原理介绍
+---
+如下图所示:
+
+
+文字详解
+---
+图中多台服务器是一种理想情况下实现,实际python程序、redis和mysql都可以在同一台服务器中实现
+- ① 客户端请求m3u8文件
+ - 1-> 查看内存是否缓存,否则服务器执行图流程2
+ - 2-> BackgroundTasks任务:执行图流程3,分布式下载数量根据设置的缓冲区大小决定
+ - 3<- 返回m3u8文件
+- ② 客户端请求ts片
+ - 1-> 查看本地是否缓存,否则服务器执行图流程2
+ - 2-> BackgroundTasks任务:执行图流程3
+ - 3-> 查看内存是否已下载完成状态,下载完执行图流程4,否则循环判断等待
+ - 4<- 返回ts文件
+- ③ 还有很多技术细节就不一一展开,只列出以上部分
+
+该项目根据分析4gtv网站的接口,通过算法得到生成ts视频的一些关键参数,省去请求网站从而得到m3u8文件的通信时长等开销,针对海外视频网站被墙隔离,支持以下几种观看方式:
+- 通过**具有缓冲区的中转服务**观看(调用api接口 /online.m3u8)
+- 通过**CDN**或**反向代理**观看(调用api接口 /channel.m3u8?&host=xxx)
+- 使用**科学上网软件**观看(调用api接口 /channel2.m3u8)
+
+使用方式
+---
+> 💡提示:最好将本项目部署至美国地区的服务器,否则可能会出现奇怪的BUG。
+
+
+> 根据以下通用命令部署本项目
+### python部署:
+python版本>=3.8+
+``` code
+git clone https://github.com/239144498/Streaming-Media-Server-Pro.git
+```
+### 安装依赖
+``` code
+pip install -r requirements.txt
+```
+### 运行
+``` code
+python3 main.py
+```
+
+**(docker部署)更多使用教程详情 https://www.cnblogs.com/1314h/p/16651157.html**
+
+现已支持频道
+---
+- [x] 在diychannel.txt文件添加自定义频道
+
+License
+---
+[GNU-3.0 © naihe](https://github.com/239144498/Streaming-Media-Server-Pro/blob/main/LICENSE)
+
diff --git a/apps/streaming-media-server-pro/data.yml b/apps/streaming-media-server-pro/data.yml
new file mode 100644
index 00000000..a19baefc
--- /dev/null
+++ b/apps/streaming-media-server-pro/data.yml
@@ -0,0 +1,20 @@
+name: Streaming-Media-Server-Pro
+tags:
+ - 工具
+title: 一个强大的IPTV源后端服务,具有视频缓冲区功能
+type: 工具
+description: 一个强大的IPTV源后端服务,具有视频缓冲区功能
+additionalProperties:
+ key: streaming-media-server-pro
+ name: Streaming-Media-Server-Pro
+ tags:
+ - Tool
+ shortDescZh: 一个强大的IPTV源后端服务,具有视频缓冲区功能
+ shortDescEn: A powerful IPTV source backend service with video buffer function
+ type: tool
+ crossVersionUpdate: true
+ limit: 0
+ recommend: 0
+ website: https://github.com/239144498/Streaming-Media-Server-Pro
+ github: https://github.com/239144498/Streaming-Media-Server-Pro
+ document: https://github.com/239144498/Streaming-Media-Server-Pro
diff --git a/apps/streaming-media-server-pro/latest/.env.sample b/apps/streaming-media-server-pro/latest/.env.sample
new file mode 100644
index 00000000..8334ea38
--- /dev/null
+++ b/apps/streaming-media-server-pro/latest/.env.sample
@@ -0,0 +1,2 @@
+CONTAINER_NAME="streaming-media-server-pro"
+PANEL_APP_PORT_HTTP="40115"
diff --git a/apps/streaming-media-server-pro/latest/data.yml b/apps/streaming-media-server-pro/latest/data.yml
new file mode 100644
index 00000000..f59ef559
--- /dev/null
+++ b/apps/streaming-media-server-pro/latest/data.yml
@@ -0,0 +1,10 @@
+additionalProperties:
+ formFields:
+ - default: 40115
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Port
+ labelZh: 端口
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/streaming-media-server-pro/latest/data/assets/config.ini b/apps/streaming-media-server-pro/latest/data/assets/config.ini
new file mode 100644
index 00000000..cd41a818
--- /dev/null
+++ b/apps/streaming-media-server-pro/latest/data/assets/config.ini
@@ -0,0 +1,35 @@
+# Config配置教程链接
+# Configuration tutorial view link: https://www.cnblogs.com/1314h/p/16651157.html
+[default]
+# mysql:视频缓存到mysql,否则缓存到本地
+defaultdb =
+# local:本地多线程下载 online:远程分布式下载
+downchoose = local
+port = 8080
+localhost =
+vbuffer = 3
+downurls = ["%(localhost)s/url3?url="]
+
+[advanced]
+host1 = https://4gtvfreepc-cds.cdn.hinet.net
+host2 = https://4gtvfree-cds.cdn.hinet.net
+tvglogo = fsHEAD_FRAME
+proxies =
+debug = False
+
+[mysql]
+host = 127.0.0.1
+user = root
+password = 123456789
+port = 3306
+database = media
+
+[redis]
+host = 127.0.0.1
+port = 6379
+password = 123456789
+
+[other]
+xmlowner =
+xmlrepo =
+xmlaccess_token =
\ No newline at end of file
diff --git a/apps/streaming-media-server-pro/latest/docker-compose.yml b/apps/streaming-media-server-pro/latest/docker-compose.yml
new file mode 100644
index 00000000..faba1273
--- /dev/null
+++ b/apps/streaming-media-server-pro/latest/docker-compose.yml
@@ -0,0 +1,18 @@
+version: '3'
+services:
+ streaming-media-server-pro:
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:8080"
+ volumes:
+ - ./data/assets:/code/app/assets
+ image: 239144498/streaming:latest
+ labels:
+ createdBy: "Apps"
+
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/streaming-media-server-pro/logo.png b/apps/streaming-media-server-pro/logo.png
new file mode 100644
index 00000000..023fe72d
Binary files /dev/null and b/apps/streaming-media-server-pro/logo.png differ