mirror of
https://github.com/TeamPiped/Piped-Backend.git
synced 2024-08-14 23:51:41 +00:00
Merge pull request #404 from TeamPiped/item-collector-refractoring
Extract item collectors to a new class.
This commit is contained in:
commit
033657d1f3
2 changed files with 61 additions and 44 deletions
60
src/main/java/me/kavin/piped/utils/CollectionUtils.java
Normal file
60
src/main/java/me/kavin/piped/utils/CollectionUtils.java
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
package me.kavin.piped.utils;
|
||||||
|
|
||||||
|
import me.kavin.piped.utils.obj.ChannelItem;
|
||||||
|
import me.kavin.piped.utils.obj.ContentItem;
|
||||||
|
import me.kavin.piped.utils.obj.PlaylistItem;
|
||||||
|
import me.kavin.piped.utils.obj.StreamItem;
|
||||||
|
import org.schabi.newpipe.extractor.InfoItem;
|
||||||
|
import org.schabi.newpipe.extractor.channel.ChannelInfoItem;
|
||||||
|
import org.schabi.newpipe.extractor.playlist.PlaylistInfoItem;
|
||||||
|
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static me.kavin.piped.utils.URLUtils.rewriteURL;
|
||||||
|
import static me.kavin.piped.utils.URLUtils.substringYouTube;
|
||||||
|
|
||||||
|
public class CollectionUtils {
|
||||||
|
|
||||||
|
public static List<ContentItem> collectRelatedItems(List<? extends InfoItem> items) {
|
||||||
|
return items
|
||||||
|
.stream()
|
||||||
|
.parallel()
|
||||||
|
.map(item -> {
|
||||||
|
if (item instanceof StreamInfoItem)
|
||||||
|
return collectRelatedStream(item);
|
||||||
|
else if (item instanceof PlaylistInfoItem)
|
||||||
|
return collectRelatedPlaylist(item);
|
||||||
|
else if (item instanceof ChannelInfoItem)
|
||||||
|
return collectRelatedChannel(item);
|
||||||
|
else
|
||||||
|
throw new RuntimeException("Unknown item type: " + item.getClass().getName());
|
||||||
|
}).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static StreamItem collectRelatedStream(Object o) {
|
||||||
|
|
||||||
|
StreamInfoItem item = (StreamInfoItem) o;
|
||||||
|
|
||||||
|
return new StreamItem(substringYouTube(item.getUrl()), item.getName(), rewriteURL(item.getThumbnailUrl()),
|
||||||
|
item.getUploaderName(), substringYouTube(item.getUploaderUrl()),
|
||||||
|
rewriteURL(item.getUploaderAvatarUrl()), item.getTextualUploadDate(), item.getShortDescription(), item.getDuration(),
|
||||||
|
item.getViewCount(), item.getUploadDate() != null ? item.getUploadDate().offsetDateTime().toInstant().toEpochMilli() : -1, item.isUploaderVerified(), item.isShortFormContent());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static PlaylistItem collectRelatedPlaylist(Object o) {
|
||||||
|
|
||||||
|
PlaylistInfoItem item = (PlaylistInfoItem) o;
|
||||||
|
|
||||||
|
return new PlaylistItem(substringYouTube(item.getUrl()), item.getName(), rewriteURL(item.getThumbnailUrl()),
|
||||||
|
item.getUploaderName(), item.getPlaylistType().name(), item.getStreamCount());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ChannelItem collectRelatedChannel(Object o) {
|
||||||
|
|
||||||
|
ChannelInfoItem item = (ChannelInfoItem) o;
|
||||||
|
|
||||||
|
return new ChannelItem(substringYouTube(item.getUrl()), item.getName(), rewriteURL(item.getThumbnailUrl()),
|
||||||
|
item.getDescription(), item.getSubscriberCount(), item.getStreamCount(), item.isVerified());
|
||||||
|
}
|
||||||
|
}
|
|
@ -31,7 +31,6 @@ import org.schabi.newpipe.extractor.InfoItem;
|
||||||
import org.schabi.newpipe.extractor.ListExtractor.InfoItemsPage;
|
import org.schabi.newpipe.extractor.ListExtractor.InfoItemsPage;
|
||||||
import org.schabi.newpipe.extractor.Page;
|
import org.schabi.newpipe.extractor.Page;
|
||||||
import org.schabi.newpipe.extractor.channel.ChannelInfo;
|
import org.schabi.newpipe.extractor.channel.ChannelInfo;
|
||||||
import org.schabi.newpipe.extractor.channel.ChannelInfoItem;
|
|
||||||
import org.schabi.newpipe.extractor.channel.ChannelTabInfo;
|
import org.schabi.newpipe.extractor.channel.ChannelTabInfo;
|
||||||
import org.schabi.newpipe.extractor.comments.CommentsInfo;
|
import org.schabi.newpipe.extractor.comments.CommentsInfo;
|
||||||
import org.schabi.newpipe.extractor.comments.CommentsInfoItem;
|
import org.schabi.newpipe.extractor.comments.CommentsInfoItem;
|
||||||
|
@ -42,7 +41,6 @@ import org.schabi.newpipe.extractor.kiosk.KioskInfo;
|
||||||
import org.schabi.newpipe.extractor.kiosk.KioskList;
|
import org.schabi.newpipe.extractor.kiosk.KioskList;
|
||||||
import org.schabi.newpipe.extractor.localization.ContentCountry;
|
import org.schabi.newpipe.extractor.localization.ContentCountry;
|
||||||
import org.schabi.newpipe.extractor.playlist.PlaylistInfo;
|
import org.schabi.newpipe.extractor.playlist.PlaylistInfo;
|
||||||
import org.schabi.newpipe.extractor.playlist.PlaylistInfoItem;
|
|
||||||
import org.schabi.newpipe.extractor.search.SearchInfo;
|
import org.schabi.newpipe.extractor.search.SearchInfo;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YouTubeChannelTabHandler;
|
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YouTubeChannelTabHandler;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamInfo;
|
import org.schabi.newpipe.extractor.stream.StreamInfo;
|
||||||
|
@ -60,6 +58,7 @@ import java.util.stream.Collectors;
|
||||||
import static java.nio.charset.StandardCharsets.UTF_8;
|
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||||
import static me.kavin.piped.consts.Constants.YOUTUBE_SERVICE;
|
import static me.kavin.piped.consts.Constants.YOUTUBE_SERVICE;
|
||||||
import static me.kavin.piped.consts.Constants.mapper;
|
import static me.kavin.piped.consts.Constants.mapper;
|
||||||
|
import static me.kavin.piped.utils.CollectionUtils.collectRelatedItems;
|
||||||
import static me.kavin.piped.utils.URLUtils.*;
|
import static me.kavin.piped.utils.URLUtils.*;
|
||||||
import static org.schabi.newpipe.extractor.NewPipe.getPreferredContentCountry;
|
import static org.schabi.newpipe.extractor.NewPipe.getPreferredContentCountry;
|
||||||
import static org.schabi.newpipe.extractor.NewPipe.getPreferredLocalization;
|
import static org.schabi.newpipe.extractor.NewPipe.getPreferredLocalization;
|
||||||
|
@ -1798,46 +1797,4 @@ public class ResponseHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<ContentItem> collectRelatedItems(List<? extends InfoItem> items) {
|
|
||||||
return items
|
|
||||||
.stream()
|
|
||||||
.parallel()
|
|
||||||
.map(item -> {
|
|
||||||
if (item instanceof StreamInfoItem)
|
|
||||||
return collectRelatedStream(item);
|
|
||||||
else if (item instanceof PlaylistInfoItem)
|
|
||||||
return collectRelatedPlaylist(item);
|
|
||||||
else if (item instanceof ChannelInfoItem)
|
|
||||||
return collectRelatedChannel(item);
|
|
||||||
else
|
|
||||||
throw new RuntimeException("Unknown item type: " + item.getClass().getName());
|
|
||||||
}).toList();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static StreamItem collectRelatedStream(Object o) {
|
|
||||||
|
|
||||||
StreamInfoItem item = (StreamInfoItem) o;
|
|
||||||
|
|
||||||
return new StreamItem(substringYouTube(item.getUrl()), item.getName(), rewriteURL(item.getThumbnailUrl()),
|
|
||||||
item.getUploaderName(), substringYouTube(item.getUploaderUrl()),
|
|
||||||
rewriteURL(item.getUploaderAvatarUrl()), item.getTextualUploadDate(), item.getShortDescription(), item.getDuration(),
|
|
||||||
item.getViewCount(), item.getUploadDate() != null ? item.getUploadDate().offsetDateTime().toInstant().toEpochMilli() : -1, item.isUploaderVerified(), item.isShortFormContent());
|
|
||||||
}
|
|
||||||
|
|
||||||
private static PlaylistItem collectRelatedPlaylist(Object o) {
|
|
||||||
|
|
||||||
PlaylistInfoItem item = (PlaylistInfoItem) o;
|
|
||||||
|
|
||||||
return new PlaylistItem(substringYouTube(item.getUrl()), item.getName(), rewriteURL(item.getThumbnailUrl()),
|
|
||||||
item.getUploaderName(), item.getPlaylistType().name(), item.getStreamCount());
|
|
||||||
}
|
|
||||||
|
|
||||||
private static ChannelItem collectRelatedChannel(Object o) {
|
|
||||||
|
|
||||||
ChannelInfoItem item = (ChannelInfoItem) o;
|
|
||||||
|
|
||||||
return new ChannelItem(substringYouTube(item.getUrl()), item.getName(), rewriteURL(item.getThumbnailUrl()),
|
|
||||||
item.getDescription(), item.getSubscriberCount(), item.getStreamCount(), item.isVerified());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue