Difference between revisions of "Emulecollection"

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

Revision as of 21:10, 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)