恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4536|回复: 256

用Notepad++提取直播源的正则表达式的正确方法,20190529更新例子

    [复制链接]
发表于 2019-4-30 03:07 | 显示全部楼层 |阅读模式
本帖最后由 silverchs 于 2019-5-29 21:30 编辑


发帖的起因:
无意中在论坛里看到了这个求助帖:https://www.right.com.cn/forum/thread-528915-1-3.html
发现这位“@孤独的飞”朋友从网上照抄\+?ChannelName=\"(.+?)\",ChannelURL=\".+?://(.+?)\".\+?这个表达式,不会变通,提取出来的格式乱七八糟,简直惨不忍睹啊!
虽然我对正则表达式也不是很了解,但是我研究了一下,还是能写出正确的提取表达式,可能我写的表达式还不够精简,但是能达到目的就好了,我的要求也不是很高

还是以孤独的飞帖子中给出的源为例子:jsSetConfig('Channel','ChannelID="ch09093013432729643599",ChannelName="CCTV1HD",UserChannelID="1",ChannelURL="igmp://239.254.104.96:8550",TimeShift="1",ChannelSDP="",TimeShiftURL="rtsp://27.31.203.146:554/live/ch09093013432729643599.sdp?playtype=1&boid=001&backupagent=121.60.255.132:1556&clienttype=1&time=20190402135617+08&life=172800&ifpricereqsnd=1&vcdnid=vcdn001&userid=sy1812345&mediaid=ch09093013432729643599&ctype=5&TSTVTimeLife=3600&contname=&authid=0&UserLiveType=1&stbid=0010049900608930182700000&nodelevel=3&terminalflag=1&bitrate=2000",ChannelLogURL="",PositionX="20",PositionY="20",BeginTime="0",Interval="1",Lasting="1",ChannelType="2",ChannelPurchased="",LocalTimeShift="0",UserTeamChannelID="1",FCCFunction="1",ChannelFCCIP="121.60.213.228",ChannelFCCPort="15970"');

下面就是我按照\+?ChannelName=\"(.+?)\",ChannelURL=\".+?://(.+?)\".\+?这个表达式的思路写出的有效表达式。

游客,如果您要查看本帖隐藏内容请回复

简单解释一下:
1.组播表达式
游客,如果您要查看本帖隐藏内容请回复

2.单播表达式
游客,如果您要查看本帖隐藏内容请回复


########################################################################################
#25楼的朋友又提出了另一种源的格式:

下面如何处理

code: "02000001000000050000000000000003",
                        title: "广东体育",
                        subTitle: "广东体育",
                        channelnum: "005",
                        icon: "http://183.235.16.92:8081/pics/category/201610/08/2016100817384080885805.png",
                        timeshiftAvailable: "true",
                        lookbackAvailable: "true",
                        params: {
                                zteurl: "rtp://239.20.0.114:2026",
                                hwmediaid: "10000100000000060000000000128485",
                                hwcode: "10000100000000050000000000088754",
                                hwurl: "rtp://239.10.0.124:1025",
                                ztecode: "ch000000000000114"

我也顺便把处理过程简单说明一下,让大家认识更多类型的源处理的方法:
游客,如果您要查看本帖隐藏内容请回复

########################################################################

继续更新

发现此贴:https://www.right.com.cn/forum/thread-601053-1-1.html

针对此帖子给出的抓包源格式,我给出了下面的回复,大家可以作为例子参考
游客,如果您要查看本帖隐藏内容请回复

########################################################################

继续更新


原帖子:https://www.right.com.cn/forum/thread-581544-1-1.html

搞了三天终于抓到直播包,请求大神怎么转换为m3u
网上各种Notepad++正则替换都不成功

<script>
        //获取频道总数,写入机顶盒内存
        var iRet = Authentication.CTCSetConfig ('ChannelCount','314');
        </script>
   


            <script>
            var iRet;
            iRet = Authentication.CTCSetConfig ('Channel','ChannelID="2621",ChannelName="直播室101",UserChannelID="710",ChannelURL="rtsp://183.59.156.50/PLTV/88888888/224/3221226524/00000100000000060000000000018575_0.smil?rrsip=125.88.70.140,rrsip=125.88.104.45&icpid=SSPID&accounttype=1&limitflux=-1&limitdur=-1&accountinfo=:20190426141149,02040249631,218.19.154.5,20190426141149,Umai:CHAN/123222@BESTV.SMG.SMG,C71BE25F35E90B44D0B2CD0BF46734BC,-1,0,1,,,2,,,,2,END",TimeShift="1",TimeShiftLength="7200",ChannelSDP="rtsp://183.59.156.50/PLTV/88888888/224/3221226524/00000100000000060000000000018575_0.smil?rrsip=125.88.70.140,rrsip=125.88.104.45&icpid=SSPID&accounttype=1&limitflux=-1&limitdur=-1&accountinfo=:20190426141149,02040249631,218.19.154.5,20190426141149,Umai:CHAN/123222@BESTV.SMG.SMG,C71BE25F35E90B44D0B2CD0BF46734BC,-1,0,1,,,2,,,,2,END",TimeShiftURL="rtsp://183.59.156.50/PLTV/88888888/224/3221226524/00000100000000060000000000018575_0.smil?rrsip=125.88.70.140,rrsip=125.88.104.45&icpid=SSPID&accounttype=1&limitflux=-1&limitdur=-1&accountinfo=:20190426141149,02040249631,218.19.154.5,20190426141149,Umai:CHAN/123222@BESTV.SMG.SMG,C71BE25F35E90B44D0B2CD0BF46734BC,-1,0,1,,,7,,,,4,END",ChannelType="1",IsHDChannel="2",PreviewEnable="0",ChannelPurchased="0",ChannelLocked="0",ChannelLogURL="",PositionX="0",PositionY="0",BeginTime="0",Interval="0",Lasting="0",ActionType="1",FCCEnable="0",ChannelFECPort="5145"');
            </script>


我给出的解决方法:
游客,如果您要查看本帖隐藏内容请回复

最后把文档另存为m3u就可以了。

########################################################################

继续更新例子
刚刚打开论坛,发现昨天有坛友私信我,求助提取节目源,下面是他给的数据格式:
<script>
            var iRet;
            iRet = Authentication.CUSetConfig ('Channel','ChannelID="1653",ChannelName="海看教育",UserChannelID="122",ChannelURL="igmp://239.253.254.95:8000",TimeShift="1",TimeShiftLength="10800",ChannelSDP="igmp://239.253.254.95:8000",TimeShiftURL="rtsp://61.156.104.90/PLTV/88888888/224/3221226300/10000100000000060000000000446695_0.smil?rrsip=27.223.126.145&icpid=SSPID&accounttype=1&limitflux=-1&limitdur=-1&accountinfo=:20190505192423,053201560048,10.152.219.116,20190505192423,99081002000000050000000000000305,1B6B6657EF0952469F747A255D5DE086,-1,1,1,,,7,,,,4,END",ChannelType="1",IsHDChannel="2",PreviewEnable="1",ChannelPurchased="1",ChannelLocked="0",ChannelLogURL="http://61.156.104.101:33200/EPG/jsp/images/universal/film/logo/iptvcms/webapps/cms/upload/poster/201607/IMG201607060346044344614_171p176.pppp.jpg",PositionX="0",PositionY="0",BeginTime="0",Interval="0",Lasting="0",ActionType="1",FCCEnable="0",ChannelFECPort="0"');
            </script>

上个例子中有提过先把频道信息以外的无用行去掉,步骤大概是先标记需要的行,然后通过书签功能把无用的行删除掉,就能把有用的行筛选出来了。这里就不详说了,不懂的参考上面的例子。
筛选后的内容:
            iRet = Authentication.CUSetConfig ('Channel','ChannelID="1653",ChannelName="海看教育",UserChannelID="122",ChannelURL="igmp://239.253.254.95:8000",TimeShift="1",TimeShiftLength="10800",ChannelSDP="igmp://239.253.254.95:8000",TimeShiftURL="rtsp://61.156.104.90/PLTV/88888888/224/3221226300/10000100000000060000000000446695_0.smil?rrsip=27.223.126.145&icpid=SSPID&accounttype=1&limitflux=-1&limitdur=-1&accountinfo=:20190505192423,053201560048,10.152.219.116,20190505192423,99081002000000050000000000000305,1B6B6657EF0952469F747A255D5DE086,-1,1,1,,,7,,,,4,END",ChannelType="1",IsHDChannel="2",PreviewEnable="1",ChannelPurchased="1",ChannelLocked="0",ChannelLogURL="http://61.156.104.101:33200/EPG/jsp/images/universal/film/logo/iptvcms/webapps/cms/upload/poster/201607/IMG201607060346044344614_171p176.pppp.jpg",PositionX="0",PositionY="0",BeginTime="0",Interval="0",Lasting="0",ActionType="1",FCCEnable="0",ChannelFECPort="0"');
由于那位坛友没有说明想要哪种格式,我就先写出一个针对这个例子的公用查找目标,然后通过替换不同的替换条件来提取不同的格式。
游客,如果您要查看本帖隐藏内容请回复

就这样可以得到各种不同的格式结果了。

########################################################################
20190529更新
说来真的惭愧,一直以来我都以为Notepad++的正则表达式只能单行匹配,所以这个帖子上面给出的例子都是以单行匹配为思路写的,但是到今天我才发现Notepad++其实正则表达式是可以多行匹配的。
今天发现这个帖子:https://www.right.com.cn/forum/thread-248691-1-5.html ,看到了8楼的@鲲翔坛友回复的表达式
游客,如果您要查看本帖隐藏内容请回复

我以前确实对表达式不太了解,写出来的正则表达式也很一般,但是大家从这个帖子的第一个例子往下看,会发现我写的正则表达式也一直在进步和优化,
这是因为我通过不断的练习,对正则表达式越来越熟悉了,所以大家如果想要掌握正则表达式就要多多练习,说一万遍不如自己亲自做一遍,有兴趣的朋友就来下载练习附件自己练习吧!

########################################################################

其实不同的地方或者不同的网络,抓到的数据包的格式都可能是千变万化的,不存在一条正则表达式就可以吃遍天下的可能的,所以学正则表达式一定要灵活应用,生搬硬套只会处处碰壁。

表达式练习1.rar (7.1 KB, 下载次数: 8, 售价: 1 nb恩山币)

评分

参与人数 9恩山币 +10 收起 理由
noff + 1 强大的恩山!(以下重复1万次)
nixonic + 1 强大的恩山!(以下重复1万次)
yang735 + 2 强大的恩山!(以下重复1万次)
jmjasonchan + 1 一看就是觉得高端、大气、上档次!
hope王 + 1 强大的恩山!(以下重复1万次)
wjq_xp + 1 率全体恩山路由党以及党魁向你学习!
motop + 1 一看就是觉得高端、大气、上档次!
micheal2009 + 1 一看就是觉得高端、大气、上档次!
天涯阳光 + 1 一看就是觉得高端、大气、上档次!

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-4-30 05:25 来自手机 | 显示全部楼层
学习学习学习
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-4-30 06:08 | 显示全部楼层
学习一下,虽然都是找论坛现成得,改天自己试验一下
来自苹果客户端来自苹果客户端
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-4-30 06:30 来自手机 | 显示全部楼层
支持一下吧
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-4-30 07:24 来自手机 | 显示全部楼层
学习一下——
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-4-30 07:45 来自手机 | 显示全部楼层
了家里会哈更
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-4-30 08:06 | 显示全部楼层
看看,学习一下。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-4-30 08:09 | 显示全部楼层
支持,学习学习
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-4-30 08:13 | 显示全部楼层
支持楼主一下,感谢分享经验
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-4-30 08:37 | 显示全部楼层
支持一下                  
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-4-30 08:38 | 显示全部楼层
用Notepad++提取直播源的正则表达式的正确方法,不懂的可以来看一看
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-4-30 08:46 | 显示全部楼层
谢谢分享,谢谢分享谢谢分享
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-4-30 08:53 | 显示全部楼层
用Notepad++提取直播源的正则表达式的正确方法,不懂的可以来看一看
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-4-30 08:55 | 显示全部楼层
好帖必须顶一下
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-4-30 09:14 | 显示全部楼层
不管东西咋样 还是先谢谢了
我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2019-7-17 22:37

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表