Announcement

Collapse
No announcement yet.

AE JSx - unterverzeichnisse durchsuchen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • AE JSx - unterverzeichnisse durchsuchen

    hey ho,
    ich versuch in adobe after effects cs4 mit javascript extend footage zu importieren. das reinladen eines einzelnen bildes geht. eine bildersequenz schon mal nicht. wie schaffe ich das?


    da das ein script zum automatischen compositing wird, gibt es eine anzahl X von bildsequenzen, die alle wie auf dem folgenden bild benannt und strukturiert sind:
    win_dialog
    also könnte man den link des eigentlichen AE projekts nehmen und durch die unterverzeichnisse gucken ob da eine bildsequenze drin liegt. wenn ja, importieren. aber wie? also das durchgucken vorallem? jemand eine idee?
    die sache ist auch die, dass die ordner nicht immer ##_layername heißen. sozusagen müsste das script nur nach den ersten zwei/drei zeichen gucken.


    in AE selbst sollen die ebenen dann wie folgt angeordnet werden:
    ae_project
    also der ursprüngliche ordner 01 liegt als footage ganz unten, wird also zuerst dem projekt hinzugefügt.


    ich hoffe auf antworten. mögen sie auch nur noch so kleine ansätze enthalten. oder links...

    mfg
    dor elch

  • #2
    Per Javascript besteht kein Zugriff auf das Dateisystem
    Christian

    Comment


    • #3
      es handelt sich hier ja nicht direkt um JS, sondern um extendscript, das es erlaubt in diversen adobe-produkten zu lesen und zu schreiben... vielleicht fällt euch mit dem folgenden noch etwas ein:

      meine bisherigen erfolge... (cs2+ / getestet mit adobe AE cs4)

      extendscript (jsx)
      Code:
      function getFolder()
      {
      	return Folder.selectDialog('please select the folder to be imported:', Folder('~'));
      }
      
      
      function importFolderContent(selectedFolder)
      {
      	// if a folder was selected continue with action, otherwise quit
      	if (selectedFolder)
      	{
      		// alert (selectedFolder);
      		// create document list from files in selected folder
      		var contentList = selectedFolder.getFiles();
      		for (var i = 0; i < contentList.length; i++)
      		{
      			// open each document in file list
      			if (contentList[i] instanceof File)
      			{
      				var io = new ImportOptions(File(contentList[i]));
      				if (io.canImportAs(ImportAsType.FOOTAGE))
      				{
      					io.importAS = ImportAsType.FOOTAGE;
      					app.project.importFile(io);
      				}
      			}
      		}
      	} else {
      		// alert ("The action has been cancelled.");
      	}
      }
      
      importFolderContent(getFolder());

      damit ist es zumindest möglich einen ordner anzugeben und dessen inhalte als einzelne bilder zu importieren. leider noch keine unterverzeichnisse oder bildsequenzen. wenn mir jemand weiterhelfen kann... dann bitte. danke!

      mfg
      dor elch

      Comment


      • #4
        Üblicherweise ist das Vorgehen in alle Sprachen mehr oder weniger gleich. Man schreibt eine rekusive Methode/Funktion, die das erledigt. Die Methode bekommt das Startverzeichnis als Parameter mit, dann

        durchsucht die Methode das Startverzeichnis nach Einträgen
        Ist der Eintrag eine Datei dann macht man was damit (bsp. in Liste aufnehmen)
        Ist der Eintrag ein Directory wird die Methode selbst mit diesem Directory als Parameter aufgerufen.

        Insgesamt stellt sich die Frage, warum das unter Javascript steht, wenn es damit überhaupt nichts zu tun hat....
        Christian

        Comment


        • #5
          na das hilft mir doch schon ein stück weit weiter. hast du auch noch einen link oder andereweitige referenzen wo ich mir sowas mal angucken könnt?

          ansonsten steht das unter javascript weil ich hier kein forum gefunden habt welches JSx oder ähnlich heißt. welchen ort würdest du mir den empfehlen?

          danke für die antwort...

          Comment


          • #6
            Ich habe Beispiele in Java und C++

            ansonsten steht das unter javascript weil ich hier kein forum gefunden habt welches JSx oder ähnlich heißt. welchen ort würdest du mir den empfehlen?
            Nun dann bleibt immer noch der Ordner Web Development....
            Christian

            Comment


            • #7
              nur um es euch wissen zu lassen wie ich es gelöst bekommen hab:

              Code:
              function getFolder()
              {
              	var topFolder = new Folder ('/c/project/folder');
              	return topFolder;
              	// oder wahlweise mit dialog:
              	// return Folder.selectDialog('please select the folder to be imported:', Folder('~'));
              }
              
              function scanSubFolders(tFolder)
              {
                 var sFolders = new Array();
                 var allFiles = new Array();
                 sFolders[0] = tFolder;
                 for (var j = 0; j < sFolders.length; j++) // loop through folders
                 {           
                      var procFiles = sFolders[j].getFiles();
                      for (var i=0;i<procFiles.length;i++) // loop through this folder contents
                      {
                       if (procFiles[i] instanceof File) allFiles.push(procFiles[i]);
                       else if (procFiles[i] instanceof Folder) sFolders.push(procFiles[i]);
                    }
                 }
                 return [allFiles,sFolders];
              }
              
              function importFolderContent()
              {
              	var aFileAndFolder = scanSubFolders(getFolder());
              	// if a folder was selected continue with action, otherwise quit
              	if (aFileAndFolder)
              	{
              		// alert (selectedFolder);
              		// create document list from files in selected folder
              		var contentList = aFileAndFolder[0];
              		for (var i = 0; i < contentList.length; i++)
              		{
              			// open each document in file list
              			if (contentList[i] instanceof File)
              			{
              				var io = new ImportOptions(File(contentList[i]));
              				if (io.canImportAs(ImportAsType.FOOTAGE))
              				{
              					io.importAS = ImportAsType.FOOTAGE;
              					app.project.importFile(io);
              				}
              			}
              		}
              	} else {
              		// alert ("The action has been cancelled.");
              	}
              }
              
              importFolderContent();
              
              alert(fileandfolderAr[0].length + ' files and ' + fileandfolderAr[1].length + ' folders');

              ansonsten, wie ich soeben festgestellt hab, bringt mindestens AE cs4 standartmäßig selbst ein script mit, welches man unter file -> scripts -> smart import.jsx bzw. system:\Program Files (x86)\Adobe\Adobe After Effects CS4\Support Files\Scripts findet, dass die unterordner durchsucht und alle inhalte dieser importiert.
              tja, positiv sehn, meine entwicklungsarbeit kann ich zwar jetzt wegschmeißen, aber es hat mir erfahrung eingebracht...


              und was den ort/ordner für diesen post angeht, nach web development passt es ja eigentlich gar nicht. es hat, ggf. bis auf die sprache an sich, nichts mit web zutun...

              mfg
              dor elch

              Comment


              • #8
                Dann sollte es gelöscht werden
                Christian

                Comment


                • #9
                  ich hab mir grad selbst ein ei gelegt wa? wir sind hier ja bei web development... blöd. na ja, was solls... ggf kann es ja ein moderator an einen ort verschieben, wo es besser passt. oder halt löschen. ich hab meine antworten...

                  Comment


                  • #10
                    ich hab meine antworten...
                    Na wenn das die einzigen Fragen waren und sein werden...
                    Christian

                    Comment


                    • #11
                      Naja, das Problem tritt häufiger in Foren auf.

                      Wie norweschendir schon sagte, das ist Javascript, das in Adobe Produkten läuft. Es hat also nichts mit Web Development zu tun, ist aber Javascript. Es gibt also im Prinzip kein Platz hier (die Struktur ist auch z.T. nicht optimal, das Perl unter Linux zu finden ist, muss man auch erst drauf kommen)

                      Löschen würd' ich das hier auf keinen Fall, denn es wurde ja eine Lösung gefunden.

                      Comment


                      • #12
                        Da es offenbar nicht dieser Spezifikation

                        http://www.ietf.org/rfc/rfc4329.txt

                        entspricht, würde ich es nicht als Javascript bezeichnen......

                        Es ist halt irgendein Adobemurks....

                        Und wenn es halt keinen Platz / Ort für mein Thema gibt...tja, dann

                        - bin ich vielleicht im falschen Forum?
                        - kann ich anfragen, ob ein entsprechender Thread geöffnet wird?
                        Christian

                        Comment

                        Working...
                        X