分享:用正则表达式批处理节目源的格式。以H9和K1为例
浏览:1263 发布日期:2020-03-05



文字排版领域,用正则表达式可以做到很多批量的替换、删除工作。支持正则表达式的软件也很多。有编《圣经》的巴比通天塔、有编佛经的TextPro,其实它们也不仅能编圣经、佛经啦。还有很多软件,如CNBOOK和Notepad2。各自的正则式的格式略有不同。

我十多年前回家种地,现在已忘光了怎么使用这些软件。最近因折腾K1和H9串流,才想到正则表达式的用处。用到的软件是CNBOOK,网上一搜就能搜到,体积很小,功能强大,附件里上传一下。编台标什么的也可用到这功能。

日前因折腾K1的串流,发现K1 PLUS在TVHEADEND下导出的channels.m3u 文件,用记事本打开,里边的节目源 格式为:

#EXTINF:-1 logo="http://192.168.0.102:9981/imagecache/103" tvg-id="b935fa8d54c4242ea410c8aa290e721b",2ND AVENUE (此处有分段)
http://192.168.0.102:9981/stream ... D6A401&profile=pass

这种格式,在VLC和PotPlayer以及KODI播放器上都可以播放。但是在HDP、小薇直播、电视家 等播放软件导入,却不能播放。后三者用的格式是:
2ND AVENUE,http://192.168.0.102:9981/stream ... D6A401&profile=pass
这种格式为更多的软件所使用。
我们自然可以手动调整格式。但如果是几十个几百个这样的节目源列表呢?比如:

#EXTM3U
#EXTINF:-1 logo="http://192.168.2.2:9981/imagecache/137" tvg-id="efdfa4606792fdb7385c2c5a8292bb51",2ND AVENUE
http://192.168.2.2:9981/stream/c ... 4D1A2C&profile=pass
#EXTINF:-1 logo="http://192.168.2.2:9981/imagecache/208" tvg-id="99e55de945c9e0eaea8a4c6d653e0de0",ABS-CBN
http://192.168.2.2:9981/stream/c ... ED0463&profile=pass
#EXTINF:-1 logo="http://192.168.2.2:9981/imagecache/211" tvg-id="b6ad169f7518dd709502bb045ccae44a",AKSYON TV
http://192.168.2.2:9981/stream/c ... 3CCED7&profile=pass
#EXTINF:-1 logo="http://192.168.2.2:9981/imagecache/212" tvg-id="6f305905464444a7aa0fa35701eaab18",ALJAZEERA
http://192.168.2.2:9981/stream/c ... 1B0F4D&profile=pass
#EXTINF:-1 logo="http://192.168.2.2:9981/imagecache/26" tvg-id="97a3f7560587bdb422c38882814845f5",ANGELTV
http://192.168.2.2:9981/stream/c ... 7E8780&profile=pass
#EXTINF:-1 logo="http://192.168.2.2:9981/imagecache/20" tvg-id="fa658fb07f162b5a989cb5a72928baeb",Anhui International
http://192.168.2.2:9981/stream/c ... BD74D1&profile=pass
#EXTINF:-1 logo="http://192.168.2.2:9981/imagecache/216" tvg-id="4046edd2a7fbdaaa6f8dcbeb01ba1a35",ANIMAL PLANET
http://192.168.2.2:9981/stream/c ... A39EB4&profile=pass
#EXTINF:-1 logo="http://192.168.2.2:9981/imagecache/225" tvg-id="4b21257495fc5b635f07e781a08b1251",ANIMAX
http://192.168.2.2:9981/stream/c ... 63C9D8&profile=pass
#EXTINF:-1 logo="http://192.168.2.2:9981/imagecache/198" tvg-id="bb4c2e10ff35915a498d42577837eacc",ARIRANG
http://192.168.2.2:9981/stream/c ... 0D7EBD&profile=pass
#EXTINF:-1 logo="http://192.168.2.2:9981/imagecache/138" tvg-id="373070c4b3ad0336e154e865b691b00c",AXN
http://192.168.2.2:9981/stream/c ... 765F91&profile=pass
#EXTINF:-1 logo="http://192.168.2.2:9981/imagecache/139" tvg-id="165a91e0939c6c1ad4c87c213f69b3f1",BLOOMBERG
http://192.168.2.2:9981/stream/c ... 9164AB&profile=pass
#EXTINF:-1 logo="http://192.168.2.2:9981/imagecache/140" tvg-id="3eebccd39eca291c1b8e859f0da489c9",BOOMERANG
http://192.168.2.2:9981/stream/c ... 5C2F47&profile=pass
#EXTINF:-1 logo="http://192.168.2.2:9981/imagecache/7" tvg-id="584bf7696827cc80378e2694e8b6523b",BTV International
http://192.168.2.2:9981/stream/c ... 589D50&profile=pass
#EXTINF:-1 logo="http://192.168.2.2:9981/imagecache/296" tvg-id="f360c206a8881cbae9a7276efa11d8ba",C1
http://192.168.2.2:9981/stream/c ... B228AC&profile=pass
#EXTINF:-1 logo="http://192.168.2.2:9981/imagecache/305" tvg-id="075c1aea0ad05cdb4cce6a5f5c30b97c",C10
http://192.168.2.2:9981/stream/c ... 5B0311&profile=pass
#EXTINF:-1 logo="http://192.168.2.2:9981/imagecache/306" tvg-id="b5a4f71a5d374ea1a3adde1f0b532e1e",C11
http://192.168.2.2:9981/stream/c ... 1BC610&profile=pass
#EXTINF:-1 logo="http://192.168.2.2:9981/imagecache/307" tvg-id="439054b76f1e38a2283819d239037d8c",C12
http://192.168.2.2:9981/stream/c ... 161541&profile=pass
……

那就要手累,甚至眼花了。

我已将正则表达式忘光,但知道用正则最省力,努力回想,努力分析,仍以
#EXTINF:-1 logo="http://192.168.0.102:9981/imagecache/103" tvg-id="b935fa8d54c4242ea410c8aa290e721b",2ND AVENUE (此处有分段)
http://192.168.0.102:9981/stream ... D6A401&profile=pass
为例。
它可以拆分成以下几部分:
#EXTINF:-1 logo="http://192.168.0.102:9981/imagecache/103" tvg-id="b935fa8d54c4242ea410c8aa290e721b" (对目标格式来说属无用部分)
, (分隔部分)
2ND AVENUE (节目名,此处有分段,在目标格式应删除分段)
http://192.168.0.102:9981/stream ... D6A401&profile=pass (此为节目流地址,不须要变动)。

那这个格式可以统写为
^(p.*")(,)(.*)$ (其实可更简单的写为:^(.*")(,)(.*)$ 或者 ^(.*)(,)(.*)$ 正则表达式非唯一,但详细些,精准些,更不易出错。)
上边的^为行首标记, $是行末标记。 ()内表示打算处理的内容,3个()对应下文替换栏的1 2 3
p 指符号,比如行首的#, .*指的是省略通配任意符文,这里.*“指的 是EXTINF……到第2个”(为什么是第2个,不是第1个,因为后边紧接着的逗号的关系)的内容,(p.*")这是第1部分 ,对应替换栏的 1(要删掉,所以替换处不写)。
(,)就是英文逗号,分隔符,这是第2部分,对应替换栏的 2。
(.*)是逗号后边的 节目名部分,通配,这是第3部分,对应 替换栏的3。



我们的目标,就是要删掉第1部分,将第3部分和第2部分换个位置,删除第3部分后边的分段标记。

把K1导出的源列表channels.m3u文件用CNBOOK打开,按CTRL+H 来做批替换,
查找处 输入
^(p.*")(,)(.*)$
替换处 输入
32d
意即3提到2的前边,而d表示删除,放此位置是表示删除分行标记(在CNBOOK中看不到,但这个东西是实际存在的)
勾选正则表达式,
点全部替换,得到

2ND AVENUE,http://192.168.2.2:9981/stream/c ... 4D1A2C&profile=pass
ABS-CBN,http://192.168.2.2:9981/stream/c ... ED0463&profile=pass
AKSYON TV,http://192.168.2.2:9981/stream/c ... 3CCED7&profile=pass
ALJAZEERA,http://192.168.2.2:9981/stream/c ... 1B0F4D&profile=pass
ANGELTV,http://192.168.2.2:9981/stream/c ... 7E8780&profile=pass
Anhui International,http://192.168.2.2:9981/stream/c ... BD74D1&profile=pass
ANIMAL PLANET,http://192.168.2.2:9981/stream/c ... A39EB4&profile=pass
ANIMAX,http://192.168.2.2:9981/stream/c ... 63C9D8&profile=pass
ARIRANG,http://192.168.2.2:9981/stream/c ... 0D7EBD&profile=pass
AXN,http://192.168.2.2:9981/stream/c ... 765F91&profile=pass
BLOOMBERG,http://192.168.2.2:9981/stream/c ... 9164AB&profile=pass
BOOMERANG,http://192.168.2.2:9981/stream/c ... 5C2F47&profile=pass
BTV International,http://192.168.2.2:9981/stream/c ... 589D50&profile=pass
……

这种格式,可以在HDP、小薇直播、电视家、龙龙直播中播放。



很有研究精神,玩的就是这个,支持 点赞
楼主有成功把H9的串流地址导入到TVHeadend, 并成功播放吗? 我试过,貌似不行

扫码下方或搜索关注公众号“卫星参数网”,独家内幕新闻!

卫星参数网公众号