<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

<details open>
<summary><strong>Cargo (recommended)</strong></summary>

```sh
cargo install selene-cli --locked
```

</details>

There are plans to package for:
- Arch linux
- Tarball (For linux)
- Zip archive (For windows)

Also see how to [Build from source](#building-from-source)

# 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

<details open>
<summary><strong>Library Management</strong></summary>

**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>

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

- <span style="color:#3a5;">[STABLE]</span> Music playing, of course
- [PLANNED] Locally keep track of listens per track, album, and artist
- [PLANNED] Like and dislike tracks
- <span style="color:#d90;">[WIP]</span> Playlist management
- <span style="color:#3a5;">[STABLE]</span> Loudness normalization (EBU R 128 Standard, Two-pass)
- [PLANNED] Exporting library for various other local media applications (Like VLC)
- <span style="color:#3a5;">[STABLE]</span> Easy metadata mangement (Bulk management planned)

</details>

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

- [PLANNED] 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><strong>Supported File Types</strong></summary>

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

Support for playing video files (Like music videos) may come eventually. Just remember this is a local *music* player, not a local *media* player

</details>


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

- cargo
- git
- ffmpeg
- ffprobe

It is recommended to install **cargo** via [rustup](https://rustup.rs/). **ffmpeg** also usually comes with **ffprobe**</sub>

</details>

Run this to download the repository:
```sh
git clone https://codeberg.org/CrypticCreator/Selene.git
cd Selene
```
And then to install:
```sh
cargo install --path selene-cli --locked
```
