Какво е ZIM файл?
Файловете с разширение .zim са архиви, създадени за съхраняване на Wiki съдържание офлайн. Счита се за най-подходящия отворен файлов формат за съхранение на Wikipedia на USB. Той съхранява съдържанието на сайта в компактен формат. Името му идва от “Zeno IMproved”, който беше по-ранният файлов формат на Zeno. ZIM се поддържа от openZIM проект, който е спонсориран от Wikimedia CH и се поддържа от Wikimedia Foundation. ZIM файловете могат да се отварят от приложения като Kiwix и ZIMReader. Проектът OpenZIM е домакин на внедряването на файловия формат ZIM в Github за принос от общността на OpenSource.
Спецификации на файловия формат ZIM
Файловият формат ZIM е разработен върху файловия формат на Zeno и не е обратно съвместим. Спецификациите на формата на файловия формат ZIM са достъпни онлайн от openZIM за справка на разработчиците. OpenZIM предостави реализация с отворен код на C++, LibZim, за четене и писане на ZIM файлове.
Файловият формат ZIM използва LZMA2 компресия, за да направи съдържанието компактно.
ZIM Header
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 файл |
статияБрой | цяло число | 24 | 4 | общ брой статии |
clusterCount | цяло число | 28 | 4 | общ брой клъстери |
urlPtrPos | цяло число | 32 | 8 | позиция на списъка с указатели на директория, подреден по URL |
titlePtrPos | цяло число | 40 | 8 | позиция на списъка с указатели на директория, подреден по Title |
clusterPtrPos | цяло число | 48 | 8 | позиция на списъка с указатели на клъстера |
mimeListPos | цяло число | 56 | 8 | позиция на списъка с типове MIME (също размер на заглавката) |
главна страница | цяло число | 64 | 4 | главна страница или 0xffffffff, ако няма главна страница |
layoutPage | цяло число | 68 | 4 | страница с оформление или 0xffffffffff, ако няма страница с оформление |
контролна сумаПоз | цяло число | 72 | 8 | указател към md5checksum на този файл без самата контролна сума. Това винаги сочи 16 байта преди края на файла. |