@ohene/flow-player
v1.1.4
Published
<div align="center"> <img src="https://raw.githubusercontent.com/your-repo/flow-player/main/assets/logo.png" alt="Flow Player Logo" width="120" />
Readme
Flow Player
TypeScript music management library for web and mobile applications
Overview
Flow Player is a robust TypeScript library for managing music collections, extracting metadata, and organizing playlists. It supports both web and mobile platforms, providing a unified API for music management and playback.
Features
- 🎵 Music collection management
- 📱 Cross-platform metadata extraction (Web & Mobile)
- 🗂️ Playlist creation and organization
- 🔒 Type-safe API
- ⚡ Fast, parallelized metadata extraction
- 🛠️ Simple integration
Installation
npm install @ohene/flow-player
# or
### PlaylistUsage Example
import { Player, WebPlayer, MobilePlayer } from 'flow-player';
import PlaylistDelta from 'flow-player/delta/Playlist';
const songs = [
{ music_path: '/path/to/song1.mp3', isPlaying: false },
{ music_path: '/path/to/song2.mp3', isPlaying: true }
];
const player = new Player(songs);
console.log(player.getCurrentPlaying());
const webPlayer = new WebPlayer(songs);
const metadata = await webPlayer.getCurrentSongMetadata();
const mobilePlayer = new MobilePlayer(songs);
const mobileMetadata = await mobilePlayer.getExpoSongMetadata(songs[0]);
const playlist = new PlaylistDelta(songs, "My Description", "thumb.jpg", "My Playlist");
console.log(playlist.getPlaylistInfo());API Reference
Player (Base Class)
getSongs(): musicDelta[]— Gets all songsgetCurrentPlaying(): musicDelta | undefined— Gets currently playing songplayNext(): void— Moves to next songplayPrevious(): void— Moves to previous songgetShuffledSongs(): musicDelta[]— Returns a shuffled song list
WebPlayer
getCurrentSongMetadata(): Promise<IAudioMetadata["common"] | null>— Gets metadata for current songgetSongMetadata(song: musicDelta): Promise<IAudioMetadata["common"] | null>— Gets metadata for specific songgetSongsMetaData(songs: musicDelta[]): Promise<IAudioMetadata["common"][] | null>— Gets metadata for multiple songs
MobilePlayer
getExpoSongMetadata(song: musicDelta): Promise<MetadataResponse | null>— Gets mobile-optimized metadatagetSongsMetaData(songs: musicDelta[]): Promise<Array<{ path: string, metadata: MetadataResponse | null }>>— Gets metadata for multiple songs in parallel
PlaylistDelta
getPlaylistInfo(): playlistDelta— Gets complete playlist infoaddSongs(songs: musicDelta[]): void— Adds songs to playlistremoveSongsAtIndex(index: number): void— Removes song at indexremoveSongsWithId(id: number): void— Removes song with IDsetThumbnail(thumbnail: string): void— Updates playlist thumbnailsetName(name: string): void— Updates playlist namesetDescription(description: string): void— Updates playlist description
Performance Notes
- Metadata extraction for multiple songs is parallelized for speed
- Song lookups use unique properties for accuracy and efficiency
- Playlist and song lists are kept in sync for reliable state management
License
MIT
getPlaylistInfo(): playlistDelta- Gets complete playlist infoaddSongs(songs: musicDelta[]): void- Adds songs to playlistremoveSongsAtIndex(index: number): void- Removes song at indexremoveSongsWithId(index: number): void- Removes song with IDsetThumbnail(thumbnail: string): void- Updates playlist thumbnailsetName(name: string): void- Updates playlist name
Development
git clone https://github.com/your-repo/flow-player.git
cd flow-player
npm install
npm run buildLicense
MIT
