欢迎来到Louis的博客

人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。
扩大
缩小

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

 

posted on 2018-08-23 15:04  Louiszj  阅读(410)  评论(0编辑  收藏  举报

导航