• Stars
    star
    127
  • Rank 282,790 (Top 6 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created over 7 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Various ZIM command line tools

ZIM tools

Various ZIM command line tools. More information about the ZIM format and the openZIM project.

Releases Reporitories Build Status Docker codecov CodeFactor License: GPL v3

Most famous tools are:

  • zimcheck verifies that a given ZIM file is not corrupted. It provides many features to secure that ZIM entries are proper and properly linked.

  • zimdump inspects or dumps (part of) a ZIM file.

  • zimwriterfs creates ZIM files from a locally-stored directory containing "self-sufficient" HTML content (with pictures, javascript and stylesheets). The result will contain all the files of the local directory compressed and merged in the ZIM file. Nothing more, nothing less. The generated file can be opened with a ZIM reader; Kiwix is one example, but there are others.

A few other tools are provided as well but are of less value for most of the usages.

Disclaimer

This document assumes you have a little knowledge about software compilation. If you experience difficulties with the dependencies or with the ZIM libary compilation itself, we recommend to have a look to kiwix-build.

Dependencies

  • ZIM (package libzim-dev on Debian/Ubuntu)
  • docopt.cpp (package libdocopt-dev on Debian/Ubuntu)
  • Mustache (package libkainjow-mustache-dev on Debian/Ubuntu) Be sure you use Mustache version 4.1 or above. You can just copy the header mustache.hpp somewhere it can be found by the compiler and/or set CPPFLAGS with correct -I option.

zimwriterfs relies on many third-party software libraries. They are prerequisites to compiling zimwriterfs. The following libraries need to be available:

  • Magic (package libmagic-dev on Debian/Ubuntu)
  • Z (package zlib1g-dev on Debian/Ubuntu)
  • Gumbo (package libgumbo-dev on Debian/Ubuntu)
  • ICU (package libicu-dev on Debian/Ubuntu)

These dependencies may or may not be packaged by your operating system. They may also be packaged but only in an older version. The compilation script will tell you if one of them is missing or too old. In the worst case, you will have to download and compile a more recent version by hand.

If you want to install these dependencies locally, then ensure that meson (through pkg-config) will properly find them.

Environment

The ZIM tools build using Meson version 0.43 or higher. Meson relies itself on Ninja, pkg-config and few other compilation tools.

Install first the few common compilation tools:

  • Meson
  • Ninja
  • Pkg-config

These tools should be packaged if you use a cutting edge operating system. If not, have a look to the Troubleshooting section.

Compilation

Once all dependencies are installed, you can compile ZIM tools with:

meson . build
ninja -C build

By default, it will compile dynamic linked libraries. All binary files will be created in the "build" directory created automatically by Meson. If you want statically linked libraries, you can add -Dstatic-linkage=true option to the Meson command.

Depending of you system, ninja may be called ninja-build.

Testing

To run the automated tests:

cd build
meson test

To compile and run the tests, Google Test is requested (package googletest on Ubuntu).

Installation

If you want to install the ZIM tools you just have compiled on your system, here we go:

ninja -C build install

You might need to run the command as root (or using 'sudo'), depending where you want to install the libraries. After the installation succeeded, you may need to run ldconfig (as root).

Uninstallation

If you want to uninstall the ZIM tools:

ninja -C build uninstall

Like for the installation, you might need to run the command as user root (or using sudo).

Docker

A Docker image with zimwriterfs, zimcheck,zimdump and all the other tools can be built from the docker directory. The project maintains an official image available at https://ghcr.io/openzim/zim-tools.

Troubleshooting

If you need to install Meson "manually":

virtualenv -p python3 ./ # Create virtualenv
source bin/activate      # Activate the virtualenv
pip3 install meson       # Install Meson
hash -r                  # Refresh bash paths

If you need to install Ninja "manually":

git clone git://github.com/ninja-build/ninja.git
cd ninja
git checkout release
./configure.py --bootstrap
mkdir ../bin
cp ninja ../bin
cd ..

If the compilation still fails, you might need to get a more recent version of a dependency than the one packaged by your Linux distribution. Try then with a source tarball distributed by the problematic upstream project or even directly from the source code repository.

Magic File

zimwriterfs use libmagic to detect the mimetype of files to add. It needs to load the magic database. Most of the time, this file is already present in your system and everything works. But sometime, this file may be not present or cannot be found. You can set the MAGIC environment variable to point to this file.

zimwriterfs will refuse to run if this file is not found. You can force it to run passing the option --skip-libmagic-check.

License

GPLv3 or later, see LICENSE for more details.

More Repositories

1

zimit

Make a ZIM file from any Web site and surf offline!
Python
335
star
2

mwoffliner

Mediawiki scraper: all your wiki articles in one highly compressed ZIM file
TypeScript
285
star
3

sotoki

StackExchange websites to ZIM scraper
Python
217
star
4

libzim

Reference implementation of the ZIM specification
C++
166
star
5

gutenberg

Scraper for downloading the entire ebooks repository of project Gutenberg
Python
130
star
6

zimfarm

Farm operated by bots to grow and harvest new zim files
Python
83
star
7

python-libzim

Libzim binding for Python: read/write ZIM files in Python
Python
63
star
8

youtube

Create a ZIM file from a Youtube channel/username/playlist
Python
48
star
9

warc2zim

Command line tool to convert a file in the WARC format to a file in the ZIM format
Python
44
star
10

zim-requests

Want a new ZIM file? Propose ZIM content improvements or fixes? Here you are!
37
star
11

zimwriterfs

[ARCHIVED] Create ZIM files based from a directory on your local filesystem
C++
36
star
12

node-libzim

Libzim binding for Node.js: read/write ZIM files in Javascript
C++
27
star
13

ifixit

iFixit to ZIM scraper
Python
25
star
14

wp1

Wikipedia 1.0 engine & selection tools
Python
24
star
15

nautilus

Turns a collection of documents into a browsable ZIM file
Python
21
star
16

python-scraperlib

Collection of Python code to re-use across Python-based scrapers
Python
19
star
17

wikihow

WikiHow scraper
Python
16
star
18

ted

Provide the best of TED.com for offline usage!
Python
13
star
19

zimit-frontend

Zimit Public Web UI
Vue
9
star
20

kolibri

Convert a Kolibri channel in ZIM file(s)
Python
8
star
21

openedx

Open edX (to zim) scraper
Python
8
star
22

phet

Scraper for PhET Science & Math Interactive Simulations
JavaScript
7
star
23

zip2zim

[ARCHIVED] Convert Zip Files to Zim Files
JavaScript
6
star
24

wp1_selection_tools

Create selections with the best articles of a WM project
Perl
6
star
25

zimreader-java

[ARCHIVED] ZIM file reader in Java
Java
5
star
26

freecodecamp

FreeCodeCamp.org scraper (to ZIM)
Python
4
star
27

cms

ZIM file Publishing Platform
Python
4
star
28

docker-publish-action

Docker Publish Action for OpenZIM projects
Python
4
star
29

education-numerique

Éducation & Numérique scraper
Python
3
star
30

zim-testing-suite

This repository contains testing zim files for libzim and other openzim repositories.
PHP
3
star
31

overview

🎈 Start here for current projects, how to get involved, and joining community calls. A resource for new and veteran members of the offline commmunity
2
star
32

zimfarm-client

Command line tool to deal with the Zimfarm
Python
2
star
33

nautilus-webui

SaaS Web UI for nautilus
Python
1
star
34

python-storagelib

S3 Cache wrapper to use within Kiwix/OpenZIM/Offspot projects
Python
1
star
35

zimreader-tntnet

[ARCHIVED] ZIM file reader using tntnet HTTP server
CSS
1
star
36

devdocs

devdocs.io to ZIM scraper
Python
1
star
37

_python-bootstrap

Sample openZIM Python project bootstrap
Python
1
star
38

xapian-meson

Xapian ( 1.4.23) source code with meson build system
C++
1
star
39

lilote

Generate a Lilote ZIM file from a Lilote export JSON
JavaScript
1
star