Benutzer-Werkzeuge

Webseiten-Werkzeuge


pr:mlib

Dies ist eine alte Version des Dokuments!


Medienbibliothek

(Original-Thread im DF)

Bilder: Bilderseite

To-Do Liste

Features

  • Portablel (ohne Installation; Daten an frei wählbarer Speicherstelle; Relative Pfadangaben(!))
  • Win32 / W2k+
  • Verwalten von Video UND Foto in einem Programm (idealerweise aber nicht zwingend auch andere Dateien, z.B. Textdateien oder so)
  • Tags (Bonus: Funktion um dann „Ähnliche Dateien“ zu finden)
  • Kategorien
  • Alben
  • Verständnis von Pfaden (und dann auch Browsen danach)
  • Umfangreiche Suche, im Idealfall so dass man jede beliebige Information filtern kann
  • Notizfunktion zu Alben, Dateisystemobjekten
  • Automatischer Import, Tagging (EXIF auslesen)
  • Thumbnails für Video selber auswählbar, also „nimm Frame 42 als TN“
  • Multi-User fähig: gleichzeitig von mehren Rechnern/Prozessen zugreifen

Systemanforderungen

Lebensdauer des Archivs: 10 aktiv, min. 20 Jahre passiv (=lesbar)

  • Datensicherheit
    • Standardisierte offene Dateiformate
      • XML/JSON
      • UTF-8
      • JPEG (Grafikstandard in PDF-A, daher garantiert)
      • PNG (ODF, ist das ein Archivstandard??)
    • Extensive Dokumentation UND/ODER Code-Distribution (Interpretierte Sprachen)
  • Ausführbarkeit
    • Cross-Platform
    • ggf emulierbare Umgebung
    • möglichst wenige proprietäre Abhängigkeiten
    • Win32/Wine
    • Python?
    • XULRunner mit Hacks damit er portable wird (JS und XUL sind standardisiert)
  • Self-Contained
    • nicht nur portabel, sondern sollte alles enthalten was man braucht

GUI

  • Bedienbares UI. Meine Erfahrung ist ja, dass die besten Programme immer das schlimmste UI haben…
  • Thumbnail-View von allem, also auch Suchergebnissen
  • Operationen auch auf mehreren Dateien gleichzeitig
    • Exif neu lesen
    • Thumbnails neu generieren
    • mehreren Dateien ein Tag geben

Views

  • Listentypen
    • Liste („besseres dir“)
    • Miniaturen
    • Miniaturen mit Details
    • Galerie (Miniaturen als Coverflow oben/links)
    • Einzelansicht (voriges/nächstes links/rechts klein)
  • Fenster
    • Suchergebnisse
    • Verzeichnis (Tree + Liste)
      • Verzeichnis durchsuchen/aktualisieren
        • Merge neuer/vorhandener Daten, basierend auf „file“-Tupel
  • Detailansicht
    • Tabs mit Daten, ähnlich ACDSee 5
    • Kann gedockt sein oder als Extrafenster

Tech Details/Implementationsideen

  • FlatDB Key-Value-Store, Dateien indiziert über (Name, Pfad, ÄnderungsDatum, ErstellDatum, Größe, InhaltsHash)
    • wäre auch wiedererkennbar, wenn extern verändert (closest match)
    • {"file":{"name": "abc.jpg","path":"foo\\bar\\baz","mdate":"1234567890","cdate":"1234567000","size":"555123","sha1":"abcdef12abcdef12abcdef12abcdef12"}}

Organisationsstruktur

  • Archivgruppe
    • Bibliothek (enthält auch Voreinstellungen) library.json
      • Datenbank (FlatDB-Ordner)
    • Bibliothek …

Klassen

  • Application
    • Interface zur Hauptanwendung (Logger etc)
  • MetadataExtractor
    • Bekommt Datei, Füllt SuperObject
    • Beispiele: ExifReader, Thumbnail, VideoThumbnail, Geotagger
  • MetadataViewer
    • Zeigt einen Tab in Detailansicht an
    • Beispiele: ExifViewer, VideoThumbnailSetter, Geotagger
  • Viewer
    • Bekommt Datei und ein Handle, Malt ein Bild, erstellt Video-Player
    • Beispiele: ImageViewer, VideoPlayer

Global immer nur ein Objekt, dessen Methoden aufgerufen werden (also SideEffect-frei sein müssen). Alle Klassen sind auch extern ladbar, aber schon an Delphi gebunden. Keine besondere CallingConvention also.

In Main: Initializatzion→ RegisterClass(TImplementor.Create)

Extern: DLL-Load→ DLL.Register(@RegisterFunction), DLL ruft RegisterFunction mit Instanzen von dem was sie hat auf. (BPL, nur besser)

RegisterClass prüft, ob IMLibModule implementiert wird; Ruft IMLibModule.Init auf und übergibt IMLibApplication.

pr/mlib.1305236709.txt.gz · Zuletzt geändert: 2011/05/12 23:45 von martok