{"id":31058438,"url":"https://github.com/marcelmay/lib-mobi","last_synced_at":"2025-09-15T07:51:04.763Z","repository":{"id":17453706,"uuid":"49268645","full_name":"marcelmay/lib-mobi","owner":"marcelmay","description":"A simple lib for reading ebook MOBI/AZW3 header data in Java.","archived":false,"fork":false,"pushed_at":"2025-08-29T02:35:57.000Z","size":11152,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-29T06:46:01.110Z","etag":null,"topics":["azw3","ebook","java","mobi"],"latest_commit_sha":null,"homepage":"","language":"Java","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/marcelmay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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,"zenodo":null}},"created_at":"2016-01-08T11:32:58.000Z","updated_at":"2025-08-29T02:35:05.000Z","dependencies_parsed_at":"2023-12-25T09:44:51.419Z","dependency_job_id":"5345c104-1369-4a58-9a10-6db467b8605a","html_url":"https://github.com/marcelmay/lib-mobi","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/marcelmay/lib-mobi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelmay%2Flib-mobi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelmay%2Flib-mobi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelmay%2Flib-mobi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelmay%2Flib-mobi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marcelmay","download_url":"https://codeload.github.com/marcelmay/lib-mobi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelmay%2Flib-mobi/sbom","scorecard":{"id":393605,"data":{"date":"2025-08-11","repo":{"name":"github.com/marcelmay/lib-mobi","commit":"9d54551a974155917f54077961de0ec521b92003"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/4 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":"Maintained","score":10,"reason":"12 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"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":"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":"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":"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":"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":"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":"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":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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":"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":"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 26 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-18T18:25:29.948Z","repository_id":17453706,"created_at":"2025-08-18T18:25:29.948Z","updated_at":"2025-08-18T18:25:29.948Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275225867,"owners_count":25427000,"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-09-15T02:00:09.272Z","response_time":75,"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":["azw3","ebook","java","mobi"],"created_at":"2025-09-15T07:50:58.852Z","updated_at":"2025-09-15T07:51:04.752Z","avatar_url":"https://github.com/marcelmay.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"libmobi\n=======================================\n[![Maven Central](https://img.shields.io/maven-central/v/de.m3y.libmobi/libmobi-core)](https://search.maven.org/search?q=g:de.m3y.libmobi) [![Apache License, Version 2.0, January 2004](https://img.shields.io/github/license/apache/maven.svg?label=License)](LICENSE)\n\nA simple lib for reading MOBI header data in Java.\n\nThe example standalone runner extracts a MOBI - or AZW3 - header and prints it as JSON.\n\nExample (see [MobiHeaderTest](core/src/test/java/de/m3y/mobi/core/MobiHeaderTest.java) class)\n----------------------------------\n\n```java\ntry (final DataInputStream is = ...) { // Open stream for MOBI file\n    final MobiHeader header = MobiHeader.read(is);\n\n    System.out.println(\"ISBN: \" +\n        header.exthHeader.getRecordByTypeCode(MobiHeader.Exth.RecordType.ISBN).data);\n    System.out.println(\"Language: \" +\n        header.exthHeader.getRecordByTypeCode(MobiHeader.Exth.RecordType.LANGUAGE).data);\n}\n```\n\nStandalone runner\n-----------------\nExtracts the MOBI header data and prints it JSON formatted.\n\n```bash\njava -jar standalone/target/libmobi-standalone-1.0-SNAPSHOT.jar my_book.mobi\n```\n\nHow to build\n-----\n\n* Build from source \n\n  `mvn clean install`\n\n  Make sure you got [Maven 3.6+][maven_download] and JDK 1.8+ .\n\n[maven_download]: http://maven.apache.org\n\nExample output from standalone runner\n------\n\n```bash\njava -jar standalone/target/libmobi-standalone-1.0.jar ./core/src/test/resources/progit-en.984.mobi\n```\n```json\n{\n  \"MobiHeader\" : {\n    \"palmDatabaseHeader\" : {\n      \"name\" : \"Pro_Git\",\n      \"attributes\" : 0,\n      \"version\" : 0,\n      \"creationDate\" : 1452046139000,\n      \"modificationDate\" : 1452046149000,\n      \"nextRecordListId\" : 0,\n      \"modificationNumber\" : 0,\n      \"lastBackupDate\" : 0,\n      \"appInfoId\" : 0,\n      \"sortInfoId\" : 0,\n      \"type\" : \"BOOK\",\n      \"creator\" : \"MOBI\",\n      \"uniqueIdSeed\" : 2353,\n      \"numRecords\" : 1176\n    },\n    \"compression\" : \"OLD_MOBIPOCKET_COMPRESSION\",\n    \"textLength\" : 1373193,\n    \"recordCount\" : 336,\n    \"recordSize\" : 4096,\n    \"encryptionType\" : 0,\n    \"identifier\" : \"MOBI\",\n    \"headerLength\" : 264,\n    \"mobiType\" : \"MOBIPOCKET_BOOK\",\n    \"encoding\" : \"UTF-8\",\n    \"uniqueId\" : -492220346,\n    \"fileVersion\" : 6,\n    \"ortographicIndex\" : -1,\n    \"inflectionIndex\" : -1,\n    \"indexNames\" : -1,\n    \"indexKeys\" : -1,\n    \"extraIndex\" : [ -1, -1, -1, -1, -1, -1 ],\n    \"firstNonBookIndex\" : 337,\n    \"fullNameOffset\" : 616,\n    \"fullNameLength\" : 7,\n    \"locale\" : 9,\n    \"inputLanguage\" : 0,\n    \"outputLanguage\" : 0,\n    \"minVersion\" : 6,\n    \"firstImageIndex\" : 340,\n    \"huffmanRecordOffset\" : 0,\n    \"huffmanRecordCount\" : 0,\n    \"huffmanTableOffset\" : 0,\n    \"huffmanTableLength\" : 0,\n    \"hasExth\" : true,\n    \"exthHeader\" : {\n      \"identifier\" : \"EXTH\",\n      \"headerLength\" : 336,\n      \"recordCount\" : 18,\n      \"records\" : [ {\n        \"typeCode\" : 116,\n        \"typeLabel\" : \"START_READING\",\n        \"length\" : 12,\n        \"data\" : \"\\u0000\\u0000\\u0000(\"\n      }, {\n        \"typeCode\" : 542,\n        \"typeLabel\" : \"UNKNOWN_BUT_CHANGES_WITH_FILE_NAME\",\n        \"length\" : 12,\n        \"data\" : \"ExGK\"\n      }, {\n        \"typeCode\" : 524,\n        \"typeLabel\" : \"LANGUAGE\",\n        \"length\" : 10,\n        \"data\" : \"en\"\n      }, {\n        \"typeCode\" : 525,\n        \"typeLabel\" : \"ALIGNMENT\",\n        \"length\" : 21,\n        \"data\" : \"horizontal-lr\"\n      }, {\n        \"typeCode\" : 129,\n        \"typeLabel\" : \"KF8_COVER_URI\",\n        \"length\" : 25,\n        \"data\" : \"kindle:embed:0069\"\n      }, {\n        \"typeCode\" : 131,\n        \"typeLabel\" : \"UNKNOWN\",\n        \"length\" : 12,\n        \"data\" : \"\\u0000\\u0000\\u0000\\uFFFD\"\n      }, {\n        \"typeCode\" : 300,\n        \"typeLabel\" : \"FONT_SIGNATURE\",\n        \"length\" : 78,\n        \"data\" : \"\\u0007\\u0000\\u0000\\u0000\\uFFFD(\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\uFFFD\\u0000 \\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\uFFFD\\uFFFD\\uFFFD\\u0001\\uFFFD\\u0002\\uFFFD@\\uFFFD@\\uFFFD@\\uFFFD@\\uFFFD@\\uFFFD@\\uFFFD@\\uFFFDB\\uFFFDC\\uFFFDF\\uFFFDJ\\uFFFDJ\\uFFFDJ\\uFFFDJ\\uFFFDK\\uFFFD\"\n      }, {\n        \"typeCode\" : 204,\n        \"typeLabel\" : \"CREATOR_SOFTWARE_RECORDS\",\n        \"length\" : 12,\n        \"data\" : \"\\u0000\\u0000\\u0000\\uFFFD\"\n      }, {\n        \"typeCode\" : 205,\n        \"typeLabel\" : \"CREATOR_MAJOR_VERSION\",\n        \"length\" : 12,\n        \"data\" : \"\\u0000\\u0000\\u0000\\u0002\"\n      }, {\n        \"typeCode\" : 206,\n        \"typeLabel\" : \"CREATOR_MINOR_VERSION\",\n        \"length\" : 12,\n        \"data\" : \"\\u0000\\u0000\\u0000\\t\"\n      }, {\n        \"typeCode\" : 535,\n        \"typeLabel\" : \"KINDLEGEN_BUILDREV_NUMBER\",\n        \"length\" : 20,\n        \"data\" : \"0730-890adc2\"\n      }, {\n        \"typeCode\" : 207,\n        \"typeLabel\" : \"CREATOR_BUILD_NUMBER\",\n        \"length\" : 12,\n        \"data\" : \"\\u0000\\u0000\\u0000\\u0000\"\n      }, {\n        \"typeCode\" : 125,\n        \"typeLabel\" : \"COUNT_OF_RESOURCES\",\n        \"length\" : 12,\n        \"data\" : \"\\u0000\\u0000\\u0000\\uFFFD\"\n      }, {\n        \"typeCode\" : 201,\n        \"typeLabel\" : \"COVER_OFFSET\",\n        \"length\" : 12,\n        \"data\" : \"\\u0000\\u0000\\u0000\\u0000\"\n      }, {\n        \"typeCode\" : 203,\n        \"typeLabel\" : \"HAS_FAKE_COVER\",\n        \"length\" : 12,\n        \"data\" : \"\\u0000\\u0000\\u0000\\u0000\"\n      }, {\n        \"typeCode\" : 202,\n        \"typeLabel\" : \"THUMB_OFFSET\",\n        \"length\" : 12,\n        \"data\" : \"\\u0000\\u0000\\u0000\\uFFFD\"\n      }, {\n        \"typeCode\" : 121,\n        \"typeLabel\" : \"KF8_BOUNDARY_OFFSET\",\n        \"length\" : 12,\n        \"data\" : \"\\u0000\\u0000\\u0002#\"\n      }, {\n        \"typeCode\" : 536,\n        \"typeLabel\" : \"CONTAINER_INFO\",\n        \"length\" : 24,\n        \"data\" : \"2400x3840:0-202|\"\n      } ]\n    }\n  }\n}\n```\n\nMisc\n------\nLicensed under [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcelmay%2Flib-mobi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarcelmay%2Flib-mobi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcelmay%2Flib-mobi/lists"}