Questions & Answers

SOLVED
Stephan1
Returning Observer

Medienverwaltung nach Dateiendungen durchsuchen

Jump to solution

Gibt es eine Mรถglichkeit die Medienverwaltung nach Dateiendungen (z. B. PDF, ZIP, WMV, AVI, SWF, ...) zu durchsuchen. Ich benรถtige eine รœbersicht von Dateien sortiert nach ihrem Suffix und in einem zweiten Schritt nach ihrer DateigrรถรŸe. Sollte es das nicht geben, kennt jemand ein Skript, das die Suche รผbernimmt?

0 Kudos
1 Solution

Accepted Solutions

Das war der entscheidende Hinweis Smiley Happy. Somit ergibt sich fรผr das Skript:

View solution in original post

0 Kudos
7 Replies
Lopes
I'm new here

Hallo Stephan,

die normale Suchfunktion im SiteArchitect von FirstSpirit bietet diese Funktionalitรคt bereits. Es gibt die Mรถglichkeit in den Sucheinstellungen unter "Einschrรคnkung der Treffer (Facetten)" auf der Schaltflรคche "Weitere Einschrรคnkungen hinzufรผgen" spezifische Filter beispielsweise fรผr Dateityp und DateigrรถรŸe zu setzen, allerdings wird hier ein Suchbegriff vorausgesetzt. Sobald der entsprechende Filter gesetzt ist, kann auch die Sortierung auf die entsprechende Eigenschaft eingestellt werden. Fรผr den ContentCreator gibt es derzeit keine รคhnliche Alternative.

Viele GrรผรŸe

Rafael

0 Kudos
Stephan1
Returning Observer

Hallo Rafael,

weil ich die Sucheinstellungen nicht finden kann, gehe ich davon aus, dass Du die Sucheinstellungen fรผr FS 5 meinst. Ich verwende FS 4.2. Gibt es dort eine Mรถglichkeit fรผr die spezielle Suche?

Gruss

Stephan

0 Kudos
Lopes
I'm new here

Hallo Stephan,

etwas Vergleichbares gibt es in 4.2 meines Wissens nicht. Ich habe hier ein Skript geschrieben, welches alle Objekte in der Medienverwaltung mit der entsprechenden Extension und DateigrรถรŸe in eine CSV Excel-Datei exportiert. Das wรผrde es mรถglich machen die Liste nach den gewollten Parametern zu sortieren. Die Sortierung selbst in einem Skript umzusetzen wรคre deutlich aufwendiger. Ich hoffe, dass dieser Ansatz hilft.

//!Beanshell

//Imports

import de.espirit.firstspirit.agency.*;

import de.espirit.firstspirit.access.store.Store;

import de.espirit.firstspirit.access.store.mediastore.*;

//Test option pane

showInfo(String message) {

          JOptionPane.showMessageDialog(null, message);

}

//Get mediaStore from storeAgent

storeAgent = context.requireSpecialist(StoreAgent.TYPE);

mediaStore = storeAgent.getStore(Store.Type.MEDIASTORE);

//Get default picture resolution

originalResolution = context.getProject().getOriginalResolution();

//Get project master language

masterLanguage = context.getProject().getMasterLanguage();

//Get all media files from mediaStore

mediaElements = mediaStore.getChildren(Media.class,true).toList();

//Get a fileWriter to export media details (Path needs to be set)

FileWriter documentStream = new FileWriter("D:\\Test\\mediaDetails.csv", false);

BufferedWriter out = new BufferedWriter(documentStream);

//iterate over mediaFiles

for(mediaElement:mediaElements) {

          //get media Filename

          fileName = mediaElement.getFilename();

          //          If the media element is a file, get the file and its extension + size

          if(mediaElement.getType() == Media.FILE) {

                    fileExtension = mediaElement.getFile(masterLanguage).getExtension();

                    fileSize = mediaElement.getFile(masterLanguage).getSize();

          //          Else the media element is a picture. Get its extension and size

          } else {

                    fileExtension = mediaElement.getPicture(masterLanguage).getPictureMetaData(originalResolution).getExtension();

                    fileSize = mediaElement.getPicture(masterLanguage).getPictureMetaData(originalResolution).getSize();

          }

          //Write details to csv file

          out.write(fileName+ ";" +fileExtension+ ";" +fileSize+"\n");

}

//Close file writer

out.close();

//Output message once export is done

showInfo("Media Elements exported!");

Viele GrรผรŸe

Rafael

0 Kudos
mbergmann
Crownpeak employee

Bitte in der Zeile

mediaElements = mediaStore.getChildren(Media.class,true).toList();

kein .toList() benutzen! Hierdurch werden alle Mediastore-Elemente in eine neue Liste geladen und dort gehalten.

Es ist vรถllig ausreichend,


mediaElements = mediaStore.getChildren(Media.class,true);

zu verwenden. Hierdurch wird immer nur das aktuell benรถtigte Element รผber den Iterator geladen und bereits benutzte kรถnnen durch die GC freigegeben werden.

Hinweis:

<T extends StoreElement> Listable<T> StoreElement.getChildren(Class<T>, boolean)

und

Listable<T> extends Iterable<T>

Viele GrรผรŸe

Michael

0 Kudos

Ohne .toLlist() wird

de.espirit.firstspirit.access.script.ExecutionException: Can't iterate over type: class de.espirit.firstspirit.store.access.AbstractStoreElement$StoreElementListable

ausgegeben. Mit toList() erhalte ich die gewรผnschte Liste. Oder muss zusรคtzlich noch etwas verรคndert werden?

0 Kudos

Das kรถnnte eine Einschrรคnkung der Beanshell-Engine in 4.2 sein. Dann die Schleife "for(mediaElement:mediaElements)" durch eine while-Schleife mit dem Iterator ersetzen.

Peter

Das war der entscheidende Hinweis Smiley Happy. Somit ergibt sich fรผr das Skript:

0 Kudos

Type a product name