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
Nächste Überarbeitung Beide Seiten, nächste Überarbeitung
pr:mlib [2010/11/02 17:34]
martok dbase propsal
pr:mlib [2011/05/12 23:45]
martok
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 (Achtung, siehe 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} +
-Stringsimmer UTF8 schreiben und beim lesen zurückkonvertierenum Codepage-Probleme zu umgehen+
  
-Tabelle //Files//: +==== Organisationsstruktur ==== 
-  * FILEID +  * Archivgruppe 
-  Dateiname +    Bibliothek (enthält auch Voreinstellungen) ​ [[.:​mlib:​library.json]] 
-  ​* ​Pfad +      ​Datenbank (FlatDB-Ordner) 
-  Größe +        Dokumente: [[.:​mlib:​Metadaten]] 
-  Datum+    Bibliothek ...
  
-Tabelle ​//Attribs//: +==== Klassen ==== 
-  * FILEID +  * Application 
-  attrName +    * Interface zur Hauptanwendung (Logger etc) 
-  * attrValue+  * 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.
  
-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 IMLibModule implementiert wird; Ruft IMLibModule.Init auf und übergibt IMLibApplication.
pr/mlib.txt · Zuletzt geändert: 2011/10/29 20:16 von martok