//// Fetch Wrapped-style stats and pull out the most-active hour and the //// total scrobble count. //// //// Run with: //// gleam run -m examples/wrapped import gleam/dynamic/decode import gleam/int import gleam/io import rocksky import rocksky/stats pub fn main() { let client = rocksky.new() let assert Ok(payload) = stats.get_wrapped(did: "tsiry-sandratraina.com") |> rocksky.year(2025) |> rocksky.send(client) let summary_decoder = { use total <- decode.optional_field("totalScrobbles", 0, decode.int) use minutes <- decode.optional_field( "totalListeningTimeMinutes", 0, decode.int, ) use most_active_hour <- decode.optional_field( "mostActiveHour", -1, decode.int, ) decode.success(#(total, minutes, most_active_hour)) } let assert Ok(#(total, minutes, hour)) = decode.run(payload, summary_decoder) io.println("scrobbles: " <> int.to_string(total)) io.println("listening minutes: " <> int.to_string(minutes)) io.println("most active hour: " <> int.to_string(hour)) // Without `year` the server falls back to the current year. let _ = stats.get_wrapped(did: "tsiry.bsky.social") |> rocksky.send(client) }