Benutzer-Werkzeuge

Webseiten-Werkzeuge


pr:mlib

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Letzte Überarbeitung Beide Seiten, nächste Überarbeitung
pr:mlib [2010/11/02 17:34]
martok dbase propsal
pr:mlib [2011/08/19 20:56]
martok [Klassen] aktualisiert
Zeile 1: Zeile 1:
-====== Medienbibliothek/allgemeine Planung ​======+====== Medienbibliothek ======
 (Original-Thread [[http://​branch.delphi-forum.de/​topic_MedienIndizierungsSoftware_101096.html|im DF]]) (Original-Thread [[http://​branch.delphi-forum.de/​topic_MedienIndizierungsSoftware_101096.html|im DF]])
 +
 +Bilder: [[pr:​mlib:​Bilder|Bilderseite]]
 +
 +[[pr:​mlib:​Todo|To-Do Liste]]
  
 ===== Features ===== ===== Features =====
Zeile 42: Zeile 46:
     * Thumbnails neu generieren     * Thumbnails neu generieren
     * mehreren Dateien ein Tag geben     * 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 ===== ===== Tech Details/​Implementationsideen =====
-  * Flatfiles, 1 pro Datei (Shareaza) +  * FlatDB ​Key-Value-Store,​ Dateien ​indiziert ​über (Name, Pfad, ÄnderungsDatum,​ ErstellDatum,​ Größe, InhaltsHash)
-  * Key-Value-Store,​ Dateien ​indizier ​über (Name, Pfad, ÄnderungsDatum,​ ErstellDatum,​ Größe, InhaltsHash)+
     * wäre auch wiedererkennbar,​ wenn extern verändert (closest match)     * wäre auch wiedererkennbar,​ wenn extern verändert (closest match)
-  ​Datenbankdatei (Achtungsiehe Datensicherheit!) +    ​<​code>​{"​file":​{"​name":​ "​abc.jpg"​,"​path":"​foo\\bar\\baz","​mdate":"​1234567890","​cdate":"​1234567000","​size":"​555123","​sha1":"​abcdef12abcdef12abcdef12abcdef12"​}}</​code>​ 
-==== dBase via Halcyon ​==== + 
-FILEID = [0-9a-z]{8} +==== Organisationsstruktur ​==== 
-Stringsimmer UTF8 schreiben und beim lesen zurückkonvertierenum Codepage-Probleme zu umgehen+  * Archivgruppe 
 +    * Bibliothek (enthält auch Voreinstellungen)  ​[[.:​mlib:​library.json]] 
 +      * Datenbank (FlatDB-Ordner) 
 +        * Dokumente: [[.:​mlib:​Metadaten]
 +    * Bibliothek ... 
 + 
 +==== Klassen ==== 
 +  * Application 
 +    * Interface zur Hauptanwendung (Logger etc) 
 +  * MetadataExtractor 
 +    * Bekommt Datei, Füllt SuperObject 
 +    * //​Beispiele//​ExifReaderThumbnail, VideoThumbnail,​ Geotagger 
 +  * MetadataViewer 
 +    * Zeigt einen Tab in Detailansicht an 
 +    * //​Beispiele//:​ ExifViewer, VideoThumbnailSetter,​ Geotagger 
 +  * Viewer 
 +    * Bekommt Datei, erzeugt daraus einen Renderer passend zum Datentyp 
 +    * RendererStill 
 +      * Stellt Bildausschnitte auf einem Canvas dar (ImageViewer) 
 +    * RendererOther 
 +      * bekommt ein WindowHandle,​ kann darauf passende Controls erstellen (VideoPlayer)
  
-Tabelle //Files//: +Global ist ein Plugin immer nur ein Objekt, dessen Methoden aufgerufen werden (also SideEffect-frei sein müssen). Es können aber beliebig viele Schnittstellen implementiert werden (PflichtIMediaLibraryModule)
-  * FILEID +
-  * Dateiname +
-  * Pfad +
-  * Größe +
-  * Datum+
  
-Tabelle //​Attribs//:​ +Alle Klassen sind auch extern ladbar, aber schon an Delphi gebunden. Keine besondere CallingConvention also.
-  * FILEID +
-  * attrName +
-  * attrValue+
  
-Tabelle //​ExtAttribs//​: +In MainInitializatzion->​ RegisterClass(TImplementor.Create)
-  * FILEID +
-  * attrName +
-  * BLOB+
  
-Wie speichert man ein... +Extern: DLL-Load-> DLL.Register(@RegisterFunction), DLL ruft RegisterFunction mit Instanzen von dem was sie hat auf. (BPLnur besser)
-  * Tag? \\ Tabelle Attribs, attrName="​tag",​ attrValue=<​tagname>​ \\ ggf mehrere Zeilen (einfach nur Append) +
-  * Exif-Datum? \\ Tabelle Attribs, attrName="​exifdate",​ attrValue=<​unixdate\\ eine Zeile (Locate+Edit || Append) +
-  * Thumbnail? \\ Tabelle ExtAttribsattrName="​thumbnail",​ attrValue=kleines JPEG (BLOBS haben kein Charsetalso problemlos!)+
  
 +RegisterClass prüft, ob IMediaLibraryModule implementiert wird; Ruft IMediaLibraryModule.Init auf und übergibt IMediaLibraryApplication.
pr/mlib.txt · Zuletzt geändert: 2011/10/29 20:16 von martok