MohitMali 190473fdcb Update README with additional instructions for loading ZIM files and articles.
This commit updates the README file to include additional instructions for loading ZIM files and accessing articles in the Kiwix content archive using the `java-libkiwix` library.

Changes made in the README:
- Added a section explaining how to load a ZIM file by creating an `Archive` object.
- Clarified the description of the `mainPage` property, detailing its behavior when dealing with redirects and non-existent entries.
- Provided code snippets and instructions for loading articles via title and path, including a reminder to properly decode the URL path before passing it to `hasEntryByPath`.

These changes aim to improve the documentation and assist developers in effectively utilizing the `java-kibkiwix` library to work with zim files.
2023-08-11 14:56:32 +05:30
2023-07-28 11:38:37 +05:30
2023-01-18 17:12:22 +01:00
2023-07-28 21:22:59 +02:00
2021-05-13 10:31:08 +02:00
2022-12-21 16:01:02 +01:00

Libkiwix binding for Java/Kotlin

Library for accessing libkiwix and libzim with Java or Kotlin on Android.

Maven Central Build Status CodeFactor Codecov License: GPL v3

Build

Install dependencies

./install_deps.sh

Compile

./gradlew buildHeaders
./gradlew build

AAR file will be generated in directory lib/build/outputs/aar

Load zim file

To load a ZIM file you need to create an Archive object.

val archive = Archive("your-file-path")

Load main page

The mainPage property is used to retrieve the path of the main entry page for a Kiwix content archive. If the main entry is a redirect, it will fetch the path of the redirected item; otherwise, it will return the path of the main entry itself. If the main entry is not found, the archive will throw an EntryNotFoundException.

val mainPage: String?
    get() =
        try {
            archive.mainEntry.getItem(true).path
        } catch (entryNotFoundException: EntryNotFoundException) {
            // Return `null` if the main entry is not present in the archive.
            null
        } catch (exception: Exception) {
            // Other exception will thrown here e.g. the file is corrupted or any other error happened.
            null
        }

Load an article via title

    try {
        // If the article with the specified title exists in the archive,
        // retrieve its path using the `getEntryByTitle` method.
        archive.getEntryByTitle(title).path
    } catch (entryNotFoundException: EntryNotFoundException) {
        // If the article with the specified title does not exist in the archive,
        // return `null`.
        null
    }

Load an Article via Path

Ensure that the URL path is properly decode before passing it to hasEntryByPath, as Libzim does not support encoded URLs.

    val decodedPath = URLDecoder.decode(actualpath, "UTF-8")
    try {
        // If the article with the specified URL exists in the archive,
        // retrieve its actual path using the `getEntryByPath` method.
        archive.getEntryByPath(decodedPath)
            .getItem(true)
            .path
    } catch (entryNotFoundException: EntryNotFoundException) {
        // If the article with the specified URL does not exist in the archive,
        // return `null`.
        null
    }

License

GPLv3 or later, see COPYING for more details.

Description
Libkiwix binding for Java & Kotlin
Readme GPL-3.0 267 MiB
Languages
Java 57.2%
C++ 39.9%
CMake 1.9%
Shell 0.9%
HTML 0.1%