From 934bcb9d9e840f511ffd61d4b75511453a9eb41d Mon Sep 17 00:00:00 2001 From: "alterwain@protonmail.com" Date: Thu, 6 Mar 2025 01:35:39 +0300 Subject: [PATCH] Small fixes --- src/dlp.rs | 1 - src/file_system.rs | 8 ++-- src/loading_screen.rs | 6 +-- src/main.rs | 9 +--- src/main_screen.rs | 4 +- src/screen.rs | 4 +- src/sync.rs | 98 +++++++++++++++++++++++-------------------- src/theme.rs | 29 ------------- src/wait_screen.rs | 6 +-- 9 files changed, 66 insertions(+), 99 deletions(-) delete mode 100644 src/theme.rs diff --git a/src/dlp.rs b/src/dlp.rs index 7cc4024..0fd53c6 100644 --- a/src/dlp.rs +++ b/src/dlp.rs @@ -14,7 +14,6 @@ use crate::sync::AppEvent; pub struct DownloadProgress { pub progress_percentage: String, pub progress_total: String, - pub speed: String, pub eta: String, } diff --git a/src/file_system.rs b/src/file_system.rs index 9b23771..fd1c12d 100644 --- a/src/file_system.rs +++ b/src/file_system.rs @@ -1,6 +1,6 @@ use crate::component::table::SmartTable; use crate::sync::AppEvent; -use crate::{screen::AppScreen, theme::Theme, AppState}; +use crate::{screen::AppScreen, AppState}; use chrono::{DateTime, Utc}; use crossterm::event::KeyCode; use ratatui::layout::{Constraint, Direction, Layout, Rect}; @@ -34,8 +34,8 @@ fn get_extension_from_filename(file_name: Option<&OsStr>) -> String { let index = file_name .chars() .enumerate() - .filter(|(i, c)| *c == '.') - .map(|(i, c)| i) + .filter(|(_i, c)| *c == '.') + .map(|(i, _c)| i) .last(); if let Some(index) = index { let extension: String = file_name.chars().skip(index).collect(); @@ -91,7 +91,7 @@ impl AppScreen for FileSystem { } } - fn render(&self, frame: &mut Frame, _theme: &Theme) { + fn render(&self, frame: &mut Frame) { let chunks = Layout::default() .direction(Direction::Vertical) .constraints([ diff --git a/src/loading_screen.rs b/src/loading_screen.rs index 591a60b..eb8edd9 100644 --- a/src/loading_screen.rs +++ b/src/loading_screen.rs @@ -6,7 +6,7 @@ use ratatui::{ Frame, }; -use crate::{dlp::DownloadProgress, screen::AppScreen, theme::Theme}; +use crate::{dlp::DownloadProgress, screen::AppScreen}; #[derive(Default)] pub struct LoadingScreen { @@ -16,9 +16,9 @@ pub struct LoadingScreen { } impl AppScreen for LoadingScreen { - fn handle_key_event(&mut self, key_event: crossterm::event::KeyEvent) {} + fn handle_key_event(&mut self, _key_event: crossterm::event::KeyEvent) {} - fn render(&self, frame: &mut ratatui::Frame, theme: &Theme) { + fn render(&self, frame: &mut ratatui::Frame) { let chunks = Layout::default() .direction(Direction::Vertical) .constraints([ diff --git a/src/main.rs b/src/main.rs index 3bdc1cc..4f8122f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,4 @@ use crate::file_system::FileSystem; -use crate::theme::Theme; use color_eyre::Result; use crossterm::{ event::{ @@ -33,7 +32,6 @@ mod loading_screen; mod main_screen; mod screen; mod sync; -mod theme; mod util; mod wait_screen; @@ -51,7 +49,6 @@ pub struct App { receiver: Receiver, sender: UnboundedSender, token: CancellationToken, - theme: Theme, } impl Default for App { @@ -76,7 +73,6 @@ impl Default for App { token, state: AppState::IPodWait, screens, - theme: Theme::default(), } } } @@ -92,10 +88,7 @@ impl App { } fn draw(&mut self, frame: &mut Frame) { - self.screens - .get(&self.state) - .unwrap() - .render(frame, &self.theme); + self.screens.get(&self.state).unwrap().render(frame); } async fn handle_events(&mut self, reader: &mut EventStream) { diff --git a/src/main_screen.rs b/src/main_screen.rs index b80f3fe..75a87f7 100644 --- a/src/main_screen.rs +++ b/src/main_screen.rs @@ -12,7 +12,7 @@ use tokio::sync::mpsc::UnboundedSender; use crate::component::table::SmartTable; use crate::sync::{DBPlaylist, YTPlaylist}; -use crate::{screen::AppScreen, sync::AppEvent, theme::Theme, AppState}; +use crate::{screen::AppScreen, sync::AppEvent, AppState}; pub struct MainScreen { mode: bool, @@ -46,7 +46,7 @@ impl AppScreen for MainScreen { } } - fn render(&self, frame: &mut Frame, _theme: &Theme) { + fn render(&self, frame: &mut Frame) { let chunks = Layout::default() .direction(Direction::Vertical) .constraints([ diff --git a/src/screen.rs b/src/screen.rs index dc1fafc..9f847fe 100644 --- a/src/screen.rs +++ b/src/screen.rs @@ -3,12 +3,10 @@ use std::any::Any; use crossterm::event::KeyEvent; use ratatui::Frame; -use crate::theme::Theme; - pub trait AppScreen { fn handle_key_event(&mut self, key_event: KeyEvent); - fn render(&self, frame: &mut Frame, theme: &Theme); + fn render(&self, frame: &mut Frame); fn as_any(&mut self) -> &mut dyn Any; } diff --git a/src/sync.rs b/src/sync.rs index ada1f24..ac6e089 100644 --- a/src/sync.rs +++ b/src/sync.rs @@ -352,7 +352,7 @@ async fn remove_playlist( let pl = pl.unwrap(); let max = pl.elems.len(); let mut i = 1; - for (item, args) in pl.elems.iter() { + for (item, _args) in pl.elems.iter() { let _ = sender .send(AppEvent::OverallProgress((i, max as u32, Color::Red))) .await; @@ -622,7 +622,7 @@ fn get_artwork_db(ipod_path: &str) -> ADatabase { Ok(n) => { return itunesdb::artworkdb::deserializer::parse_bytes(&buf[..n]); } - Err(e) => {} + Err(_e) => {} } } itunesdb::artworkdb::deserializer::new_db() @@ -912,60 +912,66 @@ async fn parse_itunes(sender: &Sender, path: String) -> XDatabase { file.read_to_string(&mut content).await.unwrap(); let config: LyricaConfiguration = toml::from_str(&content).unwrap(); + let yt_sender = sender.clone(); let yt_channel_id = config.get_youtube().user_id.clone(); + tokio::spawn(async move { + let rid = youtube_api::get_channel(yt_channel_id.clone()) + .await + .unwrap(); + let pls = youtube_api::get_playlists(yt_channel_id, rid) + .await + .unwrap(); - let rid = youtube_api::get_channel(yt_channel_id.clone()) - .await - .unwrap(); - let pls = youtube_api::get_playlists(yt_channel_id, rid) - .await - .unwrap(); + let mut yt_v = Vec::new(); - let mut yt_v = Vec::new(); + for pl in pls { + let videos = youtube_api::get_playlist(pl.browse_id).await.unwrap(); + yt_v.push(YTPlaylist { + title: pl.title, + url: pl.pl_url, + videos, + }); + } - for pl in pls { - let videos = youtube_api::get_playlist(pl.browse_id).await.unwrap(); - yt_v.push(YTPlaylist { - title: pl.title, - url: pl.pl_url, - videos, - }); - } + let _ = yt_sender.send(AppEvent::YoutubeGot(yt_v)).await; + }); - let _ = sender.send(AppEvent::YoutubeGot(yt_v)).await; + let soundcloud_user_id = config.get_soundcloud().user_id; + let soundcloud_sender = sender.clone(); + tokio::spawn(async move { + let app_version = soundcloud::get_app().await.unwrap().unwrap(); + let client_id = soundcloud::get_client_id().await.unwrap().unwrap(); + let playlists = + soundcloud::get_playlists(soundcloud_user_id, client_id.clone(), app_version.clone()) + .await + .unwrap(); - let app_version = soundcloud::get_app().await.unwrap().unwrap(); - let client_id = soundcloud::get_client_id().await.unwrap().unwrap(); - let playlists = soundcloud::get_playlists( - config.get_soundcloud().user_id, - client_id.clone(), - app_version.clone(), - ) - .await - .unwrap(); + let mut playlists = playlists.collection; - let mut playlists = playlists.collection; - - for playlist in playlists.iter_mut() { - let trr = playlist.tracks.clone(); - playlist.tracks = Vec::new(); - for pl_tracks in trr.clone().chunks(45) { - if let Ok(tracks) = - soundcloud::get_tracks(pl_tracks.to_vec(), client_id.clone(), app_version.clone()) - .await - { - let mut tracks = tracks; - tracks.retain(|t| t.title.is_some()); - playlist.tracks.append(&mut tracks); + for playlist in playlists.iter_mut() { + let trr = playlist.tracks.clone(); + playlist.tracks = Vec::new(); + for pl_tracks in trr.clone().chunks(45) { + if let Ok(tracks) = soundcloud::get_tracks( + pl_tracks.to_vec(), + client_id.clone(), + app_version.clone(), + ) + .await + { + let mut tracks = tracks; + tracks.retain(|t| t.title.is_some()); + playlist.tracks.append(&mut tracks); + } } } - } - let _ = sender - .send(AppEvent::SoundcloudGot(CloudPlaylists { - collection: playlists, - })) - .await; + let _ = soundcloud_sender + .send(AppEvent::SoundcloudGot(CloudPlaylists { + collection: playlists, + })) + .await; + }); database } diff --git a/src/theme.rs b/src/theme.rs deleted file mode 100644 index deacb12..0000000 --- a/src/theme.rs +++ /dev/null @@ -1,29 +0,0 @@ -use ratatui::style::Color; -use serde::{Deserialize, Serialize}; - -#[derive(Serialize, Deserialize)] -pub struct Theme { - background: u32, - foreground: u32, -} - -impl Theme { - pub fn background(&self) -> Color { - Color::from_u32(self.background) - } - - pub fn foreground(&self) -> Color { - Color::from_u32(self.foreground) - } -} - -impl Default for Theme { - fn default() -> Self { - Self { - background: 0x00D75FAF, - foreground: u32::MAX, - } - } -} - -fn load_theme() {} diff --git a/src/wait_screen.rs b/src/wait_screen.rs index cf8d9d7..732fa41 100644 --- a/src/wait_screen.rs +++ b/src/wait_screen.rs @@ -1,4 +1,4 @@ -use crate::{screen::AppScreen, theme::Theme}; +use crate::screen::AppScreen; use color_eyre::owo_colors::OwoColorize; use ratatui::layout::{Constraint, Direction, Flex, Layout}; use ratatui::widgets::Paragraph; @@ -14,9 +14,9 @@ use tui_big_text::{BigText, PixelSize}; pub struct WaitScreen {} impl AppScreen for WaitScreen { - fn handle_key_event(&mut self, key_event: crossterm::event::KeyEvent) {} + fn handle_key_event(&mut self, _key_event: crossterm::event::KeyEvent) {} - fn render(&self, frame: &mut Frame, theme: &Theme) { + fn render(&self, frame: &mut Frame) { let chunks = Layout::default() .direction(Direction::Vertical) .constraints([Constraint::Percentage(33); 3])