taksssss/EPG-Server

频道映射没有正确体现在xmltv中

snowie2000 opened this issue · 13 comments

实际上不应该叫做频道映射,而应该叫做频道别名,例如BRTV卫视,北京卫视实际上就是同一个频道,应该可以使用任一名称成功匹配。但部分频道可能会存在多个别名,允许多映射会更好一些。

另外回到主题,即便设置了频道映射,例如我设置了CETV2=**教育2,在diyp接口中确实是成功获取了,但生成的xmltv中却没有正确的生成多个display-name如下:

	<channel id="**教育2台">
		<display-name lang="zh">**教育2台</display-name>
	</channel>
	<programme channel="**教育2台" start="20240914000000 +0800" stop="20240914002000 +0800">
		<title lang="zh">同上一堂课</title>
	</programme>

导致基于xmltv的程序无法正确获取epg。正确的情况应该是在一个channel下列出所有别名作为display-name

一开始是依赖 正则表达式 来实现 模糊匹配 ,当时觉得叫 频道别名 怪怪的,就写成 频道映射 了。
感谢提供意见,下个版本会修改,每个别名都生成一条xmltv数据。
之前我是搭配另一个功能,实现xmltv的模糊匹配 https://www.right.com.cn/forum/thread-8392662-1-1.html

每个别名都生成一条xmltv数据。

xmltv本身就支持一个channel对应多个别名,例如

<channel id="**教育2台">
   <display-name lang="zh">**教育2台</display-name>
   <display-name lang="zh">CETV-2</display-name>
   <display-name lang="zh">CETV2</display-name>
</channel>

所以没有必要生成一大堆重复的epg。
实际上目前由于默认频道别名很少导致epg数据有大量重复

咦,原来是支持这个的,那我本来的代码也优化一下。
之前我是每个别名生成一条,导致文件超级无敌大。
xmltv用得太少了(菜……

可以参考下: https://wiki.xmltv.org/index.php/XMLTVFormat
甚至它还支持台标……

嗯嗯,我刚刚查的时候也看到了,也在想后续版本把台标加进去。这个应该不难实现。

更新了,有空试试,看有没bug。:)

设置cetv2=**教育2台,cetv2下正确生成了多个displayname,但依然生成了**教育2台和cetv2两台重复的epg数据

我试了一下,不会出现这种情况喔,估计是因为你的 EPG 源里面,既有 cetv2 也有 **教育2台 ?

只有**教育2台,没有cetv2

可能是有一部分数据是在设置别名前生成的,设置别名后,检测到 **教育2台 会替换成 cetv2 ,不会删掉旧的数据。
你可以试试清除数据重新生成。
另外, https://raw.githubusercontent.com/sparkssssssssss/epg/main/pp.xml.gz 已经停更挺久了,最后的数据好像是9月初,是112114的镜像。
https://live.fanmingming.com/e.xml 也是 112114 的镜像。

确实清除数据后就没有问题了,但未来添加新的别名后,旧数据的问题会如何处理呢?是不是等时间到了自然过期就好了?

是的,等过期就好了。我觉得没必要特地处理,这类数据很少,而且不影响数据生成,不会有重复数据,就多出来一条。