Emulecollection File Structure ============================== Here below you can find some technical information about emulecollection file structure. From: http://code.google.com/p/amule-emc/wiki/emulecollection Text Files ---------- Lines contain either an ed2k link or a comment starting with #. Binary Files ------------ uint32_t emulecollection version values: COLLECTION_FILE_VERSION1_INITIAL 0x01 COLLECTION_FILE_VERSION2_LARGEFILES 0x02 version 2 files support files bigger than 4GB (uint64_t file sizes) uint32_t header tag count header tags: TAGTYPE_STRING 0x02 uint16_t 0x0001 FT_FILENAME 0x01 uint16_t string length std::string string value TAGTYPE_STRING 0x02 uint16_t 0x0001 FT_COLLECTIONAUTHOR 0x31 uint16_t string length std::string string value TAGTYPE_BLOB 0x07 uint16_t 0x0001 FT_COLLECTIONAUTHORKEY 0x32 uint32_t blob size (notype) blob data uint32_t collection file count uint32_t file tag count at this point the TAGTYPE 0x01 will appear as 0x81 (uType | 0x80) -> see eMule packets.cpp FT_FILERATING and FT_FILECOMMENT are optional tags TAGTYPE_HASH 0x01 FT_FILEHASH 0x28 (notype)[16] hash data TAGTYPE_UINT32 0x03 FT_FILESIZE 0x02 uint32_t file size TAGTYPE_UINT16 0x08 FT_FILESIZE 0x02 uint16_t file size TAGTYPE_UINT8 0x09 FT_FILESIZE 0x02 uint8_t file size TAGTYPE_UINT64 0x0B FT_FILESIZE 0x02 uint64_t file size TAGTYPE_STR1 to 16 0x11 to 0x20 FT_FILENAME 0x01 std::string file name string length is TAGTYPE_STRx - 0x11 + 0x01 [1 to 16] TAGTYPE_STRING 0x02 FT_FILENAME 0x01 uint16_t string length std::string string value TAGTYPE_STRING 0x02 FT_FILECOMMENT 0xF6 uint16_t string length std::string string value TAGTYPE_UINT8 0x09 FT_FILERATING 0xF7 uint8_t file rating (notype) signature (only for signed files)