diff --git a/src/main/java/me/kavin/piped/server/handlers/auth/FeedHandlers.java b/src/main/java/me/kavin/piped/server/handlers/auth/FeedHandlers.java index 2162a4b..23db0be 100644 --- a/src/main/java/me/kavin/piped/server/handlers/auth/FeedHandlers.java +++ b/src/main/java/me/kavin/piped/server/handlers/auth/FeedHandlers.java @@ -119,16 +119,15 @@ public class FeedHandlers { ) .orderBy(cb.desc(root.get("uploaded"))); - List feedItems = new ObjectArrayList<>(); + List feedItems = s.createQuery(criteria).setTimeout(20).stream() + .parallel().map(video -> { + var channel = video.getChannel(); - for (Video video : s.createQuery(criteria).setTimeout(20).list()) { - var channel = video.getChannel(); - - feedItems.add(new StreamItem("/watch?v=" + video.getId(), video.getTitle(), - rewriteURL(video.getThumbnail()), channel.getUploader(), "/channel/" + channel.getUploaderId(), - rewriteURL(channel.getUploaderAvatar()), null, null, video.getDuration(), video.getViews(), - video.getUploaded(), channel.isVerified(), video.isShort())); - } + return new StreamItem("/watch?v=" + video.getId(), video.getTitle(), + rewriteURL(video.getThumbnail()), channel.getUploader(), "/channel/" + channel.getUploaderId(), + rewriteURL(channel.getUploaderAvatar()), null, null, video.getDuration(), video.getViews(), + video.getUploaded(), channel.isVerified(), video.isShort()); + }).toList(); return mapper.writeValueAsBytes(feedItems); } @@ -173,29 +172,27 @@ public class FeedHandlers { ) .orderBy(cb.desc(root.get("uploaded"))); - List