1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
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)
|