From 21a52e65eb85dc47adb5614f8d4328f48ae1eba5 Mon Sep 17 00:00:00 2001 From: niku Date: Sun, 9 Apr 2023 12:17:17 +0200 Subject: [PATCH] Some easy of access + readme --- .env.sample | 6 +++--- README.md | 29 ++++++++++++++++++++++++++- assets/screenshot.png | Bin 0 -> 14012 bytes justfile | 24 +++++++++++++++++++--- src/main.rs | 15 +++++++------- systemd/lfm-discord-presence.service | 11 ++++++++++ 6 files changed, 71 insertions(+), 14 deletions(-) create mode 100644 assets/screenshot.png create mode 100644 systemd/lfm-discord-presence.service diff --git a/.env.sample b/.env.sample index 5d9ab2f..3c1574b 100644 --- a/.env.sample +++ b/.env.sample @@ -1,3 +1,3 @@ -DISCORD_APP_ID= -LASTFM_USERNAME= -LASTFM_API_KEY= +DISCORD_APP_ID="906984497524903937" +LASTFM_API_KEY="71e8ca3f186b0a68342577b4401658e4" +LASTFM_USERNAME="strnophix" diff --git a/README.md b/README.md index 29025db..456b7ba 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,29 @@ # lfm-discord-presence -Discord RPC for LastFM +Discord Rich Presence for LastFM. + +![](./assets/screenshot.png) + +## Dependencies +- [Rust](https://www.rust-lang.org/) +- [Just](https://github.com/casey/just) + +## Usage +### Setup +```bash +git clone https://git.cesium.pw/niku/lfm-discord-presence.git && cd $_ +cp .env.sample .env +``` +### Using systemd +Install: +```bash +just install +``` +Uninstall: +```bash +just uninstall +``` + +### Using cargo +```bash +cargo run +``` \ No newline at end of file diff --git a/assets/screenshot.png b/assets/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..77a55b2b64f708eec17f16626f9d51809b9421b5 GIT binary patch literal 14012 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 literal 0 HcmV?d00001 diff --git a/justfile b/justfile index f81e607..590f536 100644 --- a/justfile +++ b/justfile @@ -1,6 +1,24 @@ load-dotenv: - set -a; source .env; set +a + set -a; source ./.env; set +a build-release: - cross build --target x86_64-pc-windows-gnu --release - cross build --target x86_64-unknown-linux-gnu --release \ No newline at end of file + cargo build --target x86_64-unknown-linux-gnu --release + +install: + just build-release + sudo cp ./target/x86_64-unknown-linux-gnu/release/lfm-discord-presence /usr/local/bin + + mkdir -p ~/.config/systemd/user + cp ./systemd/lfm-discord-presence.service ~/.config/systemd/user + + sed -i "s/LASTFM_USERNAME/$LASTFM_USERNAME/g" ~/.config/systemd/user/lfm-discord-presence.service + + systemctl enable --user lfm-discord-presence.service --now + +uninstall: + systemctl disable --user lfm-discord-presence.service --now + sudo rm /usr/local/bin/lfm-discord-presence + +reinstall: + just uninstall + just install diff --git a/src/main.rs b/src/main.rs index b26242c..649204e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,19 +13,20 @@ use tokio::{ sync::oneshot::{self, channel}, }; +const DISCORD_APP_ID: &'static str = env!("DISCORD_APP_ID", "Missing DISCORD_APP_ID in env"); +const LFM_API_KEY: &'static str = env!("LASTFM_API_KEY", "Missing LASTFM_API_KEY in env"); + #[tokio::main] async fn main() -> Result<(), Box> { - let discord_app_id = env::var("DISCORD_APP_ID").expect("Missing DISCORD_APP_ID in env"); - let lfm_username = env::var("LASTFM_USERNAME").expect("Missing LASTFM_USERNAME in env"); - let lfm_api_key = env::var("LASTFM_API_KEY").expect("Missing LASTFM_API_KEY in env"); - let (send_stop, mut recv_stop) = channel::<()>(); - let mut lfm = lastfm_rs::Client::new(lfm_api_key.as_str()); + let lfm_username = std::env::args() + .nth(1) + .expect("No LastFM username provided"); + let mut lfm = lastfm_rs::Client::new(LFM_API_KEY); let _ipc_client = Arc::new(Mutex::new( - DiscordIpcClient::new(discord_app_id.as_str()) - .expect("failed to create Discord IPC-client"), + DiscordIpcClient::new(DISCORD_APP_ID).expect("failed to create Discord IPC-client"), )); let _ipc_client2 = Arc::clone(&_ipc_client); diff --git a/systemd/lfm-discord-presence.service b/systemd/lfm-discord-presence.service new file mode 100644 index 0000000..73676d7 --- /dev/null +++ b/systemd/lfm-discord-presence.service @@ -0,0 +1,11 @@ +[Unit] +Description=Discord Rich Presence for LastFM +After=network.target + +[Service] +Type=simple +ExecStart=/usr/local/bin/lfm-discord-presence LASTFM_USERNAME +Restart=always + +[Install] +WantedBy=multi-user.target