LouisZJ

生成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()

 

分类:

技术点:

相关文章: