{"id":15561239,"url":"https://github.com/jjotaum/amusekit","last_synced_at":"2025-04-23T22:24:47.413Z","repository":{"id":43716571,"uuid":"272579618","full_name":"jjotaum/AmuseKit","owner":"jjotaum","description":"A swift package to facilitate Apple Music API integration for iOS, MacOS, tvOS \u0026 watchOS projects.","archived":false,"fork":false,"pushed_at":"2023-02-23T19:59:10.000Z","size":145,"stargazers_count":15,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-23T20:21:48.820Z","etag":null,"topics":["ios","macos","musickit","swift","tvos","watchos"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jjotaum.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}},"created_at":"2020-06-16T01:19:24.000Z","updated_at":"2023-08-29T20:21:21.000Z","dependencies_parsed_at":"2023-02-01T13:16:28.292Z","dependency_job_id":null,"html_url":"https://github.com/jjotaum/AmuseKit","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjotaum%2FAmuseKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjotaum%2FAmuseKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjotaum%2FAmuseKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jjotaum%2FAmuseKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jjotaum","download_url":"https://codeload.github.com/jjotaum/AmuseKit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242254173,"owners_count":20097531,"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","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":["ios","macos","musickit","swift","tvos","watchos"],"created_at":"2024-10-02T16:06:43.462Z","updated_at":"2025-03-06T17:31:48.411Z","avatar_url":"https://github.com/jjotaum.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AmuseKit\nA swift package to facilitate Apple Music Api integration for iOS, MacOS, tvOS \u0026 watchOS projects.\n\n## USAGE\n\n### Import\n```swift\nimport AmuseKit\n```\n\n### Init AmuseKit provider.\n\nYou can initialize AmuseKit using a StorageConfiguration that specifies service name and keys that will be used to save developer token \u0026 user token on keychain.\n\n```swift\nlet configuration = AmuseKit.StorageConfiguration(serviceName: \"KEYCHAIN_SERVICE_NAME\",\n                                                  developerTokenKey: \"DEV_TOKEN_KEYCHAIN_KEY\",\n                                                  userTokenKey: \"USER_TOKEN_KEYCHAIN_KEY\")\nlet amuseProvider = AmuseKit.DataProvider(configuration)\namuseProvider.setDeveloperToken(\"YOUR_DEV_TOKEN\")\n```\n\n### Set User Token.\n\n```swift\namuseProvider.setUserToken(\"USER_TOKEN\")\n```\n\n### Set User Country Code.\n\n```swift\namuseProvider.setUserCountryCode(\"USER_COUNTRY_CODE\")\n```\n\n### Retrieve Apple Music catalog resources by ids.\n\nSupported values are: `albums, artists, musicVideos, playlists, songs`.\n\n```swift\nlet response = try await amuseProvider.catalog(.albums, ids: [\"123\", \"456\", \"789\"])\nprint(response.data)\n```\n\n```swift\namuseProvider.catalog(.albums, ids: [\"123\", \"456\", \"789\"])\n    .sink { _ in\n    } receiveValue: { response in\n        print(response.data)\n    }\n```\n\n### Search on Apple Music catalog.\n\n```swift\nlet response = try await amuseProvider.catalogSearch(searchTerm: \"YOUR_QUERY_TEXT\")\nprint(response.results?.albums)\nprint(response.results?.artists)\nprint(response.results?.musicVideos)\nprint(response.results?.playlists)\nprint(response.results?.songs)\nprint(response.results?.stations)\n```\n\n```swift\namuseProvider.catalogSearch(searchTerm: \"YOUR_QUERY_TEXT\")\n    .sink { _ in\n    } receiveValue: { response in\n        // content will be found under results properties.\n        print(response.results?.albums)\n        print(response.results?.artists)\n        print(response.results?.musicVideos)\n        print(response.results?.playlists)\n        print(response.results?.songs)\n        print(response.results?.stations)\n    }\n```\n\n### Search on Apple Music catalog for specific resources types.\n\n```swift\nlet response = try await amuseProvider.catalogSearch([.playlists, .songs], searchTerm: \"YOUR_QUERY_TEXT\")\nprint(response.results?.playlists)\nprint(response.results?.songs)\n```\n\n```swift\namuseProvider.catalogSearch([.playlists, .songs], searchTerm: \"YOUR_QUERY_TEXT\")\n    .sink { _ in\n    } receiveValue: { response in\n        print(response.results?.playlists)\n        print(response.results?.songs)\n    }\n```\n\n### Retrieve User Library resources.\n\nSupported values are: `albums, artists, musicVideos, playlists, songs`.\n\n```swift\nlet response = try await dataProvider.library(.albums)\nprint(response.data)\n```\n\n```swift\namuseProvider.library(.albums)\n    .sink { _ in\n    } receiveValue: { response in\n        print(response.data)\n    }\n```\n\n### Search on User Library.\n\n```swift\nlet response = try await amuseProvider.librarySearch(searchTerm: \"YOUR_QUERY_TEXT\")\nprint(response.results?.albums)\nprint(response.results?.artists)\nprint(response.results?.musicVideos)\nprint(response.results?.playlists)\nprint(response.results?.songs)\n```\n\n```swift\namuseProvider.librarySearch(searchTerm: \"YOUR_QUERY_TEXT\")\n    .sink { _ in\n    } receiveValue: { response in\n        // content will be found under results properties.\n        print(response.results?.albums)\n        print(response.results?.artists)\n        print(response.results?.musicVideos)\n        print(response.results?.playlists)\n        print(response.results?.songs)\n    }\n```\n\n### Search on User Library for specific resources types.\n\n```swift\nlet response = try await amuseProvider.librarySearch([.playlists, .songs], searchTerm: \"YOUR_QUERY_TEXT\")\nprint(response.results?.playlists)\nprint(response.results?.songs)\n```\n\n```swift\namuseProvider.librarySearch([.playlists, .songs], searchTerm: \"YOUR_QUERY_TEXT\")\n    .sink { _ in\n    } receiveValue: { response in\n        print(response.results?.playlists)\n        print(response.results?.songs)\n    }\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjjotaum%2Famusekit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjjotaum%2Famusekit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjjotaum%2Famusekit/lists"}