@@ -174,16 +174,19 @@ public String getUrl() throws ParsingException {
174174
175175 @ Override
176176 public String getSearchSuggestion () throws ParsingException {
177- if (isMusicSearch ()) return "" ;
178-
179- JsonObject showingResultsForRenderer = initialData .getObject ("contents" )
180- .getObject ("twoColumnSearchResultsRenderer" ).getObject ("primaryContents" )
181- .getObject ("sectionListRenderer" ).getArray ("contents" ).getObject (0 )
182- .getObject ("itemSectionRenderer" ).getArray ("contents" ).getObject (0 )
183- .getObject ("showingResultsForRenderer" );
184- if (showingResultsForRenderer == null ) {
185- return "" ;
177+ if (isMusicSearch ()) {
178+ final JsonObject itemSectionRenderer = initialData .getObject ("contents" ).getObject ("sectionListRenderer" )
179+ .getArray ("contents" ).getObject (0 ).getObject ("itemSectionRenderer" );
180+ if (itemSectionRenderer == null ) return "" ;
181+ return getTextFromObject (itemSectionRenderer .getArray ("contents" ).getObject (0 )
182+ .getObject ("didYouMeanRenderer" ).getObject ("correctedQuery" ));
186183 } else {
184+ JsonObject showingResultsForRenderer = initialData .getObject ("contents" )
185+ .getObject ("twoColumnSearchResultsRenderer" ).getObject ("primaryContents" )
186+ .getObject ("sectionListRenderer" ).getArray ("contents" ).getObject (0 )
187+ .getObject ("itemSectionRenderer" ).getArray ("contents" ).getObject (0 )
188+ .getObject ("showingResultsForRenderer" );
189+ if (showingResultsForRenderer == null ) return "" ;
187190 return getTextFromObject (showingResultsForRenderer .getObject ("correctedQuery" ));
188191 }
189192 }
@@ -194,10 +197,13 @@ public InfoItemsPage<InfoItem> getInitialPage() throws ExtractionException, IOEx
194197 final InfoItemsSearchCollector collector = new InfoItemsSearchCollector (getServiceId ());
195198
196199 if (isMusicSearch ()) {
197- JsonArray sections = initialData .getObject ("contents" ).getObject ("sectionListRenderer" )
198- .getArray ("contents" ).getObject (0 ).getObject ("musicShelfRenderer" ).getArray ("contents" );
200+ final JsonArray contents = initialData .getObject ("contents" ).getObject ("sectionListRenderer" ).getArray ("contents" );
199201
200- collectMusicStreamsFrom (collector , sections );
202+ for (Object content : contents ) {
203+ if (((JsonObject ) content ).getObject ("musicShelfRenderer" ) != null ) {
204+ collectMusicStreamsFrom (collector , ((JsonObject ) content ).getObject ("musicShelfRenderer" ).getArray ("contents" ));
205+ }
206+ }
201207 } else {
202208 JsonArray sections = initialData .getObject ("contents" ).getObject ("twoColumnSearchResultsRenderer" )
203209 .getObject ("primaryContents" ).getObject ("sectionListRenderer" ).getArray ("contents" );
@@ -213,8 +219,15 @@ public InfoItemsPage<InfoItem> getInitialPage() throws ExtractionException, IOEx
213219 @ Override
214220 public String getNextPageUrl () throws ExtractionException , IOException {
215221 if (isMusicSearch ()) {
216- return getNextPageUrlFrom (initialData .getObject ("contents" ).getObject ("sectionListRenderer" )
217- .getArray ("contents" ).getObject (0 ).getObject ("musicShelfRenderer" ).getArray ("continuations" ));
222+ final JsonArray contents = initialData .getObject ("contents" ).getObject ("sectionListRenderer" ).getArray ("contents" );
223+
224+ for (Object content : contents ) {
225+ if (((JsonObject ) content ).getObject ("musicShelfRenderer" ) != null ) {
226+ return getNextPageUrlFrom (((JsonObject ) content ).getObject ("musicShelfRenderer" ).getArray ("continuations" ));
227+ }
228+ }
229+
230+ return "" ;
218231 } else {
219232 return getNextPageUrlFrom (initialData .getObject ("contents" ).getObject ("twoColumnSearchResultsRenderer" )
220233 .getObject ("primaryContents" ).getObject ("sectionListRenderer" ).getArray ("contents" )
@@ -517,9 +530,7 @@ public long getStreamCount() throws ParsingException {
517530 }
518531
519532 private String getNextPageUrlFrom (JsonArray continuations ) throws ParsingException , IOException , ReCaptchaException {
520- if (continuations == null ) {
521- return "" ;
522- }
533+ if (continuations == null ) return "" ;
523534
524535 JsonObject nextContinuationData = continuations .getObject (0 ).getObject ("nextContinuationData" );
525536 String continuation = nextContinuationData .getString ("continuation" );
0 commit comments