Fungus is a music application built with Tauri, React, and TypeScript. It allows users to manage their music library, create playlists, and play songs with various features like shuffle, repeat, and volume control.
Online links are obtained using yt-dlp. If yt-dlp is not installed, online music playback will not be available.
Warning
The playlists, settings, and songs are saved in JSON format and stored in the "Documents" directory as music-data. Be careful not to delete them, as doing so will result in the loss of all data.
- Import songs from local files
- Create and manage playlists
- Search for songs and videos
- Play, pause, skip, and seek songs
- Shuffle and repeat functionality
- Volume control
-
Clone the repository:
git clone https://github.com/JetShen/Fungus cd fungus -
Install dependencies:
npm install
-
Run the development server:
npm run tauri dev
-
Build the application:
npm run tauri build
The application configuration is managed through tauri.conf.json. You can customize various settings like build commands, package information, and security policies.
load(filedir: String): Load music data from a specified file directory.save(filedir: String, data: MusicAppData): Save music data to a specified file directory.getm3u8(url: String): Get the m3u8 file URL usingyt-dlp.getsoundcloud(url: String): Get the best audio quality link of a SoundCloud song usingyt-dlp.
Home: Main component that loads and displays the music player.MusicPlayer: Component that handles the music player functionality.SongList: Component that displays the list of songs.PlaylistSection: Component that displays and manages playlists.PlayerControls: Component that provides controls for playing music.SongItem: Component that displays individual song items.
Song: Represents a song with id, title, artist, and URL.Playlist: Represents a playlist with id, name, and song IDs.MusicAppSettings: Represents the settings of the music app.MusicAppData: Represents the entire music app data including songs, playlists, and settings.
This project is licensed under the MIT License.
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.