1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
use std::path::Path; use std::time::SystemTime; #[derive(Debug)] pub struct Playlist<'a> { pub meta: PlaylistMeta, pub tracks: Vec<&'a Track<'a>>, } #[derive(Debug)] pub struct PlaylistMeta { pub name: String, pub timestamp: SystemTime, pub playlist_source: PlaylistSource, } #[derive(Debug)] pub enum DownloadSource { MyFreeMp3, } #[derive(Debug)] pub enum PlaylistSource { Soundcloud, Spotify, } #[derive(Debug)] pub struct Track<'a> { pub tags: IDv3Tags, pub meta: &'a TrackMeta<'a>, } #[derive(Debug)] pub struct IDv3Tags { pub title: String, pub artists: Vec<String>, } #[derive(Debug)] pub struct TrackMeta<'a> { pub timestamp: SystemTime, pub dl_info: Option<TrackDownloadInfo<'a>>, } #[derive(Debug)] pub struct TrackDownloadInfo<'a> { pub cache_dir: &'a Path, pub dl_source: DownloadSource, }