use serde::Deserialize;
#[derive(Debug, Deserialize)]
pub struct Previews {
#[serde(rename = "preview-hq-mp3")]
pub preview_hq_mp3: String,
#[serde(rename = "preview-lq-mp3")]
pub preview_lq_mp3: String,
#[serde(rename = "preview-hq-ogg")]
pub preview_hq_ogg: String,
#[serde(rename = "preview-lq-ogg")]
pub preview_lq_ogg: String,
}
#[derive(Debug, Deserialize)]
pub struct Images {
pub waveform_l: String,
pub waveform_m: String,
pub spectral_l: String,
pub spectral_m: String,
}
#[derive(Debug, Deserialize)]
#[serde(default)] pub struct Sound {
pub id: i32,
#[serde(default)]
pub url: String,
pub name: String,
#[serde(default)]
pub tags: Vec<String>,
#[serde(default)]
pub description: String,
pub geotag: Option<String>,
#[serde(default)]
pub created: String,
pub license: String,
#[serde(rename = "type", default)]
pub sound_type: String,
#[serde(default)]
pub channels: i32,
#[serde(default)]
pub filesize: i32,
pub bitrate: Option<f32>,
pub bitdepth: Option<i32>,
#[serde(default)]
pub duration: f32,
#[serde(default)]
pub samplerate: f32,
pub username: String,
pub pack: Option<String>,
#[serde(default)]
pub download: String,
#[serde(default)]
pub bookmark: String,
#[serde(default)]
pub previews: Option<Previews>,
#[serde(default)]
pub images: Option<Images>,
#[serde(default)]
pub num_downloads: i32,
#[serde(default)]
pub avg_rating: f32,
#[serde(default)]
pub num_ratings: i32,
#[serde(default)]
pub rate: String,
#[serde(default)]
pub comments: String,
#[serde(default)]
pub num_comments: i32,
#[serde(default)]
pub comment: String,
#[serde(default)]
pub similar_sounds: String,
pub analysis: Option<serde_json::Value>,
#[serde(default)]
pub analysis_stats: String,
#[serde(default)]
pub analysis_frames: String,
}
impl Default for Sound {
fn default() -> Self {
Self {
id: 0,
url: String::new(),
name: String::new(),
tags: Vec::new(),
description: String::new(),
geotag: None,
created: String::new(),
license: String::new(),
sound_type: String::new(),
channels: 0,
filesize: 0,
bitrate: None,
bitdepth: None,
duration: 0.0,
samplerate: 0.0,
username: String::new(),
pack: None,
download: String::new(),
bookmark: String::new(),
previews: None,
images: None,
num_downloads: 0,
avg_rating: 0.0,
num_ratings: 0,
rate: String::new(),
comments: String::new(),
num_comments: 0,
comment: String::new(),
similar_sounds: String::new(),
analysis: None,
analysis_stats: String::new(),
analysis_frames: String::new(),
}
}
}