生成xml配置文件
import re, json, time from xml.etree.ElementTree import Element, SubElement, ElementTree def get_ttinfo(): with open(\'TransTrans.xml\') as f: info = f.read() port = re.findall(r\'<UDPPort>(\d+)</UDPPort>\', info) room_id = re.findall(r\'<ID>(\d+)</ID>\', info) return port, room_id def get_json(): with open(\'ttr.ini\', \'r\', encoding=\'utf-8\') as f: info = json.load(f) return info def create_ttr(filename=\'TTReacoed.xml\'): port, room_id = get_ttinfo() json_info = get_json() AVMainServer = Element(\'AVMainServer\') Version = SubElement(AVMainServer,\'Version\') Version.text = \'1\' RtmpServer = SubElement(AVMainServer, \'RtmpServer\') Path = SubElement(RtmpServer, \'Path\') Path.text = json_info[\'RtmpPath\'] NotifyPath = SubElement(RtmpServer, \'NotifyPath\') NotifyPath.text = json_info[\'NotifyPath\'] SocketInfo = SubElement(AVMainServer,\'SocketInfo\') for i in range(len(room_id)): DetailInfo = SubElement(SocketInfo, \'DetailInfo\') ID =SubElement(DetailInfo, \'ID\') ID.text = room_id[i] Name = SubElement(DetailInfo, \'Name\') Name.text = room_id[i] SourceIP = SubElement(DetailInfo, \'SourceIP\') SourceIP.text = json_info[\'TT_IP\'] SourcePort = SubElement(DetailInfo, \'SourcePort\') SourcePort.text = port[i] BindIP = SubElement(DetailInfo, \'BindIP\') BindIP.text = \'127.0.0.1\' BindPort = SubElement(DetailInfo, \'BindPort\') BindPort.text = port[i] RecordInfo = SubElement(AVMainServer, \'RecordInfo\') RecordIP = SubElement(RecordInfo, \'RecordIP\') RecordIP.text = \'1.1.1.1\' RecordDirectory = SubElement(RecordInfo, \'RecordDirectory\') RecordDirectory.text = \'E:/sjlive2017/\' DBInfo = SubElement(AVMainServer, \'DBInfo\') Platform = SubElement(DBInfo, \'Platform\') Platform.text = \'python\' Host = SubElement(DBInfo, \'Host\') Host.text = \'1.1.1.1\' User = SubElement(DBInfo, \'User\') User.text = \'root\' Password = SubElement(DBInfo, \'Password\') Password.text = \'python\' DBName = SubElement(DBInfo, \'DBName\') DBName.text = \'test\' indent(AVMainServer) tree = ElementTree(AVMainServer) tree.write(filename, encoding=\'gb2312\') def indent(elem, level=0): i = "\n" + level*"\t" if len(elem): if not elem.text or not elem.text.strip(): elem.text = i + "\t" if not elem.tail or not elem.tail.strip(): elem.tail = i for elem in elem: indent(elem, level+1) if not elem.tail or not elem.tail.strip(): elem.tail = i else: if level and (not elem.tail or not elem.tail.strip()): elem.tail = i try: create_ttr() except Exception as e: with open(\'ttr.log\', \'a\', encoding=\'utf-8\') as f: time_now = time.strftime(\'%Y-%m-%d %H:%M:%S\') f.write(\'{} 配置生成失败 {}\n\'.format(time_now, e.args[0])) else: with open(\'ttr.log\', \'a\', encoding=\'utf-8\') as f: time_now = time.strftime(\'%Y-%m-%d %H:%M:%S\') f.write(\'{} 配置生成成功\n\'.format(time_now))
#ttr.txt
{"TT_IP":"1.1.1.1","Platform":"python", "RtmpPath":"http://www.baidu.com", "NotifyPath":"http://www.baidu.com"}
示例2:
from xml.etree.ElementTree import Element, SubElement, ElementTree room_num = 1000 #单个程序房间数 config_num = 5 #生成配置文件数量,房间总数=room_num*config_num room_start = 900000 #roomid起始 ts_port_start = 40000 #ts端口起始 tt_port_start = 50000 #tt端口起始 ts_ip = [\'1.1.1.1\', \'2.2.2.2\'] #ts服务器ip filename = \'TransTrans.xml\' #tt服务端配置文件名必须是TransTrans.xml,生成后的配置文件放到服务器上需要改名 add_info = [room_num*i for i in range(config_num)] def get_tsip(): return \';\'.join(ts_ip) def get_tsport(tsport): return \';\'.join([tsport]*len(ts_ip)) def create_tt(add = 0): AVMainServer = Element(\'AVMainServer\') Version = SubElement(AVMainServer, \'Version\') Version.text = \'1\' SocketInfo = SubElement(AVMainServer, \'SocketInfo\') for i in range(room_num): DetailInfo = SubElement(SocketInfo, \'DetailInfo\') ID = SubElement(DetailInfo,\'ID\') ID.text = str(room_start+i+add) Name = SubElement(DetailInfo,\'Name\') Name.text = ID.text UDPIP = SubElement(DetailInfo,\'UDPIP\') UDPIP.text =\'127.0.0.1\' UDPPort = SubElement(DetailInfo,\'UDPPort\') UDPPort.text = str(tt_port_start+i+add) PeerServerIP = SubElement(DetailInfo,\'PeerServerIP\') PeerServerIP.text = get_tsip() PeerServerPort = SubElement(DetailInfo,\'PeerServerPort\') PeerServerPort.text = get_tsport(str(ts_port_start+i+add)) indent(AVMainServer) tree = ElementTree(AVMainServer) tree.write(str(add)+filename,encoding="GB2312") def indent(elem, level=0): i = "\n" + level*"\t" if len(elem): if not elem.text or not elem.text.strip(): elem.text = i + "\t" if not elem.tail or not elem.tail.strip(): elem.tail = i for elem in elem: indent(elem, level+1) if not elem.tail or not elem.tail.strip(): elem.tail = i else: if level and (not elem.tail or not elem.tail.strip()): elem.tail = i def create_xml(): for i in add_info: create_tt(i) create_xml()
示例3:
from xml.etree.ElementTree import Element, SubElement, ElementTree room_num = 50 #单个配置(程序)房间数量 config_num = 2 #生成配置文件数量,房间总数=room_num*config_num room_start = 900000 #房间起始id ts_port_start = 40000 #ts端口起始id tt_port_start = 50000 #tt端口起始id p2p_port_start = 30000 #p2p端口起始 add_info = [room_num*i for i in range(config_num)] #tt ip信息,ct:电信 cnc:联通 cmcc:移动 hk:香港 没有ip的字段用\'\'代替,则该字段不会生成配置文件 tt_ip = {\'ct\':[\'1.1.1.1\',\'ct_ts_config.xml\'],\'cnc\':[\'2.2.2.2\',\'cnc_ts_config.xml\'],\'cmcc\':[\'\',\'cmcc_ts_config.xml\'],\'hk\':[\'3.3.3.3\',\'hk_ts_config.xml\']} def create_ts(ttip,filename,add=0): AVMainServer = Element(\'AVMainServer\') Version = SubElement(AVMainServer,\'Version\') Version.text = \'1\' SocketInfo = SubElement(AVMainServer,\'SocketInfo\') for i in range(room_num): DetailInfo = SubElement(SocketInfo,\'DetailInfo\') ID = SubElement(DetailInfo,\'ID\') ID.text = str(room_start+i+add) ServerID = SubElement(DetailInfo,\'ServerID\') ServerID.text = ID.text Name = SubElement(DetailInfo,\'Name\') Name.text = \'public\' Index = SubElement(DetailInfo, \'Index\') Index.text = \'0\' Type = SubElement(DetailInfo,\'Type\') Type.text = \'0\' MainServerIP = SubElement(DetailInfo,\'MainServerIP\') MainServerIP.text = \'127.0.0.1\' MainServerPort = SubElement(DetailInfo,\'MainServerPort\') MainServerPort.text = \'0\' UDPIP = SubElement(DetailInfo,\'UDPIP\') UDPIP.text = \'127.0.0.1\' UDPPort = SubElement(DetailInfo,\'UDPPort\') UDPPort.text = str(ts_port_start+i+add) SuperP2P = SubElement(DetailInfo,\'SuperP2P\') SuperP2P.text = \'0\' SuperP2PPort = SubElement(DetailInfo,\'SuperP2PPort\') SuperP2PPort.text = str(p2p_port_start+i+add) RoomSize = SubElement(DetailInfo,\'RoomSize\') RoomSize.text = \'10\' RoomUserSize = SubElement(DetailInfo,\'RoomUserSize\') RoomUserSize.text = \'200\' ThreadNumber = SubElement(DetailInfo,\'ThreadNumber\') ThreadNumber.text = \'1\' WatchTime = SubElement(DetailInfo,\'WatchTime\') WatchTime.text = \'18000\' IsBuffer = SubElement(DetailInfo,\'IsBuffer\') IsBuffer.text = \'1\' BufferTime = SubElement(DetailInfo,\'BufferTime\') BufferTime.text = \'1000\' UserName = SubElement(DetailInfo,\'UserName\') UserName.text = \'transserver\' Password = SubElement(DetailInfo,\'Password\') Password.text = \'12345\' P2P = SubElement(DetailInfo,\'P2P\') P2P.text = \'0\' ServerType = SubElement(DetailInfo,\'ServerType\') ServerType.text = \'3\' PeerServerIP = SubElement(DetailInfo,\'PeerServerIP\') PeerServerIP.text = ttip PeerServerPort = SubElement(DetailInfo,\'PeerServerPort\') PeerServerPort.text = str(tt_port_start+i+add) Broadcast = SubElement(DetailInfo,\'Broadcast\') Broadcast.text = \'1\' BroadcastInfo = SubElement(DetailInfo,\'BroadcastInfo\') PeerInfo = SubElement(BroadcastInfo,\'PeerInfo\') IP = SubElement(PeerInfo,\'IP\') IP.text = \'127.0.0.1\' Port = SubElement(PeerInfo,\'Port\') Port.text = \'12345\' PeerInfo2 = SubElement(BroadcastInfo, \'PeerInfo\') IP2 = SubElement(PeerInfo2, \'IP\') IP2.text = \'127.0.0.1\' Port2 = SubElement(PeerInfo2, \'Port\') Port2.text = \'12346\' indent(AVMainServer) tree = ElementTree(AVMainServer) tree.write(str(add)+filename,encoding=\'gb2312\') def indent(elem, level=0): i = "\n" + level*"\t" if len(elem): if not elem.text or not elem.text.strip(): elem.text = i + "\t" if not elem.tail or not elem.tail.strip(): elem.tail = i for elem in elem: indent(elem, level+1) if not elem.tail or not elem.tail.strip(): elem.tail = i else: if level and (not elem.tail or not elem.tail.strip()): elem.tail = i def create_xml(): for i in tt_ip.values(): if i[0] != \'\': for j in add_info: create_ts(i[0], i[1], add=j) create_xml()