modified: src/db.rs
modified: src/dlp.rs modified: src/main.rs modified: src/main_screen.rs modified: src/sync.rs
This commit is contained in:
parent
1657e328fb
commit
fc23d3a7b6
@ -19,7 +19,7 @@ pub struct Track {
|
||||
size: u32,
|
||||
length: u32,
|
||||
year: u32,
|
||||
bitrate: u32,
|
||||
pub bitrate: u32,
|
||||
sample_rate: u32,
|
||||
play_count: u32,
|
||||
pub dbid: u64,
|
||||
@ -30,7 +30,7 @@ pub struct Track {
|
||||
pub title: String,
|
||||
location: String,
|
||||
album: String,
|
||||
artist: String,
|
||||
pub artist: String,
|
||||
genre: String,
|
||||
}
|
||||
|
||||
|
@ -23,6 +23,9 @@ pub async fn download_from_soundcloud(
|
||||
download_dir: &PathBuf,
|
||||
sender: Sender<AppEvent>,
|
||||
) -> std::result::Result<(), Box<dyn std::error::Error>> {
|
||||
let _ = sender
|
||||
.send(AppEvent::SwitchScreen(crate::AppState::LoadingScreen))
|
||||
.await;
|
||||
let dl_rx: Regex = Regex::new(r"\[download\] Downloading item \d+ of \d+").unwrap();
|
||||
|
||||
if download_dir.exists() {
|
||||
|
@ -101,10 +101,6 @@ impl App {
|
||||
},
|
||||
Some(event) = self.receiver.recv() => {
|
||||
match event {
|
||||
AppEvent::IPodFound(path) => {
|
||||
self.state = AppState::MainScreen;
|
||||
let _ = self.sender.send(AppEvent::ParseItunes(path));
|
||||
},
|
||||
AppEvent::IPodNotFound => {
|
||||
let _ = self.sender.send(AppEvent::SearchIPod);
|
||||
},
|
||||
@ -117,15 +113,16 @@ impl App {
|
||||
screen.set_soundcloud_playlists(playlists);
|
||||
},
|
||||
AppEvent::OverallProgress((c, max)) => {
|
||||
self.state = AppState::LoadingScreen;
|
||||
let screen: &mut LoadingScreen = self.get_screen(&AppState::LoadingScreen);
|
||||
screen.progress = Some((c, max));
|
||||
},
|
||||
AppEvent::CurrentProgress(progress) => {
|
||||
self.state = AppState::LoadingScreen;
|
||||
let screen: &mut LoadingScreen = self.get_screen(&AppState::LoadingScreen);
|
||||
screen.s_progress = Some(progress);
|
||||
},
|
||||
AppEvent::SwitchScreen(screen) => {
|
||||
self.state = screen;
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
@ -193,15 +193,14 @@ impl MainScreen {
|
||||
Row::new(vec!["Id", "Title", "Artist", "Bitrate", "Hash"])
|
||||
.style(Style::default().fg(Color::Gray)),
|
||||
);
|
||||
if let Some(s) = &self.soundcloud {
|
||||
for (i, playlist) in s.iter().enumerate() {
|
||||
let date: DateTime<Utc> = playlist.created_at.parse().unwrap();
|
||||
if let Some(s) = &self.tracks {
|
||||
for (i, track) in s.iter().enumerate() {
|
||||
let mut row = Row::new(vec![
|
||||
playlist.id.to_string(),
|
||||
playlist.title.clone(),
|
||||
[playlist.track_count.to_string(), " songs".to_string()].concat(),
|
||||
format!("{}", date.format("%Y-%m-%d %H:%M")),
|
||||
"NO".to_string(),
|
||||
track.unique_id.to_string(),
|
||||
track.title.clone(),
|
||||
track.artist.clone(),
|
||||
track.bitrate.to_string(),
|
||||
format!("{:X}", track.dbid),
|
||||
]);
|
||||
if self.selected_row == i as i32 {
|
||||
row = row.style(Style::default().bg(Color::Yellow));
|
||||
|
@ -16,18 +16,18 @@ use crate::{
|
||||
},
|
||||
db::{self, Track},
|
||||
dlp::{self, DownloadProgress},
|
||||
AppState,
|
||||
};
|
||||
|
||||
pub enum AppEvent {
|
||||
SearchIPod,
|
||||
IPodFound(String),
|
||||
IPodNotFound,
|
||||
ParseItunes(String),
|
||||
ITunesParsed(Vec<Track>),
|
||||
SoundcloudGot(CloudPlaylists),
|
||||
DownloadPlaylist(CloudPlaylist),
|
||||
CurrentProgress(DownloadProgress),
|
||||
OverallProgress((u32, u32)),
|
||||
SwitchScreen(AppState),
|
||||
}
|
||||
|
||||
pub fn initialize_async_service(
|
||||
@ -54,9 +54,9 @@ pub fn initialize_async_service(
|
||||
} else {
|
||||
let _ = sender.send(AppEvent::IPodNotFound).await;
|
||||
}*/
|
||||
let _ = sender.send(AppEvent::IPodFound("/Users/michael/Documents/ipod/iTunes/iTunesDB".to_string())).await;
|
||||
let _ = sender.send(AppEvent::SwitchScreen(AppState::MainScreen)).await;
|
||||
parse_itunes(&database, &sender, "/Users/michael/Documents/ipod/iTunes/iTunesDB".to_string()).await;
|
||||
},
|
||||
AppEvent::ParseItunes(path) => parse_itunes(&database, &sender, path).await,
|
||||
AppEvent::DownloadPlaylist(playlist) => download_playlist(playlist, &database, &sender).await,
|
||||
_ => {}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user