Difference between revisions of "Emulecollection"

From AMule Project FAQ
Jump to: navigation, search
m
(corrected binary file structure)
Line 19: Line 19:
 
   uint32_t header tag count
 
   uint32_t header tag count
 
    
 
    
  header tags:
+
header tags:
  FT_FILENAME 0x01
+
  TAGTYPE_STRING 0x02
+
TAGTYPE_STRING 0x02
  uint16_t string length
+
uint16_t 0x0001
  std::string string value
+
FT_FILENAME 0x01
  FT_COLLECTIONAUTHOR 0x31
+
uint16_t string length
  TAGTYPE_STRING 0x02
+
std::string string value
  uint16_t string length
+
TAGTYPE_STRING 0x02
  std::string string value
+
uint16_t 0x0001
  FT_COLLECTIONAUTHORKEY 0x32
+
FT_COLLECTIONAUTHOR 0x31
  TAGTYPE_BLOB 0x07
+
uint16_t string length
  uint32_t blob size
+
std::string string value
  (notype) blob data
+
TAGTYPE_BLOB 0x07
 +
FT_COLLECTIONAUTHORKEY 0x32
 +
uint32_t blob size
 +
(notype) blob data
 
    
 
    
 
   uint32_t collection file count
 
   uint32_t collection file count

Revision as of 21:09, 11 March 2007

What is an emulecollection?

An emulecollection is a file which contains various (hence a collection) of ed2k links. This is usually used to group various related files, e.g. a series.

emulecollection file structure

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 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
  	
  	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_STR3					0x13
 		FT_FILENAME					0x01
 		std::string					file name	  	
 
 (notype) signature (only for signed files)