NodeRed实时生成IPTV的m3u文件
上一篇文章写了如何利用猫棒+网管交换机+群晖实现组播转换让内外网全平台都能看IPTV,因为网上有很多抓包的教程,就没有写如何抓包,m3u文件也是抓包拿到json数据后手动去生成的,回家路上突然想到,既然群晖已经能访问到IPTV网段那么是不是可以实时从抓包拿到的接口获取频道的json数据,然后自动生成m3u文件和url地址呢,网上看了看,还真有这样做的,使用的是nodered,连nodered的流文件都给出来了。
首先说下思路:先抓包拿到频道的url地址,这个网上有很多教程,就不重复了,然后利用nodered访问url拿到json数据处理后返回一个能在线访问的url即可,之所以要写这篇,主要是这里面也有个关键点,需要在群晖添加一条静态路由,要不然nodered是访问不到频道列表地址的。
下面看看具体操作 还是先搬出我们的老演员,网络结构:
先在群晖中添加一条静态路由,在nodered访问频道列表url的时候让它指定走接入IPTV的那张网卡。参考下图:
图中网络目标地址填写抓包拿到的频道列表url地址中的IP地址,比如我的是112.54.192.0,子网掩码填写接IPTV的网口自动获取到的子网掩码,比如我的是:255.255.192.0,网关填写接IPTV的网口自动获取到的网关,比如我的是:10.77.0.1
添加完成后群晖就能直接访问到url拿到数据,接下来就是数据的处理,可以有多种方式,我因为是本身就在用nodered,所以直接使用网上找到的流,根据自己拿到的json数据修改了一下,就能用了,大家也可以根据自己的时间情况,选择使用nodered,或者自己写段代码都行。这里主要说nodered。
就四个节点,非常简单如果nodered已经安装好(注意nodered如果是docker运行,网络需要是host)可以直接导入下面的流文件,然后在频道列表接口这个节点里填入你抓到的频道列表接口,在解析直播源这个节点里,根据自己的局域网卡的IP地址修改下msd_lite的地址。
[{"id":"fee04ad76882fa2a","type":"tab","label":"IPTV","disabled":false,"info":"","env":[]},{"id":"1f7a1a665439d7c1","type":"function","z":"fee04ad76882fa2a","name":"解析直播源","func":"var msd_lite ='http://192.168.200.30:7088/rtp/';nvar EXTM3U_HEAD ='#EXTM3U';nvar rowsplit='n';n//var rowsplit='
';nvar channel_title_head='#EXTINF: -1';nvar allChannelJson = msg.payload;nvar channelAry=allChannelJson.content.channels;nvar filestr=[];nfilestr.push(EXTM3U_HEAD);nfilestr.push(rowsplit);nfor (var i = 0, n = channelAry.length;i
修改好以后点下nodered右上角的部署按钮,然后就可以访问:http://你的群晖IP:nodered端口号/iptv.m3u看到数据了,比如我的是:https://192.168.200.10:1880/iptv.m3u
数据出来后将这个地址配置到aptv或者TiviMate即可观看了,aptv和TiviMate会自动去匹配EPG数据,EPG数据地址我用的是这个:http://epg.51zmt.top:8000/e.xml
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
xuplus
校验提示文案
frLab
校验提示文案
回响丶
校验提示文案
橙子君丷
校验提示文案
怪蜀黍online
校验提示文案
怪蜀黍online
校验提示文案
橙子君丷
校验提示文案
回响丶
校验提示文案
frLab
校验提示文案
xuplus
校验提示文案