def __get_xml_files(self, mc_grp, mc_port):
try:
loop = True
chunk = {"end": 0}
max_files = 1000
_files = {}
first_file = ''
logger.debug('Descargando XML de %s:%s' % (mc_grp, mc_port))
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.settimeout(3)
sock.bind((mc_grp, int(mc_port)))
mreq = struct.pack("=4sl", socket.inet_aton(mc_grp), socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
# Wait for an end chunk to start by the beginning
while not (chunk["end"]):
chunk = self.__parse_chunk(sock.recv(1500))
first_file = str(chunk["filetype"]) + "_" + str(chunk["fileid"])
# Loop until firstfile
while loop:
xmldata = ""
chunk = self.__parse_chunk(sock.recv(1500))
# Discard headers
body = chunk["data"]
while not (chunk["end"]):
xmldata += body
chunk = self.__parse_chunk(sock.recv(1500))
body = chunk["data"]
# Discard last 4bytes binary footer?
xmldata += body[:-4]
_files[str(chunk["filetype"]) + "_" + str(chunk["fileid"])] = xmldata
logger.debug('XML: %s_%s' % (chunk["filetype"], chunk["fileid"]))
max_files -= 1
if str(chunk["filetype"]) + "_" + str(chunk["fileid"]) == first_file or max_files == 0:
loop = False
sock.close()
return _files
except Exception, ex:
logger.error('Error al descargar los archivos XML: %s' % ex.args)
tv_grab_es_movistartv.py 文件源码
python
阅读 26
收藏 0
点赞 0
评论 0
评论列表
文章目录