{"id":19794190,"url":"https://github.com/openzim/ifixit","last_synced_at":"2025-08-10T08:09:29.295Z","repository":{"id":39618591,"uuid":"476618479","full_name":"openzim/ifixit","owner":"openzim","description":"iFixit to ZIM scraper","archived":false,"fork":false,"pushed_at":"2025-03-27T10:06:28.000Z","size":1200,"stargazers_count":30,"open_issues_count":20,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-01T02:39:05.942Z","etag":null,"topics":["ifixit","kiwix","openzim","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":null,"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":"2022-04-01T07:29:52.000Z","updated_at":"2025-04-13T02:07:02.000Z","dependencies_parsed_at":"2025-05-01T02:38:54.965Z","dependency_job_id":"926851d1-9930-4d14-9a6c-53f38bc9d648","html_url":"https://github.com/openzim/ifixit","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/openzim/ifixit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openzim%2Fifixit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openzim%2Fifixit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openzim%2Fifixit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openzim%2Fifixit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openzim","download_url":"https://codeload.github.com/openzim/ifixit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openzim%2Fifixit/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269693593,"owners_count":24460248,"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","status":"online","status_checked_at":"2025-08-10T02:00:08.965Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["ifixit","kiwix","openzim","scraper","zim"],"created_at":"2024-11-12T07:12:28.967Z","updated_at":"2025-08-10T08:09:29.273Z","avatar_url":"https://github.com/openzim.png","language":"Python","funding_links":["https://github.com/sponsors/kiwix"],"categories":[],"sub_categories":[],"readme":"# iFixit\n\n`ifixit2zim` is an [openZIM](https://openzim.org) scraper to create offline versions of [iFixit](https://www.ifixit.com/) website, in all its supported languages.\n\n[![CodeFactor](https://www.codefactor.io/repository/github/openzim/ifixit/badge)](https://www.codefactor.io/repository/github/openzim/ifixit)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![codecov](https://codecov.io/gh/openzim/ifixit/branch/main/graph/badge.svg)](https://codecov.io/gh/openzim/ifixit)\n[![PyPI version shields.io](https://img.shields.io/pypi/v/ifixit2zim.svg)](https://pypi.org/project/ifixit2zim/)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ifixit2zim.svg)](https://pypi.org/project/ifixit2zim)\n[![Docker](https://ghcr-badge.egpl.dev/openzim/ifixit/latest_tag?label=docker)](https://ghcr.io/openzim/ifixit)\n\nThis scraper downloads the iFixit resources (categories, guides, ...) and puts them in a ZIM file, a clean and user friendly format for storing content for offline usage.\n\n## Usage\n\n`ifixit2zim` works off a *language version* that you must provide via the `--language` argument. The list of supported languages is visible in the `--help` message.\n\n### Docker\n\n```bash\ndocker run -v my_dir:/output ghcr.io/openzim/ifixit ifixit2zim --help\n```\n\n### Python\n\n`ifixit2zim` is a Python3 (**3.6+**) software. If you are not using the [Docker](https://docker.com) image, you are advised to use it in a virtual environment to avoid installing software dependencies on your system. In addition to Python3, you also need to have an up-to-date installation of pip, setuptools and wheel as recommanded [here](https://packaging.python.org/en/latest/tutorials/installing-packages/#id14) (wheel is important since you will have to build some dependencies).\n\n```bash\npython3 -m venv .venv\nsource .venv/bin/activate\n\n# using published version\npip3 install ifixit2zim\nifixit2zim --help\n\n# running from source\npip3 install -e \".[dev]\"\npython3 ifixit2zim/ --help\n```\n\nCall `deactivate` to quit the virtual environment.\n\nSee `requirements.txt` for the list of python dependencies.\n\n\n## Contributing\n\n**All contributions are welcome!**\n\nPlease open an issue on Github and/or submit a Pull-request.\n\nThis project adheres to openZIM's [Contribution Guidelines](https://github.com/openzim/overview/wiki/Contributing).\n\nThis project has implemented openZIM's [Python bootstrap, conventions and policies](https://github.com/openzim/_python-bootstrap/blob/main/docs/Policy.md) **v1.0.0**.\n\n### Guidelines\n\n- Don't take assigned issues. Comment if those get staled.\n- If your contribution is far from trivial, open an issue to discuss it first.\n- Ensure your code passed [black formatting](https://pypi.org/project/black/), [isort](https://pypi.org/project/isort/) and [flake8](https://pypi.org/project/flake8/) (88 chars)\n\n### Create an appropriate Python environment\n\nFirst time:\n```\npython3 -m venv .venv\nsource .venv/bin/activate\npip3 install -e \".[dev]\"\n```\n\nNext times:\n```\nsource .venv/bin/activate\n```\n\n\nNOTA : there is some limitations to the execution of the underlying libzim library on\nMacOS with some known bugs. The main issue is that the full-text index is not working,\nso this shouldn't be a problem for quick tests. In doubt, execute the scraper in a\nDocker container as explained below.\n\n### Test the scraper in a Docker container\n\nFirst, build the Docker image (to be ran in the main folder of this repo):\n```\ndocker build -t local-ifixit .\n```\n\nThen run the scraper with CLI arguments needed for your test (everything after `ifixit2zim` in the example below).\n\nFor instance, if you want to run a scrape of only the `Apple_PDA` category, including its guides,\nin French :\n```\ndocker run -it -v $(pwd)/output:/output --rm local-ifixit ifixit2zim --language fr --output /output --tmp-dir /tmp --category Apple_PDA\n```\n\nThis will produce a ZIM in the output folder of your current directory.\n\n### Test the ZIM produced\n\nTo test if the ZIM produced is OK, you should run kiwix-serve, once more with Docker.\n\nFor instance, if you produced a file named `ifixit_fr_selection_2022-04.zim` in the\n`output` subfolder, and port 1256 is unused on your machine, you might run:\n```\ndocker run -it --rm -v $(pwd)/output:/data -p 1256:80 ghcr.io/kiwix/kiwix-tools kiwix-serve /data/ifixit_fr_selection_2022-04.zim\n```\nAnd then navigate to (https://localhost:1256) on your favorite browser.\n\nOnce test are complete, you might stop the Docker container by pressing Ctrl-C\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenzim%2Fifixit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenzim%2Fifixit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenzim%2Fifixit/lists"}