{{ source.name }}
+ player.src = '',
// TODO: Implement
- 'addSongsFromThisSource': async () => []
+ 'addSongsFromThisSource': async () => [],
+ 'loading': {
+ 'requiresLocalFiles': true,
+ 'MIMETypes': 'audio/mp3,audio/wav',
+ // TODO: Implement
+ 'association': async () => []
+ }
};
};
diff --git a/web/src/ts/player/plugins/musickit/index.ts b/web/src/ts/player/plugins/musickit/index.ts
index 159af3f..ccb9821 100644
--- a/web/src/ts/player/plugins/musickit/index.ts
+++ b/web/src/ts/player/plugins/musickit/index.ts
@@ -3,6 +3,9 @@ import type {
PlayerSourcePlugin,
PlayerSourcePluginInitializer
} from '../interface';
+import {
+ addFromAppleMusic
+} from './search';
import {
musicKitPlayback
} from './playback';
@@ -49,7 +52,10 @@ export const useMusicKit: PlayerSourcePluginInitializer = ( storefront: string =
'seekTo': controls.seekTo,
'login': login,
// TODO: Implement
- 'addSongsFromThisSource': async () => []
+ 'addSongsFromThisSource': async () => await addFromAppleMusic(),
+ 'loading': {
+ 'requiresLocalFiles': false
+ }
};
} else {
throw new Error( 'ERR_AUTH' );
diff --git a/web/src/ts/player/plugins/musickit/search/albums.ts b/web/src/ts/player/plugins/musickit/search/albums.ts
new file mode 100644
index 0000000..b65a462
--- /dev/null
+++ b/web/src/ts/player/plugins/musickit/search/albums.ts
@@ -0,0 +1,10 @@
+import type {
+ MusicKitInstance
+} from 'musickitjs-v3-types/MusicKitInstance';
+
+export const searchAlbums = async ( instance: MusicKitInstance, term: string ) => {
+ const addSelected = ( idx: number ) => {
+ // TODO: Load album's songs and return them
+ Promise.resolve();
+ };
+};
diff --git a/web/src/ts/player/plugins/musickit/search/index.ts b/web/src/ts/player/plugins/musickit/search/index.ts
new file mode 100644
index 0000000..6b24781
--- /dev/null
+++ b/web/src/ts/player/plugins/musickit/search/index.ts
@@ -0,0 +1,10 @@
+import type {
+ MusicKitInstance
+} from 'musickitjs-v3-types/MusicKitInstance';
+import type {
+ Song
+} from '@/ts/dtype/playlist';
+
+export const addFromAppleMusic = async ( instance: MusicKitInstance ): Promise