Skip to content

Commit 06a5219

Browse files
authored
Merge pull request #699 from FireMasterK/yt-music-search
Fix YouTube music search.
2 parents 6335823 + f4aad8b commit 06a5219

2 files changed

Lines changed: 11 additions & 9 deletions

File tree

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,7 @@ public String getUrl() throws ParsingException {
121121
@Nonnull
122122
@Override
123123
public String getSearchSuggestion() throws ParsingException {
124-
final JsonObject itemSectionRenderer = initialData.getObject("contents").getObject("sectionListRenderer")
125-
.getArray("contents").getObject(0).getObject("itemSectionRenderer");
124+
final JsonObject itemSectionRenderer = JsonUtils.getArray(JsonUtils.getArray(initialData, "contents.tabbedSearchResultsRenderer.tabs").getObject(0), "tabRenderer.content.sectionListRenderer.contents").getObject(0).getObject("itemSectionRenderer");
126125
if (itemSectionRenderer.isEmpty()) {
127126
return "";
128127
}
@@ -142,16 +141,17 @@ public String getSearchSuggestion() throws ParsingException {
142141
}
143142

144143
@Override
145-
public boolean isCorrectedSearch() {
146-
final JsonObject itemSectionRenderer = initialData.getObject("contents").getObject("sectionListRenderer")
147-
.getArray("contents").getObject(0).getObject("itemSectionRenderer");
144+
public boolean isCorrectedSearch() throws ParsingException {
145+
final JsonObject itemSectionRenderer = JsonUtils.getArray(JsonUtils.getArray(initialData, "contents.tabbedSearchResultsRenderer.tabs").getObject(0), "tabRenderer.content.sectionListRenderer.contents").getObject(0).getObject("itemSectionRenderer");
148146
if (itemSectionRenderer.isEmpty()) {
149147
return false;
150148
}
151149

152-
final JsonObject showingResultsForRenderer = itemSectionRenderer.getArray("contents").getObject(0)
153-
.getObject("showingResultsForRenderer");
154-
return !showingResultsForRenderer.isEmpty();
150+
JsonObject firstContent = itemSectionRenderer.getArray("contents").getObject(0);
151+
152+
final boolean corrected = firstContent
153+
.has("didYouMeanRenderer") || firstContent.has("showingResultsForRenderer");
154+
return corrected;
155155
}
156156

157157
@Nonnull
@@ -165,7 +165,7 @@ public List<MetaInfo> getMetaInfo() {
165165
public InfoItemsPage<InfoItem> getInitialPage() throws ExtractionException, IOException {
166166
final InfoItemsSearchCollector collector = new InfoItemsSearchCollector(getServiceId());
167167

168-
final JsonArray contents = initialData.getObject("contents").getObject("sectionListRenderer").getArray("contents");
168+
final JsonArray contents = JsonUtils.getArray(JsonUtils.getArray(initialData, "contents.tabbedSearchResultsRenderer.tabs").getObject(0), "tabRenderer.content.sectionListRenderer.contents");
169169

170170
Page nextPage = null;
171171

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ public static void setUp() throws Exception {
133133
public static class Suggestion extends DefaultSearchExtractorTest {
134134
private static SearchExtractor extractor;
135135
private static final String QUERY = "megaman x3";
136+
private static final boolean CORRECTED = true;
136137

137138
@BeforeClass
138139
public static void setUp() throws Exception {
@@ -150,6 +151,7 @@ public static void setUp() throws Exception {
150151
@Override public String expectedSearchString() { return QUERY; }
151152
@Nullable @Override public String expectedSearchSuggestion() { return "mega man x3"; }
152153
@Override public InfoItem.InfoType expectedInfoItemType() { return InfoItem.InfoType.STREAM; }
154+
@Override public boolean isCorrectedSearch() { return CORRECTED; }
153155
}
154156

155157
public static class CorrectedSearch extends DefaultSearchExtractorTest {

0 commit comments

Comments
 (0)