simple/
simple.rs

1use std::env;
2use wolframe_spotify_canvas::{CanvasClient, Result};
3
4#[tokio::main]
5async fn main() -> Result<()> {
6    // 1. Get Access Token from environment or args
7    let access_token = match env::var("SPOTIFY_TOKEN") {
8        Ok(t) => t,
9        Err(_) => {
10            eprintln!("⚠️  SPOTIFY_TOKEN environment variable not set.");
11            eprintln!("   Please set it to a valid Spotify Access Token.");
12            eprintln!("   ");
13            eprintln!("   HOW TO GET A TOKEN:");
14            eprintln!("   1. Open https://open.spotify.com in your browser.");
15            eprintln!("   2. Log in.");
16            eprintln!("   3. Open Developer Tools (F12) -> Network tab.");
17            eprintln!("   4. Filter for 'pathfinder'.");
18            eprintln!("   5. Click any request, go to 'Headers' -> 'Request Headers'.");
19            eprintln!("   6. Copy the 'authorization' header (starts with 'Bearer ...').");
20            eprintln!(
21                "   7. Run: $env:SPOTIFY_TOKEN='...' ; cargo run --example simple (PowerShell)"
22            );
23            return Ok(());
24        }
25    };
26
27    // 2. Initialize Client
28    let mut client = CanvasClient::new();
29
30    // 3. Define a track URI (e.g., "KORE" by Zynyx)
31    let track_uri = "spotify:track:72Xn6x8xqegX64AKeJDsZt";
32
33    println!("Fetching canvas for: {}", track_uri);
34
35    // 4. Fetch
36    match client.get_canvas(track_uri, &access_token).await {
37        Ok(canvas) => {
38            println!("✅ Canvas Found!");
39            println!("   - MP4 URL: {}", canvas.mp4_url);
40            println!("   - Canvas URI: {:?}", canvas.uri);
41        }
42        Err(e) => {
43            eprintln!("❌ Error: {}", e);
44        }
45    }
46
47    Ok(())
48}