{"id":19794184,"url":"https://github.com/openzim/kolibri","last_synced_at":"2025-06-18T20:33:40.594Z","repository":{"id":46143249,"uuid":"295367722","full_name":"openzim/kolibri","owner":"openzim","description":"Convert a Kolibri channel in ZIM file(s)","archived":false,"fork":false,"pushed_at":"2025-03-11T15:48:42.000Z","size":3934,"stargazers_count":14,"open_issues_count":31,"forks_count":24,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-05-01T02:39:05.339Z","etag":null,"topics":["kolibri","lms","offline","scraper","zim"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openzim.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"kiwix","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2020-09-14T09:28:30.000Z","updated_at":"2025-04-08T10:37:16.000Z","dependencies_parsed_at":"2023-07-14T00:47:28.005Z","dependency_job_id":"c14dbbcd-47a0-4cb4-9eb9-b502f38a322d","html_url":"https://github.com/openzim/kolibri","commit_stats":{"total_commits":66,"total_committers":6,"mean_commits":11.0,"dds":0.3939393939393939,"last_synced_commit":"b8c8901186a37a6adbe8ec650bcc373e347e61fe"},"previous_names":["openzim/kolibri2zim"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/openzim/kolibri","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openzim%2Fkolibri","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openzim%2Fkolibri/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openzim%2Fkolibri/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openzim%2Fkolibri/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openzim","download_url":"https://codeload.github.com/openzim/kolibri/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openzim%2Fkolibri/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260629454,"owners_count":23038927,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kolibri","lms","offline","scraper","zim"],"created_at":"2024-11-12T07:12:26.838Z","updated_at":"2025-06-18T20:33:35.572Z","avatar_url":"https://github.com/openzim.png","language":"Python","funding_links":["https://github.com/sponsors/kiwix"],"categories":[],"sub_categories":[],"readme":"kolibri2zim\n=============\n\n[![CodeFactor](https://www.codefactor.io/repository/github/openzim/kolibri/badge)](https://www.codefactor.io/repository/github/openzim/kolibri)\n[![Docker](https://ghcr-badge.epgl.dev/openzim/kolibri/latest_tag?label=docker)](https://ghcr.io/openzim/kolibri)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![PyPI version shields.io](https://img.shields.io/pypi/v/kolibri2zim.svg)](https://pypi.org/project/kolibri2zim/)\n\n`kolibr2zim` allows you to create a [ZIM file](https://openzim.org) from a Kolibri Channel.\n\nIt downloads the video (`webm` or `mp4` extension – optionally\nrecompress them in lower-quality, smaller size), the thumbnails, the\nsubtitles and the authors' profile pictures ; then, it create a static\nHTML files folder of it before creating a ZIM off of it.\n\n\u003e [!WARNING]\n\u003e This scraper is under heavy modifications to prepare a v2 including a brand new UI for navigating the tree of content and a move to Vue.JS. These changes\nare already merged into `main` branch but not yet completed. Should you be interested in a stable version, please used published versions (PyPI or Docker).\nWe also have a `v1` branch for any urgent patch needed to current production version.\n\nRequirements\n------------\n\n* Node 20.x\n* Python 3.11\n* [`ffmpeg`](https://ffmpeg.org/) for video transcoding (only used with `--use-webm` or `--low-quality`).\n* `curl` and `unzip` to install Javascript dependencies. See `get_web_deps.sh` if you want to do it manually.\n\nInstallation\n------------\n\n### Virtualenv\n\n`kolibri2zim` is a Python3 software. If you are not using the\n[Docker](https://docker.com) image, you are advised to use it in a\nvirtual environment to avoid installing software dependencies on your system.\n\n```bash\npython3 -m venv env      # Create virtualenv\nsource env/bin/Activate  # Activate the virtualenv ('env/Scripts/Activate' in Windows)\npip3 install kolibri2zim # Install dependencies\nkolibri2zim --help       # Display kolibri2zim help\n```\n\nCall `deactivate` to quit the virtual environment.\n\nSee `pyproject.toml` for the list of python dependencies.\n\nTo test epubs and pdfs rendering, a potential usefull command is:\n\n```bash\nkolibri2zim --name \"Biblioteca Elejandria\" --output /output --tmp-dir /tmp --zim-file Biblioteca_Elejandria.zim --channel-id \"fed29d60e4d84a1e8dcfc781d920b40e\" --node-ids 'd92c07655128458f8248416154b18a68,89fe2f86ee3f4fbaa7fb2bf9bd56d088,75f99e6b97d14b14a4e74762ad77391f,89fe2f86ee3f4fbaa7fb2bf9bd56d088'\n```\n\n### Docker\n\n```bash\ndocker run -v my_dir:/output ghcr.io/openzim/kolibri kolibri2zim --help\n```\n\nUsage\n-----\n\n`kolibri2zim` works off a `channel-id` that you must provide. This is a 32-characters long ID that you can find in the URL of the channel you want, either from [Kolibri Studio](https://studio.learningequality.org) or the [Kolibri Catalog](https://kolibri-catalog-en.learningequality.org)\n\nDevelopment\n-----------\n\nkolibri2zim adheres to openZIM's [Contribution Guidelines](https://github.com/openzim/overview/wiki/Contributing).\n\nkolibri2zim has implemented openZIM's [Python bootstrap, conventions and policies](https://github.com/openzim/_python-bootstrap/blob/main/docs/Policy.md) **v1.0.0**.\n\nBefore contributing be sure to check out the\n[CONTRIBUTING.md](CONTRIBUTING.md) guidelines.\n\nSome usefull test channels:\n\n- 7f744ce8d28b471eaf663abd60c92267: a very minimal channel with all kind of content\n- 9f15f4e9aeaa48b5ae271e5749d6fe80 : a small channel with significantly nested items and all kind of content\n\n### Build and running scraper locally\n\nYou have to:\n\n- build the `zimui` frontend which will be embededed inside the ZIM (and redo it every time you make modifications to the `zimui`)\n- run the `scraper` to retrieve FCC curriculum and build the ZIM\n\nSample commands:\n\n```\ncd zimui\nyarn install\nyarn build\ncd ../scraper\nhatch run kolibri2zim --name \"Biblioteca Elejandria\" --output output --zim-file Biblioteca_Elejandria.zim --channel-id \"fed29d60e4d84a1e8dcfc781d920b40e\" --node-ids 'd92c07655128458f8248416154b18a68,89fe2f86ee3f4fbaa7fb2bf9bd56d088,75f99e6b97d14b14a4e74762ad77391f,89fe2f86ee3f4fbaa7fb2bf9bd56d088'\n```\n\n### Running scraper with Docker\n\nRun from official version (published on GHCR.io) ; ZIM will be available in the `output` sub-folder of current working directory.\n\n```\ndocker run --rm -it -v $(pwd)/output:/output ghcr.io/openzim/kolibri:latest kolibri2zim --name \"Biblioteca Elejandria\" --output /output --tmp-dir /tmp --zim-file Biblioteca_Elejandria.zim --channel-id \"fed29d60e4d84a1e8dcfc781d920b40e\" --node-ids 'd92c07655128458f8248416154b18a68,89fe2f86ee3f4fbaa7fb2bf9bd56d088,75f99e6b97d14b14a4e74762ad77391f,89fe2f86ee3f4fbaa7fb2bf9bd56d088'\n```\n\nLicense\n-------\n\n[GPLv3](https://www.gnu.org/licenses/gpl-3.0) or later, see\n[LICENSE](LICENSE) for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenzim%2Fkolibri","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenzim%2Fkolibri","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenzim%2Fkolibri/lists"}