mirror of
https://github.com/TeamPiped/Piped-Backend.git
synced 2024-08-14 23:51:41 +00:00
Fix playlist continuation.
This commit is contained in:
parent
8e9547ef8d
commit
0d76c7437e
3 changed files with 28 additions and 14 deletions
|
@ -94,8 +94,10 @@ public class ServerLauncher extends MultithreadedHttpServerLauncher {
|
||||||
}
|
}
|
||||||
}).map("/nextpage/playlists/:playlistId", request -> {
|
}).map("/nextpage/playlists/:playlistId", request -> {
|
||||||
try {
|
try {
|
||||||
return getJsonResponse(ResponseHelper.playlistPageResponse(request.getPathParameter("playlistId"),
|
return getJsonResponse(
|
||||||
request.getQueryParameter("url")), "public, s-maxage=3600");
|
ResponseHelper.playlistPageResponse(request.getPathParameter("playlistId"),
|
||||||
|
request.getQueryParameter("url"), request.getQueryParameter("id")),
|
||||||
|
"public, s-maxage=3600");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return getErrorResponse(e);
|
return getErrorResponse(e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -204,7 +204,7 @@ public class ResponseHelper {
|
||||||
if (info.hasNextPage()) {
|
if (info.hasNextPage()) {
|
||||||
Page page = info.getNextPage();
|
Page page = info.getNextPage();
|
||||||
nextpage = page.getUrl();
|
nextpage = page.getUrl();
|
||||||
id = info.getNextPage().getId();
|
next_id = info.getNextPage().getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
final StreamsPage streamspage = new StreamsPage(nextpage, next_id, relatedStreams);
|
final StreamsPage streamspage = new StreamsPage(nextpage, next_id, relatedStreams);
|
||||||
|
@ -245,34 +245,45 @@ public class ResponseHelper {
|
||||||
item.getTextualUploadDate(), item.getDuration(), item.getViewCount()));
|
item.getTextualUploadDate(), item.getDuration(), item.getViewCount()));
|
||||||
});
|
});
|
||||||
|
|
||||||
String nextpage = info.hasNextPage() ? info.getNextPage().getUrl() : null;
|
String nextpage = null, next_id = null;
|
||||||
|
if (info.hasNextPage()) {
|
||||||
|
Page page = info.getNextPage();
|
||||||
|
nextpage = page.getUrl();
|
||||||
|
next_id = info.getNextPage().getId();
|
||||||
|
}
|
||||||
|
|
||||||
final Playlist playlist = new Playlist(info.getName(), rewriteURL(info.getThumbnailUrl()),
|
final Playlist playlist = new Playlist(info.getName(), rewriteURL(info.getThumbnailUrl()),
|
||||||
rewriteURL(info.getBannerUrl()), nextpage, info.getUploaderName(), info.getUploaderUrl().substring(23),
|
rewriteURL(info.getBannerUrl()), nextpage, next_id, info.getUploaderName(),
|
||||||
rewriteURL(info.getUploaderAvatarUrl()), (int) info.getStreamCount(), relatedStreams);
|
info.getUploaderUrl().substring(23), rewriteURL(info.getUploaderAvatarUrl()),
|
||||||
|
(int) info.getStreamCount(), relatedStreams);
|
||||||
|
|
||||||
return Constants.mapper.writeValueAsBytes(playlist);
|
return Constants.mapper.writeValueAsBytes(playlist);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final byte[] playlistPageResponse(String playlistId, String url)
|
public static final byte[] playlistPageResponse(String playlistId, String url, String id)
|
||||||
throws IOException, ExtractionException, InterruptedException {
|
throws IOException, ExtractionException, InterruptedException {
|
||||||
|
|
||||||
InfoItemsPage<StreamInfoItem> page = PlaylistInfo.getMoreItems(Constants.YOUTUBE_SERVICE,
|
InfoItemsPage<StreamInfoItem> info = PlaylistInfo.getMoreItems(Constants.YOUTUBE_SERVICE,
|
||||||
"https://www.youtube.com/playlist?list=" + playlistId, new Page(url));
|
"https://www.youtube.com/playlist?list=" + playlistId, new Page(url, id));
|
||||||
|
|
||||||
final List<StreamItem> relatedStreams = new ObjectArrayList<>();
|
final List<StreamItem> relatedStreams = new ObjectArrayList<>();
|
||||||
|
|
||||||
page.getItems().forEach(o -> {
|
info.getItems().forEach(o -> {
|
||||||
StreamInfoItem item = o;
|
StreamInfoItem item = o;
|
||||||
relatedStreams.add(new StreamItem(item.getUrl().substring(23), item.getName(),
|
relatedStreams.add(new StreamItem(item.getUrl().substring(23), item.getName(),
|
||||||
rewriteURL(item.getThumbnailUrl()), item.getUploaderName(), item.getUploaderUrl().substring(23),
|
rewriteURL(item.getThumbnailUrl()), item.getUploaderName(), item.getUploaderUrl().substring(23),
|
||||||
item.getTextualUploadDate(), item.getDuration(), item.getViewCount()));
|
item.getTextualUploadDate(), item.getDuration(), item.getViewCount()));
|
||||||
});
|
});
|
||||||
|
|
||||||
String nextpage = page.hasNextPage() ? page.getNextPage().getUrl() : null;
|
String nextpage = null, next_id = null;
|
||||||
|
if (info.hasNextPage()) {
|
||||||
|
Page page = info.getNextPage();
|
||||||
|
nextpage = page.getUrl();
|
||||||
|
next_id = info.getNextPage().getId();
|
||||||
|
}
|
||||||
|
|
||||||
final StreamsPage streamspage = new StreamsPage(nextpage, relatedStreams);
|
final StreamsPage streamspage = new StreamsPage(nextpage, next_id, relatedStreams);
|
||||||
|
|
||||||
return Constants.mapper.writeValueAsBytes(streamspage);
|
return Constants.mapper.writeValueAsBytes(streamspage);
|
||||||
|
|
||||||
|
|
|
@ -4,16 +4,17 @@ import java.util.List;
|
||||||
|
|
||||||
public class Playlist {
|
public class Playlist {
|
||||||
|
|
||||||
public String name, thumbnailUrl, bannerUrl, nextpage, uploader, uploaderUrl, uploaderAvatar;
|
public String name, thumbnailUrl, bannerUrl, nextpage, nextid, uploader, uploaderUrl, uploaderAvatar;
|
||||||
public int videos;
|
public int videos;
|
||||||
public List<StreamItem> relatedStreams;
|
public List<StreamItem> relatedStreams;
|
||||||
|
|
||||||
public Playlist(String name, String thumbnailUrl, String bannerUrl, String nextpage, String uploader,
|
public Playlist(String name, String thumbnailUrl, String bannerUrl, String nextpage, String nextid, String uploader,
|
||||||
String uploaderUrl, String uploaderAvatar, int videos, List<StreamItem> relatedStreams) {
|
String uploaderUrl, String uploaderAvatar, int videos, List<StreamItem> relatedStreams) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.thumbnailUrl = thumbnailUrl;
|
this.thumbnailUrl = thumbnailUrl;
|
||||||
this.bannerUrl = bannerUrl;
|
this.bannerUrl = bannerUrl;
|
||||||
this.nextpage = nextpage;
|
this.nextpage = nextpage;
|
||||||
|
this.nextid = nextid;
|
||||||
this.videos = videos;
|
this.videos = videos;
|
||||||
this.uploader = uploader;
|
this.uploader = uploader;
|
||||||
this.uploaderUrl = uploaderUrl;
|
this.uploaderUrl = uploaderUrl;
|
||||||
|
|
Loading…
Reference in a new issue