A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd

Fetch artists by name instead of paginating

+19 -28
+19 -28
crates/library/src/artists.rs
··· 34 34 thread::spawn(move || { 35 35 let runtime = tokio::runtime::Runtime::new().unwrap(); 36 36 let result = runtime.block_on(async { 37 - let mut offset = 0; 38 - let limit = 500; 37 + let artists = repo::artist::all(pool.clone()).await?; 38 + let artists = artists.into_iter().filter(|v| v.image.is_none()); 39 39 let mut artist_map: HashMap<String, Artist> = HashMap::new(); 40 + let names = artists.map(|artist| artist.name).collect::<Vec<String>>(); 40 41 41 - loop { 42 - let client = reqwest::Client::new(); 43 - let response = client 44 - .get(format!( 45 - "{}/xrpc/app.rocksky.artist.getArtists", 46 - ROCKSKY_API 47 - )) 48 - .query(&[("limit", limit), ("offset", offset)]) 49 - .send() 50 - .await?; 51 - let text = response.text().await?; 52 - let response: Artists = serde_json::from_str(&text)?; 53 - let artists = response.artists; 42 + let client = reqwest::Client::new(); 43 + let response = client 44 + .get(format!( 45 + "{}/xrpc/app.rocksky.artist.getArtists", 46 + ROCKSKY_API 47 + )) 48 + .query(&[("names", names.join(","))]) 49 + .send() 50 + .await?; 51 + let text = response.text().await?; 52 + let response: Artists = serde_json::from_str(&text)?; 53 + let artists = response.artists; 54 54 55 - for artist in artists.clone() { 56 - println!("Loading artist: {}", artist.name.bright_green()); 57 - artist_map.insert(artist.name.clone(), artist); 58 - } 59 - 60 - if artists.is_empty() { 61 - break; 62 - } 63 - 64 - offset += limit; 65 - println!("Loaded {} artists", offset); 55 + for artist in artists.clone() { 56 + println!("Loading artist: {}", artist.name.bright_green()); 57 + artist_map.insert(artist.name.clone(), artist); 66 58 } 67 59 68 - let artists = repo::artist::all(pool.clone()).await?; 69 - let artists = artists.into_iter().filter(|v| v.image.is_none()); 60 + println!("Loaded {} artists", artists.len()); 70 61 71 62 for artist in artists { 72 63 println!("Updating artist: {}", artist.name.bright_green());
macos/Rockbox.xcodeproj/project.xcworkspace/xcuserdata/tsirysandratraina.xcuserdatad/UserInterfaceState.xcuserstate

This is a binary file and will not be displayed.