selene-core 0.5.2

selene-core is the backend for Selene, a local-first music player
Documentation
<h2 align="center"><b>THIS PROJECT IS A WORK IN PROGRESS. FEATURES MAY BE MISSING, NON-FUNCTIONAL, OR BROKEN</b></h2>

# Selene
**Selene** is a local-first, feature packed library handler for all common music types. Designed to be easy and convenient for anyone looking to replace streaming services

# Installation
An arch package is available on the [AUR](https://aur.archlinux.org/packages/selene-player-git).
To install, use your AUR helper of choice, such as `paru`:
```sh
paru -S selene-player-git # Install Selene
systemctl --user enable selene # Run the daemon
```

### Uninstallation
If you are uninstalling selene, after uninstalling the selene package, the remaining files can be cleaned up here:
```sh
rm -rf ~/.config/selene
rm -rf ~/.local/share/selene
rm -rf ~/.local/state/selene
```

# Features
**Selene** comes with a variety of features to make it convenient for anyone to use, be it an average listener, or a music enthusiast

### Library Management
**Selene** treats your source files differently from your library. In making sure **Selene** never corrupts, degrades, or messes with your music permanently, **Selene** will copy all source files into your library. Songs in the library are where non-reversable operations will be applied to your music, like loudness normalization.

<details open>
<summary><h3>Local Features</h3></summary>

- <span style="color:#3a5;">[STABLE]</span> Music playing
- <span style="color:#3a5;">[STABLE]</span> Metadata mangement
- <span style="color:#d90;">[WIP]</span> Playlist management
- <span style="color:#3a5;">[STABLE]</span> Two-pass loudness normalization with [Symphonia]https://github.com/pdeljanov/Symphonia and [ebur128]https://github.com/sdroege/ebur128
- <span style="color:#3a5;">[STABLE]</span> MPRIS support
- [PLANNED] Locally keeping track of listens per track, album, and artist
- [PLANNED] Exporting library with metadata built for various other local media applications (Like VLC)

</details>

<details open>
<summary><h3>Non-Local Features</h3></summary>

- <span style="color:#3a5;">[STABLE]</span> Uploading/Downloading lyrics and synced lyrics from [LRCLIB]https://lrclib.net/
- [PLANNED] Downloading cover art, artist art, and album art from [Last.fm]https://www.last.fm/ or a search query from your desired search engine
- [PLANNED] Scrobbling to [Last.fm]https://www.last.fm/
- [PLANNED] Importing listens from [Last.fm]https://www.last.fm/
- [PLANNED] Getting Artist, Album, and Track recommendations from [Last.fm]https://www.last.fm/

</details>

<details open>
<summary><h3>Supported File Types</h3></summary>

- <span style="color:#3a5;">[STABLE]</span> flac
- <span style="color:#3a5;">[STABLE]</span> mp3
- <span style="color:#3a5;">[STABLE]</span> ogg
- <span style="color:#d90;">[NEEDS TESTING]</span> oga
- <span style="color:#3a5;">[STABLE]</span> wav

Support will extend for any format and codec that [Symphonia](https://github.com/pdeljanov/Symphonia) supports

</details>

# Building from source
<details>
<summary><h3>Prerequisites</h3></summary>

- cargo
- git
- ffmpeg

It is recommended to install **cargo** via [rustup](https://rustup.rs/).

</details>

### 1. Download the repository and navigate to its directory
```sh
git clone https://codeberg.org/CrypticCreator/Selene.git
cd Selene
```

### 2. Install the main binary
```sh
cargo install --path selene-cli
```
*All features are optional

### 3. Run the daemon
```sh
selene run-daemon
```

### 4. Start listening

I will make a wiki soon soon about more config options and initial setup, but for now, your best bet is to use `selene -h` to navigate the help menus