{"id":13822755,"url":"https://github.com/felixc/rexiv2","last_synced_at":"2026-04-06T07:01:38.015Z","repository":{"id":27651201,"uuid":"31136364","full_name":"felixc/rexiv2","owner":"felixc","description":"Rust library for read/write access to media-file metadata (Exif, XMP, and IPTC)","archived":false,"fork":false,"pushed_at":"2024-01-12T15:18:54.000Z","size":195,"stargazers_count":85,"open_issues_count":12,"forks_count":18,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-12-14T03:16:18.110Z","etag":null,"topics":["exif","image-processing","iptc","metadata","rust","xmp"],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/felixc.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"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}},"created_at":"2015-02-21T18:46:42.000Z","updated_at":"2025-09-24T16:16:33.000Z","dependencies_parsed_at":"2024-01-18T04:08:26.149Z","dependency_job_id":"4fc8a2d0-d585-46dc-979b-de62827bde5f","html_url":"https://github.com/felixc/rexiv2","commit_stats":{"total_commits":135,"total_committers":12,"mean_commits":11.25,"dds":0.1333333333333333,"last_synced_commit":"e8ceff8ec43a04e3c2da81a882f6d07ab1121010"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/felixc/rexiv2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felixc%2Frexiv2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felixc%2Frexiv2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felixc%2Frexiv2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felixc%2Frexiv2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/felixc","download_url":"https://codeload.github.com/felixc/rexiv2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felixc%2Frexiv2/sbom","scorecard":{"id":396275,"data":{"date":"2025-08-11","repo":{"name":"github.com/felixc/rexiv2","commit":"e8ceff8ec43a04e3c2da81a882f6d07ab1121010"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.9,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":2,"reason":"Found 7/29 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"CII-Best-Practices","score":2,"reason":"badge detected: InProgress","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 21 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T19:05:58.477Z","repository_id":27651201,"created_at":"2025-08-18T19:05:58.477Z","updated_at":"2025-08-18T19:05:58.477Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31463015,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"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":["exif","image-processing","iptc","metadata","rust","xmp"],"created_at":"2024-08-04T08:02:15.971Z","updated_at":"2026-04-06T07:01:37.993Z","avatar_url":"https://github.com/felixc.png","language":"Rust","readme":"\u003c!--\nSPDX-FileCopyrightText: 2015–2022 Felix A. Crux \u003cfelixc@felixcrux.com\u003e and CONTRIBUTORS\nSPDX-License-Identifier: GPL-3.0-or-later\n--\u003e\n\nrexiv2\n======\n\n[![docs-badge][]][docs]\u0026nbsp;\n[![build-badge][]][build]\u0026nbsp;\n[![coverage-badge][]][coverage]\u0026nbsp;\n[![downloads-badge][]][crates-io]\u0026nbsp;\n[![version-badge][]][crates-io]\u0026nbsp;\n[![license-badge][]][license]\u0026nbsp;\n[![reuse-badge][]][reuse]\u0026nbsp;\n[![best-practices-badge][]][best-practices]\u0026nbsp;\n\n[docs]: https://felixcrux.com/files/doc/rexiv2/\n[docs-badge]: https://img.shields.io/docsrs/rexiv2\n[build]: https://dl.circleci.com/status-badge/redirect/gh/felixc/rexiv2/tree/main\n[build-badge]: https://dl.circleci.com/status-badge/img/gh/felixc/rexiv2/tree/main.svg?style=shield\n[coverage]: https://codecov.io/gh/felixc/rexiv2\n[coverage-badge]: https://codecov.io/gh/felixc/rexiv2/branch/main/graph/badge.svg?token=FT6WmJ9pD1\n[crates-io]: https://crates.io/crates/rexiv2\n[downloads-badge]: https://img.shields.io/crates/d/rexiv2.svg\n[version-badge]: https://img.shields.io/crates/v/rexiv2.svg\n[license]: https://github.com/felixc/rexiv2/blob/master/LICENSE\n[license-badge]: https://img.shields.io/crates/l/rexiv2.svg\n[reuse]: https://api.reuse.software/info/github.com/felixc/rexiv2\n[reuse-badge]: https://api.reuse.software/badge/github.com/felixc/rexiv2\n[best-practices]: https://bestpractices.coreinfrastructure.org/projects/6330\n[best-practices-badge]: https://bestpractices.coreinfrastructure.org/projects/6330/badge\n\n\nRust library for working with media file metadata\n-------------------------------------------------\n\nThis crate provides a Rust wrapper around the [gexiv2][gexiv2] library, which is\na GObject-based wrapper around [Exiv2][exiv2], which provides read and write\naccess to the Exif, XMP, and IPTC metadata in media files (typically photos) in\nvarious formats.\n\n[gexiv2]: https://wiki.gnome.org/Projects/gexiv2\n[exiv2]:  http://www.exiv2.org/\n\n\nDocumentation\n-------------\n\nAPI documentation is [available online][rexiv2-doc].\n\nExiv2’s homepage has documentation on available [namespaces and tags][tags-doc].\n\n[gexiv2’s APIs][gexiv2-api] may also be a useful reference, along with [Exiv2’s\nAPI docs][exiv2-api].\n\nDuring development and testing, the [Exiv2 command-line utility][exiv2-cli] may\ncome in handy.\n\n[rexiv2-doc]: https://felixcrux.com/files/doc/rexiv2/\n[tags-doc]:   http://exiv2.org/metadata.html\n[gexiv2-api]: https://git.gnome.org/browse/gexiv2/tree/gexiv2/gexiv2-metadata.h\n[exiv2-api]:  http://exiv2.org/doc/index.html\n[exiv2-cli]:  http://exiv2.org/manpage.html\n\n\nSetup \u0026 Dependencies\n--------------------\n\nrexiv2 requires Rust 1.63 or newer, and uses the 2021 edition of the language.\n\nBeing a wrapper for gexiv2 and Exiv2, rexiv2 obviously depends on them. These\nlibraries are not bundled with rexiv2: you will need to install them separately.\n\ngexiv2 is supported from version 0.10 onwards, and Exiv2 from version 0.23.\n\nFor full instructions on how to get started with rexiv2, including how to\ninstall the prerequisite dependencies, refer to the [`SETUP`](SETUP.md) file.\n\nNote that if you want BMFF support (e.g. HEIC, HEIF, AVIF, CR3, JXL/bmff files)\nyou will need an up-to-date version of the underlying libraries (at least gexiv2\nv0.13.0 and Exiv2 v0.27.4). You will also need to ensure that your version of\nExiv2 has BMFF support enabled. This is generally enabled by default, but may be\nswitched off in certain distributions due to licensing issues.\n\n\nVersioning \u0026 History\n--------------------\n\nrexiv2 is currently available as a pre-1.0 development version.\n\nVersion numbers follow the principles of [Semantic Versioning][semver].\n\nNo further breaking API changes are planned, but they are possible as a result\nof feedback on the API as more users try it out. Such feedback is welcome, and\nhaving the API tried out in real applications is part of ensuring it’s ready for\na 1.0 release.\n\nSee the [`CHANGELOG`](CHANGELOG.md) file for a history of released versions.\n\n[semver]: http://semver.org/spec/v2.0.0.html\n\n\nOptional Features\n-----------------\n\n**raw-tag-access**: If you need access to the raw byte values of tags, you can\nenable this feature and gain the `get_tag_raw` function.\n\nThis feature is disabled by default because it introduces a new dependency on\n[`glib-sys`][glib-sys], and consequently on the GLib system library.\n\n[glib-sys]: https://crates.io/crates/glib-sys/\n\n\nContributions \u0026 Bug Reports\n---------------------------\n\nContributions are gladly accepted, either through GitHub pull requests or by\nmailing patches to `felixc@felixcrux.com` (PGP key [8569B6311EE485F8][pgp-key]).\n\n**By contributing, you are agreeing to make your contribution available under\nthe same license terms as the rest of the project.**\n\nBug reports and feature requests can also be sent through GitHub Issues or by\nemail, and are very welcome and appreciated.\n\nReports of security issues can also be sent privately to the email address and\nPGP key given above.\n\nFor more information, see the [`CONTRIBUTING`](CONTRIBUTING.md) file.\n\n[pgp-key]: http://hkps.pool.sks-keyservers.net/pks/lookup?op=vindex\u0026search=0x8569B6311EE485F8\n\n\nCopyright \u0026 License\n-------------------\n\nThe Exiv2 and gexiv2 libraries are both released under the terms of the GNU\nGeneral Public License (GPL), and since rexiv2 is linked to them, it too is\nmade available under the terms of the GPL. Specifically:\n\nThis program is free software: you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the Free\nSoftware Foundation, either version 3 of the License, or (at your option)\nany later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT\nANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\nFOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with\nthis program. If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n\nPlease refer to the [`LICENSE`](LICENSE) file for a full copy of the license.\n","funding_links":[],"categories":["Rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelixc%2Frexiv2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffelixc%2Frexiv2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelixc%2Frexiv2/lists"}