[package]
edition = "2021"
name = "spotify_player"
version = "0.23.0"
authors = ["Thang Pham <phamducthang1234@gmail.com>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A Spotify player in the terminal with full feature parity"
readme = "README.md"
keywords = [
"spotify",
"tui",
"ratatui",
"player",
]
license = "MIT"
repository = "https://github.com/aome510/spotify-player"
[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-{ target }{ archive-suffix }"
[package.metadata.cargo-machete]
ignored = [
"async-trait",
"vergen",
]
[features]
alsa-backend = [
"streaming",
"librespot-playback/alsa-backend",
]
daemon = [
"daemonize",
"streaming",
]
default = [
"rodio-backend",
"media-control",
]
fzf = ["fuzzy-matcher"]
gstreamer-backend = [
"streaming",
"librespot-playback/gstreamer-backend",
]
image = [
"viuer",
"dep:image",
]
jackaudio-backend = [
"streaming",
"librespot-playback/jackaudio-backend",
]
media-control = [
"souvlaki",
"winit",
"windows",
]
notify = ["notify-rust"]
pixelate = ["image"]
portaudio-backend = [
"streaming",
"librespot-playback/portaudio-backend",
]
pulseaudio-backend = [
"streaming",
"librespot-playback/pulseaudio-backend",
]
rodio-backend = [
"streaming",
"librespot-playback/rodio-backend",
]
rodiojack-backend = [
"streaming",
"librespot-playback/rodiojack-backend",
]
sdl-backend = [
"streaming",
"librespot-playback/sdl-backend",
]
sixel = [
"image",
"viuer/sixel",
]
streaming = [
"librespot-playback",
"librespot-connect",
"rustfft",
]
[[bin]]
name = "spotify_player"
path = "src/main.rs"
[dependencies.anyhow]
version = "1.0.102"
[dependencies.async-trait]
version = "0.1.89"
[dependencies.backtrace]
version = "0.3.76"
[dependencies.chrono]
version = "0.4.44"
[dependencies.chrono-humanize]
version = "0.2.3"
[dependencies.clap]
version = "4.6.0"
features = [
"derive",
"string",
]
[dependencies.clap_complete]
version = "4.6.0"
[dependencies.config_parser2]
version = "0.1.7"
[dependencies.crossterm]
version = "0.29.0"
[dependencies.daemonize]
version = "0.5.0"
optional = true
[dependencies.dirs-next]
version = "2.0.0"
[dependencies.flume]
version = "0.12.0"
[dependencies.futures]
version = "0.3.32"
[dependencies.fuzzy-matcher]
version = "0.3.7"
optional = true
[dependencies.html-escape]
version = "0.2.13"
[dependencies.image]
version = "0.25.10"
optional = true
[dependencies.librespot-connect]
version = "0.8.0"
optional = true
[dependencies.librespot-core]
version = "0.8.0"
[dependencies.librespot-metadata]
version = "0.8.0"
[dependencies.librespot-oauth]
version = "0.8.0"
[dependencies.librespot-playback]
version = "0.8.0"
features = ["native-tls"]
optional = true
default-features = false
[dependencies.log]
version = "0.4.29"
[dependencies.maybe-async]
version = "0.2.10"
[dependencies.notify-rust]
version = "4.12.0"
features = ["d"]
optional = true
default-features = false
[dependencies.parking_lot]
version = "0.12.5"
[dependencies.rand]
version = "0.10.0"
[dependencies.ratatui]
version = "0.30.0"
[dependencies.regex]
version = "1.12.3"
[dependencies.reqwest]
version = "0.13.2"
features = [
"json",
"query",
]
[dependencies.rspotify]
version = "0.15.3"
features = ["cli"]
[dependencies.rustfft]
version = "6"
optional = true
[dependencies.rustls]
version = "0.23.37"
features = ["ring"]
default-features = false
[dependencies.serde]
version = "1.0.228"
features = ["derive"]
[dependencies.serde_json]
version = "1.0.149"
[dependencies.souvlaki]
version = "0.8.3"
optional = true
[dependencies.tokio]
version = "1.50.0"
features = [
"rt",
"rt-multi-thread",
"macros",
"time",
]
[dependencies.toml]
version = "1.1.0"
[dependencies.tracing]
version = "0.1.44"
[dependencies.tracing-subscriber]
version = "0.3.23"
features = ["env-filter"]
[dependencies.ttl_cache]
version = "0.5.1"
[dependencies.unicode-bidi]
version = "0.3.18"
[dependencies.vergen]
version = "=9.0.6"
[dependencies.viuer]
version = "=0.9.2"
optional = true
[dependencies.which]
version = "8.0.2"
[target.'cfg(any(target_os = "windows", target_os = "macos"))'.dependencies.winit]
version = "0.30.13"
optional = true
[target.'cfg(target_os = "windows")'.dependencies.clipboard-win]
version = "5.4.1"
[target.'cfg(target_os = "windows")'.dependencies.windows]
version = "0.58.0"
features = [
"Win32_Foundation",
"Win32_Graphics_Gdi",
"Win32_System_LibraryLoader",
"Win32_UI_WindowsAndMessaging",
]
optional = true
[lints.clippy.cast_possible_truncation]
level = "allow"
priority = 20
[lints.clippy.cast_possible_wrap]
level = "allow"
priority = 20
[lints.clippy.cast_precision_loss]
level = "allow"
priority = 20
[lints.clippy.cast_sign_loss]
level = "allow"
priority = 20
[lints.clippy.complexity]
level = "warn"
priority = 4
[lints.clippy.missing_errors_doc]
level = "allow"
priority = 20
[lints.clippy.module_name_repetitions]
level = "allow"
priority = 20
[lints.clippy.pedantic]
level = "deny"
priority = 1
[lints.clippy.perf]
level = "warn"
priority = 2
[lints.clippy.similar_names]
level = "allow"
priority = 20
[lints.clippy.style]
level = "warn"
priority = 3
[lints.clippy.too_many_lines]
level = "allow"
priority = 20
[lints.rust]
unsafe_code = "deny"