{"id":40115957,"url":"https://github.com/dlcs/appetiser","last_synced_at":"2026-01-19T12:10:13.313Z","repository":{"id":56808955,"uuid":"175249419","full_name":"dlcs/appetiser","owner":"dlcs","description":"Replacement for jp2iser/tizer","archived":false,"fork":false,"pushed_at":"2025-10-21T15:12:11.000Z","size":83294,"stargazers_count":2,"open_issues_count":5,"forks_count":1,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-10-21T16:34:18.631Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dlcs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-03-12T16:03:08.000Z","updated_at":"2025-10-21T14:40:27.000Z","dependencies_parsed_at":"2025-10-21T16:28:44.454Z","dependency_job_id":null,"html_url":"https://github.com/dlcs/appetiser","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/dlcs/appetiser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlcs%2Fappetiser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlcs%2Fappetiser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlcs%2Fappetiser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlcs%2Fappetiser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dlcs","download_url":"https://codeload.github.com/dlcs/appetiser/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlcs%2Fappetiser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28567863,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T08:53:44.001Z","status":"ssl_error","status_checked_at":"2026-01-19T08:52:40.245Z","response_time":67,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-01-19T12:10:10.812Z","updated_at":"2026-01-19T12:10:13.303Z","avatar_url":"https://github.com/dlcs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# appetiser\n\nReplacement for jp2iser/tizer. Converts various image resources into JPEG2000 and a collection of thumbnails.\n\n\n## Dependencies\n\n### Kakadu\n\nAppetiser is dependent on being able to access the compiled binaries for Kakadu as a tarball. In production it is expected that this will be an S3 file location that appetiser has access to at run-time, set with the environment variable: \n\n```sh\nKDU_BINARIES=s3://bucket/path-/to/kdu/binaries.tar\n```\n\nThis is downloaded to the location `/kdu_src/kdu.tar` within the running container. convert\n\nFor local development using docker compose, the `./local_data/kdu_src` directory is mapped to `/kdu_src` within the appetiser container. A copy of the Kakadu binaries should be placed in the `./local_data/kdu_src/` directory, and symlinked to `./local_data/kdu_src/kdu.tar` \n\n### Python \nPython dependencies for appetiser are managed using [uv](https://docs.astral.sh/uv/). This is the case both for app dependencies, that are installed by uv in the docker image, and development dependencies, that are used for testing and tooling. \n\nDevelopment and testing dependencies should be added using the `--dev` flag, e.g. \n\n```sh\nuv add --dev httpx\n```\n\nAlthough the app is containerised, it will be necessary to install the project dependencies for local development via:\n```sh \nuv sync\n```\n\n### OS\n\nPillow has a number of OS level dependencies for dealing with various image formats that are installed in the Docker image. As we're installing Pillow through `uv` (previously `pip`) rather than `apt` this is required to ensure support for the required image formats. These seem to correspond with the [External libraries](https://pillow.readthedocs.io/en/stable/installation/building-from-source.html) in the Pillow docs.\n\n## Running locally\n\nA [docker-compose.yml](./docker-compose.yml) file is provided for local development. This contains a number of volume mappings for local files, so the following must exist in the local directory: \n\n- `./local_data/kdu_src`: Directory containing the Kakadu binaries as described [above](#kakadu). gitingored.\n- `./local_data/output`: Output directory mapped to `/test_output` and used in API examples and tests. gitignored.  \n\n## Running tests \n\nIntegration tests can be found in [./tests](./tests) and should be run with: \n```sh \nuv run pytest\n```\n\nThese tests are dependent on `pytest-docker`, and use the [./tests/docker-compose.test.yml](./tests/docker-compose.test.yml) file. \n\n\n## API Documentation \n\nOpenAPI docs for the appetiser API can be found at [http://localhost:8000/docs](http://localhost:8000/docs) on a locally running instance of appetiser. These provide documentation and examples for the `convert/` endpoint, along with expected types. \n\n## Customising\n\nThe following environment variables can be used to configure the service\n\n| EnvVar         | Description                                     | Default |\n| -------------- | ----------------------------------------------- | ------- |\n| `JPEG_QUALITY` | Integer, 0-100, controls thumbnail jpeg quality | 90      |","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdlcs%2Fappetiser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdlcs%2Fappetiser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdlcs%2Fappetiser/lists"}