{"id":15050776,"url":"https://github.com/hendriks73/jitlibrary","last_synced_at":"2026-02-12T22:01:51.336Z","repository":{"id":57727422,"uuid":"412052665","full_name":"hendriks73/jitlibrary","owner":"hendriks73","description":"Java API for the native Apple iTunes Library Framework for Music.app and iTunes (macOS)","archived":false,"fork":false,"pushed_at":"2023-04-13T11:57:38.000Z","size":505,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2025-09-09T21:14:42.163Z","etag":null,"topics":["apple","itunes","itunes-library","java","macos","music","objective-c"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hendriks73.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}},"created_at":"2021-09-30T12:18:55.000Z","updated_at":"2024-07-13T02:31:46.000Z","dependencies_parsed_at":"2023-11-27T13:07:03.500Z","dependency_job_id":"083625a9-cc1f-4013-9a57-face179a4357","html_url":"https://github.com/hendriks73/jitlibrary","commit_stats":{"total_commits":29,"total_committers":1,"mean_commits":29.0,"dds":0.0,"last_synced_commit":"9953584dcecd81a91d3313c4895570fe89cef59e"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hendriks73/jitlibrary","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hendriks73%2Fjitlibrary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hendriks73%2Fjitlibrary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hendriks73%2Fjitlibrary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hendriks73%2Fjitlibrary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hendriks73","download_url":"https://codeload.github.com/hendriks73/jitlibrary/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hendriks73%2Fjitlibrary/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29382864,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T20:34:40.886Z","status":"ssl_error","status_checked_at":"2026-02-12T20:23:00.490Z","response_time":55,"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":["apple","itunes","itunes-library","java","macos","music","objective-c"],"created_at":"2024-09-24T21:29:19.471Z","updated_at":"2026-02-12T22:01:51.307Z","avatar_url":"https://github.com/hendriks73.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![LGPL 2.1](https://img.shields.io/badge/License-LGPL_2.1-blue.svg)](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.tagtraum/jitlibrary/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.tagtraum/jitlibrary)\n[![Build and Test](https://github.com/hendriks73/jitlibrary/workflows/Build%20and%20Test/badge.svg)](https://github.com/hendriks73/jitlibrary/actions)\n[![CodeCov](https://codecov.io/gh/hendriks73/jitlibrary/branch/main/graph/badge.svg?token=H98FM0SKQL)](https://codecov.io/gh/hendriks73/jitlibrary/branch/main)\n\n\n# jITLibrary\n\n*jITLibrary* is a thin wrapper around the Apple\n[iTunes Library Framework](https://developer.apple.com/documentation/ituneslibrary/itlibrary),\nwhich - despite its name - can also be used to access *Music.app* data.\nNote that the API is read-only, just like Apple's framework. For write access, \nsee [Obstmusic](https://github.com/japlscript/obstmusic) or\n[Obstunes](https://github.com/japlscript/obstunes).\n\n\n## Important\n\nYou **must** \n[code sign](https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html)\nyour app to retrieve information with this framework, and\niTunes library access is read-only. This framework is available to users with\niTunes 11 or later (also Music.app).\n        \n\n## Installation\n\njITLibrary is released via [Maven](https://maven.apache.org).\nYou can install it via the following dependency:\n\n```xml\n\u003cdependencies\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ecom.tagtraum\u003c/groupId\u003e\n        \u003cartifactId\u003ejitlibrary\u003c/artifactId\u003e\n    \u003c/dependency\u003e\n\u003c/dependencies\u003e\n```\n\n## Java Module\n\njITLibrary is shipped as a Java module\n(see [JPMS](https://en.wikipedia.org/wiki/Java_Platform_Module_System))\nwith the name `tagtraum.jitlibrary`.\n\n\n## Usage\n\nOnce you have obtained an [ITLibrary](https://hendriks73.github.io/jitlibrary/com/tagtraum/jitlibrary/ITLibrary.html)\ninstance you may access its `ITMediaItem`s and `ITPlaylist`s as you like.\n\nExample:\n\n```java\nimport com.tagtraum.jitlibrary.*;\n\npublic class ListAllMediaItems {\n\n    public static void main(final String args) throws Exception {\n        // get library (blocking call)\n        final ITLibrary itLibrary = ITLibrary.getInstance(true);\n        // get the natively backed collection\n        final ITLibMediaItems allMediaItems = itLibrary.getAllMediaItems();\n        \n        // print size if library\n        final int length = allMediaItems.size();\n        System.out.println(\"Library size: \" + length);\n\n        // iterate over the library and print names and artists\n        for (int i=0; i\u003clength; i++) {\n            final ITLibMediaItem item = allMediaItems.getMediaItem(i);\n            System.out.println(\"Item named \" + item.getName() + \" by \" + item.getArtist());\n        }\n    }\n}\n```\n\nNote that you should not call `ITLibrary.getInstance(..)` from the\nEvent Dispatch Thread (EDT, i.e. the AWT/Swing thread). Also note\nthat this library is not necessarily thread-safe.\n\n\n## Logging\n\njITLibrary uses `java.util.logging`.\n\n\n## Known Shortcomings\n\n- Apple's code signing requirement sucks\n- thread safety may be an issue\n- reloading data after changes my not be quick\n\n\n## API\n\nYou can find the complete\n[API here](https://hendriks73.github.io/jitlibrary/com/tagtraum/jitlibrary/package-summary.html).\n\n\n## Additional Resources\n\n- [iTunes Library Framework](https://developer.apple.com/documentation/ituneslibrary/itlibrary)\n- [Apple's Code Signing Guide](https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html)\n- [Obstmusic](https://github.com/japlscript/obstmusic)\n- [Obstunes](https://github.com/japlscript/obstunes)\n ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhendriks73%2Fjitlibrary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhendriks73%2Fjitlibrary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhendriks73%2Fjitlibrary/lists"}