Compare commits
2 commits
f610171d7d
...
63a365d11d
Author | SHA1 | Date | |
---|---|---|---|
63a365d11d | |||
68a00bfe80 |
5 changed files with 20 additions and 18 deletions
24
src/mpd.rs
24
src/mpd.rs
|
@ -5,13 +5,13 @@ use async_std::{
|
|||
};
|
||||
use mpdrs::lsinfo::LsInfoResponse;
|
||||
|
||||
pub(crate) fn host() -> String {
|
||||
pub fn host() -> String {
|
||||
let host = std::env::var("MPD_HOST").unwrap_or("localhost".to_string());
|
||||
let port = std::env::var("MPD_PORT").unwrap_or("6600".to_string());
|
||||
format!("{host}:{port}")
|
||||
}
|
||||
|
||||
pub(crate) fn connect() -> Result<mpdrs::Client, mpdrs::error::Error> {
|
||||
pub fn connect() -> Result<mpdrs::Client, mpdrs::error::Error> {
|
||||
let mut client = mpdrs::Client::connect(host())?;
|
||||
|
||||
let password = std::env::var("MPD_PASSWORD").unwrap_or(String::new());
|
||||
|
@ -22,7 +22,7 @@ pub(crate) fn connect() -> Result<mpdrs::Client, mpdrs::error::Error> {
|
|||
Ok(client)
|
||||
}
|
||||
|
||||
pub(crate) fn ls(path: &str) -> anyhow::Result<Vec<Entry>> {
|
||||
pub fn ls(path: &str) -> anyhow::Result<Vec<Entry>> {
|
||||
let info = connect()?.lsinfo(path)?;
|
||||
|
||||
fn filename(path: &str) -> String {
|
||||
|
@ -54,14 +54,14 @@ pub(crate) fn ls(path: &str) -> anyhow::Result<Vec<Entry>> {
|
|||
.collect())
|
||||
}
|
||||
|
||||
pub(crate) struct QueueItem {
|
||||
pub(crate) file: String,
|
||||
pub(crate) title: String,
|
||||
pub(crate) artist: Option<String>,
|
||||
pub(crate) playing: bool,
|
||||
pub struct QueueItem {
|
||||
pub file: String,
|
||||
pub title: String,
|
||||
pub artist: Option<String>,
|
||||
pub playing: bool,
|
||||
}
|
||||
|
||||
pub(crate) fn playlist() -> anyhow::Result<Vec<QueueItem>> {
|
||||
pub fn playlist() -> anyhow::Result<Vec<QueueItem>> {
|
||||
let mut client = connect()?;
|
||||
|
||||
let current = client.status()?.song;
|
||||
|
@ -80,7 +80,7 @@ pub(crate) fn playlist() -> anyhow::Result<Vec<QueueItem>> {
|
|||
Ok(queue)
|
||||
}
|
||||
|
||||
pub(crate) enum Entry {
|
||||
pub enum Entry {
|
||||
Song {
|
||||
name: String,
|
||||
artist: String,
|
||||
|
@ -96,7 +96,7 @@ pub(crate) enum Entry {
|
|||
},
|
||||
}
|
||||
|
||||
pub(crate) struct Mpd {
|
||||
pub struct Mpd {
|
||||
stream: TcpStream,
|
||||
reader: BufReader<TcpStream>,
|
||||
}
|
||||
|
@ -167,7 +167,7 @@ impl Mpd {
|
|||
self.command("play").await
|
||||
}
|
||||
|
||||
pub(crate) async fn idle(&mut self, systems: &[&str]) -> anyhow::Result<Vec<String>> {
|
||||
pub async fn idle(&mut self, systems: &[&str]) -> anyhow::Result<Vec<String>> {
|
||||
let mut buffer = String::new();
|
||||
|
||||
let systems = systems.join(" ");
|
||||
|
|
BIN
static/placeholder.webp
Normal file
BIN
static/placeholder.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.4 KiB |
|
@ -58,7 +58,11 @@
|
|||
>
|
||||
<span class="material-symbols-outlined" title="Song">music_note</span>
|
||||
<div class="albumart">
|
||||
<img src="/art?path={{ path|urlencode }}" onerror="this.style.visibility = 'hidden'">
|
||||
<img
|
||||
src="/art?path={{ path|urlencode }}"
|
||||
onload="this.style.visibility = 'visible'"
|
||||
alt="Album art"
|
||||
>
|
||||
</div>
|
||||
<div class="song">
|
||||
<div class="song__name">{{ name }}</div>
|
||||
|
|
|
@ -5,11 +5,10 @@
|
|||
{% if let Some(song) = song %}
|
||||
<div class="albumart">
|
||||
<a href="/art?path={{ song.file|urlencode }}" target="_blank">
|
||||
<img
|
||||
<img
|
||||
src="/art?path={{ song.file|urlencode }}"
|
||||
onerror="this.style.opacity = 0"
|
||||
onload="this.style.visibility = 'visible'"
|
||||
alt="Album art"
|
||||
title="Album art"
|
||||
>
|
||||
</a>
|
||||
</div>
|
||||
|
|
|
@ -7,9 +7,8 @@
|
|||
<div class="albumart">
|
||||
<img
|
||||
src="/art?path={{ item.file|urlencode }}"
|
||||
onerror="this.style.opacity = 0"
|
||||
onload="this.style.visibility = 'visible'"
|
||||
alt="Album art"
|
||||
title="Album art"
|
||||
>
|
||||
</div>
|
||||
<div class="metadata">
|
||||
|
|
Loading…
Reference in a new issue