<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