mirror of
https://github.com/TeamNewPipe/NewPipeExtractor
synced 2025-08-22 09:57:38 +00:00
Merge pull request #1344 from FineFindus/fix/invalid-related-id
[YouTube] Correctly set `uploaderUrl` for lockup content type items
This commit is contained in:
commit
af82c7ae0a
@ -179,19 +179,38 @@ public class YoutubeStreamInfoItemLockupExtractor implements StreamInfoItemExtra
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getUploaderUrl() throws ParsingException {
|
public String getUploaderUrl() throws ParsingException {
|
||||||
final String channelId = channelImageViewModel()
|
final JsonObject innerTubeCommand = channelImageViewModel()
|
||||||
.forUploaderUrlExtraction()
|
.forUploaderUrlExtraction()
|
||||||
.getObject("rendererContext")
|
.getObject("rendererContext")
|
||||||
.getObject("commandContext")
|
.getObject("commandContext")
|
||||||
.getObject("onTap")
|
.getObject("onTap")
|
||||||
.getObject("innertubeCommand")
|
.getObject("innertubeCommand");
|
||||||
.getObject("browseEndpoint")
|
final JsonObject browseEndpoint = innerTubeCommand
|
||||||
|
.getObject("browseEndpoint");
|
||||||
|
final String channelId = browseEndpoint
|
||||||
.getString("browseId");
|
.getString("browseId");
|
||||||
|
|
||||||
if (isNullOrEmpty(channelId)) {
|
if (channelId != null && channelId.startsWith("UC")) {
|
||||||
throw new ParsingException("Could not get uploader url");
|
return YoutubeChannelLinkHandlerFactory.getInstance().getUrl("channel/" + channelId);
|
||||||
}
|
}
|
||||||
return YoutubeChannelLinkHandlerFactory.getInstance().getUrl(channelId);
|
|
||||||
|
final String canonicalBaseUrl = browseEndpoint.getString("canonicalBaseUrl");
|
||||||
|
if (!isNullOrEmpty(canonicalBaseUrl)) {
|
||||||
|
return resolveUploaderUrlFromRelativeUrl(canonicalBaseUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
final String webCommandMetadataUrl = innerTubeCommand.getObject("commandMetadata")
|
||||||
|
.getObject("webCommandMetadata")
|
||||||
|
.getString("url");
|
||||||
|
if (!isNullOrEmpty(webCommandMetadataUrl)) {
|
||||||
|
return resolveUploaderUrlFromRelativeUrl(webCommandMetadataUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new ParsingException("Could not get uploader url");
|
||||||
|
}
|
||||||
|
|
||||||
|
private String resolveUploaderUrlFromRelativeUrl(final String url) throws ParsingException {
|
||||||
|
return YoutubeChannelLinkHandlerFactory.getInstance().getUrl("c" + url);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
|
Loading…
x
Reference in New Issue
Block a user