直播源自动检测工具iptv-m3u-maker

在这里插入图片描述

【申明】:本文不提供任何播放列表或其他数字内容。屏幕截图中的频道和图片仅供演示和说明之用。

老苏以前介绍过 IPTV Checker ,能对直播源进行有效性检测

文章传送门:用Jellyfin➕xTeVe播放和录制IPTV

今天要介绍的 iptv-m3u-maker 功能是一样的,所不同的是,IPTV Checker 是个桌面端应用,需要自己运行,而 iptv-m3u-maker 是服务,可以自动运行,不需要人工干预

从源码中 crontab 的时间表达式看,任务将在每周日的午夜(凌晨 00:00)执行一次。

如果你等不及,可以在修改完直播源文件后,直接点 抓取 开始运行检测

软件的工作流程:

  • 收集网络上现有的一些网友共享的直播源, 将其汇总后.

  • 对每个连接进行测试, 同时记录当前网络对该连接的延迟, 同时对其标题进行一定的格式化.

  • 最终, 针对当前网络生成一份可用的, 同类速度最优的 “播放列表”.

  • 将其输出为 m3u 文件

  • 程序内置服务器功能, 本地运行访问: http://{你的IP}:9527/m3u

源代码有点老,起码 3 年没更新了,而且也还有不少问题,不过不影响其核心功能的使用

构建镜像

如果你不想自己构建,可以跳过,直接阅读下一章节

官方提供了 Dockerfile ,但原生的代码在编译成镜像之后,会报错👇

FileNotFoundError: [Errno 2] No such file or directory: './plugins/dotpy_source'

老苏参考了 Issue #47 对代码做了调整,相应的 Dockerfile 也做了微调,取消了直接从 github 上下载代码,而是使用了本地修改后的代码

FROM python:3.7ADD ./crontask /etc/cron.d/crontask
WORKDIR /srvRUN pip install -U FlaskRUN apt-get update \&& apt-get install -y --no-install-recommends cron git wget \&& apt autoremove -y \&& apt-get cleanRUN rm -rf /var/lib/apt/lists/* \&& chmod 0644 /etc/cron.d/crontask \&& touch /home/boot.sh \&& echo "#!/bin/sh\n" > /home/boot.sh \&& echo "service cron start" >> /home/boot.sh \&& echo "\n" >> /home/boot.sh \&& echo "/usr/local/bin/python /srv/iptv/python/main.py" >> /home/boot.sh \&& echo "\n" >> /home/boot.sh \&& echo "/bin/bash" >> /home/boot.sh#RUN git clone https://521github.com/EvilCult/iptv-m3u-maker.git \
#    && mv iptv-m3u-maker iptvWORKDIR /srv/iptv
COPY . .CMD [ "/bin/bash", "/home/boot.sh" ]

主要的变动包括:

  1. 删除了 http 目录下演示用的数据 tv.jsontv.m3u
  2. 删除了 python/plugins 目录下 dotpy_source 文件,改为由我们自己提供,具体格式后年会提到;
  3. 修改 dotpy.pysourcePath 的值,由 './plugins/dotpy_source' 改为了 '/srv/iptv/python/plugins/dotpy_source'

删除数据是为了让软件成为更纯粹的工具,避免不必要的麻烦~~~

构建镜像和容器运行的基本命令如下👇

# 下载代码
git clone https://github.com/EvilCult/iptv-m3u-maker.git# 进入目录 
cd iptv-m3u-maker# 构建镜像
docker build -t wbsu2003/iptv-m3u-maker:v1 .# 运行容器
docker run -it -d \--name iptv \-p 9527:9527 \-v $(pwd)/python/plugins/dotpy_source:/srv/iptv/python/plugins/dotpy_source \wbsu2003/iptv-m3u-maker:v1

准备文件

首先需要准备一个需要检测的直播源文件,比如叫 playlist.txt,格式很简单

名称1,url1
名称2,url2
名称3,url3

你可以参考源代码中的 dotpy_source 文件,文件地址:https://github.com/EvilCult/iptv-m3u-maker/blob/master/python/plugins/dotpy_source

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 iptv-m3u-maker ,选择第三个 wbsu2003/iptv-m3u-maker,版本选择 latest

在这里插入图片描述

docker 文件夹中,创建一个新文件夹 iptv-m3u-maker,并将我们前面准备好的 playlist.txt 放入当前文件夹内

文件装载路径说明
docker/iptv-m3u-maker/playlist.txt/srv/iptv/python/plugins/dotpy_source待检测的播放列表源文件

【注意】:是 添加文件 不是 添加文件夹

在这里插入图片描述

端口

本地端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
95279527

默认没有对外暴露端口,需要自己添加

在这里插入图片描述

+ 号添加

在这里插入图片描述

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 iptv-m3u-maker
mkdir -p /volume1/docker/iptv-m3u-maker# 进入 iptv-m3u-maker 目录
cd /volume1/docker/iptv-m3u-maker# 运行容器
docker run -d \--restart unless-stopped \--name iptv \-p 9527:9527 \-v $(pwd)/playlist.txt:/srv/iptv/python/plugins/dotpy_source \wbsu2003/iptv-m3u-make

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3'services:iptv:image: wbsu2003/iptv-m3u-makecontainer_name: iptvrestart: unless-stoppedports:- 9527:9527volumes:- ./playlist.txt:/srv/iptv/python/plugins/dotpy_source

然后执行下面的命令

# 新建文件夹 iptv-m3u-maker
mkdir -p /volume1/docker/iptv-m3u-maker# 进入 iptv-m3u-maker 目录
cd /volume1/docker/iptv-m3u-maker# 将 docker-compose.yml 放入当前目录# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:9527 就能看到主界面

  • 抓取:手动启动对 playlist.txt 的有效性检测;
  • 列表:下载检测完成后的可用列表;
  • 状态:查看检测日志;

在这里插入图片描述

容器启动时,会自动对 playlist.txt 中的地址依次进行检测,所以你进入 状态 会看到日志

在这里插入图片描述

第一次运行,在结束之前,点 列表 是会报错。之后,你下载的只是上一次的结果

在这里插入图片描述

只有看到 抓取完成 才行

状态 页面不会自动刷新,需要手动刷

在这里插入图片描述

这个时候下载的 tv.m3u 才是正确的本次抓取成功的结果

在这里插入图片描述

将下载的 tv.m3u导入 IPTVnator,基本上可以秒开,因为针对的是同一个网络做的有效性检测,所以还是比较精准的

文章传送门:跨平台IPTV播放器IPTVnator

在这里插入图片描述

参考文档

EvilCult/iptv-m3u-maker: IPTV 国内+国外 电视台直播源m3u文件, 收集&汇总&本地源脚本
地址:https://github.com/EvilCult/iptv-m3u-maker

Docker运行报错 · Issue #47 · EvilCult/iptv-m3u-maker
地址:https://github.com/EvilCult/iptv-m3u-maker/issues/47

IPTV-Projects | EvilCult.Dev
地址:https://evilcult.dev/07/19/2019/IPTV-Projects/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/224919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python学习1补充

大家好,这里是七七,这个专栏是用代码实例来学习的,不是去介绍很多知识的。 话不多说,开始今天的内容 目录 代码1 代码2 代码3 代码4 代码5 学习1的总代码 代码1 groupeddf.groupby(单品编码) result{} groupeddf.groupb…

华为大数据开发者教程知识点提纲

一、线下处理 1.离线处理方案 数据支持:HDFS 调度:YARN 收入:Flume,sqoop,loader 处理:Mapreduce,SparkSql,spark,hive(,Flink) 2.Had…

Axure的动态图使用以及说明

认识Axure动态图 Axure动态图是Axure中的一种功能,它允许用户在原型中添加动画效果和交互动作,使原型更加生动和具有真实的用户体验。用户可以通过添加动态图来展示页面过渡、按钮点击、下拉菜单等交互操作的效果。 这是:就是我们今天要叫的…

生产环境_Spark处理轨迹中跨越本初子午线的经度列

使用spark处理数据集,解决gis轨迹点在地图上跨本初子午线的问题,这个问题很复杂,先补充一版我写的 import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.sql.{Row, SparkSession} import org.apache.spark.sql.func…

【️什么是分布式系统的一致性 ?】

😊引言 🎖️本篇博文约8000字,阅读大约30分钟,亲爱的读者,如果本博文对您有帮助,欢迎点赞关注!😊😊😊 🖥️什么是分布式系统的一致性 &#xff1f…

go进行http,get或postJson请求

1,http封装get,postJson类 package httpUtilimport ("bytes"logxx "go-gift-panel/src/log""io""io/ioutil""net/http" )func PostJson(url string, jsonData []byte) string {logxx.Log.Info("…

Linux---查看文件内容命令

1. 查看文件内容命令的使用 命令说明cat查看小型文件more分屏查看大型文件 cat命令的效果图 说明: cat命令结合重定向可以完成多个文件的合并gedit 文件编辑命令,可以查看和编辑文件 more命令的效果图 当查看内容信息过长无法在一屏上显示时,可以使…

mysql 数据库 关于库的基本操作

库的操作 如果想到 mysql 客户端当中数据 系统当中的命令的话,直接输入的话,会被认为是 mysql 当中的命令。 所以,在mysql 当中执行系统当中的命令的话,要在系统命令之前带上 ststem ,表示系统命令: 但是…

linux内核使用ppm图片开机

什么是ppm图片 PPM(Portable Pixmap)是一种用于存储图像的文件格式。PPM图像文件以二进制或ASCII文本形式存储,并且是一种简单的、可移植的图像格式。PPM格式最初由Jef Poskanzer于1986年创建,并经过了多次扩展和修改。 PPM图像…

笔记本电脑如何安装openwrt

环境: 联想E14笔记本 装机U盘 DiskImage v1.6 刷写工具 immortalwrt镜像 问题描述: 笔记本电脑如何安装openwrt 解决方案: 一、官方版 1.官网下载固件 2.BIOS关闭安全启动改为引导 3.用U盘启动进入PE系统后,需要先用PE系…

docker 清除不用的容器数据

1. 提示错误 --gpus all docker: Error response from daemon: Conflict. The container name "abc" is already in use by container "89b96853dc4d973ec932123550c17bcb77954531d0a596a3abc92dab0c621cee". You have to remove (or rename) that contai…

linux中文文件名提示(无效的编码)问题解决办法

背景说明 我们通过web客户端上传在windows上上传中文文件名的文件到linux服务器上,在linux图形化界面中打开文件所在路径,显示文件名为(无效的编码);在命令行界面输入ls命令发现乱码。 原因 Windows 的文件名中文编…

线性代数运算方法总结

线性方程组的行列式解法(克拉默法则) 首先写出方程的系数行列式,第一列x1第二列x2以此类推,然后用每个方程式的结果分别代替第一列到第列,得到每个未知数对应的代数行列式,方程的解为代数行列式比系数行列…

数组笔试题解析(下)

数组面试题解析 字符数组 (一) 我们上一篇文章学习了一维数组的面试题解析内容和字符数组的部分内容,我们这篇文章讲解一下字符数组和指针剩余面试题的解析内容,那现在,我们开始吧。 我们继续看一组字符数组的面试…

深眸科技聚焦AI+机器视觉产业化建设,加速智能制造国产替代升级

随着科技的不断发展,传统的制造生产已经无法满足现代制造业的需求,智能制造应运而生,以智能化、柔性化等生产优势,大幅提升制造效率和生产质量。智能制造是指具有信息自感知、自决策、自执行等功能的先进制造过程、系统与模式的总…

qt 正则表达式简单介绍

正则表达式即一个文本匹配字符串的一种模式,Qt中使用QRegExp类进行模式匹配.主要应用:字符串验证,搜索,替换,分割..... 正则表达式中字符及字符集 c 匹配字符本身,如a匹配a \c 跟在\后面的字符匹配字符本身,但本表中下面指定的这些字符除外。 \a 匹…

美易官方:零售销售数据提振信心

美易全球投资中心副总裁Kenny Jolin表示全球股市在经历了动荡之后逐渐恢复了稳定。最近,美国股市表现强劲,连续六天上涨,道琼斯指数也创下了新高。这一趋势不仅反映了投资者信心的恢复,也表明了全球经济正在逐渐复苏。 他说&#…

如何在jenkins容器中安装python+httprunner+pytest+git+allure(一)

背景: API接口自动化使用python语言实现,利用httprunner框架编写自动化用例场景(执行的时候还是依赖pytest),使用jenkins自动构建git上的源代码,并产生allure报告可视化展示API执行结果。 步骤 1.进入jenkins容器 注意使用roo…

WPF 基于TableControl的页面切换

文章目录 前言其它项目的UserControl切换TableControl添加按钮,隐去TableItem的Header 结论 前言 我想用WPF简单实现一个按钮视图切换的效果,但是我发现别人的实现效果非常的麻烦。 其它项目的UserControl切换 我网上找了个开源的项目,他是…

【华为OD】向一个空栈中依次存入正整数,假设入栈元素n(1<=n<=2^31-1)按顺 序依次为nx…n4、n3、n2、n1,每当元素入栈时

“”" 向一个空栈中依次存入正整数,假设入栈元素n(1<=n<=2^31-1)按顺 序依次为nx…n4、n3、n2、n1,每当元素入栈时,如果n1=n2+.…+ny(y的范围[2.x],1<