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
pr:mlib [2010/11/02 17:34]
martok dbase propsal
pr:mlib [2011/10/29 20:16]
martok [Medienbibliothek]
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]])
 +
 +[[pr:​mlib:​Bilder|Bilderseite]]
 +
 +[[pr:​mlib:​HowTo|Wie mache ich... / Dokumentation]]
 +
 +[[pr:​mlib:​Todo|To-Do Liste]]
  
 ===== Features ===== ===== Features =====
Zeile 42: Zeile 48:
     * 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