Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解析事件信息表文件_Python_Dvb - Fatal编程技术网

Python 解析事件信息表文件

Python 解析事件信息表文件,python,dvb,Python,Dvb,我的dreambox兼容录像机在每次录制时都存储事件信息表“.eit”文件。我想利用这些信息重新安排我的录音 一个类似的问题也出现了 该格式似乎是二进制格式,如中所述: 及 我现在正在寻找此类文件的解析器。在哪里可以找到一个可以处理文件且不采用广播流作为输入的文件? 到目前为止我尝试了什么? 我搜索了网页,找到了以下链接和指针: 似乎有一个java库 这是JSR 927的一部分 规格 看起来这个库只对JavaMe可用,请参见 如果发现一些与dvb相关的EIT代码片段,例如 或 作为Ka

我的dreambox兼容录像机在每次录制时都存储事件信息表“.eit”文件。我想利用这些信息重新安排我的录音

一个类似的问题也出现了

该格式似乎是二进制格式,如中所述:

我现在正在寻找此类文件的解析器。在哪里可以找到一个可以处理文件且不采用广播流作为输入的文件?

到目前为止我尝试了什么?

我搜索了网页,找到了以下链接和指针:

似乎有一个java库

这是JSR 927的一部分 规格

看起来这个库只对JavaMe可用,请参见

如果发现一些与dvb相关的EIT代码片段,例如

作为Kamaelia DVB工具项目的一部分,似乎有一个python解决方案:

到目前为止,我发现的最接近于暗示athttp://forums.openpli.org/topic/29141-eit-file-format/ 其中指出:


目前,我正在寻求从这个开源Python代码开始。

这是一个Python脚本,似乎是一个有效的开始。 它以开源的形式提供,您可以在那里找到与python3兼容的最新版本和文档

当你把它叫做

python EitParser.py SomeEitFile
它将打印出eit文件的名称和说明

根据需要添加语言代码,例如从

#/usr/bin/python
#编码:utf-8
#
#EIT支持
#版权所有(C)2011 betonme
#版权所有(C)2016沃尔夫冈·法尔
# 
#此语法分析器基于:
# https://github.com/betonme/e2openplugin-EnhancedMovieCenter/blob/master/src/EitSupport.py
#
#如果重复使用此源代码,请不要删除此版权。
#
#此程序是免费软件:您可以重新发布和/或修改它
#它是根据GNU通用公共许可证的条款发布的
自由软件基金会,或者许可证的第3版,或者
#(由您选择)任何更高版本。
#
#这个节目的发布是希望它会有用,
#但无任何保证;甚至没有任何关于
#适销性或适合某一特定目的。见
#有关更多详细信息,请参阅GNU通用公共许可证。
#
#有关GNU通用公共许可证的更多信息,请参阅:
#   .
#
导入操作系统
导入结构
导入时间
从日期时间导入日期时间
#从Components.config导入配置
#从组件。语言导入语言
#从EMCTasker导入emcDebugOut
#从IsoFileSupport导入IsoFileSupport
#从MetaSupport导入getInfoFile
#def crc32(数据):
#多边形=0x4c11db7
#crc=0xffffffffL
#对于数据中的字节:
#字节=ord(字节)
#对于范围(7,-1,-1)中的位:#MSB到LSB
#z32=crc>>31#最高位
#crc=crc>位)&1)^z32:
#crc=crc^poly
#crc=crc&0xffffffffL
#返回crc
解码_charSpecHR={u'Ć':u'\u0106',u'æ':u'\u0107',u'':u'\u017D',u'¾':u'\u017E',u'):u'\u0160',u'imk_':u'\u010C',u'è':u'\u010D',u'240; u':u'\u0111'}
“解码”部分的俄罗斯警方在今年8月的一个城市的整体情况是,解码部分的整体情况是在今年的一个城市的整体情况,u'u''''7''''u'u'u'u'u'萨克萨克萨克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克斯克“,”u“Ï”+u“E”:u“ě”,u“Ï”+u“L”:u“ľ”,u“Ï”+u“N”:u“ň”,
“u'2077”u'7'u''u'''u u''7'u u'''u'7'u'u'7'u'u'u'7'u'u'u'7'u'u''u'7'u'u'u'u'u'u'7'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'r”:u'u'u'u'u'u'u'u'u'r:u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u u'E':u'E',u'E'+u'I':u'I',u'E'+u'O':u'O',
“u'u”u'u'u'u'u'u u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u u'u u'u'u:u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u'u u u'u'u u'u'u u'u u'u'u'u'u'u'u'u'u'u'u'u u'u'u'u u u u u“+u'y”:u‘Ÿ’、u‘È’+u‘A’:u‘ä’、u‘È’+u‘E’:u‘ë’,
u‘È’+u‘i’:u‘ï’、u‘È’+u‘o’:u‘ö’、u‘È’+u‘u’:u‘ü’、u‘È’+u‘y’:u‘ÿ’}
def convertCharSpecHR(文本):
对于i,j,在解码_charSpecHR.iteritems()时:
text=text.替换(i,j)
返回文本
def convertCharSpecCZSK(文本):
对于i,j,在解码_charSpecCZSK.iteritems()时:
text=text.替换(i,j)
返回文本
def解析MJD(MJD):
#解析包含修改的Julian日期的16位无符号整数,
#根据DVB-SI规范
#返回年、月、日
YY=int((MJD-15078.2)/365.25)
毫米=整数((MJD-14956.1-整数(YY*365.25))/30.6001)
D=MJD-14956-int(YY*365.25)-int(毫米*30.6001)
K=0
如果MM==14或MM==15:K=1
返回(1900+YY+K)(毫米-1-K*12),D
def unBCD(字节):
返回(字节>>4)*10+(字节和0xf)
#从Tools.ISO639导入语言代码
#-*-编码:iso-8859-2-*-
语言代码={}
语言代码[“deu”]=语言代码[“ger”]=语言代码[“de”]=(“德语”、“日耳曼语”)
语言代码[“fra”]=语言代码[“fre”]=语言代码[“fr”]=(“法语”、“浪漫”)
def语言_iso639_2to3(字母2):
ret=字母2
如果语言代码中有字母2:
语言=语言代码[字母2]
对于alpha,名称为LanguageCodes.items():
如果名称==语言:
如果len(alpha)=3:
返回阿尔法
回程网
#试验
#打印语言代码[“sv”]
#印刷语言_iso639_2to3(“sv”)
#Eit文件支持类
#描述
# http://de.wikipedia.org/wiki/Event_Information_Table
类列表():
EIT\u短\u事件\u描述符=0x4d
EIT扩展事件描述=0x4e
定义初始化(self,path=None):
self.eit_文件=无
#待办事项
#字典的实现可能非常缓慢
self.eit={}
self.iso=无
self.\uuu新路径(路径)
self.\uuu readEitFile()
定义新路径(自身,路径):
name=None
如果路径:
如果self.eit_文件!=路径:
self.eit_文件=路径
def_u_mk_int(自身):
如果为0,则返回int
定义日期(自、d、t):
如果d