Compare commits

...

2 commits

Author SHA1 Message Date
63a365d11d
Add album art placeholder
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-08 13:56:10 +02:00
68a00bfe80
Replace all pub(crate)s with pubs 2023-05-08 11:38:07 +02:00
5 changed files with 20 additions and 18 deletions

View file

@ -5,13 +5,13 @@ use async_std::{
}; };
use mpdrs::lsinfo::LsInfoResponse; 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 host = std::env::var("MPD_HOST").unwrap_or("localhost".to_string());
let port = std::env::var("MPD_PORT").unwrap_or("6600".to_string()); let port = std::env::var("MPD_PORT").unwrap_or("6600".to_string());
format!("{host}:{port}") 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 mut client = mpdrs::Client::connect(host())?;
let password = std::env::var("MPD_PASSWORD").unwrap_or(String::new()); 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) 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)?; let info = connect()?.lsinfo(path)?;
fn filename(path: &str) -> String { fn filename(path: &str) -> String {
@ -54,14 +54,14 @@ pub(crate) fn ls(path: &str) -> anyhow::Result<Vec<Entry>> {
.collect()) .collect())
} }
pub(crate) struct QueueItem { pub struct QueueItem {
pub(crate) file: String, pub file: String,
pub(crate) title: String, pub title: String,
pub(crate) artist: Option<String>, pub artist: Option<String>,
pub(crate) playing: bool, pub playing: bool,
} }
pub(crate) fn playlist() -> anyhow::Result<Vec<QueueItem>> { pub fn playlist() -> anyhow::Result<Vec<QueueItem>> {
let mut client = connect()?; let mut client = connect()?;
let current = client.status()?.song; let current = client.status()?.song;
@ -80,7 +80,7 @@ pub(crate) fn playlist() -> anyhow::Result<Vec<QueueItem>> {
Ok(queue) Ok(queue)
} }
pub(crate) enum Entry { pub enum Entry {
Song { Song {
name: String, name: String,
artist: String, artist: String,
@ -96,7 +96,7 @@ pub(crate) enum Entry {
}, },
} }
pub(crate) struct Mpd { pub struct Mpd {
stream: TcpStream, stream: TcpStream,
reader: BufReader<TcpStream>, reader: BufReader<TcpStream>,
} }
@ -167,7 +167,7 @@ impl Mpd {
self.command("play").await 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 mut buffer = String::new();
let systems = systems.join(" "); let systems = systems.join(" ");

BIN
static/placeholder.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

View file

@ -58,7 +58,11 @@
> >
<span class="material-symbols-outlined" title="Song">music_note</span> <span class="material-symbols-outlined" title="Song">music_note</span>
<div class="albumart"> <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>
<div class="song"> <div class="song">
<div class="song__name">{{ name }}</div> <div class="song__name">{{ name }}</div>

View file

@ -5,11 +5,10 @@
{% if let Some(song) = song %} {% if let Some(song) = song %}
<div class="albumart"> <div class="albumart">
<a href="/art?path={{ song.file|urlencode }}" target="_blank"> <a href="/art?path={{ song.file|urlencode }}" target="_blank">
<img <img
src="/art?path={{ song.file|urlencode }}" src="/art?path={{ song.file|urlencode }}"
onerror="this.style.opacity = 0" onload="this.style.visibility = 'visible'"
alt="Album art" alt="Album art"
title="Album art"
> >
</a> </a>
</div> </div>

View file

@ -7,9 +7,8 @@
<div class="albumart"> <div class="albumart">
<img <img
src="/art?path={{ item.file|urlencode }}" src="/art?path={{ item.file|urlencode }}"
onerror="this.style.opacity = 0" onload="this.style.visibility = 'visible'"
alt="Album art" alt="Album art"
title="Album art"
> >
</div> </div>
<div class="metadata"> <div class="metadata">