Що таке файл ZIM?
Файли з розширенням .zim — це архіви, створені для зберігання вмісту Wiki офлайн. Він вважається найбільш підходящим відкритим форматом файлу для зберігання Вікіпедії на USB. Він зберігає вміст сайту в компактному форматі. Його назва походить від “Zeno IMproved”, який був попереднім форматом файлу Zeno. ZIM підтримується проектом openZIM , спонсором якого є Wikimedia CH і підтримується Фондом Wikimedia. Файли ZIM можна відкривати такими програмами, як Kiwix і ZIMReader. Проект OpenZIM реалізував формат файлу ZIM на Github за внесок спільноти OpenSource.
Специфікації формату файлу ZIM
Формат файлу ZIM було розроблено на основі формату файлу Zeno і не є зворотно сумісним. Специфікації формату файлу ZIM доступні онлайн від openZIM для довідки розробника. OpenZIM надав реалізацію C++ з відкритим кодом, LibZim, для читання та запису файлів ZIM.
Формат файлу ZIM використовує стиснення LZMA2, щоб зробити вміст компактним.
Заголовок ZIM
Файл ZIM починається із заголовка зі зміщенням 0. Усі складові базуються на методі little-endian, і всі цілі числа є беззнаковими, тобто uint_16, uint_32, uint_64.
Назва поля | Тип | Зсув | Довжина | Опис |
---|---|---|---|---|
magicNumber | ціле | 0 | 4 | Магічне число для розпізнавання формату файлу має бути 72173914 (0x44D495A) |
majorVersion | ціле | 4 | 2 | Основна версія формату файлу ZIM (5 або 6) |
minorVersion | ціле | 6 | 2 | Додаткова версія формату файлу ZIM |
uuid | ціле | 8 | 16 | унікальний ідентифікатор цього файлу zim |
articleCount | ціле | 24 | 4 | загальна кількість статей |
clusterCount | ціле | 28 | 4 | загальна кількість кластерів |
urlPtrPos | ціле | 32 | 8 | позиція списку покажчиків каталогу, впорядкованого за URL |
titlePtrPos | ціле | 40 | 8 | позиція списку покажчиків каталогу, упорядкованого за заголовком |
clusterPtrPos | ціле | 48 | 8 | позиція списку покажчиків кластера |
mimeListPos | ціле | 56 | 8 | позиція списку типів MIME (також розмір заголовка) |
головна сторінка | ціле | 64 | 4 | головна сторінка або 0xffffffff, якщо головної сторінки немає |
макет сторінки | ціле | 68 | 4 | сторінка макета або 0xffffffffff, якщо сторінки макета немає |
контрольна сумаPos | ціле | 72 | 8 | вказівник на контрольну суму md5 цього файлу без самої контрольної суми. Це завжди вказує на 16 байтів до кінця файлу. |