pstream is dead; long live pstream taciturnaxolotl.github.io/pstream-ng/
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

load all movie lists from trakt one after another

Pas a7889d56 65246b8b

+24 -19
+22 -17
src/backend/metadata/traktApi.ts
··· 227 227 228 228 // Process in smaller batches to avoid overwhelming the API 229 229 const batchSize = 10; 230 + const batchPromises: Promise<TMDBMovieData[]>[] = []; 231 + 230 232 for (let i = 0; i < limitedIds.length; i += batchSize) { 231 233 const batch = limitedIds.slice(i, i + batchSize); 232 - const batchPromises = batch.map(async (id) => { 233 - try { 234 - const details = await getMediaDetails( 235 - id.toString(), 236 - TMDBContentTypes.MOVIE, 237 - ); 238 - return details as TMDBMovieData; 239 - } catch (error) { 240 - console.error(`Failed to fetch movie details for ID ${id}:`, error); 241 - return null; 242 - } 243 - }); 244 - 245 - const batchResults = await Promise.all(batchPromises); 246 - const validResults = batchResults.filter( 247 - (result): result is TMDBMovieData => result !== null, 234 + const batchPromise = Promise.all( 235 + batch.map(async (id) => { 236 + try { 237 + const details = await getMediaDetails( 238 + id.toString(), 239 + TMDBContentTypes.MOVIE, 240 + ); 241 + return details as TMDBMovieData; 242 + } catch (error) { 243 + console.error(`Failed to fetch movie details for ID ${id}:`, error); 244 + return null; 245 + } 246 + }), 247 + ).then((batchResults) => 248 + batchResults.filter((result): result is TMDBMovieData => result !== null), 248 249 ); 249 - movieDetails.push(...validResults); 250 + batchPromises.push(batchPromise); 250 251 } 252 + 253 + // Process all batches in parallel 254 + const batchResults = await Promise.all(batchPromises); 255 + movieDetails.push(...batchResults.flat()); 251 256 252 257 return movieDetails; 253 258 };
+2 -2
src/pages/discover/AllMovieLists.tsx
··· 38 38 const lists = await getCuratedMovieLists(); 39 39 setCuratedLists(lists); 40 40 41 - // Fetch movie details for each list 41 + // Fetch movie details for each list one after another 42 42 const details: { [listSlug: string]: TMDBMovieData[] } = {}; 43 43 for (const list of lists) { 44 44 try { 45 45 const movies = await getMovieDetailsForIds(list.tmdbIds, 50); 46 46 if (movies.length > 0) { 47 47 details[list.listSlug] = movies; 48 + setMovieDetails({ ...details }); 48 49 } 49 50 } catch (error) { 50 51 console.error( ··· 53 54 ); 54 55 } 55 56 } 56 - setMovieDetails(details); 57 57 } catch (error) { 58 58 console.error("Failed to fetch curated lists:", error); 59 59 }