• [^] # Re: Sur Odyssey ça n'est pas possible

    Posté par . En réponse au message couple liseuse Bookeen Saga / Calibre : gestion des collections. Évalué à 3.

    En effet, ça m'a pas l'air fameux. J'ai ouvert une demande d'assistance hier, pas de nouvelles, même pas une prise en compte du ticket.

    C'est un peu dommage car, au final, je ne pense pas que cela soit très compliqué à faire...
    J'ai remarqué un fichier system/library qui est en fait une base de données SQLite:

    binarym@avalon:/media/binarym/Saga/system$ file library
    library: SQLite 3.x database, last written using SQLite version 3008003
    binarym@avalon:/media/binarym/Saga/system$ sqlite3 library
    SQLite version 3.27.2 2019年02月25日 16:06:06
    Enter ".help" for usage hints.
    sqlite> .schema
    CREATE TABLE T_VERSION (
     f_numversion INTEGER,
     f_desc TEXT,
     f_versiondate TEXT,
     f_checkscript TEXT
    );
    CREATE TABLE T_LASTCHANGE (
     f_lastchange INTEGER
    );
    CREATE TABLE T_SERVICE (
     f_id_service INTEGER PRIMARY KEY AUTOINCREMENT,
     f_name TEXT,
     f_url TEXT,
     f_is_cloud INTEGER,
     f_lastestorder INTEGER DEFAULT 0
    , f_Version INTEGER NOT NULL DEFAULT(0));
    CREATE TABLE sqlite_sequence(name,seq);
    CREATE TABLE T_DIRECTORY (
     f_id_dir INTEGER PRIMARY KEY AUTOINCREMENT,
     f_path TEXT NOT NULL,
     f_isclouddir INTEGER DEFAULT 0
     );
    CREATE TABLE T_ITEM (
     f_id_item INTEGER PRIMARY KEY AUTOINCREMENT,
     f_etag TEXT,
     f_item_fileformat INTEGER,
     f_item_filetype INTEGER,
     f_item_category_flag INTEGER,
     f_service_id INTEGER,
     f_lang INTEGER DEFAULT -1,
     f_pages_number INTEGER,
     f_current_page INTEGER,--page courante
     f_last_read INTEGER,--derniere lecture
     f_publication_date TEXT,
     f_publisher TEXT,
     f_title TEXT,
     f_cover_uri TEXT,
     f_description TEXT,
     f_id_dir INTEGER,
     f_internal_uri TEXT,
     f_external_uri TEXT,
     f_documenttime INTEGER,--19 janvier 2038,
     f_filesize INTEGER,
     f_drminfo TEXT,
     f_expiration_date INTEGER,
     f_ade_page_index TEXT,
     f_author_id INTEGER,
     f_toupdate INTEGER, -- 1 le fichier est OK 0 to update
     f_isvalid INTEGER default 1, f_cf1 TEXT, f_cf2 TEXT, f_coverisvalid INTEGER default 1, f_islastpage INTEGER default 0, f_preorder_date INTEGER, -- le fichier est corrompu mettre zro.
     FOREIGN KEY(f_id_dir) REFERENCES T_DIRECTORY(f_id_dir) ON DELETE CASCADE
    );
    CREATE TABLE T_CLOUD_ITEM (
     f_id_identifier INTEGER PRIMARY KEY AUTOINCREMENT,
     f_item_id INTEGER,
     f_key_value TEXT,
     f_key_value2 TEXT,
     f_is_cloud_identifier INTEGER , f_lastpagesync INTEGER, f_sam_reliable_link TEXT, f_sample_uri TEXT,
     FOREIGN KEY(f_item_id) REFERENCES T_ITEM(f_id_item) ON DELETE CASCADE
    );
    CREATE TABLE T_WAIT_SYNCPOSITION (
     f_key_value TEXT,
     f_position_to_sync TEXT
    , f_flags INTEGER, f_createdat INTEGER, f_page INTEGER);
    CREATE TABLE T_AUTHOR (
     f_id_author INTEGER PRIMARY KEY AUTOINCREMENT,
     f_name TEXT,
     f_country TEXT
    );
    CREATE TABLE T_SHELF (
     f_id_shelf INTEGER PRIMARY KEY AUTOINCREMENT,
     f_name TEXT,
     f_lastupdate INTEGER,
     f_markasdelete INTEGER default 0,
     f_readonly INTEGER default 0
    , f_system INTEGER NOT NULL DEFAULT(0));
    CREATE TABLE T_SHELF_LINK (
     f_item_id INTEGER,
     f_shelf_id INTEGER,
     f_db_uuid TEXT,
     FOREIGN KEY(f_shelf_id) REFERENCES T_SHELF(f_id_shelf) ON DELETE CASCADE
    );
    CREATE TABLE T_UUIDDB (
     f_db_uuid TEXT
    );
    CREATE TABLE T_SORTLIBRARY (
     f_idView INTEGER,
     f_Sort INTEGER
    );
    CREATE TABLE T_AVERAGEREADING(
     f_readingBySecond INTEGER default 500,
     f_id_item INTEGER,
     f_offsetPageCount DOUBLE,
     f_wordByOffsetPage INTEGER,
     f_offsetPageTime DOUBLE,
     f_secondByOffsetPage INTEGER
    );
    CREATE TABLE T_WORDAVERAGE(
     f_id INTEGER PRIMARY KEY AUTOINCREMENT,
     f_id_item INTEGER,
     f_PageOffset DOUBLE,
     f_WordCount INTEGER,
     f_Bookmark TEXT ,
     FOREIGN KEY(f_id_item) REFERENCES T_ITEM(f_id_item) ON DELETE CASCADE
    );
    CREATE TABLE T_TIMESTAMPAVERAGE(
     f_id INTEGER PRIMARY KEY AUTOINCREMENT,
     f_id_item INTEGER,
     f_PageOffset DOUBLE,
     f_timestamp INTEGER,
     f_timegroup INTEGER ,
     f_Bookmark TEXT ,
     FOREIGN KEY(f_id_item) REFERENCES T_ITEM(f_id_item) ON DELETE CASCADE
    );
    CREATE INDEX f_path_idx ON T_DIRECTORY(f_path COLLATE binary);
    CREATE INDEX f_internal_idx ON T_ITEM(f_internal_uri COLLATE binary);
    CREATE INDEX f_item_filetype_idx ON T_ITEM(f_item_filetype);
    CREATE INDEX f_item_fileformat_idx ON T_ITEM(f_item_fileformat);
    CREATE INDEX f_id_dir_idx ON T_ITEM(f_id_dir);
    CREATE INDEX f_value_idx ON T_CLOUD_ITEM(f_key_value COLLATE binary);
    CREATE INDEX f_item_id_idx ON T_CLOUD_ITEM(f_item_id);
    CREATE INDEX f_name_idx ON T_AUTHOR(f_name COLLATE nocase);
    CREATE INDEX f_valuepos_idx ON T_WAIT_SYNCPOSITION(f_key_value COLLATE binary);
    CREATE INDEX f_shelf_id_idx ON T_SHELF_LINK(f_shelf_id);
    CREATE TRIGGER "onDeleteDirectory" BEFORE DELETE ON "T_DIRECTORY" BEGIN UPDATE T_SERVICE set f_lastestorder = 0 WHERE old.f_isclouddir = 1;END;
    sqlite>
    

    Il suffirait qu'ils donnent les explications par exemple sur les uuid_db associés à pas mal d'enregistrements ainsi que la logique générale de l'ensemble pour que l'on puisse faire nous même 2/3 scripts pour faire cette classifcation de façon plus confortable ...