Difference between revisions of "Emulecollection"

From AMule Project FAQ
Jump to: navigation, search
m (=What is an emulecollection?=)
(=binary files=)
Line 60: Line 60:
 
   uint64_t file size
 
   uint64_t file size
 
    
 
    
   TAGTYPE_STR3 0x13
+
   TAGTYPE_STR1 to 16 0x11 to 0x20
 
   FT_FILENAME 0x01
 
   FT_FILENAME 0x01
   std::string file name  
+
   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   
 
    
 
    
 
   (notype) signature (only for signed files)
 
   (notype) signature (only for signed files)

Revision as of 18:46, 13 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
 		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
  	
  	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  	  	
 
 (notype) signature (only for signed files)