Creative Communities of the World Forums

The peer to peer support community for media production professionals.

Activity Forums Adobe Premiere Pro Export Markers (Solved until Adobe provides something better)

  • Sam Alexander

    December 13, 2011 at 4:04 am

    Just wanted to post to say thank you for the script. 🙂 This is exactly what I was looking for. If you have a website I’d certainly donate if you had such a button. Appreciate the kindness and time you took to share this.

  • Ed Elliott

    December 13, 2011 at 12:29 pm

    To all of those expressing their appreciation for the script, I’m pleased that so many of you find it useful.

    Sam, I do not have a web site or a link for donations. I view efforts like this as giving back in a small way to those many people around the world who have given their time freely to post problem solutions, tutorials, information (e.g., Wikipedia), and software (e.g., AHK) or to develop and maintain web sites, etc. For those desiring to donate, there are many worthy charities and projects which can make better use of donations than I could. Some needs are pretty obvious, but local animal shelters are often behind the scenes and forgotten. The local animal shelter here, for example, is a non-profit which receives only small governmental compensation — one-week of financial assistance for each stray. It survives with a no euthanasia policy only because of the community’s generosity with money, supplies, and time.

  • Ed Elliott

    December 16, 2011 at 12:56 pm

    This version fixes a problem where all numbered markers were ignored, i.e., the previous versions only worked for unnumbered markers.

    3421_premieremarkers.ahk.zip

    To recap in case this thread has gotten a little confusing, this version:

    o Exports Premiere marker data (time, name, comment) to the clipboard for both numbered and unnumbered sequence markers.

    o It does not export the marker number for numbered markers.

    o Works as-is with the English-language version of Premiere CS5.5/CS5/CS4/CS3 (earlier versions have not been tested). For the French-language version of Premiere, one line will have to be uncommented (i.e., use Notepad to remove the semi-colon).

    o It can be modified for other language versions of Premiere by using Notepad to change the value for stringMarker.

    o The instructions are at the beginning of the file. Use Notepad to view or edit the file.

  • Ed Elliott

    May 1, 2012 at 6:13 pm

    This version supports Premiere’s various time formats more gracefully. For example, if a sequence’s time format was set to feet+frames, the prior version would extract the time as “arker @ 2+19” rather than “2+19”.

    4062_premieremarkers.ahk.zip

    If you have Audition, be aware that there is an alternative to using this script if you just want to view, rather than export, the sequence markers: select a Premiere sequence > Edit > Edit in Adobe Audition > Sequence …> OK, then within Audition > Window > Markers. This may be the only alternative available to Apple users.

  • Arran Moffat

    October 24, 2012 at 11:20 pm

    Hi Ed,

    Do you have any ideas how I could get this to work with PP CS6? When I run it, PP just tabs through the sequences.

    Thanks,

    Arran

  • Ed Elliott

    October 25, 2012 at 2:22 pm

    Arran,

    As you have discovered the present script will not work with CS6. Adobe changed the keyboard shortcuts for Create Sequence Marker, Next Sequence Marker, and Previous Sequence Marker. Additionally, whereas the old NumPad * shortcut would either create a new sequence marker when none existed at the CTI or edit the existing marker at the CTI, the new shortcut (M) will create a new marker regardless of whether a marker already exists at CTI. So, at a minimum, to work with CS6 the script must be modified for the change in these keyboard shortcuts. And the modified version will probably require that the user manually create a keyboard shortcut for Edit Marker because there is no default shortcut. There may be other changes required.

    In case you are not aware: if you just need to view or edit (as opposed to exporting) a summary list of the sequence markers, CS6 now has a Markers panel (Window > Markers).

    Opening the CS6 project in an earlier version probably will not work. Thread https://forums.adobe.com/message/4470584?tstart=0 offers workarounds for opening CS6 projects in CS5 (opens directly with no special actions required) or CS5.5 (manually edit project file). I don’t have CS5. My CS4 test hung while opening the CS6 project and had to be manually terminated. And manually changing the Version in the .prproj file then opening in CS5.5 resulted in the modified .prproj file opening successfully BUT THE MARKERS WERE MISSING FROM THE SEQUENCES (Adobe probably changed the way markers are encoded between CS5.5 and CS6 — which probably means that opening is CS5 will not work either).

    If none of the suggested alternatives work for you, let me know and I’ll try to get the script working with CS6.

    Ed

  • Arran Moffat

    October 25, 2012 at 9:13 pm

    Hi Ed,

    Thanks for that. I’ll try it next week and will let you know how I get on.

    Arran

  • Ed Elliott

    October 26, 2012 at 3:23 pm

    I created a CS6 version:
    4850_premieremarkerscs6.ahk.zip

    Before running this version, you must create a keyboard shortcut for Edit Marker = Ctrl+Alt+Shift+F12. (I couldn’t identify an unused shortcut which tied in nicely with the M key (like the other marker-related shortcuts) — hence the obscure F12 combination.)

    If you encounter difficulties, you can email me your .prproj file (no media needed) if you wish and I will debug. eelliott AT tritel.net

  • Arran Moffat

    October 26, 2012 at 9:29 pm

    Amazing! Thanks so much.

    Arran

  • Evgeny Malcev

    November 18, 2012 at 1:34 pm

    I have written sxript which read your project file and creates text document with markers.
    ProjectFile = C:\fin33.prproj
    SequenceName = sequence 01
    MarkerListFile = E:\1.txt ; will be deleted and recreated after script starts

    SetBatchLines, -1
    k = 1
    n = 1

    FileRead, Contents, %ProjectFile%
    StringGetPos, out, Contents, <Name>%SequenceName%</Name>
    if out = -1
    {
    msgbox, Sequence with this name does not exist!
    ExitApp
    }

    Loop, read, %ProjectFile%
    {
    if n = 1
    {
    IfNotInString, A_LoopReadLine, <Sequence ObjectUID, continue
    n = 2
    }

    if n = 2
    {
    IfNotInString, A_LoopReadLine, <Second ObjectRef, continue
    Variable := trim(A_LoopReadLine)
    NewVar := RegExReplace(Variable, "\D")
    FrameRateObjectRef := "<VideoTrackGroup ObjectID=""" NewVar """"
    n = 3
    }

    if n = 3
    {
    IfNotInString, A_LoopReadLine, <Name>%SequenceName%</Name>
    {
    IfNotInString, A_LoopReadLine, </Sequence>, continue
    n = 1
    }
    Else
    {
    n = 1
    break
    }
    }
    }

    Loop, read, %ProjectFile%
    {
    if n = 1
    {
    IfNotInString, A_LoopReadLine, %FrameRateObjectRef%, continue
    n = 2
    }

    if n = 2
    {
    IfNotInString, A_LoopReadLine, <FrameRate>, continue
    FrameRate := trim(RegExReplace(A_LoopReadLine, "<FrameRate>(.+)</FrameRate>", "$1"))
    n = 1
    break
    }
    }

    If FrameRate = 10160640000 ; 25fps
    {
    delimeter= :
    i = 0
    fps = 25
    FramesInOneHour = 90000
    FramesInOneMinute = 1500
    }

    If FrameRate = 10594584000 ; 24fps
    {
    delimeter= :
    i = 0
    fps = 24
    FramesInOneHour = 86400
    FramesInOneMinute = 1440
    }

    If FrameRate = 5080320000 ; 50fps
    {
    delimeter= :
    i = 0
    fps = 50
    FramesInOneHour = 180000
    FramesInOneMinute = 3000
    }

    If FrameRate = 8475667200 ; 29.97fps
    {
    delimeter=;
    i = 2
    fps = 30
    FramesInOneHour = 108000
    FramesInOneMinute = 1800
    }

    If FrameRate = 4237833600 ; 59.94fps
    {
    delimeter=;
    i = 4
    fps = 60
    FramesInOneHour = 216000
    FramesInOneMinute = 3600
    }

    Loop, read, %ProjectFile%
    {
    if n = 1
    {
    IfNotInString, A_LoopReadLine, <Sequence ObjectUID, continue
    n = 2
    }

    if n = 2
    {
    IfNotInString, A_LoopReadLine, <Markers ObjectRef, continue
    Variable := trim(A_LoopReadLine)
    NewVar := RegExReplace(Variable, "\D")
    MarkersObjectRef := "<Markers ObjectID=""" NewVar """"
    n = 3
    }

    if n = 3
    {
    IfNotInString, A_LoopReadLine, <Name>%SequenceName%</Name>
    {
    IfNotInString, A_LoopReadLine, </Sequence>, continue
    n = 1
    }
    Else
    {
    n = 0
    break
    }
    }
    }

    Loop, read, %ProjectFile%
    {
    if n = 0
    {
    IfNotInString, A_LoopReadLine, %MarkersObjectRef%, continue
    n = 1
    }

    if n = 1
    {
    IfNotInString, A_LoopReadLine, "a45508e0-3ff7-4d04-90a7-2e0dfff4c910"
    {
    IfNotInString, A_LoopReadLine, </DVDMarkers>, continue
    break
    }
    Else
    {
    a1 := "Marker " k "`n"
    n = 2
    }
    }

    if n = 2
    {
    IfNotInString, A_LoopReadLine, <Comments>, continue
    Comments := trim(RegExReplace(A_LoopReadLine, "<Comments>(.+)</Comments>", "$1"))
    a2 := "Comment: " Comments "`n"
    If Comments = <Comments></Comments>
    a2 =
    n = 3
    }

    if n = 3
    {
    IfNotInString, A_LoopReadLine, <Duration>, continue
    Duration := trim(RegExReplace(A_LoopReadLine, "<Duration>(.+)</Duration>", "$1"))
    framecount := Floor(Duration / FrameRate)
    framecount := framecount + floor(framecount / FramesInOneMinute)*i - floor(framecount / FramesInOneMinute / 10)*i
    TC1 = % floor(framecount/FramesInOneHour)
    TC2 = % floor((framecount - TC1*FramesInOneHour) / FramesInOneMinute)
    TC3 = % floor((framecount - TC1*FramesInOneHour - TC2*FramesInOneMinute) /fps)
    TC4 = % floor(framecount - TC1*FramesInOneHour - TC2*FramesInOneMinute - TC3*fps )
    SetFormat, Float, 02.0
    Loop, 4
    TC%A_Index% += 0.0
    a3 := "Duration: " TC1 delimeter TC2 delimeter TC3 delimeter TC4 "`n"
    n = 4
    }

    if n = 4
    {
    IfNotInString, A_LoopReadLine, <Time>, continue
    Time := trim(RegExReplace(A_LoopReadLine, "<Time>(.+)</Time>", "$1"))
    framecount := Floor(Time / FrameRate)
    framecount := framecount + floor(framecount / FramesInOneMinute)*i - floor(framecount / FramesInOneMinute / 10)*i
    TC1 = % floor(framecount/FramesInOneHour)
    TC2 = % floor((framecount - TC1*FramesInOneHour) / FramesInOneMinute)
    TC3 = % floor((framecount - TC1*FramesInOneHour - TC2*FramesInOneMinute) /fps)
    TC4 = % floor(framecount - TC1*FramesInOneHour - TC2*FramesInOneMinute - TC3*fps )
    SetFormat, Float, 02.0
    Loop, 4
    TC%A_Index% += 0.0
    a4 := "Timecode: " TC1 delimeter TC2 delimeter TC3 delimeter TC4 "`n"
    n = 5
    }

    if n = 5
    {
    IfNotInString, A_LoopReadLine, <ML.Marker.TextName>
    {
    IfNotInString, A_LoopReadLine, <Name>, continue
    Number := trim(RegExReplace(A_LoopReadLine, "<Name>(.+)</Name>", "$1"))
    a6 := "Number: " Number "`n"
    If Number = <Name></Name>
    a6 =
    n = 1
    }
    Else
    {
    TextName := trim(RegExReplace(A_LoopReadLine, "<ML.Marker.TextName>(.+)</ML.Marker.TextName>", "$1"))
    a5 := "TextName: " TextName "`n"
    n = 6
    }
    }

    if n = 6
    {
    IfNotInString, A_LoopReadLine, <Name>, continue
    Number := trim(RegExReplace(A_LoopReadLine, "<Name>(.+)</Name>", "$1"))
    a6 := "Number: " Number "`n"
    If Number = <Name></Name>
    a6 =
    n = 1
    }
    k := k + 1
    MarkerList .= a1 a2 a3 a4 a5 a6 "`n"
    }
    FileDelete, %MarkerListFile%
    FileAppend, % MarkerList, %MarkerListFile%, UTF-8
    Msgbox, Done
    ExitApp

Page 3 of 5

We use anonymous cookies to give you the best experience we can.
Our Privacy policy | GDPR Policy