{"id":44905236,"url":"https://github.com/iscc/iscc-sdk","last_synced_at":"2026-04-21T14:04:12.094Z","repository":{"id":37183667,"uuid":"451533555","full_name":"iscc/iscc-sdk","owner":"iscc","description":"ISCC - Software Development Kit","archived":false,"fork":false,"pushed_at":"2026-04-11T14:57:19.000Z","size":5497,"stargazers_count":19,"open_issues_count":15,"forks_count":7,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-11T16:29:30.952Z","etag":null,"topics":["identifier","iscc","media","similarity"],"latest_commit_sha":null,"homepage":"https://sdk.iscc.codes","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iscc.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"titusz","custom":"https://iscc.foundation/support/"}},"created_at":"2022-01-24T16:04:17.000Z","updated_at":"2026-03-29T19:58:32.000Z","dependencies_parsed_at":"2024-06-28T09:45:46.839Z","dependency_job_id":"9531613a-f9ca-4a79-8c87-ee212738e8c8","html_url":"https://github.com/iscc/iscc-sdk","commit_stats":{"total_commits":200,"total_committers":3,"mean_commits":66.66666666666667,"dds":"0.015000000000000013","last_synced_commit":"6ff6bb389e5d13d41d19f75dd5a1edcbfa50c166"},"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/iscc/iscc-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iscc%2Fiscc-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iscc%2Fiscc-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iscc%2Fiscc-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iscc%2Fiscc-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iscc","download_url":"https://codeload.github.com/iscc/iscc-sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iscc%2Fiscc-sdk/sbom","scorecard":{"id":495321,"data":{"date":"2025-08-11","repo":{"name":"github.com/iscc/iscc-sdk","commit":"d885cf099d885376d2971bdd5b26b34f0c20abb9"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 1 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":"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"SAST","score":10,"reason":"SAST tool detected: CodeQL","details":["Info: SAST configuration detected: CodeQL","Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","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":"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":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/ci.yml:46","Info: jobLevel 'contents' permission set to 'read': .github/workflows/ci.yml:47","Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Info: no jobLevel write permissions found"],"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":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/iscc/iscc-sdk/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/iscc/iscc-sdk/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/iscc/iscc-sdk/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/iscc/iscc-sdk/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/iscc/iscc-sdk/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/iscc/iscc-sdk/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/iscc/iscc-sdk/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/iscc/iscc-sdk/ci.yml/main?enable=pin","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned"],"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":"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: Apache License 2.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":"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":"Vulnerabilities","score":0,"reason":"14 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2017-112","Warn: Project is vulnerable to: PYSEC-2018-117","Warn: Project is vulnerable to: PYSEC-2018-118","Warn: Project is vulnerable to: PYSEC-2018-119","Warn: Project is vulnerable to: PYSEC-2018-120","Warn: Project is vulnerable to: PYSEC-2021-877","Warn: Project is vulnerable to: PYSEC-2021-879","Warn: Project is vulnerable to: PYSEC-2023-150","Warn: Project is vulnerable to: PYSEC-2023-233","Warn: Project is vulnerable to: PYSEC-2025-61 / GHSA-xg8h-j46f-w952","Warn: Project is vulnerable to: GHSA-8qvm-5x2c-j2w7","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-48p4-8xcf-vxj5","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T20:18:51.361Z","repository_id":37183667,"created_at":"2025-08-19T20:18:51.362Z","updated_at":"2025-08-19T20:18:51.362Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31808518,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T11:13:53.975Z","status":"ssl_error","status_checked_at":"2026-04-14T11:13:53.299Z","response_time":153,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["identifier","iscc","media","similarity"],"created_at":"2026-02-17T22:28:56.850Z","updated_at":"2026-04-14T18:01:03.244Z","avatar_url":"https://github.com/iscc.png","language":"Python","funding_links":["https://github.com/sponsors/titusz","https://iscc.foundation/support/"],"categories":[],"sub_categories":[],"readme":"# ISCC Software Development Kit (iscc-sdk)\n\n[![Build](https://github.com/iscc/iscc-sdk/actions/workflows/ci.yml/badge.svg)](https://github.com/iscc/iscc-sdk/actions/workflows/ci.yml)\n[![Version](https://img.shields.io/pypi/v/iscc-sdk.svg)](https://pypi.python.org/pypi/iscc-sdk/)\n[![Coverage](https://codecov.io/gh/iscc/iscc-sdk/branch/main/graph/badge.svg?token=7BJ7HJU815)](https://codecov.io/gh/iscc/iscc-sdk)\n[![Quality](https://app.codacy.com/project/badge/Grade/aa791abf9d824f6aa65a8f86b9222c90)](https://www.codacy.com/gh/iscc/iscc-sdk/dashboard)\n[![Downloads](https://pepy.tech/badge/iscc-sdk)](https://pepy.tech/project/iscc-sdk)\n[![License](https://img.shields.io/github/license/iscc/iscc-sdk)](https://github.com/iscc/iscc-sdk/blob/main/LICENSE)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/iscc/iscc-sdk)\n\nA comprehensive Python toolkit for creating and managing [ISCC](https://core.iscc.codes)\n(*International Standard Content Code*) identifiers for digital media assets.\n\n## Overview\n\n![ISCC Architecture](https://raw.githubusercontent.com/iscc/iscc-sdk/refs/heads/main/docs/images/iscc-overview.svg)\n\n### What is an ISCC?\n\nThe **International Standard Content Code (ISCC)** is a content-dependent, similarity-preserving\nidentifier and fingerprint system for digital content, standardized as\n[ISO 24138:2024](https://www.iso.org/standard/77899.html).\n\nISCCs are neither manually nor automatically assigned but are derived from the digital content\nitself. Generated algorithmically using various hash algorithms, ISCCs create composite identifiers\nwith similarity-preserving properties (soft hashes) that can be independently derived by unrelated\nparties from the same media asset.\n\nDigital content is dynamic - continuously re-encoded, resized, and re-compressed as it travels\nthrough complex networks. The ISCC remains robust across these transformations while preserving\nestimates of data, content, and metadata similarity.\n\nThe component-based structure of ISCC identifies content at multiple levels of abstraction, creating\na multi-layered fingerprint. These components work together to create a robust,\nsimilarity-preserving identifier that remains stable despite modifications to the underlying digital\nasset. With this multi-layered approach, the ISCC can track content throughout its lifecycle, even\nas it's re-encoded, resized, or re-compressed.\n\nEach component is self-describing, modular, and can be used separately or together, enabling ISCCs\nto support numerous digital asset management use-cases across all domains concerned with producing,\nprocessing, and distributing digital information (science, journalism, books, music, film, etc.):\n\n- Content deduplication and discovery\n- Database synchronization and indexing\n- Integrity verification and timestamping\n- Versioning and data provenance tracking\n- Similarity clustering and matching\n- Anomaly detection in content collections\n- Usage tracking and royalty allocation\n- Fact-checking and content verification\n- Interoperability between different systems and actors\n- Association with higher-level identifiers (work/product identifiers)\n\n### What is iscc-sdk?\n\n`iscc-sdk` builds on top of `iscc-core` to provide high-level features for generating and handling\nISCC codes across different media types. It serves as a complete toolkit for implementing ISCC-based\nworkflows in Python applications.\n\n## Features\n\n- **Comprehensive Media Support**: Process text, image, audio, and video files\n- **Mediatype Detection**: Automatically identify file formats\n- **Metadata Management**: Extract and embed metadata across different file formats\n- **Content Processing**: Handle mediatype-specific content extraction and normalization\n- **Rich CLI**: Command-line interface for easy integration into workflows\n- **Cross-Platform**: Works on Windows, macOS, and Linux\n- **Built-in Tools**: Includes necessary binaries for media processing\n- **Standards Compliant**: Build on top of the ISO 24138:2024 reference implementation\n\n## Requirements\n\n- Python 3.11 to 3.14 on 64-bit systems\n- Supported platforms: Windows, macOS, Linux\n\n## Installation\n\n### Using pip\n\n```bash\npip install iscc-sdk\n```\n\n### Using uv\n\n```bash\nuv add iscc-sdk\n```\n\n## Usage\n\n### Python API\n\n#### Create an ISCC-CODE for a media file:\n\n```python\nimport iscc_sdk as idk\n\n# Generate a complete ISCC code\niscc_meta = idk.code_iscc(\"/path/to/mediafile.jpg\")\nprint(iscc_meta.iscc)  # Full ISCC code\nprint(iscc_meta.json(indent=2))  # All metadata as JSON\n\n# Generate specific ISCC components\nmeta_code = idk.code_meta(\"/path/to/mediafile.jpg\")\ncontent_code = idk.code_content(\"/path/to/mediafile.jpg\")\ndata_code = idk.code_data(\"/path/to/mediafile.jpg\")\ninstance_code = idk.code_instance(\"/path/to/mediafile.jpg\")\n\n# Process specific media types\ntext_code = idk.code_text(\"/path/to/document.pdf\")\nimage_code = idk.code_image(\"/path/to/image.png\")\naudio_code = idk.code_audio(\"/path/to/audio.mp3\")\nvideo_code = idk.code_video(\"/path/to/video.mp4\")\n```\n\n#### Extract and embed metadata:\n\n```python\nimport iscc_sdk as idk\nfrom iscc_schema import IsccMeta\n\n# Extract metadata\nmetadata = idk.extract_metadata(\"/path/to/mediafile.jpg\")\n\n# Create custom metadata\ncustom_meta = IsccMeta(\n    name=\"My Asset Title\",\n    description=\"Description of the asset\",\n    creator=\"Creator Name\",\n    license=\"https://creativecommons.org/licenses/by/4.0/\",\n)\n\n# Embed metadata into a copy of the file\nnew_file = idk.embed_metadata(\"/path/to/mediafile.jpg\", custom_meta)\n```\n\n### Command Line Interface\n\nThe SDK includes a command-line interface called `iscc-sdk`.\n\n#### Create an ISCC code for a single file:\n\n```shell\niscc-sdk create /path/to/mediafile.jpg\n```\n\n#### Process multiple files in a directory:\n\n```shell\niscc-sdk batch /folder_with_media_files\n```\n\n#### Install required binaries:\n\n```shell\niscc-sdk install\n```\n\n#### Run self-tests:\n\n```shell\niscc-sdk selftest\n```\n\n## Documentation\n\nFor complete documentation, visit [https://sdk.iscc.codes](https://sdk.iscc.codes)\n\n## Project Status\n\nThe ISCC is an official standard published as\n[ISO 24138:2024](https://www.iso.org/standard/77899.html) - International Standard Content Code\nwithin [ISO/TC 46/SC 9/WG 18](https://www.iso.org/committee/48836.html).\n\n\u003e **Note:** The `iscc-sdk` library and the accompanying documentation are under active development.\n\u003e API changes and other backward incompatible changes are to be expected until a v1.0 stable\n\u003e release.\n\n## Development\n\n### Setup\n\n```bash\n# Install dependencies\nuv sync\n\n# Install pre-commit hooks (using prek, a fast Rust-based drop-in replacement)\nuv tool install prek\nprek install\nprek install --hook-type pre-push\n```\n\n### Quality Gates\n\nPre-commit hooks run automatically via [prek](https://github.com/j178/prek):\n\n**On commit** (fast, auto-fix):\n\n- File hygiene (line endings, trailing whitespace, EOF)\n- Config validation (YAML, JSON, TOML)\n- Markdown formatting (mdformat)\n- Ruff linting with auto-fix\n- Ruff formatting\n\n**On push** (thorough):\n\n- Type checking (zuban)\n- Security scan (Ruff S rules)\n- Complexity check (Ruff C901)\n- Tests with 100% coverage\n\nRun all hooks manually:\n\n```bash\nprek run --all-files                # pre-commit hooks\nprek run --all-files --hook-stage pre-push  # pre-push hooks\n```\n\n### Testing\n\n```bash\nuv run pytest --cov=iscc_sdk --cov-fail-under=100 -p no:warnings\n```\n\n## Contributing\n\nContributions are welcome! Here's how you can help:\n\n1. **Issues:** Report bugs or suggest features via the\n    [issue tracker](https://github.com/iscc/iscc-sdk/issues)\n2. **Pull Requests:** Submit PRs for bug fixes or new features\n3. **Discussion:** For significant changes, please open an issue first to discuss your plans\n4. **Testing:** Please make sure to update tests as appropriate\n\nJoin our developer chat on Telegram at [https://t.me/iscc_dev](https://t.me/iscc_dev).\n\n## License\n\nThis project is licensed under the Apache 2.0 License - see the LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiscc%2Fiscc-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiscc%2Fiscc-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiscc%2Fiscc-sdk/lists"}