Skip to content

Commit cf0f2af

Browse files
committed
Extract uploader url from certain YouTube Music videos
1 parent aa8cea4 commit cf0f2af

2 files changed

Lines changed: 20 additions & 7 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeSearchExtractor.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -394,12 +394,25 @@ public String getUploaderName() throws ParsingException {
394394

395395
@Override
396396
public String getUploaderUrl() throws ParsingException {
397-
if (searchType.equals(MUSIC_VIDEOS)) return null;
398-
JsonObject navigationEndpoint = info.getArray("flexColumns")
399-
.getObject(1).getObject("musicResponsiveListItemFlexColumnRenderer")
400-
.getObject("text").getArray("runs").getObject(0).getObject("navigationEndpoint");
401-
if (navigationEndpoint == null) return null;
402-
String url = getUrlFromNavigationEndpoint(navigationEndpoint);
397+
String url = null;
398+
399+
if (searchType.equals(MUSIC_VIDEOS)) {
400+
JsonArray items = info.getObject("menu").getObject("menuRenderer").getArray("items");
401+
for (Object item : items) {
402+
JsonObject menuNavigationItemRenderer = ((JsonObject) item).getObject("menuNavigationItemRenderer");
403+
if (menuNavigationItemRenderer != null && menuNavigationItemRenderer.getObject("icon").getString("iconType").equals("ARTIST")) {
404+
url = getUrlFromNavigationEndpoint(menuNavigationItemRenderer.getObject("navigationEndpoint"));
405+
break;
406+
}
407+
}
408+
} else {
409+
JsonObject navigationEndpoint = info.getArray("flexColumns")
410+
.getObject(1).getObject("musicResponsiveListItemFlexColumnRenderer")
411+
.getObject("text").getArray("runs").getObject(0).getObject("navigationEndpoint");
412+
if (navigationEndpoint == null) return null;
413+
url = getUrlFromNavigationEndpoint(navigationEndpoint);
414+
}
415+
403416
if (url != null && !url.isEmpty()) return url;
404417
throw new ParsingException("Could not get uploader url");
405418
}

extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/search/YoutubeSearchExtractorMusicTest.java renamed to extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/search/YoutubeMusicSearchExtractorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import static java.util.Collections.singletonList;
1717
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
1818

19-
public class YoutubeSearchExtractorMusicTest {
19+
public class YoutubeMusicSearchExtractorTest {
2020
public static class MusicSongs extends DefaultSearchExtractorTest {
2121
private static SearchExtractor extractor;
2222
private static final String QUERY = "mocromaniac";

0 commit comments

Comments
 (0)