Well all of those things are "there" technically but not really as a tool to learn from. There's a searchForBinWithName function - which does a deep-search, because really? That's the first method you bring? And a name-based search? What if I have multiple bins with the same name - something that's very common when you create a scene-shot-take hierarchy? There's also the searchBinForProjItemByName (what??) which is recursive for some reason and I have no idea what it does but it seems so convoluted and unreadable I'm at awe. I can see a function called createBin being used at some points but where's a single comment explaining that function? Maybe it can take more arguments - like color maybe? Can you create multiple bins at once? Does it return anything (maybe itself or the name?) - can you chain functionalities? Also - when you want to create it within another bin, do you have to go from rootItem or is there any traversing system in place? Who knows. I'd test it but there's no REPL system that'll make that process easier to do, right? I have to write code and run it through the IDE, then do it again and again to test every single silly thing because there's no documentation to explain it, nor is there a readable sample that explains different usages and options. The importFiles function is also badly written, relying on user input (why would I want that when creating automation? I am trying to actively avoid that) which *doesn't work well* as is (it sets up the filetype in the dialog badly so it doesn't recognize – wait for it – audio or video files. yep). There's also an ingestFiles function - why? I don't know. There's no GUI functionality for "ingesting", that's not part of the video editor's jargon. There's this cryptic comment halfway in which says "// We have an array of File objects; importFiles() takes an array of paths." – from which you'd think that – ok, so imortFiles takes paths and ingestFiles takes objects – only that isn't true! Because a few lines below that it actually opens a file dialog and extracts the files from a path just like importFiles. That is bonkers absolutely freaking ridiculous. The ingest function also has a whole bunch of encoder-related-event binding at the top - why? what does it do? And they bind events to functions named the same way with the word proxy, which makes it so weird – not only because that defies DRY, but because that naming suggest those are general tools you call upon, but they're only used in this specific function. That is so odd!! - why? I don't know! There's no documentation available. Maybe this makes sure to conform the imported files – hence ingest, but, uh, that *always supposed to happen* when you import files, that's something you expect anyway, so why have this other function called ingest? I can't understand any of it. This isn't me having trouble understanding complicated features, these are the very basic elements of your entire API. And they're completely mumbled in a confused mess of badly named, badly written functions with minimal comments or details available. Look, If you don't have documentation, what you need to do is provide samples that are crystal clear, and do exactly one thing. saveProject function is a good example, so is exportCurrentFrameAsPNG and insertOrAppend. Just like the rest of that code they lack comments and are badly written, but at least they're readable, short, and have a correlating action in the GUI so you can sorta figure out how to use them. On the other hand - look at onPlayWithKeyframes - what a mess. So many logical conditions one after the other. I have taught several courses of basic python and JS programming to groups of people with various technical backgrounds and even the ones with literally zero knowledge stop writing stuff that way after about a week. And the name of the function is so meaningless and weird. And inside it you actually have some constants that you wrote as is that is just oh my god really? COME ON. And this is all at odds with what I come to expect from Adobe in general. As a video editor I find the UI and software itself to be very thought-through and easy to work with, as well as your customer support – when I had a problem I contacted someone through chat and it was quickly obvious he had actual technical knowledge and helped me through some playback issues (which is something to commemorate, really, when compared to customer support of so many other companies). I'm astounded, really.
... View more