if g.lm3>1: #g.lm3=количество тайтлов в сборном диске
disk=g.m3[0]/"disk"
tn(f.ter, disk, ti) #ti=текущий тайтл пишу чаптеры из f.ter в disk\BD\BDMV\META\TN\tnmt_rus_0000X.xml может vlc допилят
spa=f.cwd/"BD"/"BDMV"
src=spa/e2f(1) #"PLAYLIST"/"{:05}.{}".format(1, "mpls")
tpa=disk/"BD"/"BDMV"
tar=tpa/e2f(ti)
if ti==1: #первый тайтл
g.disk=(disk/f.name).with_suffix(".bdmd"), f.name, disk/label, load, "S" if str("{:05}".format(2)) in src.read() else ""
bdl="BACKUP", "AUXDATA", "STREAM", "BDJO", "CLIPINF", "JAR", "PLAYLIST"
for i, ch in enumerate(bdl): # создаю пустые каталоги
if i: (tpa/ch).mkdir()
else:
for gch in bdl[-4:]: (tpa/ch/gch).mkdir()
(disk/"BD"/"CERTIFICATE"/"BACKUP").mkdir()
ss=g.disk[4] #3D
li=(ti*2-1 , ti*2) if ss else (ti, ) # для 3D в каждом mpls два m2ts
mib=("MovieObject.bdmv", "index.bdmv")
for i, fbdmv in enumerate(mib):
if i:
if ppuc(rU/"index{}{}.bdmv".format(1, ss), spa/ fbdmv, 1): #пишу переход на следующий тайтл по кнопке меню
link(spa/fbdmv, spa/e2f(-1, 1, fbdmv)) #"BACKUP"/fbdmv
else:
if ppuc(rU/fbdmv, spa/ fbdmv, 1):
link( spa/fbdmv, spa/e2f(-1, 1, fbdmv))
if ti>1: #патчу mpls
if ppuc(src, tar, 1):
b=tar.read()
for i, j in enumerate(li): b=b.replace(str("{:05}".format(i+1)), str("{:05}".format(j)))
tar.write(b)
link(tar, tpa/e2f(ti, 1)) #"BACKUP"/"PLAYLIST"/"{:05}.{}".format(ti, "mpls")
else: blink(src, tpa, e2f(ti)) #создаю линки на mpls и его резервную копию
g.j+=[json.loads(log(g.MPLS2JSONU, '"%s"', tar))] # читаю mpls
сс=1 # на проффесиональных дисках connection_condition не ставят 5
for i, j in enumerate(li):
link(spa/e2f(i+1, 0, "m2ts"), tpa/e2f(j, 0, "m2ts"))
blink(spa/e2f(i+1, 0, "clpi"), tpa, e2f(j, 0, "clpi"))
if ti==g.lm3: #последний тайтл
for i in range(g.lm3)[1:]: # пишу 00000.mpls как плэйлист всех тайтлов для дубовых плэеров типа mpc-hc
for plm in g.j[i]["MPLS"]["PlayListMark"]: #пишу чаптеры
plm["ref_to_PlayItem_id"]=i
g.j[0]["MPLS"]["PlayListMark"]+=[plm]
g.j[i]["MPLS"]["PlayList"]["PlayItem"][0]["connection_condition"]=сс
g.j[0]["MPLS"]["PlayList"]["PlayItem"]+=g.j[i]["MPLS"]["PlayList"]["PlayItem"]
if g.j[i]["MPLS"]["ExtensionData"]: #3D
if not g.j[0]["MPLS"]["ExtensionData"]: g.j[0]["MPLS"]["ExtensionData"]=g.j[i]["MPLS"]["ExtensionData"][:]
g.j[0]["MPLS"]["ExtensionData"][0]["STN_Table_SS"]["STN_table_SS_for_PlayItem"]+=g.j[i]["MPLS"]["ExtensionData"][0]["STN_Table_SS"]["STN_table_SS_for_PlayItem"]
g.j[i]["MPLS"]["ExtensionData"][1]["SubPath_extension"][0]["SubPlayItem"][0]["sp_connection_condition"]=сс
g.j[i]["MPLS"]["ExtensionData"][1]["SubPath_extension"][0]["SubPlayItem"][0]["sync_PlayItem_id"]=i
g.j[0]["MPLS"]["ExtensionData"][1]["SubPath_extension"][0]["SubPlayItem"]+=g.j[i]["MPLS"]["ExtensionData"][1]["SubPath_extension"][0]["SubPlayItem"]
tar=tpa/e2f(0) #"PLAYLIST/00000.mpls"
if m2j(disk/"00000.json", str(g.j[0]).replace("u'", '"').replace("'", '"'), tar): link(tar, tpa/e2f(0, 1)) #пишу 00000.mpls из 00000.json
if ss: (disk/"1.mvc").touch() #флаг 3D для сборки Blu-Disc Studio
#bdmd для попап меню чаптеров Blu-Disc Studio
rw(g.disk[0], bdmd%(1, g.disk[1], g.lang, g.disk[2], g.disk[3], " ".join(g.pop), " ".join(g.mov), " ".join(g.gro)))
bd(g.m3, disk) #пишу список тайтлов из g.m3 в disk\BD\BDMV\META\DL\bdmt_rus.xml и имя и жакетку диска которые vlc и Leawo показывают
for i, fbdmv in enumerate(mib):
if i:
ppuc(rU/"index{}{}.bdmv".format(ti, ss), tpa/ fbdmv)
link(tpa/fbdmv, tpa/e2f(-1, 1, fbdmv))
else: blink(spa/fbdmv, tpa, fbdmv)
[свернуть]