Skip to content

Commit 725b35e

Browse files
committed
merge with changes from master
2 parents e2b7cb9 + f308755 commit 725b35e

44 files changed

Lines changed: 738 additions & 274 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

NewPipeExtractor.iml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module external.linked.project.id=":NewPipeExtractor" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
3+
<component name="FacetManager">
4+
<facet type="java-gradle" name="Java-Gradle">
5+
<configuration>
6+
<option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
7+
<option name="BUILDABLE" value="true" />
8+
</configuration>
9+
</facet>
10+
</component>
11+
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
12+
<output url="file://$MODULE_DIR$/build/classes/java/main" />
13+
<output-test url="file://$MODULE_DIR$/build/classes/java/test" />
14+
<exclude-output />
15+
<content url="file://$MODULE_DIR$">
16+
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
17+
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
18+
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
19+
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
20+
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
21+
</content>
22+
<orderEntry type="inheritedJdk" />
23+
<orderEntry type="sourceFolder" forTests="false" />
24+
<orderEntry type="library" exported="" scope="PROVIDED" name="nanojson-1.1" level="project" />
25+
<orderEntry type="library" exported="" scope="PROVIDED" name="jsoup-1.9.2" level="project" />
26+
<orderEntry type="library" exported="" scope="PROVIDED" name="rhino-1.7.7.1" level="project" />
27+
<orderEntry type="library" exported="" scope="TEST" name="junit-4.12" level="project" />
28+
<orderEntry type="library" exported="" scope="TEST" name="hamcrest-core-1.3" level="project" />
29+
</component>
30+
</module>

build.gradle

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
apply plugin: 'java-library'
22

3+
allprojects {
4+
sourceCompatibility = 1.7
5+
targetCompatibility = 1.7
6+
}
7+
38
repositories {
49
jcenter()
510
}
611

712
dependencies {
8-
implementation 'com.github.openjson:openjson:1.0.8'
13+
implementation 'com.grack:nanojson:1.1'
914
implementation 'org.jsoup:jsoup:1.9.2'
1015
implementation 'org.mozilla:rhino:1.7.7.1'
1116

1217
testImplementation 'junit:junit:4.12'
13-
14-
sourceCompatibility = 1.7
15-
targetCompatibility = 1.7
1618
}
1719

1820
task sourcesJar(type: Jar, dependsOn: classes) {

settings.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1+
include ':'
12
rootProject.name = 'NewPipeExtractor'

src/main/java/org/schabi/newpipe/extractor/ListExtractor.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,19 @@ public static class NextItemsResult {
6969
*/
7070
public final String nextItemsUrl;
7171

72-
public NextItemsResult(List<InfoItem> nextItemsList, String nextItemsUrl) {
72+
/**
73+
* Errors that happened during the extraction
74+
*/
75+
public final List<Throwable> errors;
76+
77+
public NextItemsResult(InfoItemCollector collector, String nextItemsUrl) {
78+
this(collector.getItemList(), nextItemsUrl, collector.getErrors());
79+
}
80+
81+
public NextItemsResult(List<InfoItem> nextItemsList, String nextItemsUrl, List<Throwable> errors) {
7382
this.nextItemsList = nextItemsList;
7483
this.nextItemsUrl = nextItemsUrl;
84+
this.errors = errors;
7585
}
7686

7787
public boolean hasMoreStreams() {

src/main/java/org/schabi/newpipe/extractor/search/InfoItemSearchCollector.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import org.schabi.newpipe.extractor.channel.ChannelInfoItemExtractor;
66
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
77
import org.schabi.newpipe.extractor.exceptions.FoundAdException;
8+
import org.schabi.newpipe.extractor.playlist.PlaylistInfoItemCollector;
9+
import org.schabi.newpipe.extractor.playlist.PlaylistInfoItemExtractor;
810
import org.schabi.newpipe.extractor.stream.StreamInfoItemCollector;
911
import org.schabi.newpipe.extractor.stream.StreamInfoItemExtractor;
1012

@@ -32,13 +34,15 @@ public class InfoItemSearchCollector extends InfoItemCollector {
3234
private String suggestion = "";
3335
private StreamInfoItemCollector streamCollector;
3436
private ChannelInfoItemCollector userCollector;
37+
private PlaylistInfoItemCollector playlistCollector;
3538

3639
private SearchResult result = new SearchResult();
3740

3841
InfoItemSearchCollector(int serviceId) {
3942
super(serviceId);
4043
streamCollector = new StreamInfoItemCollector(serviceId);
4144
userCollector = new ChannelInfoItemCollector(serviceId);
45+
playlistCollector = new PlaylistInfoItemCollector(serviceId);
4246
}
4347

4448
public void setSuggestion(String suggestion) {
@@ -49,6 +53,7 @@ public SearchResult getSearchResult() throws ExtractionException {
4953

5054
addFromCollector(userCollector);
5155
addFromCollector(streamCollector);
56+
addFromCollector(playlistCollector);
5257

5358
result.suggestion = suggestion;
5459
result.errors = getErrors();
@@ -74,4 +79,14 @@ public void commit(ChannelInfoItemExtractor extractor) {
7479
addError(e);
7580
}
7681
}
82+
83+
public void commit(PlaylistInfoItemExtractor extractor) {
84+
try {
85+
result.resultList.add(playlistCollector.extract(extractor));
86+
} catch (FoundAdException ae) {
87+
System.err.println("Found ad");
88+
} catch (Exception e) {
89+
addError(e);
90+
}
91+
}
7792
}

src/main/java/org/schabi/newpipe/extractor/search/SearchEngine.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
44

55
import java.io.IOException;
6-
import java.util.EnumSet;
76

87
/*
98
* Created by Christian Schabesberger on 10.08.15.
@@ -27,7 +26,7 @@
2726

2827
public abstract class SearchEngine {
2928
public enum Filter {
30-
STREAM, CHANNEL, PLAYLIST
29+
ANY, STREAM, CHANNEL, PLAYLIST
3130
}
3231

3332
public static class NothingFoundException extends ExtractionException {
@@ -46,8 +45,6 @@ protected InfoItemSearchCollector getInfoItemSearchCollector() {
4645
return collector;
4746
}
4847

49-
//Result search(String query, int page);
50-
public abstract InfoItemSearchCollector search(
51-
String query, int page, String contentCountry, EnumSet<Filter> filter)
48+
public abstract InfoItemSearchCollector search(String query, int page, String contentCountry, Filter filter)
5249
throws IOException, ExtractionException;
5350
}

src/main/java/org/schabi/newpipe/extractor/search/SearchResult.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import java.io.IOException;
77
import java.util.ArrayList;
8-
import java.util.EnumSet;
98
import java.util.List;
109

1110
/*
@@ -29,8 +28,7 @@
2928
*/
3029

3130
public class SearchResult {
32-
public static SearchResult getSearchResult(SearchEngine engine, String query,
33-
int page, String languageCode, EnumSet<SearchEngine.Filter> filter)
31+
public static SearchResult getSearchResult(SearchEngine engine, String query, int page, String languageCode, SearchEngine.Filter filter)
3432
throws IOException, ExtractionException {
3533

3634
SearchResult result = engine

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

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

3-
import com.github.openjson.JSONObject;
3+
import com.grack.nanojson.JsonObject;
4+
import com.grack.nanojson.JsonParser;
5+
import com.grack.nanojson.JsonParserException;
46
import org.schabi.newpipe.extractor.Downloader;
57
import org.schabi.newpipe.extractor.NewPipe;
68
import org.schabi.newpipe.extractor.StreamingService;
@@ -14,7 +16,7 @@
1416
@SuppressWarnings("WeakerAccess")
1517
public class SoundcloudChannelExtractor extends ChannelExtractor {
1618
private String userId;
17-
private JSONObject user;
19+
private JsonObject user;
1820

1921
public SoundcloudChannelExtractor(StreamingService service, String url, String nextStreamsUrl) throws IOException, ExtractionException {
2022
super(service, url, nextStreamsUrl);
@@ -29,16 +31,16 @@ public void fetchPage() throws IOException, ExtractionException {
2931
"?client_id=" + SoundcloudParsingHelper.clientId();
3032

3133
String response = dl.download(apiUrl);
32-
user = new JSONObject(response);
34+
try {
35+
user = JsonParser.object().from(response);
36+
} catch (JsonParserException e) {
37+
throw new ParsingException("Could not parse json response", e);
38+
}
3339
}
3440

3541
@Override
3642
public String getCleanUrl() {
37-
try {
38-
return user.getString("permalink_url");
39-
} catch (Exception e) {
40-
return getOriginalUrl();
41-
}
43+
return user.isString("permalink_url") ? user.getString("permalink_url") : getOriginalUrl();
4244
}
4345

4446
@Override
@@ -53,16 +55,12 @@ public String getName() {
5355

5456
@Override
5557
public String getAvatarUrl() {
56-
return user.optString("avatar_url");
58+
return user.getString("avatar_url");
5759
}
5860

5961
@Override
6062
public String getBannerUrl() throws ParsingException {
61-
try {
62-
return user.getJSONObject("visuals").getJSONArray("visuals").getJSONObject(0).getString("visual_url");
63-
} catch (Exception e) {
64-
throw new ParsingException("Could not get Banner", e);
65-
}
63+
return user.getObject("visuals").getArray("visuals").getObject(0).getString("visual_url", "");
6664
}
6765

6866
@Override
@@ -72,12 +70,12 @@ public String getFeedUrl() throws ParsingException {
7270

7371
@Override
7472
public long getSubscriberCount() {
75-
return user.optLong("followers_count");
73+
return user.getNumber("followers_count", 0).longValue();
7674
}
7775

7876
@Override
7977
public String getDescription() throws ParsingException {
80-
return user.optString("description");
78+
return user.getString("description", "");
8179
}
8280

8381
@Override
@@ -102,6 +100,6 @@ public NextItemsResult getNextStreams() throws IOException, ExtractionException
102100
StreamInfoItemCollector collector = new StreamInfoItemCollector(getServiceId());
103101
nextStreamsUrl = SoundcloudParsingHelper.getStreamsFromApiMinItems(15, collector, nextStreamsUrl);
104102

105-
return new NextItemsResult(collector.getItemList(), nextStreamsUrl);
103+
return new NextItemsResult(collector, nextStreamsUrl);
106104
}
107105
}

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

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

3-
import com.github.openjson.JSONObject;
3+
import com.grack.nanojson.JsonObject;
44
import org.schabi.newpipe.extractor.channel.ChannelInfoItemExtractor;
55

66
public class SoundcloudChannelInfoItemExtractor implements ChannelInfoItemExtractor {
7-
private JSONObject searchResult;
7+
private JsonObject searchResult;
88

9-
public SoundcloudChannelInfoItemExtractor(JSONObject searchResult) {
9+
public SoundcloudChannelInfoItemExtractor(JsonObject searchResult) {
1010
this.searchResult = searchResult;
1111
}
1212

@@ -22,21 +22,21 @@ public String getUrl() {
2222

2323
@Override
2424
public String getThumbnailUrl() {
25-
return searchResult.optString("avatar_url");
25+
return searchResult.getString("avatar_url", "");
2626
}
2727

2828
@Override
2929
public long getSubscriberCount() {
30-
return searchResult.optLong("followers_count");
30+
return searchResult.getNumber("followers_count", 0).longValue();
3131
}
3232

3333
@Override
3434
public long getStreamCount() {
35-
return searchResult.optLong("track_count");
35+
return searchResult.getNumber("track_count", 0).longValue();
3636
}
3737

3838
@Override
3939
public String getDescription() {
40-
return searchResult.optString("description");
40+
return searchResult.getString("description", "");
4141
}
4242
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public NextItemsResult getNextStreams() throws IOException, ExtractionException
4040
StreamInfoItemCollector collector = new StreamInfoItemCollector(getServiceId());
4141
nextStreamsUrl = SoundcloudParsingHelper.getStreamsFromApi(collector, nextStreamsUrl, true);
4242

43-
return new NextItemsResult(collector.getItemList(), nextStreamsUrl);
43+
return new NextItemsResult(collector, nextStreamsUrl);
4444
}
4545

4646
@Override

0 commit comments

Comments
 (0)