A decentralized music tracking and discovery platform built on AT Protocol 馃幍
at fix/spotify 37 lines 1.0 kB view raw
1use std::{env, sync::Arc}; 2 3use dotenv::dotenv; 4use subscriber::ScrobbleSubscriber; 5use tokio::sync::Mutex; 6 7use crate::webhook_worker::AppState; 8 9pub mod profile; 10pub mod repo; 11pub mod subscriber; 12pub mod types; 13pub mod webhook; 14pub mod webhook_worker; 15pub mod xata; 16 17#[tokio::main] 18async fn main() -> Result<(), anyhow::Error> { 19 dotenv()?; 20 let jetstream_server = env::var("JETSTREAM_SERVER") 21 .unwrap_or_else(|_| "wss://jetstream2.us-west.bsky.network".to_string()); 22 let url = format!( 23 "{}/subscribe?wantedCollections=app.rocksky.*", 24 jetstream_server 25 ); 26 let subscriber = ScrobbleSubscriber::new(&url); 27 28 let redis_url = env::var("REDIS_URL").unwrap_or_else(|_| "redis://127.0.0.1:6379".to_string()); 29 let redis = redis::Client::open(redis_url)?; 30 let queue_key = 31 env::var("WEBHOOK_QUEUE_KEY").unwrap_or_else(|_| "rocksky:webhook_queue".to_string()); 32 33 let state = Arc::new(Mutex::new(AppState { redis, queue_key })); 34 35 subscriber.run(state).await?; 36 Ok(()) 37}