Option Explicit
'-----------------------------------------------------------------------------------------------------------------------------
' DRAFT script only - doesn't yet get fancy with parameters for disc title, name, etc
'-----------------------------------------------------------------------------------------------------------------------------
' Create a .Bprj file from a .Bprj file... including XML bits used for DVD VIDEO_TS folder creation.
' This ONLY works with .Bprj files whcih contain much more info than .Vprj files !!
'
'Sample Commmand line to run this script :-
' cscript //nologo "drive:\folder\OutputDVDFoldersfromVprj.vbs" <input project file.bprj> <output project file,bprj>
'
' The output XML file <output project file,bprj> arising from THIS script can be in by a commandline
' in a .BAT or .CMD file line,like this sample :-
' cscript //nologo "C:\Program Files\VideoReDoTVSuite\vp.vbs" "drive:\folder\file.bprj" "drive:\folder\file.dvd" /t8 /e
' which should then result in a VIDEO_TS being created in the place you specify.
'
' Note: all file names should be fully qualified with path etc.
'-----------------------------------------------------------------------------------------------------------------------------
'
Dim Args, sourceFile, destFile
Dim xmlDoc, bigString, theVolumeName, theTitleText, theMenuDiscTitle, theMenuDiscSubtitle, theMenuTitleTitle
'
theTitleText="DVDtitle"
'
set Args = Wscript.Arguments
if Args.Count < 6 or Args.Count > 6 then
wscript.echo( "? Invalid number of arguments - usage (with ALL arguments quoted) is: ")
wscript.echo( " cscript //nologo ""drive:\folder\OutputDVDFoldersfromVprj.vbs"" <input project file.vprj> <output project file,bprj> <menu disc title> <menu subtitle> <menuitem title> <discvulumename>" )
Wscript.Quit 2
end if
function UnEscapeString( source )
dim Dest, i, s, c
dest = ""
for i = 1 to len(source)
s = mid(source,i,1)
if s = "^" then
c = mid(source,i+1,3)
dest = dest & chr(c)
i = i + 3
else
dest = dest & s
end if
next
UnEscapeString = dest
end function
sourceFile = UnEscapeString(Args(0))
destFile = UnEscapeString(Args(1))
theMenuDiscTitle = UnEscapeString(Args(2))
theMenuDiscSubtitle = UnEscapeString(Args(3))
theMenuTitleTitle = UnEscapeString(Args(4))
theVolumeName = UnEscapeString(Args(5))
'Some References:
'MSXML
' http://msdn.microsoft.com/en-us/library/ms763742(VS.85).aspx
'How Do I Traverse a Document?
' http://msdn.microsoft.com/en-us/library/aa468547.aspx#beginner_traverse
'Intro to the DOM
' http://www.xmlfiles.com/dom/
'DOM Objects
' http://www.devguru.com/Technologies/xmldom/quickref/xmldom_index.html
'XML DOM: Inserting, Modifying and Deleting elements using VBScript
' http://www.xmlpitstop.com/examples/showhighlightedexample.aspx?example=dominsattrelem
'
' http://msconline.maconstate.edu/tutorials/XML/default.htm
'http://msconline.maconstate.edu/tutorials/XML/XML08/xml08-01.aspx
'http://msconline.maconstate.edu/tutorials/XML/XML08/xml08-02.aspx
'http://msconline.maconstate.edu/tutorials/XML/XML08/xml08-03.aspx
'
' THIS IS THE OUTLINE AND VALUES OF THE THINGS WE NEED TO CHANGE IN THE XML AS AT JULY 2008 ...
' THE STUFF in <TitleXML></TitleXML> IS NEW ALTHOUGH THE <TitleXML> ALREADY EXISTS ITSELF
' THE STUFF in '<DVDTitles> IS NEW ALTHOUGH THE <DVDTitles> ALREADY EXISTS ITSELF
' THE REST IS SIMPLY CHANGES IN VALUES (ASSUMING PAL 720x576 25FPS)
'<VideoReDoProject>
' <OutputOptions>
' <OutputType>8</OutputType>
' <DVDOutput>
' <TitleDisplayMode>0</TitleDisplayMode>
' <VideoSystem>3</VideoSystem>
' <LoopTitles>1</LoopTitles>
' <VolumeName>XXXX_TEST_DVD</VolumeName>
' <CountOfTitles>1</CountOfTitles>
' <TitleXML>
' stuff
' </TitleXML>
' <MenuOption>0</MenuOption>
' <FirstPlayOption>1</FirstPlayOption>
' <AfterTitleAction>1</AfterTitleAction>
' <DVDSpaceNeededInMB>4400</DVDSpaceNeededInMB>
' <TempSpaceNeededInMB>4400</TempSpaceNeededInMB>
' <TempSpaceSingleTitleInMB>4400</TempSpaceSingleTitleInMB>
' <DVDTitles>
' <DVDTitle>
' <VideoFilename></VideoFilename>
' <AudioFilename></AudioFilename>
' <SCCFilename></SCCFilename>
' <IdxTitleTextBox>1</IdxTitleTextBox>
' <TitleText>XXXX_TEST</TitleText>
' <SubTitleText></SubTitleText>
' <OutputBytes>142069545</OutputBytes>
' <OutputDuration>1794000112</OutputDuration>
' <EncodingWidth>720</EncodingWidth>
' <EncodingHeight>576</EncodingHeight>
' <AudioCodec>2</AudioCodec>
' <AudioSamplingRate>48000</AudioSamplingRate>
' <FrameRate>2500</FrameRate>
' <AspectRatio>3</AspectRatio>
' <CroppingRect>
' <top>0</top>
' <left>0</left>
' <bottom>576</bottom>
' <right>720</right>
' </CroppingRect>
' <VolumeAdjustment>1.000000</VolumeAdjustment>
' <DVDChapters/>
' <AudioStreams/>
' <SubTitles/>
' </DVDTitle>
' </DVDTitles>
' </DVDOutput>
' </OutputOptions>
'</VideoReDoProject>
'
'
'0. Load the XML document
set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load(sourceFile)
'
' 1. Do the changes in XML values
'
Sub UpdateXMLvalue(iDoc,iPath,iValue)
dim iNode
''' wscript.echo("attempting to UpdateXMLvalue: " & iPath & " to " & ivalue)
set iNode=iDoc.SelectSingleNode(iPath)
iNode.text=iValue
set iNode=nothing
end sub
CALL UpdateXMLvalue(xmlDoc, "/VideoReDoProject/OutputOptions/OutputType", "8")
CALL UpdateXMLvalue(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/TitleDisplayMode", "0")
CALL UpdateXMLvalue(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/VideoSystem", "3")
CALL UpdateXMLvalue(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/LoopTitles", "1")
CALL UpdateXMLvalue(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/VolumeName", theVolumeName)
CALL UpdateXMLvalue(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/CountOfTitles", "1")
CALL UpdateXMLvalue(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/MenuOption", "0")
CALL UpdateXMLvalue(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/FirstPlayOption", "1")
CALL UpdateXMLvalue(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/AfterTitleAction", "1")
CALL UpdateXMLvalue(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDSpaceNeededInMB", "9800") ' be lazy use the max ???????????????????????????????????????????
CALL UpdateXMLvalue(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/TempSpaceNeededInMB", "9800") ' be lazy use the max ???????????????????????????????????????????
CALL UpdateXMLvalue(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/TempSpaceSingleTitleInMB", "9800") ' be lazy use the max ???????????????????????????????????????????
'
' 2. Add the new values
'
Sub AppendXMLContainerNode(iDoc, iPath, iName)
Dim iNode, newNode
''' wscript.echo("attempting to AppendXMLContainerNode: " & iPath & " with " & iName)
set iNode=xmlDoc.SelectSingleNode(iPath)
set newNode=xmlDoc.createElement(iName)
iNode.appendChild(newNode)
set newNode=nothing
set iNode=nothing
end sub
Sub AppendXMLvalueNode(iDoc, iPath, iName, ivalue)
Dim iNode, newNode, newTextnode
''' wscript.echo("attempting to AppendXMLvalueNode: " & iPath & " with " & iName & " value " & iValue)
'create an orphan text node
set newNode=iDoc.createElement(iName)
set newTextnode=iDoc.createTextNode(iValue)
newNode.appendChild(newTextnode)
'append the orphan text node to the parent
set iNode=xmlDoc.SelectSingleNode(iPath)
iNode.appendChild(newNode)
set newNode=nothing
set iNode=nothing
end sub
CALL AppendXMLContainerNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles", "DVDTitle")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "VideoFilename", "")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "AudioFilename", "")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "SCCFilename", "")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "IdxTitleTextBox", "1")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "TitleText", theTitleText)
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "SubTitleText", "")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "OutputBytes", "0") '??? rats, don't know what number shoud go here ??????????
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "OutputDuration", "0") '??? rats, don't know what number shoud go here ??????????
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "EncodingWidth", "720")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "EncodingHeight", "576")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "AudioCodec", "2")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "AudioSamplingRate", "48000")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "FrameRate", "2500")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "AspectRatio", "3")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "VolumeAdjustment", "1.000000")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "DVDChapters", "")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "AudioStreams", "")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "SubTitles", "")
CALL AppendXMLContainerNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle", "CroppingRect")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle/CroppingRect", "top", "0")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle/CroppingRect", "left", "0")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle/CroppingRect", "bottom", "0")
CALL AppendXMLvalueNode(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/DVDTitles/DVDTitle/CroppingRect", "right", "0")
bigString = ""
bigString = bigString & "<VRDTitle>"
bigString = bigString & "<Width>720</Width>"
bigString = bigString & "<Height>576</Height>"
bigString = bigString & "<Aspect>"
bigString = bigString & " <Horizontal>16</Horizontal>"
bigString = bigString & " <Vertical>9</Vertical> "
bigString = bigString & "</Aspect>"
bigString = bigString & "<Background>"
bigString = bigString & " <Color>#163A84</Color>"
bigString = bigString & "</Background>"
bigString = bigString & "<DVDPalette>"
bigString = bigString & " <Highlight>#87D0F1</Highlight> "
bigString = bigString & " <Accent1>#000000</Accent1> "
bigString = bigString & " <Accent2>#000000</Accent2> "
bigString = bigString & "</DVDPalette>"
bigString = bigString & "<DVDHighlightStyle>Box</DVDHighlightStyle> "
bigString = bigString & "<TextBoxes count=""6"">"
bigString = bigString & " <TextBox sequence=""1"" dvdbutton=""0"">"
bigString = bigString & " <Text>" & theMenuDiscTitle & "</Text>" '+++++++++++++ menu disc title in here +++++++++++++
bigString = bigString & " <PointSize>40</PointSize> "
bigString = bigString & " <FontName>Arial Black</FontName> "
bigString = bigString & " <Align>1</Align> "
bigString = bigString & " <VertAlign>0</VertAlign> "
bigString = bigString & " <Color>#87D0F1</Color> "
bigString = bigString & " <Bold>1</Bold> "
bigString = bigString & " <Itallics>0</Itallics> "
bigString = bigString & " <Top>49</Top> "
bigString = bigString & " <Left>112</Left> "
bigString = bigString & " <Width>800</Width> "
bigString = bigString & " <Height>85</Height> "
bigString = bigString & " <Outline>"
bigString = bigString & " <Color>#000000</Color> "
bigString = bigString & " <Width>3</Width> "
bigString = bigString & " </Outline>"
bigString = bigString & " <Shadow>"
bigString = bigString & " <Color>#000000</Color> "
bigString = bigString & " <Position>0</Position> "
bigString = bigString & " <Offset>5</Offset> "
bigString = bigString & " <Opacity>35</Opacity> "
bigString = bigString & " </Shadow>"
bigString = bigString & " </TextBox>"
bigString = bigString & " <TextBox sequence=""2"" dvdbutton=""1"">"
bigString = bigString & " <Text>" & theMenuTitleTitle & "</Text>" '+++++++++++++ menu playable title #1 within the disc +++++++++++++
bigString = bigString & " <PointSize>30</PointSize> "
bigString = bigString & " <FontName>Arial</FontName> "
bigString = bigString & " <Align>0</Align> "
bigString = bigString & " <VertAlign>0</VertAlign> "
bigString = bigString & " <Color>#FFFFFF</Color> "
bigString = bigString & " <Bold>0</Bold> "
bigString = bigString & " <Itallics>0</Itallics> "
bigString = bigString & " <Top>185</Top> "
bigString = bigString & " <Left>115</Left>"
bigString = bigString & " <Width>800</Width> "
bigString = bigString & " <Height>55</Height> "
bigString = bigString & " <Outline>"
bigString = bigString & " <Color>#000000</Color> "
bigString = bigString & " <Width>1</Width> "
bigString = bigString & " </Outline>"
bigString = bigString & " <Shadow>"
bigString = bigString & " <Color>#000000</Color> "
bigString = bigString & " <Position>0</Position> "
bigString = bigString & " <Offset>3</Offset> "
bigString = bigString & " <Opacity>50</Opacity> "
bigString = bigString & " </Shadow>"
bigString = bigString & " </TextBox>"
bigString = bigString & " <TextBox sequence=""3"" dvdbutton=""0"">"
bigString = bigString & " <Text></Text> "
bigString = bigString & " <PointSize>30</PointSize> "
bigString = bigString & " <FontName>Arial</FontName> "
bigString = bigString & " <Align>0</Align> "
bigString = bigString & " <VertAlign>0</VertAlign> "
bigString = bigString & " <Color>#FFFFFF</Color> "
bigString = bigString & " <Bold>0</Bold> "
bigString = bigString & " <Itallics>0</Itallics> "
bigString = bigString & " <Top>275</Top> "
bigString = bigString & " <Left>115</Left> "
bigString = bigString & " <Width>800</Width> "
bigString = bigString & " <Height>55</Height> "
bigString = bigString & " <Outline>"
bigString = bigString & " <Color>#000000</Color> "
bigString = bigString & " <Width>1</Width> "
bigString = bigString & " </Outline>"
bigString = bigString & " <Shadow>"
bigString = bigString & " <Color>#000000</Color> "
bigString = bigString & " <Position>0</Position> "
bigString = bigString & " <Offset>3</Offset> "
bigString = bigString & " <Opacity>50</Opacity> "
bigString = bigString & " </Shadow>"
bigString = bigString & " </TextBox>"
bigString = bigString & " <TextBox sequence=""4"" dvdbutton=""0"">"
bigString = bigString & " <Text></Text> "
bigString = bigString & " <PointSize>30</PointSize> "
bigString = bigString & " <FontName>Arial</FontName> "
bigString = bigString & " <Align>0</Align> "
bigString = bigString & " <VertAlign>0</VertAlign> "
bigString = bigString & " <Color>#FFFFFF</Color> "
bigString = bigString & " <Bold>0</Bold> "
bigString = bigString & " <Itallics>0</Itallics> "
bigString = bigString & " <Top>365</Top> "
bigString = bigString & " <Left>115</Left> "
bigString = bigString & " <Width>800</Width> "
bigString = bigString & " <Height>55</Height> "
bigString = bigString & " <Outline>"
bigString = bigString & " <Color>#000000</Color> "
bigString = bigString & " <Width>1</Width> "
bigString = bigString & " </Outline>"
bigString = bigString & " <Shadow>"
bigString = bigString & " <Color>#000000</Color> "
bigString = bigString & " <Position>0</Position> "
bigString = bigString & " <Offset>3</Offset> "
bigString = bigString & " <Opacity>50</Opacity> "
bigString = bigString & " </Shadow>"
bigString = bigString & " </TextBox>"
bigString = bigString & " <TextBox sequence=""5"" dvdbutton=""0"">"
bigString = bigString & " <Text></Text> "
bigString = bigString & " <PointSize>30</PointSize> "
bigString = bigString & " <FontName>Arial</FontName> "
bigString = bigString & " <Align>0</Align> "
bigString = bigString & " <VertAlign>0</VertAlign> "
bigString = bigString & " <Color>#FFFFFF</Color> "
bigString = bigString & " <Bold>0</Bold> "
bigString = bigString & " <Itallics>0</Itallics> "
bigString = bigString & " <Top>455</Top> "
bigString = bigString & " <Left>115</Left> "
bigString = bigString & " <Width>800</Width> "
bigString = bigString & " <Height>55</Height> "
bigString = bigString & " <Outline>"
bigString = bigString & " <Color>#000000</Color> "
bigString = bigString & " <Width>1</Width> "
bigString = bigString & " </Outline>"
bigString = bigString & " <Shadow>"
bigString = bigString & " <Color>#000000</Color> "
bigString = bigString & " <Position>0</Position> "
bigString = bigString & " <Offset>3</Offset> "
bigString = bigString & " <Opacity>50</Opacity> "
bigString = bigString & " </Shadow>"
bigString = bigString & " </TextBox>"
bigString = bigString & " <TextBox sequence=""6"" dvdbutton=""0"">"
bigString = bigString & " <Text>" & theMenuDiscSubtitle & "</Text>" ''+++++++++++++ menu disc subtitle in here +++++++++++++
bigString = bigString & " <PointSize>20</PointSize> "
bigString = bigString & " <FontName>Arial</FontName> "
bigString = bigString & " <Align>1</Align> "
bigString = bigString & " <VertAlign>0</VertAlign> "
bigString = bigString & " <Color>#FFFFFF</Color> "
bigString = bigString & " <Bold>0</Bold> "
bigString = bigString & " <Itallics>1</Itallics> "
bigString = bigString & " <Top>128</Top> <Left>112</Left> "
bigString = bigString & " <Width>800</Width> "
bigString = bigString & " <Height>40</Height> "
bigString = bigString & " <Outline>"
bigString = bigString & " <Color>#000000</Color> "
bigString = bigString & " <Width>1</Width> "
bigString = bigString & " </Outline>"
bigString = bigString & " <Shadow>"
bigString = bigString & " <Color>#000000</Color> "
bigString = bigString & " <Position>0</Position> "
bigString = bigString & " <Offset>3</Offset> "
bigString = bigString & " <Opacity>50</Opacity> "
bigString = bigString & " </Shadow>"
bigString = bigString & " </TextBox>"
bigString = bigString & "</TextBoxes>"
bigString = bigString & "<DefaultTextProperties>"
bigString = bigString & " <PointSize>24</PointSize> "
bigString = bigString & " <FontName>Arial</FontName> "
bigString = bigString & " <Align>1</Align> "
bigString = bigString & " <VertAlign>0</VertAlign> "
bigString = bigString & " <Color>#FFFFFF</Color> "
bigString = bigString & " <Bold>0</Bold> "
bigString = bigString & " <Itallics>0</Itallics> "
bigString = bigString & " <Outline>"
bigString = bigString & " <Color>#000000</Color> "
bigString = bigString & " <Width>1</Width> "
bigString = bigString & " </Outline>"
bigString = bigString & " <Shadow>"
bigString = bigString & " <Color>#000000</Color> "
bigString = bigString & " <Position>0</Position> "
bigString = bigString & " <Offset>1</Offset> "
bigString = bigString & " <Opacity>50</Opacity> "
bigString = bigString & " </Shadow>"
bigString = bigString & "</DefaultTextProperties>"
bigString = bigString & "</VRDTitle>"
CALL UpdateXMLvalue(xmlDoc, "/VideoReDoProject/OutputOptions/DVDOutput/TitleXML", bigString)
' 3. Save the updated XML to a file with a new name
XMLDoc.Save(destFile)
' Finished.
wscript.echo("Created output file: " & destFile)