Difference between revisions of "ZIM file format"
Jump to navigation
Jump to search
(simplify file header) |
|||
Line 24: | Line 24: | ||
== Directory Entries == | == Directory Entries == | ||
length in byte, all types are littlendian | |||
{|{{Prettytable}} | |||
! Field Name !! Type !! Offset !! Length !! Description | |||
|- | |||
| filePos || integer || 0 || 8 || position of data chunk | |||
|- | |||
| fileLen || integer || 4 || 4 || length of data chunk | |||
|- | |||
| compression || integer || 8 || 1 || 1=none; 2=zlib; 3=bzip2; 4=lzma | |||
|- | |||
| mime || integer || 9 || 1 || code of mimetype | |||
|- | |||
| redirectFlag || integer || 10 || 1 || 1 if this is a redirect | |||
|- | |||
| namespace || char || 11 || 1 || namespace of article | |||
|- | |||
| articleOffset || integer || 16 || 4 || offset insize data chunk | |||
|- | |||
| articleSize || integer || 20 || 4 || uncompressed size of article | |||
|- | |||
| redirectIndex || integer || 16 || 4 || index of redirected article (field shared with articleOffset) | |||
|- | |||
| extraLen || integer || 24 || 2 || length of extra bytes (title and parameter) | |||
|- | |||
|} | |||
== Data == | == Data == |
Revision as of 22:54, 2 March 2009
The ZIM file format is based on the Zeno File Format. It starts with a header, which is described here:
Header
length in byte, all types are littlendian
Field Name | Type | Offset | Length | Description |
---|---|---|---|---|
magicNumber | integer | 0 | 4 | Magic number to recognise the file format, must be 72173914 |
version | integer | 4 | 4 | ZIM=4, version of the file format |
count | integer | 8 | 4 | total number of articles |
indexPtrPos | integer | 12 | 8 | position to the directory pointerlist |
mainPage | integer | 16 | 4 | article index of main page or 0xffff if no main page |
layoutPage | integer | 20 | 4 | article index of layout page or 0xffff if no layout page |
Each article in the zim file has a directory entry. Since the directory entry has a variable size, we have a index pointerlist, which is a list of 4-byte offsets, which points to the directory entries.
Directory Entries
length in byte, all types are littlendian
Field Name | Type | Offset | Length | Description |
---|---|---|---|---|
filePos | integer | 0 | 8 | position of data chunk |
fileLen | integer | 4 | 4 | length of data chunk |
compression | integer | 8 | 1 | 1=none; 2=zlib; 3=bzip2; 4=lzma |
mime | integer | 9 | 1 | code of mimetype |
redirectFlag | integer | 10 | 1 | 1 if this is a redirect |
namespace | char | 11 | 1 | namespace of article |
articleOffset | integer | 16 | 4 | offset insize data chunk |
articleSize | integer | 20 | 4 | uncompressed size of article |
redirectIndex | integer | 16 | 4 | index of redirected article (field shared with articleOffset) |
extraLen | integer | 24 | 2 | length of extra bytes (title and parameter) |
Data
Namespaces
Namespaces seperate different types of data stored in the ZIM File Format.
They can be distinguished by prepending the article namespace before the article name in the URL path, eg. http://localhost/A/Articlename.
Namespace | Description |
---|---|
- | template data |
A | articles |
I | images, files - see Image Handling |
J | images, text - see Image Handling |
U | categories, text - see Category Handling |
V | categories, article list - see Category Handling |
W | deprecated - see Zeno File Format |
X | fulltext index |
Y | deprecated - see Zeno File Format |
Z | deprecated - see Zeno File Format |