Zum Hauptinhalt gehen

Medienverwaltung nach Dateiendungen durchsuchen

Kommentare

7 Kommentare

  • Zendesk API User
    Author: Lopes - 3/6/2014 13:08

    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
  • Zendesk API User
    Author: Stephan1 - 3/7/2014 6:50

    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
  • Zendesk API User
    Author: Lopes - 3/7/2014 9:20

    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
  • Zendesk API User
    Author: mbergmann - 3/8/2014 19:43

    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
  • Zendesk API User
    Author: Stephan1 - 3/10/2014 10:16

    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
  • Zendesk API User
    Author: Peter_Jodeleit - 3/10/2014 11:53

    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.

    0
  • Zendesk API User
    Author: Stephan1 - 3/10/2014 12:47

    Das war der entscheidende Hinweis :smileyhappy:. Somit ergibt sich für das Skript:

    0

Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.