This is the Node.js binding to the libzim. Read and write ZIM files easily in Javascript.
This package relies on nbind.
On Linux, the package will download a libzim
binary. On MacOS you'll need to install libzim
separately (see here).
npm i libzim
// write.js
const { ZimArticle, ZimCreator } = require("@openzim/libzim");
(async () => {
console.info('Starting');
const creator = new ZimCreator({ fileName: 'test.zim' }, { welcome: 'index.html' });
for (let i = 100; i > 0; i--) {
const a = new ZimArticle({ url: `file${i}`, data: `Content ${i}` });
await creator.addArticle(a);
}
const welcome = new ZimArticle({ url: `index.html`, data: `<h1>Welcome!</h1>` });
await creator.addArticle(welcome);
await creator.finalise();
console.log('Done Writing');
})();
// read.js
const { ZimArticle, ZimReader } = require("@openzim/libzim");
(async () => {
const zimFile = new ZimReader(path.join(__dirname, '../test.zim'));
const suggestResults = await zimFile.suggest('laborum');
console.info(`Suggest Results:`, suggestResults);
const searchResults = await zimFile.search('rem');
console.info(`Search Results:`, searchResults);
const readArticleContent = await zimFile.getArticleByUrl('A/laborum');
console.info(`Article by url (laborum):`, readArticleContent);
await zimFile.destroy();
})();