Skip to content
This repository was archived by the owner on Apr 22, 2026. It is now read-only.
jjotaumPublic archive

About

A swift package to facilitate Apple Music API integration for iOS, MacOS, tvOS & watchOS projects.

Topics

Resources

Stars

16 stars

Watchers

1 watching

Forks

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AmuseKit

Warning

This repository is archived and is no longer maintained or supported. Apple introduced native MusicKit support a couple of years ago, and it is now mature enough that this package is no longer needed for most projects. For new Apple platform projects, prefer Apple's native MusicKit APIs or an open source alternative built on top of them such as MusadoraKit.

A swift package to facilitate Apple Music Api integration for iOS, MacOS, tvOS & watchOS projects.

USAGE

Import

import AmuseKit

Init AmuseKit provider.

You can initialize AmuseKit using a StorageConfiguration that specifies service name and keys that will be used to save developer token & user token on keychain.

let configuration = AmuseKit.StorageConfiguration(serviceName: "KEYCHAIN_SERVICE_NAME",
                                                  developerTokenKey: "DEV_TOKEN_KEYCHAIN_KEY",
                                                  userTokenKey: "USER_TOKEN_KEYCHAIN_KEY")
let amuseProvider = AmuseKit.DataProvider(configuration)
amuseProvider.setDeveloperToken("YOUR_DEV_TOKEN")

Set User Token.

amuseProvider.setUserToken("USER_TOKEN")

Set User Country Code.

amuseProvider.setUserCountryCode("USER_COUNTRY_CODE")

Retrieve Apple Music catalog resources by ids.

Supported values are: albums, artists, musicVideos, playlists, songs.

let response = try await amuseProvider.catalog(.albums, ids: ["123", "456", "789"])
print(response.data)
amuseProvider.catalog(.albums, ids: ["123", "456", "789"])
    .sink { _ in
    } receiveValue: { response in
        print(response.data)
    }

Search on Apple Music catalog.

let response = try await amuseProvider.catalogSearch(searchTerm: "YOUR_QUERY_TEXT")
print(response.results?.albums)
print(response.results?.artists)
print(response.results?.musicVideos)
print(response.results?.playlists)
print(response.results?.songs)
print(response.results?.stations)
amuseProvider.catalogSearch(searchTerm: "YOUR_QUERY_TEXT")
    .sink { _ in
    } receiveValue: { response in
        // content will be found under results properties.
        print(response.results?.albums)
        print(response.results?.artists)
        print(response.results?.musicVideos)
        print(response.results?.playlists)
        print(response.results?.songs)
        print(response.results?.stations)
    }

Search on Apple Music catalog for specific resources types.

let response = try await amuseProvider.catalogSearch([.playlists, .songs], searchTerm: "YOUR_QUERY_TEXT")
print(response.results?.playlists)
print(response.results?.songs)
amuseProvider.catalogSearch([.playlists, .songs], searchTerm: "YOUR_QUERY_TEXT")
    .sink { _ in
    } receiveValue: { response in
        print(response.results?.playlists)
        print(response.results?.songs)
    }

Retrieve User Library resources.

Supported values are: albums, artists, musicVideos, playlists, songs.

let response = try await dataProvider.library(.albums)
print(response.data)
amuseProvider.library(.albums)
    .sink { _ in
    } receiveValue: { response in
        print(response.data)
    }

Search on User Library.

let response = try await amuseProvider.librarySearch(searchTerm: "YOUR_QUERY_TEXT")
print(response.results?.albums)
print(response.results?.artists)
print(response.results?.musicVideos)
print(response.results?.playlists)
print(response.results?.songs)
amuseProvider.librarySearch(searchTerm: "YOUR_QUERY_TEXT")
    .sink { _ in
    } receiveValue: { response in
        // content will be found under results properties.
        print(response.results?.albums)
        print(response.results?.artists)
        print(response.results?.musicVideos)
        print(response.results?.playlists)
        print(response.results?.songs)
    }

Search on User Library for specific resources types.

let response = try await amuseProvider.librarySearch([.playlists, .songs], searchTerm: "YOUR_QUERY_TEXT")
print(response.results?.playlists)
print(response.results?.songs)
amuseProvider.librarySearch([.playlists, .songs], searchTerm: "YOUR_QUERY_TEXT")
    .sink { _ in
    } receiveValue: { response in
        print(response.results?.playlists)
        print(response.results?.songs)
    }

About

A swift package to facilitate Apple Music API integration for iOS, MacOS, tvOS & watchOS projects.

Topics

Resources

Stars

16 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages