Skip to content

Commit aa6c17d

Browse files
committed
[SoundCloud] Deduplicate some code
1 parent 2fb9922 commit aa6c17d

2 files changed

Lines changed: 24 additions & 41 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudParsingHelper.java

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
11
package org.schabi.newpipe.extractor.services.soundcloud;
22

3-
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
4-
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
5-
import static org.schabi.newpipe.extractor.utils.Utils.replaceHttpWithHttps;
6-
73
import com.grack.nanojson.JsonArray;
84
import com.grack.nanojson.JsonObject;
95
import com.grack.nanojson.JsonParser;
106
import com.grack.nanojson.JsonParserException;
11-
127
import org.jsoup.Jsoup;
138
import org.jsoup.nodes.Document;
149
import org.jsoup.nodes.Element;
@@ -28,6 +23,7 @@
2823
import org.schabi.newpipe.extractor.utils.Parser.RegexException;
2924
import org.schabi.newpipe.extractor.utils.Utils;
3025

26+
import javax.annotation.Nonnull;
3127
import java.io.IOException;
3228
import java.net.MalformedURLException;
3329
import java.net.URL;
@@ -38,7 +34,9 @@
3834
import java.util.List;
3935
import java.util.Map;
4036

41-
import javax.annotation.Nonnull;
37+
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
38+
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
39+
import static org.schabi.newpipe.extractor.utils.Utils.replaceHttpWithHttps;
4240

4341
public final class SoundcloudParsingHelper {
4442
private static String clientId;
@@ -200,6 +198,7 @@ public static String getUsersFromApiMinItems(final int minItems,
200198
*
201199
* @return the next streams url, empty if don't have
202200
*/
201+
@Nonnull
203202
public static String getUsersFromApi(final ChannelInfoItemsCollector collector,
204203
final String apiUrl) throws IOException,
205204
ReCaptchaException, ParsingException {
@@ -221,17 +220,7 @@ public static String getUsersFromApi(final ChannelInfoItemsCollector collector,
221220
}
222221
}
223222

224-
String nextPageUrl;
225-
try {
226-
nextPageUrl = responseObject.getString("next_href");
227-
if (!nextPageUrl.contains("client_id=")) {
228-
nextPageUrl += "&client_id=" + SoundcloudParsingHelper.clientId();
229-
}
230-
} catch (final Exception ignored) {
231-
nextPageUrl = "";
232-
}
233-
234-
return nextPageUrl;
223+
return getNextPageUrl(responseObject);
235224
}
236225

237226
/**
@@ -261,6 +250,7 @@ public static String getStreamsFromApiMinItems(final int minItems,
261250
*
262251
* @return the next streams url, empty if don't have
263252
*/
253+
@Nonnull
264254
public static String getStreamsFromApi(final StreamInfoItemsCollector collector,
265255
final String apiUrl,
266256
final boolean charts) throws IOException,
@@ -288,17 +278,20 @@ public static String getStreamsFromApi(final StreamInfoItemsCollector collector,
288278
}
289279
}
290280

291-
String nextPageUrl;
281+
return getNextPageUrl(responseObject);
282+
}
283+
284+
@Nonnull
285+
private static String getNextPageUrl(@Nonnull final JsonObject response) {
292286
try {
293-
nextPageUrl = responseObject.getString("next_href");
287+
String nextPageUrl = response.getString("next_href");
294288
if (!nextPageUrl.contains("client_id=")) {
295289
nextPageUrl += "&client_id=" + SoundcloudParsingHelper.clientId();
296290
}
291+
return nextPageUrl;
297292
} catch (final Exception ignored) {
298-
nextPageUrl = "";
293+
return "";
299294
}
300-
301-
return nextPageUrl;
302295
}
303296

304297
public static String getStreamsFromApi(final StreamInfoItemsCollector collector,

extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudCommentsExtractor.java

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import org.schabi.newpipe.extractor.downloader.Response;
1616
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
1717
import org.schabi.newpipe.extractor.exceptions.ParsingException;
18+
import org.schabi.newpipe.extractor.exceptions.ReCaptchaException;
1819
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
1920

2021
import java.io.IOException;
@@ -33,22 +34,7 @@ public SoundcloudCommentsExtractor(final StreamingService service,
3334
@Override
3435
public InfoItemsPage<CommentsInfoItem> getInitialPage() throws ExtractionException,
3536
IOException {
36-
final Downloader downloader = NewPipe.getDownloader();
37-
final Response response = downloader.get(getUrl());
38-
39-
final JsonObject json;
40-
try {
41-
json = JsonParser.object().from(response.responseBody());
42-
} catch (final JsonParserException e) {
43-
throw new ParsingException("Could not parse json", e);
44-
}
45-
46-
final CommentsInfoItemsCollector collector = new CommentsInfoItemsCollector(
47-
getServiceId());
48-
49-
collectStreamsFrom(collector, json.getArray("collection"));
50-
51-
return new InfoItemsPage<>(collector, new Page(json.getString("next_href")));
37+
return getPage(getUrl());
5238
}
5339

5440
@Override
@@ -57,9 +43,14 @@ public InfoItemsPage<CommentsInfoItem> getPage(final Page page) throws Extractio
5743
if (page == null || isNullOrEmpty(page.getUrl())) {
5844
throw new IllegalArgumentException("Page doesn't contain an URL");
5945
}
46+
return getPage(page.getUrl());
47+
}
6048

49+
@Nonnull
50+
private InfoItemsPage<CommentsInfoItem> getPage(@Nonnull final String url)
51+
throws ParsingException, IOException, ReCaptchaException {
6152
final Downloader downloader = NewPipe.getDownloader();
62-
final Response response = downloader.get(page.getUrl());
53+
final Response response = downloader.get(url);
6354

6455
final JsonObject json;
6556
try {
@@ -72,8 +63,7 @@ public InfoItemsPage<CommentsInfoItem> getPage(final Page page) throws Extractio
7263
getServiceId());
7364

7465
collectStreamsFrom(collector, json.getArray("collection"));
75-
76-
return new InfoItemsPage<>(collector, new Page(json.getString("next_href")));
66+
return new InfoItemsPage<>(collector, new Page(json.getString("next_href", null)));
7767
}
7868

7969
@Override

0 commit comments

Comments
 (0)