Compare commits

..

No commits in common. "main" and "1.7.2" have entirely different histories.
main ... 1.7.2

3 changed files with 29 additions and 47 deletions

View File

@ -13,12 +13,15 @@ by default are from [chillhop](https://chillhop.com/). Read
## Why? ## Why?
I really hate modern music platforms, and I wanted a small, simple I really hate modern music platforms, and I wanted a small, "suckless"
app that would just play random ambient music without video and other fluff. app that would just play random lofi without video.
Beyond that, it was also designed to be fairly resilient to inconsistent networks, It was also designed to be fairly resilient to inconsistent networks,
and as such it buffers 5 whole songs at a time instead of parts of the same song. and as such it buffers 5 whole songs at a time instead of parts of the same song.
See [Scraping](#scraping) if you're interested in downloading the tracks.
Beware, there's a lot of them.
## Installing ## Installing
> [!NOTE] > [!NOTE]
@ -129,7 +132,7 @@ Yeah, that's it.
> Besides its regular controls, lowfi offers compatibility with Media Keys > Besides its regular controls, lowfi offers compatibility with Media Keys
> and [MPRIS](https://wiki.archlinux.org/title/MPRIS) (with tools like `playerctl`). > and [MPRIS](https://wiki.archlinux.org/title/MPRIS) (with tools like `playerctl`).
> >
> MPRIS is currently an optional feature in cargo (enabled with `--features mpris`) > MPRIS is currently optional feature in cargo (enabled with `--features mpris`)
> due to it being only for Linux, as well as the fact that the main point of > due to it being only for Linux, as well as the fact that the main point of
> lowfi is it's unique & minimal interface. > lowfi is it's unique & minimal interface.
@ -139,43 +142,23 @@ If you have something you'd like to tweak about lowfi, you use additional flags
slightly tweak the UI or behaviour of the menu. The flags can be viewed with `lowfi help`. slightly tweak the UI or behaviour of the menu. The flags can be viewed with `lowfi help`.
| Flag | Function | | Flag | Function |
| ----------------------------------- | --------------------------------------------------- | | ----------------------------------- | ---------------------------------------------- |
| `-a`, `--alternate` | Use an alternate terminal screen | | `-a`, `--alternate` | Use an alternate terminal screen |
| `-m`, `--minimalist` | Hide the bottom control bar | | `-m`, `--minimalist` | Hide the bottom control bar |
| `-b`, `--borderless` | Exclude borders in UI | | `-b`, `--borderless` | Exclude borders in UI |
| `-p`, `--paused` | Start lowfi paused | | `-p`, `--paused` | Start lowfi paused |
| `-f`, `--fps` | FPS of the UI [default: 12] |
| `--timeout` | Timeout in seconds for music downloads [default: 3] |
| `-d`, `--debug` | Include ALSA & other logs | | `-d`, `--debug` | Include ALSA & other logs |
| `-w`, `--width <WIDTH>` | Width of the player, from 0 to 32 [default: 3] | | `-w`, `--width <WIDTH>` | Width of the player, from 0 to 32 [default: 3] |
| `-t`, `--track-list <TRACK_LIST>` | Use a [custom track list](#custom-track-lists) | | `-t`, `--track-list <TRACK_LIST>` | Use a [custom track list](#custom-track-lists) |
| `-s`, `--buffer-size <BUFFER_SIZE>` | Internal song buffer size [default: 5] | | `-s`, `--buffer-size <BUFFER_SIZE>` | Internal song buffer size [default: 5] |
### Extra Features ### Scraping
lowfi uses cargo/rust's "feature" system to make certain parts of the program optional, lowfi also has an optional `scrape` command enabled by the `scrape` feature.
like those which are only expected to be used by a handful of users.
#### `scrape` - Scraping
This feature provides the `scrape` command.
It's usually not very useful, but is included for transparency's sake. It's usually not very useful, but is included for transparency's sake.
More information can be found by running `lowfi help scrape`. More information can be found by running `lowfi help scrape`.
#### `mpris` - MPRIS
Enables MPRIS. It's not rocket science.
#### `extra-audio-formats` - Extra Audio Formats
This is only relevant to those using a custom track list, in which case
it allows for more formats than just MP3. Those are FLAC, Vorbis, and WAV.
These should be sufficient for some 99% of music files people might want to play.
If you dealing with the 1% using another audio format which is in
[this list](https://github.com/pdeljanov/Symphonia?tab=readme-ov-file#codecs-decoders), open an issue.
### Custom Track Lists ### Custom Track Lists
> [!NOTE] > [!NOTE]
@ -185,7 +168,7 @@ If you dealing with the 1% using another audio format which is in
> >
> Feel free to contribute your own list with a PR. > Feel free to contribute your own list with a PR.
lowfi also supports custom track lists, although the default one from chillhop lowfi also supports custom track lists, although the default one from Lofi Girl
is embedded into the binary. is embedded into the binary.
To use a custom list, use the `--track-list` flag. This can either be a path to some file, To use a custom list, use the `--track-list` flag. This can either be a path to some file,
@ -209,7 +192,7 @@ All tracks must be in the MP3 format, unless lowfi has been compiled with the
#### The Format #### The Format
In lists, the first line is what's known as the header, followed by the rest of the tracks. In lists, the first line is what's known as the header, followed by the rest of the tracks.
Each track will be first appended to the header, and then use the combination to download Each track will be first appended to the header, and then use that to download
the track. the track.
> [!NOTE] > [!NOTE]
@ -244,8 +227,8 @@ For example, if you had an entry like this:
Then lowfi would download from the first section, and display the second as the track name. Then lowfi would download from the first section, and display the second as the track name.
`file://` can be used in front a track/header to make lowfi treat it as a local file. You can also prepend `file://` to the header track name, which will make lowfi treat it as a local file.
This is useful if you want to use a local file as the base URL, for example: This is useful if you want to use a local file as the base URL, such as:
```txt ```txt
file:///home/user/Music/ file:///home/user/Music/

View File

@ -42,9 +42,7 @@ impl Bookmarks {
/// Loads bookmarks from the `bookmarks.txt` file. /// Loads bookmarks from the `bookmarks.txt` file.
pub async fn load() -> eyre::Result<Self, BookmarkError> { pub async fn load() -> eyre::Result<Self, BookmarkError> {
let text = fs::read_to_string(Self::path().await?) let text = fs::read_to_string(Self::path().await?).await.unwrap_or_default();
.await
.unwrap_or_default();
let lines: Vec<String> = text let lines: Vec<String> = text
.trim_start_matches("noheader") .trim_start_matches("noheader")

View File

@ -120,10 +120,11 @@ pub async fn scrape() -> eyre::Result<()> {
const IGNORED_TRACKS: [u32; 20] = [ const IGNORED_TRACKS: [u32; 20] = [
// 404 // 404
74707, // Lyrics 74707,
21655, 21773, 8172, 55397, 75135, 24827, 8141, 8157, 64052, 31612, 41956, 8001, 9217, // Lyrics
55372, // Abnormal 21655, 21773, 8172, 55397, 75135, 24827, 8141, 8157, 64052, 31612, 41956, 8001, 9217, 55372,
8469, 7832, 10448, 9446, 9396, // Abnormal
8469, 7832, 10448, 9446, 9396
]; ];
const IGNORED_ARTISTS: [&str; 1] = [ const IGNORED_ARTISTS: [&str; 1] = [