Tệp ZIM là gì?
Các tệp có phần mở rộng .zim là các tệp lưu trữ được tạo để lưu trữ nội dung Wiki ngoại tuyến. Nó được coi là định dạng tệp mở phù hợp nhất để lưu trữ Wikipedia trên USB. Nó lưu trữ nội dung trang web ở định dạng nhỏ gọn. Tên của nó xuất phát từ “Zeno IMproved”, là định dạng tệp Zeno trước đó. ZIM được duy trì bởi dự án openZIM được Wikimedia CH tài trợ và được Wikimedia Foundation hỗ trợ. Các tệp ZIM có thể được mở bằng các ứng dụng như Kiwix và ZIMReader. Dự án OpenZIM đã tổ chức triển khai định dạng tệp ZIM trên Github để nhận đóng góp từ cộng đồng OpenSource.
Thông số kỹ thuật định dạng tệp ZIM
Định dạng tệp ZIM được phát triển dựa trên định dạng tệp Zeno và không tương thích ngược. Thông số định dạng của định dạng tệp ZIM có sẵn trực tuyến của openZIM để nhà phát triển tham khảo. OpenZIM đã cung cấp triển khai mã nguồn mở C++, LibZim, để đọc và ghi các tệp ZIM.
Định dạng tệp ZIM sử dụng nén LZMA2 để làm cho nội dung nhỏ gọn.
Tiêu đề ZIM
Tệp ZIM bắt đầu bằng tiêu đề có độ lệch 0. Tất cả các thành phần đều dựa trên little-endian và tất cả các số nguyên đều là số nguyên không dấu, tức là uint_16, uint_32, uint_64.
Tên trường | Loại | Bù đắp | Chiều dài | Mô tả |
---|---|---|---|---|
magicNumber | số nguyên | 0 | 4 | Số ma thuật để nhận dạng định dạng tệp, phải là 72173914 (0x44D495A) |
majorVersion | số nguyên | 4 | 2 | Phiên bản chính của định dạng tệp ZIM (5 hoặc 6) |
minorVersion | số nguyên | 6 | 2 | Phiên bản nhỏ của định dạng tệp ZIM |
uuid | số nguyên | 8 | 16 | id duy nhất của tệp zim này |
articleCount | số nguyên | 24 | 4 | tổng số bài viết |
clusterCount | số nguyên | 28 | 4 | tổng số cụm |
urlPtrPos | số nguyên | 32 | 8 | vị trí của danh sách con trỏ thư mục được sắp xếp theo URL |
titlePtrPos | số nguyên | 40 | 8 | vị trí của danh sách con trỏ thư mục được sắp xếp theo Title |
cụmPtrPos | số nguyên | 48 | 8 | vị trí của danh sách con trỏ cụm |
mimeListPos | số nguyên | 56 | 8 | vị trí của danh sách loại MIME (cũng như kích thước tiêu đề) |
trang chính | số nguyên | 64 | 4 | trang chính hoặc 0xffffffff nếu không có trang chính |
bố cục | số nguyên | 68 | 4 | trang bố cục hoặc 0xffffffffff nếu không có trang bố cục |
checksumPos | số nguyên | 72 | 8 | con trỏ tới md5checksum của tệp này mà không có tổng kiểm tra. Điểm này luôn luôn là 16 byte trước khi kết thúc tệp. |