Merge branch 'dev'
This commit is contained in:
commit
dfe8716f5f
|
@ -8,7 +8,7 @@ allprojects {
|
||||||
sourceCompatibility = 1.8
|
sourceCompatibility = 1.8
|
||||||
targetCompatibility = 1.8
|
targetCompatibility = 1.8
|
||||||
|
|
||||||
version 'v0.21.13'
|
version 'v0.21.14'
|
||||||
group 'com.github.TeamNewPipe'
|
group 'com.github.TeamNewPipe'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
|
@ -28,8 +28,8 @@ allprojects {
|
||||||
|
|
||||||
ext {
|
ext {
|
||||||
nanojsonVersion = "1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751"
|
nanojsonVersion = "1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751"
|
||||||
spotbugsVersion = "4.5.0"
|
spotbugsVersion = "4.5.3"
|
||||||
junitVersion = "4.13.2"
|
junitVersion = "5.8.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ test {
|
||||||
if (System.properties.containsKey('downloader')) {
|
if (System.properties.containsKey('downloader')) {
|
||||||
systemProperty('downloader', System.getProperty('downloader'))
|
systemProperty('downloader', System.getProperty('downloader'))
|
||||||
}
|
}
|
||||||
|
useJUnitPlatform()
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
@ -14,7 +15,11 @@ dependencies {
|
||||||
implementation "com.github.spotbugs:spotbugs-annotations:$spotbugsVersion"
|
implementation "com.github.spotbugs:spotbugs-annotations:$spotbugsVersion"
|
||||||
implementation 'org.nibor.autolink:autolink:0.10.0'
|
implementation 'org.nibor.autolink:autolink:0.10.0'
|
||||||
|
|
||||||
testImplementation "junit:junit:$junitVersion"
|
testImplementation platform("org.junit:junit-bom:$junitVersion")
|
||||||
|
testImplementation 'org.junit.jupiter:junit-jupiter-api'
|
||||||
|
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
|
||||||
|
testImplementation 'org.junit.jupiter:junit-jupiter-params'
|
||||||
|
|
||||||
testImplementation "com.squareup.okhttp3:okhttp:3.12.13"
|
testImplementation "com.squareup.okhttp3:okhttp:3.12.13"
|
||||||
testImplementation 'com.google.code.gson:gson:2.8.9'
|
testImplementation 'com.google.code.gson:gson:2.8.9'
|
||||||
}
|
}
|
||||||
|
|
|
@ -149,27 +149,24 @@ public class BandcampRadioStreamExtractor extends BandcampStreamExtractor {
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getLicence() {
|
public String getLicence() {
|
||||||
|
// Contrary to other Bandcamp streams, radio streams don't have a license
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getCategory() {
|
public String getCategory() {
|
||||||
|
// Contrary to other Bandcamp streams, radio streams don't have categories
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public List<String> getTags() {
|
public List<String> getTags() {
|
||||||
|
// Contrary to other Bandcamp streams, radio streams don't have tags
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public Privacy getPrivacy() {
|
|
||||||
return Privacy.PUBLIC;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PlaylistInfoItemsCollector getRelatedItems() {
|
public PlaylistInfoItemsCollector getRelatedItems() {
|
||||||
// Contrary to other Bandcamp streams, radio streams don't have related items
|
// Contrary to other Bandcamp streams, radio streams don't have related items
|
||||||
|
|
|
@ -98,11 +98,6 @@ public class BandcampStreamExtractor extends StreamExtractor {
|
||||||
return albumJson.getString("artist");
|
return albumJson.getString("artist");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isUploaderVerified() throws ParsingException {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public String getTextualUploadDate() {
|
public String getTextualUploadDate() {
|
||||||
|
@ -132,24 +127,6 @@ public class BandcampStreamExtractor extends StreamExtractor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSubChannelUrl() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSubChannelName() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSubChannelAvatarUrl() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public Description getDescription() {
|
public Description getDescription() {
|
||||||
|
@ -164,48 +141,6 @@ public class BandcampStreamExtractor extends StreamExtractor {
|
||||||
return new Description(s, Description.PLAIN_TEXT);
|
return new Description(s, Description.PLAIN_TEXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getAgeLimit() {
|
|
||||||
return NO_AGE_LIMIT;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getLength() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getTimeStamp() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getViewCount() {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getLikeCount() {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getDislikeCount() {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getDashMpdUrl() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getHlsUrl() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<AudioStream> getAudioStreams() {
|
public List<AudioStream> getAudioStreams() {
|
||||||
final List<AudioStream> audioStreams = new ArrayList<>();
|
final List<AudioStream> audioStreams = new ArrayList<>();
|
||||||
|
@ -228,18 +163,6 @@ public class BandcampStreamExtractor extends StreamExtractor {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public List<SubtitlesStream> getSubtitlesDefault() {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public List<SubtitlesStream> getSubtitles(MediaFormat format) {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StreamType getStreamType() {
|
public StreamType getStreamType() {
|
||||||
return StreamType.AUDIO_STREAM;
|
return StreamType.AUDIO_STREAM;
|
||||||
|
@ -259,23 +182,6 @@ public class BandcampStreamExtractor extends StreamExtractor {
|
||||||
return collector;
|
return collector;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getErrorMessage() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getHost() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public Privacy getPrivacy() {
|
|
||||||
return Privacy.PUBLIC;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getCategory() {
|
public String getCategory() {
|
||||||
|
@ -315,12 +221,6 @@ public class BandcampStreamExtractor extends StreamExtractor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
public Locale getLanguageInfo() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public List<String> getTags() {
|
public List<String> getTags() {
|
||||||
|
@ -334,22 +234,4 @@ public class BandcampStreamExtractor extends StreamExtractor {
|
||||||
|
|
||||||
return tags;
|
return tags;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSupportInfo() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public List<StreamSegment> getStreamSegments() throws ParsingException {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public List<MetaInfo> getMetaInfo() throws ParsingException {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,18 +60,6 @@ public class MediaCCCLiveStreamExtractor extends StreamExtractor {
|
||||||
return room.getString("display");
|
return room.getString("display");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
public String getTextualUploadDate() throws ParsingException {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
public DateWrapper getUploadDate() throws ParsingException {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getThumbnailUrl() throws ParsingException {
|
public String getThumbnailUrl() throws ParsingException {
|
||||||
|
@ -84,36 +72,11 @@ public class MediaCCCLiveStreamExtractor extends StreamExtractor {
|
||||||
return new Description(conference.getString("description") + " - " + group, Description.PLAIN_TEXT);
|
return new Description(conference.getString("description") + " - " + group, Description.PLAIN_TEXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getAgeLimit() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getLength() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getTimeStamp() throws ParsingException {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getViewCount() {
|
public long getViewCount() {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getLikeCount() {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getDislikeCount() {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getUploaderUrl() throws ParsingException {
|
public String getUploaderUrl() throws ParsingException {
|
||||||
|
@ -126,41 +89,6 @@ public class MediaCCCLiveStreamExtractor extends StreamExtractor {
|
||||||
return conference.getString("conference");
|
return conference.getString("conference");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isUploaderVerified() throws ParsingException {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getUploaderAvatarUrl() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSubChannelUrl() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSubChannelName() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSubChannelAvatarUrl() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getDashMpdUrl() throws ParsingException {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getHlsUrl() {
|
public String getHlsUrl() {
|
||||||
|
@ -221,85 +149,14 @@ public class MediaCCCLiveStreamExtractor extends StreamExtractor {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public List<SubtitlesStream> getSubtitlesDefault() {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public List<SubtitlesStream> getSubtitles(MediaFormat format) {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StreamType getStreamType() throws ParsingException {
|
public StreamType getStreamType() throws ParsingException {
|
||||||
return StreamType.LIVE_STREAM; // TODO: video and audio only streams are both available
|
return StreamType.LIVE_STREAM; // TODO: video and audio only streams are both available
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
public StreamInfoItemsCollector getRelatedItems() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getErrorMessage() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getHost() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public Privacy getPrivacy() {
|
|
||||||
return Privacy.PUBLIC;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getCategory() {
|
public String getCategory() {
|
||||||
return group;
|
return group;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getLicence() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
public Locale getLanguageInfo() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public List<String> getTags() {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSupportInfo() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public List<StreamSegment> getStreamSegments() {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public List<MetaInfo> getMetaInfo() {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,36 +58,16 @@ public class MediaCCCStreamExtractor extends StreamExtractor {
|
||||||
return new Description(data.getString("description"), Description.PLAIN_TEXT);
|
return new Description(data.getString("description"), Description.PLAIN_TEXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getAgeLimit() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getLength() {
|
public long getLength() {
|
||||||
return data.getInt("length");
|
return data.getInt("length");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getTimeStamp() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getViewCount() {
|
public long getViewCount() {
|
||||||
return data.getInt("view_count");
|
return data.getInt("view_count");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getLikeCount() {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getDislikeCount() {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getUploaderUrl() {
|
public String getUploaderUrl() {
|
||||||
|
@ -101,47 +81,12 @@ public class MediaCCCStreamExtractor extends StreamExtractor {
|
||||||
.replaceFirst("https://(api\\.)?media\\.ccc\\.de/public/conferences/", "");
|
.replaceFirst("https://(api\\.)?media\\.ccc\\.de/public/conferences/", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isUploaderVerified() throws ParsingException {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getUploaderAvatarUrl() {
|
public String getUploaderAvatarUrl() {
|
||||||
return conferenceData.getString("logo_url");
|
return conferenceData.getString("logo_url");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSubChannelUrl() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSubChannelName() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSubChannelAvatarUrl() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getDashMpdUrl() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getHlsUrl() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<AudioStream> getAudioStreams() throws ExtractionException {
|
public List<AudioStream> getAudioStreams() throws ExtractionException {
|
||||||
final JsonArray recordings = data.getArray("recordings");
|
final JsonArray recordings = data.getArray("recordings");
|
||||||
|
@ -200,34 +145,11 @@ public class MediaCCCStreamExtractor extends StreamExtractor {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public List<SubtitlesStream> getSubtitlesDefault() {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public List<SubtitlesStream> getSubtitles(final MediaFormat format) {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StreamType getStreamType() {
|
public StreamType getStreamType() {
|
||||||
return StreamType.VIDEO_STREAM;
|
return StreamType.VIDEO_STREAM;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
public StreamInfoItemsCollector getRelatedItems() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getErrorMessage() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFetchPage(@Nonnull final Downloader downloader)
|
public void onFetchPage(@Nonnull final Downloader downloader)
|
||||||
throws IOException, ExtractionException {
|
throws IOException, ExtractionException {
|
||||||
|
@ -253,30 +175,6 @@ public class MediaCCCStreamExtractor extends StreamExtractor {
|
||||||
return data.getString("frontend_link");
|
return data.getString("frontend_link");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getHost() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public Privacy getPrivacy() {
|
|
||||||
return Privacy.PUBLIC;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getCategory() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getLicence() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Locale getLanguageInfo() throws ParsingException {
|
public Locale getLanguageInfo() throws ParsingException {
|
||||||
return Localization.getLocaleFromThreeLetterCode(data.getString("original_language"));
|
return Localization.getLocaleFromThreeLetterCode(data.getString("original_language"));
|
||||||
|
@ -287,22 +185,4 @@ public class MediaCCCStreamExtractor extends StreamExtractor {
|
||||||
public List<String> getTags() {
|
public List<String> getTags() {
|
||||||
return JsonUtils.getStringListFromJsonArray(data.getArray("tags"));
|
return JsonUtils.getStringListFromJsonArray(data.getArray("tags"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSupportInfo() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public List<StreamSegment> getStreamSegments() {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public List<MetaInfo> getMetaInfo() {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -149,11 +149,6 @@ public class PeertubeStreamExtractor extends StreamExtractor {
|
||||||
return JsonUtils.getString(json, "account.displayName");
|
return JsonUtils.getString(json, "account.displayName");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isUploaderVerified() throws ParsingException {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getUploaderAvatarUrl() {
|
public String getUploaderAvatarUrl() {
|
||||||
|
@ -190,12 +185,6 @@ public class PeertubeStreamExtractor extends StreamExtractor {
|
||||||
return baseUrl + value;
|
return baseUrl + value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getDashMpdUrl() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getHlsUrl() {
|
public String getHlsUrl() {
|
||||||
|
@ -329,18 +318,6 @@ public class PeertubeStreamExtractor extends StreamExtractor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public List<StreamSegment> getStreamSegments() {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public List<MetaInfo> getMetaInfo() {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getRelatedItemsUrl(final List<String> tags) throws UnsupportedEncodingException {
|
private String getRelatedItemsUrl(final List<String> tags) throws UnsupportedEncodingException {
|
||||||
final String url = baseUrl + PeertubeSearchQueryHandlerFactory.SEARCH_ENDPOINT;
|
final String url = baseUrl + PeertubeSearchQueryHandlerFactory.SEARCH_ENDPOINT;
|
||||||
final StringBuilder params = new StringBuilder();
|
final StringBuilder params = new StringBuilder();
|
||||||
|
@ -386,11 +363,6 @@ public class PeertubeStreamExtractor extends StreamExtractor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getErrorMessage() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFetchPage(final Downloader downloader) throws IOException, ExtractionException {
|
public void onFetchPage(final Downloader downloader) throws IOException, ExtractionException {
|
||||||
final Response response = downloader.get(baseUrl + PeertubeStreamLinkHandlerFactory.VIDEO_API_ENDPOINT + getId());
|
final Response response = downloader.get(baseUrl + PeertubeStreamLinkHandlerFactory.VIDEO_API_ENDPOINT + getId());
|
||||||
|
|
|
@ -41,7 +41,7 @@ import static org.schabi.newpipe.extractor.utils.Utils.*;
|
||||||
|
|
||||||
public class SoundcloudParsingHelper {
|
public class SoundcloudParsingHelper {
|
||||||
static final String HARDCODED_CLIENT_ID =
|
static final String HARDCODED_CLIENT_ID =
|
||||||
"1NKODbzHzEpoowFHxTAmS7oB08DObPuK"; // Updated on 08/12/21
|
"0vyDB4rxVEprGutWT0xQ2VZhYpVZxku4"; // Updated on 2022-02-11
|
||||||
private static String clientId;
|
private static String clientId;
|
||||||
public static final String SOUNDCLOUD_API_V2_URL = "https://api-v2.soundcloud.com/";
|
public static final String SOUNDCLOUD_API_V2_URL = "https://api-v2.soundcloud.com/";
|
||||||
|
|
||||||
|
|
|
@ -20,13 +20,14 @@ import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.function.IntUnaryOperator;
|
||||||
|
|
||||||
import static org.schabi.newpipe.extractor.services.soundcloud.linkHandler.SoundcloudSearchQueryHandlerFactory.ITEMS_PER_PAGE;
|
import static org.schabi.newpipe.extractor.services.soundcloud.linkHandler.SoundcloudSearchQueryHandlerFactory.ITEMS_PER_PAGE;
|
||||||
import static org.schabi.newpipe.extractor.utils.Utils.EMPTY_STRING;
|
import static org.schabi.newpipe.extractor.utils.Utils.EMPTY_STRING;
|
||||||
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
||||||
|
|
||||||
public class SoundcloudSearchExtractor extends SearchExtractor {
|
public class SoundcloudSearchExtractor extends SearchExtractor {
|
||||||
private JsonArray searchCollection;
|
private JsonArray initialSearchCollection;
|
||||||
|
|
||||||
public SoundcloudSearchExtractor(final StreamingService service,
|
public SoundcloudSearchExtractor(final StreamingService service,
|
||||||
final SearchQueryHandler linkHandler) {
|
final SearchQueryHandler linkHandler) {
|
||||||
|
@ -53,8 +54,9 @@ public class SoundcloudSearchExtractor extends SearchExtractor {
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public InfoItemsPage<InfoItem> getInitialPage() throws IOException, ExtractionException {
|
public InfoItemsPage<InfoItem> getInitialPage() throws IOException, ExtractionException {
|
||||||
return new InfoItemsPage<>(collectItems(searchCollection), getNextPageFromCurrentUrl(
|
return new InfoItemsPage<>(
|
||||||
getUrl()));
|
collectItems(initialSearchCollection),
|
||||||
|
getNextPageFromCurrentUrl(getUrl(), currentOffset -> ITEMS_PER_PAGE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -65,6 +67,7 @@ public class SoundcloudSearchExtractor extends SearchExtractor {
|
||||||
}
|
}
|
||||||
|
|
||||||
final Downloader dl = getDownloader();
|
final Downloader dl = getDownloader();
|
||||||
|
final JsonArray searchCollection;
|
||||||
try {
|
try {
|
||||||
final String response = dl.get(page.getUrl(), getExtractorLocalization())
|
final String response = dl.get(page.getUrl(), getExtractorLocalization())
|
||||||
.responseBody();
|
.responseBody();
|
||||||
|
@ -73,8 +76,9 @@ public class SoundcloudSearchExtractor extends SearchExtractor {
|
||||||
throw new ParsingException("Could not parse json response", e);
|
throw new ParsingException("Could not parse json response", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new InfoItemsPage<>(collectItems(searchCollection), getNextPageFromCurrentUrl(page
|
return new InfoItemsPage<>(
|
||||||
.getUrl()));
|
collectItems(searchCollection),
|
||||||
|
getNextPageFromCurrentUrl(page.getUrl(), currentOffset -> currentOffset + ITEMS_PER_PAGE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -84,12 +88,12 @@ public class SoundcloudSearchExtractor extends SearchExtractor {
|
||||||
final String url = getUrl();
|
final String url = getUrl();
|
||||||
try {
|
try {
|
||||||
final String response = dl.get(url, getExtractorLocalization()).responseBody();
|
final String response = dl.get(url, getExtractorLocalization()).responseBody();
|
||||||
searchCollection = JsonParser.object().from(response).getArray("collection");
|
initialSearchCollection = JsonParser.object().from(response).getArray("collection");
|
||||||
} catch (final JsonParserException e) {
|
} catch (final JsonParserException e) {
|
||||||
throw new ParsingException("Could not parse json response", e);
|
throw new ParsingException("Could not parse json response", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (searchCollection.isEmpty()) {
|
if (initialSearchCollection.isEmpty()) {
|
||||||
throw new SearchExtractor.NothingFoundException("Nothing found");
|
throw new SearchExtractor.NothingFoundException("Nothing found");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -118,12 +122,14 @@ public class SoundcloudSearchExtractor extends SearchExtractor {
|
||||||
return collector;
|
return collector;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Page getNextPageFromCurrentUrl(final String currentUrl)
|
private Page getNextPageFromCurrentUrl(final String currentUrl, final IntUnaryOperator newPageOffsetCalculator)
|
||||||
throws MalformedURLException, UnsupportedEncodingException {
|
throws MalformedURLException, UnsupportedEncodingException {
|
||||||
final int pageOffset = Integer.parseInt(
|
final int currentPageOffset = Integer.parseInt(
|
||||||
Parser.compatParseMap(new URL(currentUrl).getQuery()).get("offset"));
|
Parser.compatParseMap(new URL(currentUrl).getQuery()).get("offset"));
|
||||||
|
|
||||||
return new Page(currentUrl.replace("&offset=" + pageOffset, "&offset="
|
return new Page(
|
||||||
+ (pageOffset + ITEMS_PER_PAGE)));
|
currentUrl.replace(
|
||||||
|
"&offset=" + currentPageOffset,
|
||||||
|
"&offset=" + newPageOffsetCalculator.applyAsInt(currentPageOffset)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,11 +102,6 @@ public class SoundcloudStreamExtractor extends StreamExtractor {
|
||||||
return new Description(track.getString("description"), Description.PLAIN_TEXT);
|
return new Description(track.getString("description"), Description.PLAIN_TEXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getAgeLimit() {
|
|
||||||
return NO_AGE_LIMIT;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getLength() {
|
public long getLength() {
|
||||||
return track.getLong("duration") / 1000L;
|
return track.getLong("duration") / 1000L;
|
||||||
|
@ -127,11 +122,6 @@ public class SoundcloudStreamExtractor extends StreamExtractor {
|
||||||
return track.getLong("favoritings_count", -1);
|
return track.getLong("favoritings_count", -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getDislikeCount() {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getUploaderUrl() {
|
public String getUploaderUrl() {
|
||||||
|
@ -155,36 +145,6 @@ public class SoundcloudStreamExtractor extends StreamExtractor {
|
||||||
return SoundcloudParsingHelper.getAvatarUrl(track);
|
return SoundcloudParsingHelper.getAvatarUrl(track);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSubChannelUrl() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSubChannelName() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSubChannelAvatarUrl() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getDashMpdUrl() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getHlsUrl() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<AudioStream> getAudioStreams() throws ExtractionException {
|
public List<AudioStream> getAudioStreams() throws ExtractionException {
|
||||||
final List<AudioStream> audioStreams = new ArrayList<>();
|
final List<AudioStream> audioStreams = new ArrayList<>();
|
||||||
|
@ -343,18 +303,6 @@ public class SoundcloudStreamExtractor extends StreamExtractor {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@Nonnull
|
|
||||||
public List<SubtitlesStream> getSubtitlesDefault() {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Nonnull
|
|
||||||
public List<SubtitlesStream> getSubtitles(MediaFormat format) {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StreamType getStreamType() {
|
public StreamType getStreamType() {
|
||||||
return StreamType.AUDIO_STREAM;
|
return StreamType.AUDIO_STREAM;
|
||||||
|
@ -372,17 +320,6 @@ public class SoundcloudStreamExtractor extends StreamExtractor {
|
||||||
return collector;
|
return collector;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getErrorMessage() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getHost() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Privacy getPrivacy() {
|
public Privacy getPrivacy() {
|
||||||
return track.getString("sharing").equals("public") ? Privacy.PUBLIC : Privacy.PRIVATE;
|
return track.getString("sharing").equals("public") ? Privacy.PUBLIC : Privacy.PRIVATE;
|
||||||
|
@ -400,11 +337,6 @@ public class SoundcloudStreamExtractor extends StreamExtractor {
|
||||||
return track.getString("license");
|
return track.getString("license");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Locale getLanguageInfo() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public List<String> getTags() {
|
public List<String> getTags() {
|
||||||
|
@ -432,22 +364,4 @@ public class SoundcloudStreamExtractor extends StreamExtractor {
|
||||||
}
|
}
|
||||||
return tags;
|
return tags;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSupportInfo() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public List<StreamSegment> getStreamSegments() {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public List<MetaInfo> getMetaInfo() {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -302,7 +302,7 @@ public class YoutubeStreamExtractor extends StreamExtractor {
|
||||||
@Override
|
@Override
|
||||||
public long getTimeStamp() throws ParsingException {
|
public long getTimeStamp() throws ParsingException {
|
||||||
final long timestamp =
|
final long timestamp =
|
||||||
getTimestampSeconds("((#|&|\\?)t=\\d{0,3}h?\\d{0,3}m?\\d{1,3}s?)");
|
getTimestampSeconds("((#|&|\\?)t=\\d*h?\\d*m?\\d+s?)");
|
||||||
|
|
||||||
if (timestamp == -2) {
|
if (timestamp == -2) {
|
||||||
// Regex for timestamp was not found
|
// Regex for timestamp was not found
|
||||||
|
@ -337,24 +337,18 @@ public class YoutubeStreamExtractor extends StreamExtractor {
|
||||||
@Override
|
@Override
|
||||||
public long getLikeCount() throws ParsingException {
|
public long getLikeCount() throws ParsingException {
|
||||||
assertPageFetched();
|
assertPageFetched();
|
||||||
String likesString = null;
|
String likesString = "";
|
||||||
try {
|
try {
|
||||||
likesString = getVideoPrimaryInfoRenderer().getObject("sentimentBar")
|
likesString = getVideoPrimaryInfoRenderer()
|
||||||
.getObject("sentimentBarRenderer").getString("tooltip");
|
.getObject("videoActions")
|
||||||
if (likesString != null && likesString.contains("/")) {
|
.getObject("menuRenderer")
|
||||||
likesString = likesString.split("/")[0];
|
.getArray("topLevelButtons")
|
||||||
} else {
|
.getObject(0)
|
||||||
likesString = getVideoPrimaryInfoRenderer()
|
.getObject("toggleButtonRenderer")
|
||||||
.getObject("videoActions")
|
.getObject("defaultText")
|
||||||
.getObject("menuRenderer")
|
.getObject("accessibility")
|
||||||
.getArray("topLevelButtons")
|
.getObject("accessibilityData")
|
||||||
.getObject(0)
|
.getString("label");
|
||||||
.getObject("toggleButtonRenderer")
|
|
||||||
.getObject("defaultText")
|
|
||||||
.getObject("accessibility")
|
|
||||||
.getObject("accessibilityData")
|
|
||||||
.getString("label");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (likesString == null) {
|
if (likesString == null) {
|
||||||
// If this kicks in our button has no content and therefore ratings must be disabled
|
// If this kicks in our button has no content and therefore ratings must be disabled
|
||||||
|
@ -364,6 +358,10 @@ public class YoutubeStreamExtractor extends StreamExtractor {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (likesString.toLowerCase().contains("no likes")) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
return Integer.parseInt(Utils.removeNonDigitCharacters(likesString));
|
return Integer.parseInt(Utils.removeNonDigitCharacters(likesString));
|
||||||
} catch (final NumberFormatException nfe) {
|
} catch (final NumberFormatException nfe) {
|
||||||
throw new ParsingException("Could not parse \"" + likesString + "\" as an Integer",
|
throw new ParsingException("Could not parse \"" + likesString + "\" as an Integer",
|
||||||
|
@ -376,34 +374,6 @@ public class YoutubeStreamExtractor extends StreamExtractor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getDislikeCount() throws ParsingException {
|
|
||||||
assertPageFetched();
|
|
||||||
|
|
||||||
try {
|
|
||||||
String dislikesString = getVideoPrimaryInfoRenderer().getObject("sentimentBar")
|
|
||||||
.getObject("sentimentBarRenderer").getString("tooltip");
|
|
||||||
if (dislikesString != null && dislikesString.contains("/")) {
|
|
||||||
dislikesString = dislikesString.split("/")[1];
|
|
||||||
return Integer.parseInt(Utils.removeNonDigitCharacters(dislikesString));
|
|
||||||
} else {
|
|
||||||
// Calculate dislike with average rating and like count
|
|
||||||
long likes = getLikeCount();
|
|
||||||
double averageRating = playerResponse.getObject("videoDetails").getDouble("averageRating");
|
|
||||||
|
|
||||||
if (likes != -1 && averageRating > 1) {
|
|
||||||
// If averageRating can't be gathered, it will be 0,
|
|
||||||
// but we also can't divide by 0 so we need > 1
|
|
||||||
return Math.round(likes * ((5 - averageRating) / (averageRating - 1)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (final Exception e) {
|
|
||||||
}
|
|
||||||
// Silently fail as YouTube is "gradually rolling out" removing dislike count
|
|
||||||
// https://blog.youtube/news-and-events/update-to-youtube/
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getUploaderUrl() throws ParsingException {
|
public String getUploaderUrl() throws ParsingException {
|
||||||
|
@ -467,24 +437,6 @@ public class YoutubeStreamExtractor extends StreamExtractor {
|
||||||
return fixThumbnailUrl(url);
|
return fixThumbnailUrl(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSubChannelUrl() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSubChannelName() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSubChannelAvatarUrl() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getDashMpdUrl() throws ParsingException {
|
public String getDashMpdUrl() throws ParsingException {
|
||||||
|
@ -1266,12 +1218,6 @@ public class YoutubeStreamExtractor extends StreamExtractor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getHost() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public Privacy getPrivacy() {
|
public Privacy getPrivacy() {
|
||||||
|
@ -1313,12 +1259,6 @@ public class YoutubeStreamExtractor extends StreamExtractor {
|
||||||
.getArray("keywords"));
|
.getArray("keywords"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getSupportInfo() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public List<StreamSegment> getStreamSegments() throws ParsingException {
|
public List<StreamSegment> getStreamSegments() throws ParsingException {
|
||||||
|
@ -1332,8 +1272,9 @@ public class YoutubeStreamExtractor extends StreamExtractor {
|
||||||
final String panelIdentifier = panels.getObject(i)
|
final String panelIdentifier = panels.getObject(i)
|
||||||
.getObject("engagementPanelSectionListRenderer")
|
.getObject("engagementPanelSectionListRenderer")
|
||||||
.getString("panelIdentifier");
|
.getString("panelIdentifier");
|
||||||
if (panelIdentifier.equals(
|
// panelIdentifier might be null if the panel has something to do with ads
|
||||||
"engagement-panel-macro-markers-description-chapters")) {
|
// See https://github.com/TeamNewPipe/NewPipe/issues/7792#issuecomment-1030900188
|
||||||
|
if ("engagement-panel-macro-markers-description-chapters".equals(panelIdentifier)) {
|
||||||
segmentsArray = panels.getObject(i)
|
segmentsArray = panels.getObject(i)
|
||||||
.getObject("engagementPanelSectionListRenderer").getObject("content")
|
.getObject("engagementPanelSectionListRenderer").getObject("content")
|
||||||
.getObject("macroMarkersListRenderer").getArray("contents");
|
.getObject("macroMarkersListRenderer").getArray("contents");
|
||||||
|
|
|
@ -63,7 +63,9 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* @see #getUploadDate()
|
* @see #getUploadDate()
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public abstract String getTextualUploadDate() throws ParsingException;
|
public String getTextualUploadDate() throws ParsingException {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A more general {@code Calendar} instance set to the date provided by the service.<br>
|
* A more general {@code Calendar} instance set to the date provided by the service.<br>
|
||||||
|
@ -77,7 +79,9 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* @see #getTextualUploadDate()
|
* @see #getTextualUploadDate()
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public abstract DateWrapper getUploadDate() throws ParsingException;
|
public DateWrapper getUploadDate() throws ParsingException {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This will return the url to the thumbnail of the stream. Try to return the medium resolution here.
|
* This will return the url to the thumbnail of the stream. Try to return the medium resolution here.
|
||||||
|
@ -95,7 +99,9 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public abstract Description getDescription() throws ParsingException;
|
public Description getDescription() throws ParsingException {
|
||||||
|
return Description.emptyDescription;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the age limit.
|
* Get the age limit.
|
||||||
|
@ -103,52 +109,64 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* @return The age which limits the content or {@value NO_AGE_LIMIT} if there is no limit
|
* @return The age which limits the content or {@value NO_AGE_LIMIT} if there is no limit
|
||||||
* @throws ParsingException if an error occurs while parsing
|
* @throws ParsingException if an error occurs while parsing
|
||||||
*/
|
*/
|
||||||
public abstract int getAgeLimit() throws ParsingException;
|
public int getAgeLimit() throws ParsingException {
|
||||||
|
return NO_AGE_LIMIT;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This should return the length of a video in seconds.
|
* This should return the length of a video in seconds.
|
||||||
*
|
*
|
||||||
* @return The length of the stream in seconds.
|
* @return The length of the stream in seconds or 0 when it has no length (e.g. a livestream).
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
public abstract long getLength() throws ParsingException;
|
public long getLength() throws ParsingException {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If the url you are currently handling contains a time stamp/seek, you can return the
|
* If the url you are currently handling contains a time stamp/seek, you can return the
|
||||||
* position it represents here.
|
* position it represents here.
|
||||||
* If the url has no time stamp simply return zero.
|
* If the url has no time stamp simply return zero.
|
||||||
*
|
*
|
||||||
* @return the timestamp in seconds
|
* @return the timestamp in seconds or 0 when there is no timestamp
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
public abstract long getTimeStamp() throws ParsingException;
|
public long getTimeStamp() throws ParsingException {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The count of how many people have watched the video/listened to the audio stream.
|
* The count of how many people have watched the video/listened to the audio stream.
|
||||||
* If the current stream has no view count or its not available simply return -1
|
* If the current stream has no view count or its not available simply return -1
|
||||||
*
|
*
|
||||||
* @return amount of views.
|
* @return amount of views or -1 if not available.
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
public abstract long getViewCount() throws ParsingException;
|
public long getViewCount() throws ParsingException {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The amount of likes a video/audio stream got.
|
* The amount of likes a video/audio stream got.
|
||||||
* If the current stream has no likes or its not available simply return -1
|
* If the current stream has no likes or its not available simply return -1
|
||||||
*
|
*
|
||||||
* @return the amount of likes the stream got
|
* @return the amount of likes the stream got or -1 if not available.
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
public abstract long getLikeCount() throws ParsingException;
|
public long getLikeCount() throws ParsingException {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The amount of dislikes a video/audio stream got.
|
* The amount of dislikes a video/audio stream got.
|
||||||
* If the current stream has no dislikes or its not available simply return -1
|
* If the current stream has no dislikes or its not available simply return -1
|
||||||
*
|
*
|
||||||
* @return the amount of likes the stream got
|
* @return the amount of likes the stream got or -1 if not available.
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
public abstract long getDislikeCount() throws ParsingException;
|
public long getDislikeCount() throws ParsingException {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Url to the page of the creator/uploader of the stream. This must not be a homepage,
|
* The Url to the page of the creator/uploader of the stream. This must not be a homepage,
|
||||||
|
@ -157,7 +175,7 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* so be sure to implement that one before you return a value here, otherwise NewPipe will crash if one selects
|
* so be sure to implement that one before you return a value here, otherwise NewPipe will crash if one selects
|
||||||
* this url.
|
* this url.
|
||||||
*
|
*
|
||||||
* @return the url to the page of the creator/uploader of the stream or an empty String
|
* @return the url to the page of the creator/uploader of the stream or an empty string
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
|
@ -167,7 +185,7 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* The name of the creator/uploader of the stream.
|
* The name of the creator/uploader of the stream.
|
||||||
* If the name is not available you can simply return an empty string.
|
* If the name is not available you can simply return an empty string.
|
||||||
*
|
*
|
||||||
* @return the name of the creator/uploader of the stream or an empty String
|
* @return the name of the creator/uploader of the stream or an empty tring
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
|
@ -180,7 +198,9 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* @return whether the uploader has been verified by the service's provider
|
* @return whether the uploader has been verified by the service's provider
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
public abstract boolean isUploaderVerified() throws ParsingException;
|
public boolean isUploaderVerified() throws ParsingException {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The url to the image file/profile picture/avatar of the creator/uploader of the stream.
|
* The url to the image file/profile picture/avatar of the creator/uploader of the stream.
|
||||||
|
@ -190,7 +210,9 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public abstract String getUploaderAvatarUrl() throws ParsingException;
|
public String getUploaderAvatarUrl() throws ParsingException {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Url to the page of the sub-channel of the stream. This must not be a homepage,
|
* The Url to the page of the sub-channel of the stream. This must not be a homepage,
|
||||||
|
@ -203,7 +225,9 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public abstract String getSubChannelUrl() throws ParsingException;
|
public String getSubChannelUrl() throws ParsingException {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The name of the sub-channel of the stream.
|
* The name of the sub-channel of the stream.
|
||||||
|
@ -213,7 +237,9 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public abstract String getSubChannelName() throws ParsingException;
|
public String getSubChannelName() throws ParsingException {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The url to the image file/profile picture/avatar of the sub-channel of the stream.
|
* The url to the image file/profile picture/avatar of the sub-channel of the stream.
|
||||||
|
@ -223,17 +249,21 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public abstract String getSubChannelAvatarUrl() throws ParsingException;
|
public String getSubChannelAvatarUrl() throws ParsingException {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the dash mpd url. If you don't know what a dash MPD is you can read about it
|
* Get the dash mpd url. If you don't know what a dash MPD is you can read about it
|
||||||
* <a href="https://www.brendanlong.com/the-structure-of-an-mpeg-dash-mpd.html">here</a>.
|
* <a href="https://www.brendanlong.com/the-structure-of-an-mpeg-dash-mpd.html">here</a>.
|
||||||
*
|
*
|
||||||
* @return the url as a string or an empty string
|
* @return the url as a string or an empty string or an empty string if not available
|
||||||
* @throws ParsingException if an error occurs while reading
|
* @throws ParsingException if an error occurs while reading
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public abstract String getDashMpdUrl() throws ParsingException;
|
public String getDashMpdUrl() throws ParsingException {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* I am not sure if this is in use, and how this is used. However the frontend is missing support
|
* I am not sure if this is in use, and how this is used. However the frontend is missing support
|
||||||
|
@ -241,11 +271,13 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* <a href="https://github.com/teamnewpipe/newpipe/issues">issue</a>,
|
* <a href="https://github.com/teamnewpipe/newpipe/issues">issue</a>,
|
||||||
* or fix this description if you know whats up with this.
|
* or fix this description if you know whats up with this.
|
||||||
*
|
*
|
||||||
* @return The Url to the hls stream.
|
* @return The Url to the hls stream or an empty string if not available.
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public abstract String getHlsUrl() throws ParsingException;
|
public String getHlsUrl() throws ParsingException {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This should return a list of available
|
* This should return a list of available
|
||||||
|
@ -298,7 +330,9 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* @throws ExtractionException
|
* @throws ExtractionException
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public abstract List<SubtitlesStream> getSubtitlesDefault() throws IOException, ExtractionException;
|
public List<SubtitlesStream> getSubtitlesDefault() throws IOException, ExtractionException {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This will return a list of available
|
* This will return a list of available
|
||||||
|
@ -312,7 +346,9 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* @throws ExtractionException
|
* @throws ExtractionException
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public abstract List<SubtitlesStream> getSubtitles(MediaFormat format) throws IOException, ExtractionException;
|
public List<SubtitlesStream> getSubtitles(MediaFormat format) throws IOException, ExtractionException {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the <a href="https://teamnewpipe.github.io/NewPipeExtractor/javadoc/">StreamType</a>.
|
* Get the <a href="https://teamnewpipe.github.io/NewPipeExtractor/javadoc/">StreamType</a>.
|
||||||
|
@ -334,13 +370,15 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* @throws ExtractionException
|
* @throws ExtractionException
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public abstract InfoItemsCollector<? extends InfoItem, ? extends InfoItemExtractor>
|
public InfoItemsCollector<? extends InfoItem, ? extends InfoItemExtractor>
|
||||||
getRelatedItems() throws IOException, ExtractionException;
|
getRelatedItems() throws IOException, ExtractionException {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated Use {@link #getRelatedItems()}. May be removed in a future version.
|
* @deprecated Use {@link #getRelatedItems()}. May be removed in a future version.
|
||||||
* @return The result of {@link #getRelatedItems()} if it is a
|
* @return The result of {@link #getRelatedItems()} if it is a
|
||||||
* StreamInfoItemsCollector, null otherwise
|
* StreamInfoItemsCollector, <code>null</code> otherwise
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
* @throws ExtractionException
|
* @throws ExtractionException
|
||||||
*/
|
*/
|
||||||
|
@ -367,9 +405,11 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
/**
|
/**
|
||||||
* Should analyse the webpage's document and extracts any error message there might be.
|
* Should analyse the webpage's document and extracts any error message there might be.
|
||||||
*
|
*
|
||||||
* @return Error message; null if there is no error message.
|
* @return Error message; <code>null</code> if there is no error message.
|
||||||
*/
|
*/
|
||||||
public abstract String getErrorMessage();
|
public String getErrorMessage() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////
|
||||||
/// Helper
|
/// Helper
|
||||||
|
@ -401,9 +441,9 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
String minutesString = "";
|
String minutesString = "";
|
||||||
String hoursString = "";
|
String hoursString = "";
|
||||||
try {
|
try {
|
||||||
secondsString = Parser.matchGroup1("(\\d{1,3})s", timeStamp);
|
secondsString = Parser.matchGroup1("(\\d+)s", timeStamp);
|
||||||
minutesString = Parser.matchGroup1("(\\d{1,3})m", timeStamp);
|
minutesString = Parser.matchGroup1("(\\d+)m", timeStamp);
|
||||||
hoursString = Parser.matchGroup1("(\\d{1,3})h", timeStamp);
|
hoursString = Parser.matchGroup1("(\\d+)h", timeStamp);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
//it could be that time is given in another method
|
//it could be that time is given in another method
|
||||||
if (secondsString.isEmpty() //if nothing was got,
|
if (secondsString.isEmpty() //if nothing was got,
|
||||||
|
@ -435,30 +475,35 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* a federated system, but a centralised system,
|
* a federated system, but a centralised system,
|
||||||
* you can simply return an empty string.
|
* you can simply return an empty string.
|
||||||
*
|
*
|
||||||
* @return the host of the stream or an empty String.
|
* @return the host of the stream or an empty string.
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public abstract String getHost() throws ParsingException;
|
public String getHost() throws ParsingException {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The privacy of the stream (Eg. Public, Private, Unlisted…).
|
* The privacy of the stream (Eg. Public, Private, Unlisted…).
|
||||||
* If the privacy is not available you can simply return an empty string.
|
|
||||||
*
|
*
|
||||||
* @return the privacy of the stream or an empty String.
|
* @return the privacy of the stream.
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
public abstract Privacy getPrivacy() throws ParsingException;
|
public Privacy getPrivacy() throws ParsingException {
|
||||||
|
return Privacy.PUBLIC;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The name of the category of the stream.
|
* The name of the category of the stream.
|
||||||
* If the category is not available you can simply return an empty string.
|
* If the category is not available you can simply return an empty string.
|
||||||
*
|
*
|
||||||
* @return the category of the stream or an empty String.
|
* @return the category of the stream or an empty string.
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public abstract String getCategory() throws ParsingException;
|
public String getCategory() throws ParsingException {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The name of the licence of the stream.
|
* The name of the licence of the stream.
|
||||||
|
@ -468,7 +513,9 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public abstract String getLicence() throws ParsingException;
|
public String getLicence() throws ParsingException {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The locale language of the stream.
|
* The locale language of the stream.
|
||||||
|
@ -476,11 +523,13 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* If the language is provided by a language code, you can return
|
* If the language is provided by a language code, you can return
|
||||||
* new Locale(language_code);
|
* new Locale(language_code);
|
||||||
*
|
*
|
||||||
* @return the locale language of the stream or null.
|
* @return the locale language of the stream or <code>null</code>.
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public abstract Locale getLanguageInfo() throws ParsingException;
|
public Locale getLanguageInfo() throws ParsingException {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The list of tags of the stream.
|
* The list of tags of the stream.
|
||||||
|
@ -490,7 +539,9 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public abstract List<String> getTags() throws ParsingException;
|
public List<String> getTags() throws ParsingException {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The support information of the stream.
|
* The support information of the stream.
|
||||||
|
@ -499,11 +550,13 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* If the support information are not available,
|
* If the support information are not available,
|
||||||
* you can simply return an empty String.
|
* you can simply return an empty String.
|
||||||
*
|
*
|
||||||
* @return the support information of the stream or an empty String.
|
* @return the support information of the stream or an empty string.
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public abstract String getSupportInfo() throws ParsingException;
|
public String getSupportInfo() throws ParsingException {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The list of stream segments by timestamps for the stream.
|
* The list of stream segments by timestamps for the stream.
|
||||||
|
@ -513,7 +566,9 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public abstract List<StreamSegment> getStreamSegments() throws ParsingException;
|
public List<StreamSegment> getStreamSegments() throws ParsingException {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Meta information about the stream.
|
* Meta information about the stream.
|
||||||
|
@ -524,11 +579,14 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
* </p>
|
* </p>
|
||||||
* The meta information often contains links to external sources like Wikipedia or the WHO.
|
* The meta information often contains links to external sources like Wikipedia or the WHO.
|
||||||
*
|
*
|
||||||
* @return The meta info of the stream or an empty List if not provided.
|
* @return The meta info of the stream or an empty list if not provided.
|
||||||
* @throws ParsingException
|
* @throws ParsingException
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public abstract List<MetaInfo> getMetaInfo() throws ParsingException;
|
public List<MetaInfo> getMetaInfo() throws ParsingException {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
public enum Privacy {
|
public enum Privacy {
|
||||||
PUBLIC,
|
PUBLIC,
|
||||||
UNLISTED,
|
UNLISTED,
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
package org.schabi.newpipe;
|
|
||||||
|
|
||||||
import java.lang.annotation.ElementType;
|
|
||||||
import java.lang.annotation.Inherited;
|
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
import java.lang.annotation.Target;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Marker annotation to skip test in certain cases.
|
|
||||||
*
|
|
||||||
* {@link MockOnlyRule}
|
|
||||||
*/
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
|
||||||
@Target({ElementType.METHOD, ElementType.TYPE})
|
|
||||||
@Inherited
|
|
||||||
public @interface MockOnly {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Explanation why this test should be skipped
|
|
||||||
*/
|
|
||||||
@Nonnull String reason();
|
|
||||||
}
|
|
|
@ -1,51 +0,0 @@
|
||||||
package org.schabi.newpipe;
|
|
||||||
|
|
||||||
import org.junit.Assume;
|
|
||||||
import org.junit.rules.TestRule;
|
|
||||||
import org.junit.runner.Description;
|
|
||||||
import org.junit.runners.model.Statement;
|
|
||||||
import org.schabi.newpipe.downloader.DownloaderType;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* <p>
|
|
||||||
* Allows skipping unreliable or time sensitive tests in CI pipeline.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* <p>
|
|
||||||
* Use it by creating a public variable of this inside the test class and annotate it with
|
|
||||||
* {@link org.junit.Rule}. Then annotate the specific tests to be skipped with {@link MockOnly}
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* <p>
|
|
||||||
* It works by checking if the system variable "downloader" is set to "REAL" and skips the tests if it is.
|
|
||||||
* Otherwise it executes the test.
|
|
||||||
* </p>
|
|
||||||
|
|
||||||
*/
|
|
||||||
public class MockOnlyRule implements TestRule {
|
|
||||||
|
|
||||||
final String downloader = System.getProperty("downloader");
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Nonnull
|
|
||||||
public Statement apply(@Nonnull Statement base, @Nonnull Description description) {
|
|
||||||
return new Statement() {
|
|
||||||
@Override
|
|
||||||
public void evaluate() throws Throwable {
|
|
||||||
final MockOnly annotation = description.getAnnotation(MockOnly.class);
|
|
||||||
if (annotation != null) {
|
|
||||||
final boolean isMockDownloader = downloader == null ||
|
|
||||||
!downloader.equalsIgnoreCase(DownloaderType.REAL.toString());
|
|
||||||
|
|
||||||
Assume.assumeTrue("The test is not reliable against real website. Reason: "
|
|
||||||
+ annotation.reason(), isMockDownloader);
|
|
||||||
}
|
|
||||||
|
|
||||||
base.evaluate();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -4,18 +4,16 @@ import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import static org.junit.Assert.assertArrayEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||||
import static org.junit.Assert.assertNull;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
|
|
||||||
public class ExtractorAsserts {
|
public class ExtractorAsserts {
|
||||||
public static void assertEmptyErrors(String message, List<Throwable> errors) {
|
public static void assertEmptyErrors(String message, List<Throwable> errors) {
|
||||||
|
@ -44,7 +42,7 @@ public class ExtractorAsserts {
|
||||||
|
|
||||||
public static void assertIsSecureUrl(String urlToCheck) {
|
public static void assertIsSecureUrl(String urlToCheck) {
|
||||||
URL url = urlFromString(urlToCheck);
|
URL url = urlFromString(urlToCheck);
|
||||||
assertEquals("Protocol of URL is not secure", "https", url.getProtocol());
|
assertEquals("https", url.getProtocol(), "Protocol of URL is not secure");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void assertNotEmpty(String stringToCheck) {
|
public static void assertNotEmpty(String stringToCheck) {
|
||||||
|
@ -53,7 +51,7 @@ public class ExtractorAsserts {
|
||||||
|
|
||||||
public static void assertNotEmpty(@Nullable String message, String stringToCheck) {
|
public static void assertNotEmpty(@Nullable String message, String stringToCheck) {
|
||||||
assertNotNull(message, stringToCheck);
|
assertNotNull(message, stringToCheck);
|
||||||
assertFalse(message, stringToCheck.isEmpty());
|
assertFalse(stringToCheck.isEmpty(), message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void assertEmpty(String stringToCheck) {
|
public static void assertEmpty(String stringToCheck) {
|
||||||
|
@ -62,12 +60,56 @@ public class ExtractorAsserts {
|
||||||
|
|
||||||
public static void assertEmpty(@Nullable String message, String stringToCheck) {
|
public static void assertEmpty(@Nullable String message, String stringToCheck) {
|
||||||
if (stringToCheck != null) {
|
if (stringToCheck != null) {
|
||||||
assertTrue(message, stringToCheck.isEmpty());
|
assertTrue(stringToCheck.isEmpty(), message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void assertAtLeast(long expected, long actual) {
|
public static void assertGreater(final long expected, final long actual) {
|
||||||
assertTrue(actual + " is not at least " + expected, actual >= expected);
|
assertGreater(expected, actual, actual + " is not > " + expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void assertGreater(
|
||||||
|
final long expected,
|
||||||
|
final long actual,
|
||||||
|
final String message
|
||||||
|
) {
|
||||||
|
assertTrue(actual > expected, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void assertGreaterOrEqual(final long expected, final long actual) {
|
||||||
|
assertGreaterOrEqual(expected, actual, actual + " is not >= " + expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void assertGreaterOrEqual(
|
||||||
|
final long expected,
|
||||||
|
final long actual,
|
||||||
|
final String message
|
||||||
|
) {
|
||||||
|
assertTrue(actual >= expected, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void assertLess(final long expected, final long actual) {
|
||||||
|
assertLess(expected, actual, actual + " is not < " + expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void assertLess(
|
||||||
|
final long expected,
|
||||||
|
final long actual,
|
||||||
|
final String message
|
||||||
|
) {
|
||||||
|
assertTrue(actual < expected, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void assertLessOrEqual(final long expected, final long actual) {
|
||||||
|
assertLessOrEqual(expected, actual, actual + " is not <= " + expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void assertLessOrEqual(
|
||||||
|
final long expected,
|
||||||
|
final long actual,
|
||||||
|
final String message
|
||||||
|
) {
|
||||||
|
assertTrue(actual <= expected, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
// this assumes that sorting a and b in-place is not an issue, so it's only intended for tests
|
// this assumes that sorting a and b in-place is not an issue, so it's only intended for tests
|
||||||
|
@ -85,4 +127,13 @@ public class ExtractorAsserts {
|
||||||
// using new ArrayList<> to make sure the type is the same
|
// using new ArrayList<> to make sure the type is the same
|
||||||
assertEquals(new ArrayList<>(expected), new ArrayList<>(actual));
|
assertEquals(new ArrayList<>(expected), new ArrayList<>(actual));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void assertContains(
|
||||||
|
final String shouldBeContained,
|
||||||
|
final String container) {
|
||||||
|
assertNotNull(shouldBeContained, "shouldBeContained is null");
|
||||||
|
assertNotNull(container, "container is null");
|
||||||
|
assertTrue(container.contains(shouldBeContained),
|
||||||
|
"'" + shouldBeContained + "' should be contained inside '" + container +"'");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
package org.schabi.newpipe.extractor;
|
package org.schabi.newpipe.extractor;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.schabi.newpipe.extractor.NewPipe.getServiceByUrl;
|
import static org.schabi.newpipe.extractor.NewPipe.getServiceByUrl;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
|
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
@ -19,9 +19,11 @@ public class NewPipeTest {
|
||||||
public void testAllServicesHaveDifferentId() throws Exception {
|
public void testAllServicesHaveDifferentId() throws Exception {
|
||||||
HashSet<Integer> servicesId = new HashSet<>();
|
HashSet<Integer> servicesId = new HashSet<>();
|
||||||
for (StreamingService streamingService : NewPipe.getServices()) {
|
for (StreamingService streamingService : NewPipe.getServices()) {
|
||||||
String errorMsg = "There are services with the same id = " + streamingService.getServiceId() + " (current service > " + streamingService.getServiceInfo().getName() + ")";
|
final String errorMsg =
|
||||||
|
"There are services with the same id = " + streamingService.getServiceId()
|
||||||
|
+ " (current service > " + streamingService.getServiceInfo().getName() + ")";
|
||||||
|
|
||||||
assertTrue(errorMsg, servicesId.add(streamingService.getServiceId()));
|
assertTrue(servicesId.add(streamingService.getServiceId()), errorMsg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
package org.schabi.newpipe.extractor.services;
|
package org.schabi.newpipe.extractor.services;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.extractor.Extractor;
|
import org.schabi.newpipe.extractor.Extractor;
|
||||||
|
import org.schabi.newpipe.extractor.ExtractorAsserts;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
|
|
||||||
import static org.hamcrest.CoreMatchers.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.junit.Assert.*;
|
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
||||||
|
|
||||||
public abstract class DefaultExtractorTest<T extends Extractor> implements BaseExtractorTest {
|
public abstract class DefaultExtractorTest<T extends Extractor> implements BaseExtractorTest {
|
||||||
|
@ -40,7 +40,7 @@ public abstract class DefaultExtractorTest<T extends Extractor> implements BaseE
|
||||||
public void testUrl() throws Exception {
|
public void testUrl() throws Exception {
|
||||||
final String url = extractor().getUrl();
|
final String url = extractor().getUrl();
|
||||||
assertIsSecureUrl(url);
|
assertIsSecureUrl(url);
|
||||||
assertThat(url, containsString(expectedUrlContains()));
|
ExtractorAsserts.assertContains(expectedUrlContains(), url);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -48,6 +48,6 @@ public abstract class DefaultExtractorTest<T extends Extractor> implements BaseE
|
||||||
public void testOriginalUrl() throws Exception {
|
public void testOriginalUrl() throws Exception {
|
||||||
final String originalUrl = extractor().getOriginalUrl();
|
final String originalUrl = extractor().getOriginalUrl();
|
||||||
assertIsSecureUrl(originalUrl);
|
assertIsSecureUrl(originalUrl);
|
||||||
assertThat(originalUrl, containsString(expectedOriginalUrlContains()));
|
ExtractorAsserts.assertContains(expectedOriginalUrlContains(), originalUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package org.schabi.newpipe.extractor.services;
|
package org.schabi.newpipe.extractor.services;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.extractor.InfoItem;
|
import org.schabi.newpipe.extractor.InfoItem;
|
||||||
import org.schabi.newpipe.extractor.ListExtractor;
|
import org.schabi.newpipe.extractor.ListExtractor;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package org.schabi.newpipe.extractor.services;
|
package org.schabi.newpipe.extractor.services;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.extractor.MetaInfo;
|
import org.schabi.newpipe.extractor.MetaInfo;
|
||||||
import org.schabi.newpipe.extractor.search.SearchExtractor;
|
import org.schabi.newpipe.extractor.search.SearchExtractor;
|
||||||
|
|
||||||
|
@ -13,8 +13,8 @@ import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertEmpty;
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertEmpty;
|
||||||
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services;
|
package org.schabi.newpipe.extractor.services;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.schabi.newpipe.extractor.ExtractorAsserts;
|
||||||
import org.schabi.newpipe.extractor.InfoItemsCollector;
|
import org.schabi.newpipe.extractor.InfoItemsCollector;
|
||||||
import org.schabi.newpipe.extractor.MediaFormat;
|
import org.schabi.newpipe.extractor.MediaFormat;
|
||||||
import org.schabi.newpipe.extractor.MetaInfo;
|
import org.schabi.newpipe.extractor.MetaInfo;
|
||||||
|
@ -23,14 +24,12 @@ import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static org.hamcrest.CoreMatchers.containsString;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.junit.Assert.assertNull;
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertGreaterOrEqual;
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertAtLeast;
|
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertEqualsOrderIndependent;
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertEqualsOrderIndependent;
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsValidUrl;
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsValidUrl;
|
||||||
|
@ -149,13 +148,13 @@ public abstract class DefaultStreamExtractorTest extends DefaultExtractorTest<St
|
||||||
assertNotNull(description);
|
assertNotNull(description);
|
||||||
|
|
||||||
if (expectedDescriptionIsEmpty()) {
|
if (expectedDescriptionIsEmpty()) {
|
||||||
assertTrue("description is not empty", description.getContent().isEmpty());
|
assertTrue(description.getContent().isEmpty(), "description is not empty");
|
||||||
} else {
|
} else {
|
||||||
assertFalse("description is empty", description.getContent().isEmpty());
|
assertFalse(description.getContent().isEmpty(), "description is empty");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (final String s : expectedDescriptionContains()) {
|
for (final String s : expectedDescriptionContains()) {
|
||||||
assertThat(description.getContent(), containsString(s));
|
ExtractorAsserts.assertContains(s, description.getContent());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,7 +173,7 @@ public abstract class DefaultStreamExtractorTest extends DefaultExtractorTest<St
|
||||||
@Test
|
@Test
|
||||||
@Override
|
@Override
|
||||||
public void testViewCount() throws Exception {
|
public void testViewCount() throws Exception {
|
||||||
assertAtLeast(expectedViewCountAtLeast(), extractor().getViewCount());
|
assertGreaterOrEqual(expectedViewCountAtLeast(), extractor().getViewCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -207,7 +206,7 @@ public abstract class DefaultStreamExtractorTest extends DefaultExtractorTest<St
|
||||||
if (expectedLikeCountAtLeast() == -1) {
|
if (expectedLikeCountAtLeast() == -1) {
|
||||||
assertEquals(-1, extractor().getLikeCount());
|
assertEquals(-1, extractor().getLikeCount());
|
||||||
} else {
|
} else {
|
||||||
assertAtLeast(expectedLikeCountAtLeast(), extractor().getLikeCount());
|
assertGreaterOrEqual(expectedLikeCountAtLeast(), extractor().getLikeCount());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,7 +216,7 @@ public abstract class DefaultStreamExtractorTest extends DefaultExtractorTest<St
|
||||||
if (expectedDislikeCountAtLeast() == -1) {
|
if (expectedDislikeCountAtLeast() == -1) {
|
||||||
assertEquals(-1, extractor().getDislikeCount());
|
assertEquals(-1, extractor().getDislikeCount());
|
||||||
} else {
|
} else {
|
||||||
assertAtLeast(expectedDislikeCountAtLeast(), extractor().getDislikeCount());
|
assertGreaterOrEqual(expectedDislikeCountAtLeast(), extractor().getDislikeCount());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -265,8 +264,8 @@ public abstract class DefaultStreamExtractorTest extends DefaultExtractorTest<St
|
||||||
|
|
||||||
final int formatId = stream.getFormatId();
|
final int formatId = stream.getFormatId();
|
||||||
// see MediaFormat: video stream formats range from 0 to 0x100
|
// see MediaFormat: video stream formats range from 0 to 0x100
|
||||||
assertTrue("format id does not fit a video stream: " + formatId,
|
assertTrue(0 <= formatId && formatId < 0x100,
|
||||||
0 <= formatId && formatId < 0x100);
|
"format id does not fit a video stream: " + formatId);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
assertTrue(videoStreams.isEmpty());
|
assertTrue(videoStreams.isEmpty());
|
||||||
|
@ -287,8 +286,8 @@ public abstract class DefaultStreamExtractorTest extends DefaultExtractorTest<St
|
||||||
|
|
||||||
final int formatId = stream.getFormatId();
|
final int formatId = stream.getFormatId();
|
||||||
// see MediaFormat: video stream formats range from 0x100 to 0x1000
|
// see MediaFormat: video stream formats range from 0x100 to 0x1000
|
||||||
assertTrue("format id does not fit an audio stream: " + formatId,
|
assertTrue(0x100 <= formatId && formatId < 0x1000,
|
||||||
0x100 <= formatId && formatId < 0x1000);
|
"format id does not fit an audio stream: " + formatId);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
assertTrue(audioStreams.isEmpty());
|
assertTrue(audioStreams.isEmpty());
|
||||||
|
@ -309,8 +308,8 @@ public abstract class DefaultStreamExtractorTest extends DefaultExtractorTest<St
|
||||||
|
|
||||||
final int formatId = stream.getFormatId();
|
final int formatId = stream.getFormatId();
|
||||||
// see MediaFormat: video stream formats range from 0x1000 to 0x10000
|
// see MediaFormat: video stream formats range from 0x1000 to 0x10000
|
||||||
assertTrue("format id does not fit a subtitles stream: " + formatId,
|
assertTrue(0x1000 <= formatId && formatId < 0x10000,
|
||||||
0x1000 <= formatId && formatId < 0x10000);
|
"format id does not fit a subtitles stream: " + formatId);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
assertTrue(subtitles.isEmpty());
|
assertTrue(subtitles.isEmpty());
|
||||||
|
@ -333,7 +332,7 @@ public abstract class DefaultStreamExtractorTest extends DefaultExtractorTest<St
|
||||||
assertTrue(dashMpdUrl.isEmpty());
|
assertTrue(dashMpdUrl.isEmpty());
|
||||||
} else {
|
} else {
|
||||||
assertIsSecureUrl(dashMpdUrl);
|
assertIsSecureUrl(dashMpdUrl);
|
||||||
assertThat(extractor().getDashMpdUrl(), containsString(expectedDashMpdUrlContains()));
|
ExtractorAsserts.assertContains(expectedDashMpdUrlContains(), extractor().getDashMpdUrl());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,16 +14,15 @@ import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import static junit.framework.TestCase.assertFalse;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.junit.Assert.*;
|
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.*;
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.*;
|
||||||
import static org.schabi.newpipe.extractor.StreamingService.LinkType;
|
import static org.schabi.newpipe.extractor.StreamingService.LinkType;
|
||||||
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
||||||
|
|
||||||
public final class DefaultTests {
|
public final class DefaultTests {
|
||||||
public static void defaultTestListOfItems(StreamingService expectedService, List<? extends InfoItem> itemsList, List<Throwable> errors) throws ParsingException {
|
public static void defaultTestListOfItems(StreamingService expectedService, List<? extends InfoItem> itemsList, List<Throwable> errors) throws ParsingException {
|
||||||
assertFalse("List of items is empty", itemsList.isEmpty());
|
assertFalse(itemsList.isEmpty(), "List of items is empty");
|
||||||
assertFalse("List of items contains a null element", itemsList.contains(null));
|
assertFalse(itemsList.contains(null), "List of items contains a null element");
|
||||||
assertEmptyErrors("Errors during extraction", errors);
|
assertEmptyErrors("Errors during extraction", errors);
|
||||||
|
|
||||||
for (InfoItem item : itemsList) {
|
for (InfoItem item : itemsList) {
|
||||||
|
@ -33,8 +32,8 @@ public final class DefaultTests {
|
||||||
if (!isNullOrEmpty(thumbnailUrl)) {
|
if (!isNullOrEmpty(thumbnailUrl)) {
|
||||||
assertIsSecureUrl(thumbnailUrl);
|
assertIsSecureUrl(thumbnailUrl);
|
||||||
}
|
}
|
||||||
assertNotNull("InfoItem type not set: " + item, item.getInfoType());
|
assertNotNull(item.getInfoType(), "InfoItem type not set: " + item);
|
||||||
assertEquals("Unexpected item service id", expectedService.getServiceId(), item.getServiceId());
|
assertEquals(expectedService.getServiceId(), item.getServiceId(), "Unexpected item service id");
|
||||||
assertNotEmpty("Item name not set: " + item, item.getName());
|
assertNotEmpty("Item name not set: " + item, item.getName());
|
||||||
|
|
||||||
if (item instanceof StreamInfoItem) {
|
if (item instanceof StreamInfoItem) {
|
||||||
|
@ -57,7 +56,7 @@ public final class DefaultTests {
|
||||||
|
|
||||||
if (!isNullOrEmpty(streamInfoItem.getTextualUploadDate())) {
|
if (!isNullOrEmpty(streamInfoItem.getTextualUploadDate())) {
|
||||||
final DateWrapper uploadDate = streamInfoItem.getUploadDate();
|
final DateWrapper uploadDate = streamInfoItem.getUploadDate();
|
||||||
assertNotNull("No parsed upload date", uploadDate);
|
assertNotNull(uploadDate,"No parsed upload date");
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (item instanceof ChannelInfoItem) {
|
} else if (item instanceof ChannelInfoItem) {
|
||||||
|
@ -74,22 +73,22 @@ public final class DefaultTests {
|
||||||
private static void assertExpectedLinkType(StreamingService expectedService, String url, LinkType expectedLinkType) throws ParsingException {
|
private static void assertExpectedLinkType(StreamingService expectedService, String url, LinkType expectedLinkType) throws ParsingException {
|
||||||
final LinkType linkTypeByUrl = expectedService.getLinkTypeByUrl(url);
|
final LinkType linkTypeByUrl = expectedService.getLinkTypeByUrl(url);
|
||||||
|
|
||||||
assertNotEquals("Url is not recognized by its own service: \"" + url + "\"",
|
assertNotEquals(LinkType.NONE, linkTypeByUrl,
|
||||||
LinkType.NONE, linkTypeByUrl);
|
"Url is not recognized by its own service: \"" + url + "\"");
|
||||||
assertEquals("Service returned wrong link type for: \"" + url + "\"",
|
assertEquals(expectedLinkType, linkTypeByUrl,
|
||||||
expectedLinkType, linkTypeByUrl);
|
"Service returned wrong link type for: \"" + url + "\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void assertOnlyContainsType(ListExtractor.InfoItemsPage<? extends InfoItem> items, InfoItem.InfoType expectedType) {
|
public static void assertOnlyContainsType(ListExtractor.InfoItemsPage<? extends InfoItem> items, InfoItem.InfoType expectedType) {
|
||||||
for (InfoItem item : items.getItems()) {
|
for (InfoItem item : items.getItems()) {
|
||||||
assertEquals("Item list contains unexpected info types",
|
assertEquals(expectedType, item.getInfoType(),
|
||||||
expectedType, item.getInfoType());
|
"Item list contains unexpected info types");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <T extends InfoItem> void assertNoMoreItems(ListExtractor<T> extractor) throws Exception {
|
public static <T extends InfoItem> void assertNoMoreItems(ListExtractor<T> extractor) throws Exception {
|
||||||
final ListExtractor.InfoItemsPage<T> initialPage = extractor.getInitialPage();
|
final ListExtractor.InfoItemsPage<T> initialPage = extractor.getInitialPage();
|
||||||
assertFalse("More items available when it shouldn't", initialPage.hasNextPage());
|
assertFalse(initialPage.hasNextPage(), "More items available when it shouldn't");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void assertNoDuplicatedItems(StreamingService expectedService,
|
public static void assertNoDuplicatedItems(StreamingService expectedService,
|
||||||
|
@ -122,10 +121,10 @@ public final class DefaultTests {
|
||||||
|
|
||||||
public static <T extends InfoItem> ListExtractor.InfoItemsPage<T> defaultTestMoreItems(ListExtractor<T> extractor) throws Exception {
|
public static <T extends InfoItem> ListExtractor.InfoItemsPage<T> defaultTestMoreItems(ListExtractor<T> extractor) throws Exception {
|
||||||
final ListExtractor.InfoItemsPage<T> initialPage = extractor.getInitialPage();
|
final ListExtractor.InfoItemsPage<T> initialPage = extractor.getInitialPage();
|
||||||
assertTrue("Doesn't have more items", initialPage.hasNextPage());
|
assertTrue(initialPage.hasNextPage(), "Doesn't have more items");
|
||||||
ListExtractor.InfoItemsPage<T> nextPage = extractor.getPage(initialPage.getNextPage());
|
ListExtractor.InfoItemsPage<T> nextPage = extractor.getPage(initialPage.getNextPage());
|
||||||
final List<T> items = nextPage.getItems();
|
final List<T> items = nextPage.getItems();
|
||||||
assertFalse("Next page is empty", items.isEmpty());
|
assertFalse(items.isEmpty(), "Next page is empty");
|
||||||
assertEmptyErrors("Next page have errors", nextPage.getErrors());
|
assertEmptyErrors("Next page have errors", nextPage.getErrors());
|
||||||
|
|
||||||
defaultTestListOfItems(extractor.getService(), nextPage.getItems(), nextPage.getErrors());
|
defaultTestListOfItems(extractor.getService(), nextPage.getItems(), nextPage.getErrors());
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
package org.schabi.newpipe.extractor.services.bandcamp;
|
package org.schabi.newpipe.extractor.services.bandcamp;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
|
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
|
||||||
|
@ -12,14 +12,14 @@ import org.schabi.newpipe.extractor.services.BaseChannelExtractorTest;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
||||||
|
|
||||||
public class BandcampChannelExtractorTest implements BaseChannelExtractorTest {
|
public class BandcampChannelExtractorTest implements BaseChannelExtractorTest {
|
||||||
|
|
||||||
private static ChannelExtractor extractor;
|
private static ChannelExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = Bandcamp.getChannelExtractor("https://toupie.bandcamp.com/releases");
|
extractor = Bandcamp.getChannelExtractor("https://toupie.bandcamp.com/releases");
|
||||||
|
@ -39,12 +39,12 @@ public class BandcampChannelExtractorTest implements BaseChannelExtractorTest {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void testAvatarUrl() throws Exception {
|
public void testAvatarUrl() throws Exception {
|
||||||
assertTrue("unexpected avatar URL", extractor.getAvatarUrl().contains("://f4.bcbits.com/"));
|
assertTrue(extractor.getAvatarUrl().contains("://f4.bcbits.com/"), "unexpected avatar URL");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void testBannerUrl() throws Exception {
|
public void testBannerUrl() throws Exception {
|
||||||
assertTrue("unexpected banner URL", extractor.getBannerUrl().contains("://f4.bcbits.com/"));
|
assertTrue(extractor.getBannerUrl().contains("://f4.bcbits.com/"), "unexpected banner URL");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -2,14 +2,14 @@
|
||||||
|
|
||||||
package org.schabi.newpipe.extractor.services.bandcamp;
|
package org.schabi.newpipe.extractor.services.bandcamp;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.bandcamp.linkHandler.BandcampChannelLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.bandcamp.linkHandler.BandcampChannelLinkHandlerFactory;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for {@link BandcampChannelLinkHandlerFactory}
|
* Test for {@link BandcampChannelLinkHandlerFactory}
|
||||||
|
@ -17,7 +17,7 @@ import static org.junit.Assert.*;
|
||||||
public class BandcampChannelLinkHandlerFactoryTest {
|
public class BandcampChannelLinkHandlerFactoryTest {
|
||||||
private static BandcampChannelLinkHandlerFactory linkHandler;
|
private static BandcampChannelLinkHandlerFactory linkHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
linkHandler = new BandcampChannelLinkHandlerFactory();
|
linkHandler = new BandcampChannelLinkHandlerFactory();
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
@ -73,14 +73,14 @@ public class BandcampChannelLinkHandlerFactoryTest {
|
||||||
assertEquals("https://lobstertheremin.com", linkHandler.getUrl("2735462545"));
|
assertEquals("https://lobstertheremin.com", linkHandler.getUrl("2735462545"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = ParsingException.class)
|
@Test
|
||||||
public void testGetUrlWithInvalidId() throws ParsingException {
|
public void testGetUrlWithInvalidId() {
|
||||||
linkHandler.getUrl("0");
|
assertThrows(ParsingException.class, () -> linkHandler.getUrl("0"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = ParsingException.class)
|
@Test
|
||||||
public void testGetIdWithInvalidUrl() throws ParsingException {
|
public void testGetIdWithInvalidUrl() {
|
||||||
linkHandler.getId("https://bandcamp.com");
|
assertThrows(ParsingException.class, () -> linkHandler.getUrl("https://bandcamp.com"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services.bandcamp;
|
package org.schabi.newpipe.extractor.services.bandcamp;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.ListExtractor;
|
import org.schabi.newpipe.extractor.ListExtractor;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
|
@ -13,16 +13,16 @@ import org.schabi.newpipe.extractor.utils.Utils;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
||||||
|
|
||||||
public class BandcampCommentsExtractorTest {
|
public class BandcampCommentsExtractorTest {
|
||||||
|
|
||||||
private static CommentsExtractor extractor;
|
private static CommentsExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws ExtractionException, IOException {
|
public static void setUp() throws ExtractionException, IOException {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = Bandcamp.getCommentsExtractor("https://floatingpoints.bandcamp.com/album/promises");
|
extractor = Bandcamp.getCommentsExtractor("https://floatingpoints.bandcamp.com/album/promises");
|
||||||
|
|
|
@ -2,15 +2,14 @@
|
||||||
|
|
||||||
package org.schabi.newpipe.extractor.services.bandcamp;
|
package org.schabi.newpipe.extractor.services.bandcamp;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.bandcamp.linkHandler.BandcampCommentsLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.bandcamp.linkHandler.BandcampCommentsLinkHandlerFactory;
|
||||||
import org.schabi.newpipe.extractor.services.bandcamp.linkHandler.BandcampStreamLinkHandlerFactory;
|
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for {@link BandcampCommentsLinkHandlerFactory}
|
* Test for {@link BandcampCommentsLinkHandlerFactory}
|
||||||
|
@ -19,7 +18,7 @@ public class BandcampCommentsLinkHandlerFactoryTest {
|
||||||
|
|
||||||
private static BandcampCommentsLinkHandlerFactory linkHandler;
|
private static BandcampCommentsLinkHandlerFactory linkHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
linkHandler = new BandcampCommentsLinkHandlerFactory();
|
linkHandler = new BandcampCommentsLinkHandlerFactory();
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
package org.schabi.newpipe.extractor.services.bandcamp;
|
package org.schabi.newpipe.extractor.services.bandcamp;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.Page;
|
import org.schabi.newpipe.extractor.Page;
|
||||||
|
@ -16,9 +16,9 @@ import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampFeature
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertNotEquals;
|
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,7 +28,7 @@ public class BandcampFeaturedExtractorTest implements BaseListExtractorTest {
|
||||||
|
|
||||||
private static BandcampFeaturedExtractor extractor;
|
private static BandcampFeaturedExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws ExtractionException, IOException {
|
public static void setUp() throws ExtractionException, IOException {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = (BandcampFeaturedExtractor) Bandcamp
|
extractor = (BandcampFeaturedExtractor) Bandcamp
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
|
|
||||||
package org.schabi.newpipe.extractor.services.bandcamp;
|
package org.schabi.newpipe.extractor.services.bandcamp;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.bandcamp.linkHandler.BandcampFeaturedLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.bandcamp.linkHandler.BandcampFeaturedLinkHandlerFactory;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for {@link BandcampFeaturedLinkHandlerFactory}
|
* Tests for {@link BandcampFeaturedLinkHandlerFactory}
|
||||||
|
@ -16,7 +16,7 @@ public class BandcampFeaturedLinkHandlerFactoryTest {
|
||||||
|
|
||||||
private static BandcampFeaturedLinkHandlerFactory linkHandler;
|
private static BandcampFeaturedLinkHandlerFactory linkHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
linkHandler = new BandcampFeaturedLinkHandlerFactory();
|
linkHandler = new BandcampFeaturedLinkHandlerFactory();
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,9 @@
|
||||||
|
|
||||||
package org.schabi.newpipe.extractor.services.bandcamp;
|
package org.schabi.newpipe.extractor.services.bandcamp;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.Timeout;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ContentNotAvailableException;
|
import org.schabi.newpipe.extractor.exceptions.ContentNotAvailableException;
|
||||||
|
@ -17,7 +18,7 @@ import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -25,7 +26,7 @@ import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
||||||
*/
|
*/
|
||||||
public class BandcampPlaylistExtractorTest {
|
public class BandcampPlaylistExtractorTest {
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
}
|
}
|
||||||
|
@ -57,7 +58,8 @@ public class BandcampPlaylistExtractorTest {
|
||||||
/**
|
/**
|
||||||
* Tests that no attempt to load every track's cover individually is made
|
* Tests that no attempt to load every track's cover individually is made
|
||||||
*/
|
*/
|
||||||
@Test(timeout = 10000L)
|
@Test
|
||||||
|
@Timeout(10)
|
||||||
public void testDifferentTrackCoversDuration() throws ExtractionException, IOException {
|
public void testDifferentTrackCoversDuration() throws ExtractionException, IOException {
|
||||||
final PlaylistExtractor extractor = Bandcamp.getPlaylistExtractor("https://infiniteammo.bandcamp.com/album/night-in-the-woods-vol-1-at-the-end-of-everything");
|
final PlaylistExtractor extractor = Bandcamp.getPlaylistExtractor("https://infiniteammo.bandcamp.com/album/night-in-the-woods-vol-1-at-the-end-of-everything");
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
@ -73,10 +75,11 @@ public class BandcampPlaylistExtractorTest {
|
||||||
/**
|
/**
|
||||||
* Test playlists with locked content
|
* Test playlists with locked content
|
||||||
*/
|
*/
|
||||||
@Test(expected = ContentNotAvailableException.class)
|
@Test
|
||||||
public void testLockedContent() throws ExtractionException, IOException {
|
public void testLockedContent() throws ExtractionException, IOException {
|
||||||
final PlaylistExtractor extractor = Bandcamp.getPlaylistExtractor("https://billwurtz.bandcamp.com/album/high-enough");
|
final PlaylistExtractor extractor = Bandcamp.getPlaylistExtractor("https://billwurtz.bandcamp.com/album/high-enough");
|
||||||
extractor.fetchPage();
|
|
||||||
|
assertThrows(ContentNotAvailableException.class, extractor::fetchPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -95,7 +98,7 @@ public class BandcampPlaylistExtractorTest {
|
||||||
|
|
||||||
private static PlaylistExtractor extractor;
|
private static PlaylistExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws ExtractionException, IOException {
|
public static void setUp() throws ExtractionException, IOException {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = Bandcamp.getPlaylistExtractor("https://macbenson.bandcamp.com/album/coming-of-age");
|
extractor = Bandcamp.getPlaylistExtractor("https://macbenson.bandcamp.com/album/coming-of-age");
|
||||||
|
|
|
@ -2,15 +2,15 @@
|
||||||
|
|
||||||
package org.schabi.newpipe.extractor.services.bandcamp;
|
package org.schabi.newpipe.extractor.services.bandcamp;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.bandcamp.linkHandler.BandcampPlaylistLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.bandcamp.linkHandler.BandcampPlaylistLinkHandlerFactory;
|
||||||
|
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for {@link BandcampPlaylistLinkHandlerFactory}
|
* Test for {@link BandcampPlaylistLinkHandlerFactory}
|
||||||
|
@ -19,7 +19,7 @@ public class BandcampPlaylistLinkHandlerFactoryTest {
|
||||||
|
|
||||||
private static BandcampPlaylistLinkHandlerFactory linkHandler;
|
private static BandcampPlaylistLinkHandlerFactory linkHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
linkHandler = new BandcampPlaylistLinkHandlerFactory();
|
linkHandler = new BandcampPlaylistLinkHandlerFactory();
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
package org.schabi.newpipe.extractor.services.bandcamp;
|
package org.schabi.newpipe.extractor.services.bandcamp;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
||||||
|
@ -14,8 +14,8 @@ import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -25,7 +25,7 @@ public class BandcampRadioExtractorTest implements BaseListExtractorTest {
|
||||||
|
|
||||||
private static BandcampRadioExtractor extractor;
|
private static BandcampRadioExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws ExtractionException, IOException {
|
public static void setUp() throws ExtractionException, IOException {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = (BandcampRadioExtractor) Bandcamp
|
extractor = (BandcampRadioExtractor) Bandcamp
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services.bandcamp;
|
package org.schabi.newpipe.extractor.services.bandcamp;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
|
@ -19,7 +19,7 @@ import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
||||||
|
|
||||||
public class BandcampRadioStreamExtractorTest extends DefaultStreamExtractorTest {
|
public class BandcampRadioStreamExtractorTest extends DefaultStreamExtractorTest {
|
||||||
|
@ -28,7 +28,7 @@ public class BandcampRadioStreamExtractorTest extends DefaultStreamExtractorTest
|
||||||
|
|
||||||
private static final String URL = "https://bandcamp.com/?show=230";
|
private static final String URL = "https://bandcamp.com/?show=230";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws IOException, ExtractionException {
|
public static void setUp() throws IOException, ExtractionException {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = Bandcamp.getStreamExtractor(URL);
|
extractor = Bandcamp.getStreamExtractor(URL);
|
||||||
|
@ -56,15 +56,15 @@ public class BandcampRadioStreamExtractorTest extends DefaultStreamExtractorTest
|
||||||
@Override public String expectedUploaderName() { return "Andrew Jervis"; }
|
@Override public String expectedUploaderName() { return "Andrew Jervis"; }
|
||||||
@Override public int expectedStreamSegmentsCount() { return 30; }
|
@Override public int expectedStreamSegmentsCount() { return 30; }
|
||||||
|
|
||||||
@Test(expected = ContentNotSupportedException.class)
|
@Test
|
||||||
public void testGetUploaderUrl() throws ParsingException {
|
public void testGetUploaderUrl() {
|
||||||
extractor.getUploaderUrl();
|
assertThrows(ContentNotSupportedException.class, extractor::getUploaderUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = ContentNotSupportedException.class)
|
@Test
|
||||||
@Override
|
@Override
|
||||||
public void testUploaderUrl() throws Exception {
|
public void testUploaderUrl() throws Exception {
|
||||||
super.testUploaderUrl();
|
assertThrows(ContentNotSupportedException.class, super::testUploaderUrl);
|
||||||
}
|
}
|
||||||
@Override public String expectedUploaderUrl() { return null; }
|
@Override public String expectedUploaderUrl() { return null; }
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
package org.schabi.newpipe.extractor.services.bandcamp;
|
package org.schabi.newpipe.extractor.services.bandcamp;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.*;
|
import org.schabi.newpipe.extractor.*;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
||||||
|
@ -16,8 +16,8 @@ import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -25,7 +25,7 @@ import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
||||||
*/
|
*/
|
||||||
public class BandcampSearchExtractorTest {
|
public class BandcampSearchExtractorTest {
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ public class BandcampSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "noise";
|
private static final String QUERY = "noise";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = Bandcamp.getSearchExtractor(QUERY);
|
extractor = Bandcamp.getSearchExtractor(QUERY);
|
||||||
|
|
|
@ -2,21 +2,21 @@
|
||||||
|
|
||||||
package org.schabi.newpipe.extractor.services.bandcamp;
|
package org.schabi.newpipe.extractor.services.bandcamp;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.bandcamp.linkHandler.BandcampSearchQueryHandlerFactory;
|
import org.schabi.newpipe.extractor.services.bandcamp.linkHandler.BandcampSearchQueryHandlerFactory;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
||||||
|
|
||||||
public class BandcampSearchQueryHandlerFactoryTest {
|
public class BandcampSearchQueryHandlerFactoryTest {
|
||||||
|
|
||||||
static BandcampSearchQueryHandlerFactory searchQuery;
|
static BandcampSearchQueryHandlerFactory searchQuery;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
package org.schabi.newpipe.extractor.services.bandcamp;
|
package org.schabi.newpipe.extractor.services.bandcamp;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
|
@ -19,8 +19,8 @@ import java.io.IOException;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -30,7 +30,7 @@ public class BandcampStreamExtractorTest extends DefaultStreamExtractorTest {
|
||||||
|
|
||||||
private static BandcampStreamExtractor extractor;
|
private static BandcampStreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws ExtractionException, IOException {
|
public static void setUp() throws ExtractionException, IOException {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
|
||||||
|
|
|
@ -2,14 +2,14 @@
|
||||||
|
|
||||||
package org.schabi.newpipe.extractor.services.bandcamp;
|
package org.schabi.newpipe.extractor.services.bandcamp;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.bandcamp.linkHandler.BandcampStreamLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.bandcamp.linkHandler.BandcampStreamLinkHandlerFactory;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for {@link BandcampStreamLinkHandlerFactory}
|
* Test for {@link BandcampStreamLinkHandlerFactory}
|
||||||
|
@ -18,7 +18,7 @@ public class BandcampStreamLinkHandlerFactoryTest {
|
||||||
|
|
||||||
private static BandcampStreamLinkHandlerFactory linkHandler;
|
private static BandcampStreamLinkHandlerFactory linkHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
linkHandler = new BandcampStreamLinkHandlerFactory();
|
linkHandler = new BandcampStreamLinkHandlerFactory();
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
package org.schabi.newpipe.extractor.services.bandcamp;
|
package org.schabi.newpipe.extractor.services.bandcamp;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
||||||
|
@ -12,7 +12,7 @@ import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampSuggest
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -22,7 +22,7 @@ public class BandcampSuggestionExtractorTest {
|
||||||
|
|
||||||
private static BandcampSuggestionExtractor extractor;
|
private static BandcampSuggestionExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = (BandcampSuggestionExtractor) Bandcamp.getSuggestionExtractor();
|
extractor = (BandcampSuggestionExtractor) Bandcamp.getSuggestionExtractor();
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
package org.schabi.newpipe.extractor.services.media_ccc;
|
package org.schabi.newpipe.extractor.services.media_ccc;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.services.media_ccc.extractors.MediaCCCConferenceExtractor;
|
import org.schabi.newpipe.extractor.services.media_ccc.extractors.MediaCCCConferenceExtractor;
|
||||||
|
|
||||||
import static junit.framework.TestCase.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.MediaCCC;
|
import static org.schabi.newpipe.extractor.ServiceList.MediaCCC;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -17,7 +17,7 @@ public class MediaCCCConferenceExtractorTest {
|
||||||
public static class FrOSCon2017 {
|
public static class FrOSCon2017 {
|
||||||
private static MediaCCCConferenceExtractor extractor;
|
private static MediaCCCConferenceExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUpClass() throws Exception {
|
public static void setUpClass() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = (MediaCCCConferenceExtractor) MediaCCC.getChannelExtractor("https://media.ccc.de/c/froscon2017");
|
extractor = (MediaCCCConferenceExtractor) MediaCCC.getChannelExtractor("https://media.ccc.de/c/froscon2017");
|
||||||
|
@ -53,7 +53,7 @@ public class MediaCCCConferenceExtractorTest {
|
||||||
public static class Oscal2019 {
|
public static class Oscal2019 {
|
||||||
private static MediaCCCConferenceExtractor extractor;
|
private static MediaCCCConferenceExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUpClass() throws Exception {
|
public static void setUpClass() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = (MediaCCCConferenceExtractor) MediaCCC.getChannelExtractor("https://media.ccc.de/c/oscal19");
|
extractor = (MediaCCCConferenceExtractor) MediaCCC.getChannelExtractor("https://media.ccc.de/c/oscal19");
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
package org.schabi.newpipe.extractor.services.media_ccc;
|
package org.schabi.newpipe.extractor.services.media_ccc;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.media_ccc.linkHandler.MediaCCCConferenceLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.media_ccc.linkHandler.MediaCCCConferenceLinkHandlerFactory;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
public class MediaCCCConferenceLinkHandlerFactoryTest {
|
public class MediaCCCConferenceLinkHandlerFactoryTest {
|
||||||
private static MediaCCCConferenceLinkHandlerFactory linkHandler;
|
private static MediaCCCConferenceLinkHandlerFactory linkHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
linkHandler = new MediaCCCConferenceLinkHandlerFactory();
|
linkHandler = new MediaCCCConferenceLinkHandlerFactory();
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
package org.schabi.newpipe.extractor.services.media_ccc;
|
package org.schabi.newpipe.extractor.services.media_ccc;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
|
import org.junit.jupiter.params.provider.ValueSource;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
|
import org.schabi.newpipe.extractor.ExtractorAsserts;
|
||||||
|
import org.schabi.newpipe.extractor.Info;
|
||||||
import org.schabi.newpipe.extractor.InfoItem;
|
import org.schabi.newpipe.extractor.InfoItem;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.kiosk.KioskExtractor;
|
import org.schabi.newpipe.extractor.kiosk.KioskExtractor;
|
||||||
import org.schabi.newpipe.extractor.services.media_ccc.extractors.MediaCCCConferenceKiosk;
|
import org.schabi.newpipe.extractor.services.media_ccc.extractors.MediaCCCConferenceKiosk;
|
||||||
|
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.MediaCCC;
|
import static org.schabi.newpipe.extractor.ServiceList.MediaCCC;
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,7 +27,7 @@ public class MediaCCCConferenceListExtractorTest {
|
||||||
|
|
||||||
private static KioskExtractor extractor;
|
private static KioskExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUpClass() throws Exception {
|
public static void setUpClass() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = MediaCCC.getKioskList().getExtractorById("conferences", null);
|
extractor = MediaCCC.getKioskList().getExtractorById("conferences", null);
|
||||||
|
@ -29,30 +35,25 @@ public class MediaCCCConferenceListExtractorTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getConferencesListTest() throws Exception {
|
void getConferencesListTest() throws Exception {
|
||||||
assertTrue("returned list was to small",
|
ExtractorAsserts.assertGreaterOrEqual(174, extractor.getInitialPage().getItems().size());
|
||||||
extractor.getInitialPage().getItems().size() >= 174);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@ParameterizedTest
|
||||||
public void conferenceTypeTest() throws Exception {
|
@ValueSource(strings = {
|
||||||
assertTrue(contains(extractor.getInitialPage().getItems(), "FrOSCon 2016"));
|
"FrOSCon 2016",
|
||||||
assertTrue(contains(extractor.getInitialPage().getItems(), "ChaosWest @ 35c3"));
|
"ChaosWest @ 35c3",
|
||||||
assertTrue(contains(extractor.getInitialPage().getItems(), "CTreffOS chaOStalks"));
|
"CTreffOS chaOStalks",
|
||||||
assertTrue(contains(extractor.getInitialPage().getItems(), "Datenspuren 2015"));
|
"Datenspuren 2015",
|
||||||
assertTrue(contains(extractor.getInitialPage().getItems(), "Chaos Singularity 2017"));
|
"Chaos Singularity 2017",
|
||||||
assertTrue(contains(extractor.getInitialPage().getItems(), "SIGINT10"));
|
"SIGINT10",
|
||||||
assertTrue(contains(extractor.getInitialPage().getItems(), "Vintage Computing Festival Berlin 2015"));
|
"Vintage Computing Festival Berlin 2015",
|
||||||
assertTrue(contains(extractor.getInitialPage().getItems(), "FIfFKon 2015"));
|
"FIfFKon 2015",
|
||||||
assertTrue(contains(extractor.getInitialPage().getItems(), "33C3: trailers"));
|
"33C3: trailers",
|
||||||
assertTrue(contains(extractor.getInitialPage().getItems(), "Blinkenlights"));
|
"Blinkenlights"
|
||||||
}
|
})
|
||||||
|
void conferenceTypeTest(final String name) throws Exception {
|
||||||
private boolean contains(List<InfoItem> itemList, String name) {
|
final List<InfoItem> itemList = extractor.getInitialPage().getItems();
|
||||||
for (InfoItem item : itemList) {
|
assertTrue(itemList.stream().anyMatch(item -> name.equals(item.getName())));
|
||||||
if (item.getName().equals(name))
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services.media_ccc;
|
package org.schabi.newpipe.extractor.services.media_ccc;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.InfoItem;
|
import org.schabi.newpipe.extractor.InfoItem;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
|
@ -14,7 +14,7 @@ import static org.schabi.newpipe.extractor.ServiceList.MediaCCC;
|
||||||
public class MediaCCCLiveStreamListExtractorTest {
|
public class MediaCCCLiveStreamListExtractorTest {
|
||||||
private static KioskExtractor extractor;
|
private static KioskExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUpClass() throws Exception {
|
public static void setUpClass() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = MediaCCC.getKioskList().getExtractorById("live", null);
|
extractor = MediaCCC.getKioskList().getExtractorById("live", null);
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
package org.schabi.newpipe.extractor.services.media_ccc;
|
package org.schabi.newpipe.extractor.services.media_ccc;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.services.media_ccc.extractors.MediaCCCStreamExtractor;
|
import org.schabi.newpipe.extractor.services.media_ccc.extractors.MediaCCCStreamExtractor;
|
||||||
import org.schabi.newpipe.extractor.stream.AudioStream;
|
import org.schabi.newpipe.extractor.stream.AudioStream;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamExtractor;
|
import org.schabi.newpipe.extractor.stream.StreamExtractor;
|
||||||
|
|
||||||
import static junit.framework.TestCase.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.MediaCCC;
|
import static org.schabi.newpipe.extractor.ServiceList.MediaCCC;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -18,7 +18,7 @@ public class MediaCCCOggTest {
|
||||||
// test against https://media.ccc.de/public/events/1317
|
// test against https://media.ccc.de/public/events/1317
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUpClass() throws Exception {
|
public static void setUpClass() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,22 @@
|
||||||
package org.schabi.newpipe.extractor.services.media_ccc;
|
package org.schabi.newpipe.extractor.services.media_ccc;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Ignore;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.Test;
|
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.kiosk.KioskExtractor;
|
import org.schabi.newpipe.extractor.kiosk.KioskExtractor;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
||||||
|
|
||||||
import java.time.OffsetDateTime;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.MediaCCC;
|
import static org.schabi.newpipe.extractor.ServiceList.MediaCCC;
|
||||||
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
||||||
|
|
||||||
public class MediaCCCRecentListExtractorTest {
|
public class MediaCCCRecentListExtractorTest {
|
||||||
private static KioskExtractor extractor;
|
private static KioskExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUpClass() throws Exception {
|
public static void setUpClass() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = MediaCCC.getKioskList().getExtractorById("recent", null);
|
extractor = MediaCCC.getKioskList().getExtractorById("recent", null);
|
||||||
|
|
|
@ -1,23 +1,22 @@
|
||||||
package org.schabi.newpipe.extractor.services.media_ccc;
|
package org.schabi.newpipe.extractor.services.media_ccc;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
|
||||||
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest;
|
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest;
|
||||||
import org.schabi.newpipe.extractor.services.media_ccc.extractors.MediaCCCStreamExtractor;
|
import org.schabi.newpipe.extractor.services.media_ccc.extractors.MediaCCCStreamExtractor;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamExtractor;
|
import org.schabi.newpipe.extractor.stream.StreamExtractor;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamType;
|
import org.schabi.newpipe.extractor.stream.StreamType;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import static junit.framework.TestCase.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.MediaCCC;
|
import static org.schabi.newpipe.extractor.ServiceList.MediaCCC;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,7 +30,7 @@ public class MediaCCCStreamExtractorTest {
|
||||||
private static final String URL = BASE_URL + ID;
|
private static final String URL = BASE_URL + ID;
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = MediaCCC.getStreamExtractor(URL);
|
extractor = MediaCCC.getStreamExtractor(URL);
|
||||||
|
@ -62,7 +61,8 @@ public class MediaCCCStreamExtractorTest {
|
||||||
@Override public Locale expectedLanguageInfo() { return new Locale("de"); }
|
@Override public Locale expectedLanguageInfo() { return new Locale("de"); }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Test public void testThumbnailUrl() throws Exception {
|
@Test
|
||||||
|
public void testThumbnailUrl() throws Exception {
|
||||||
super.testThumbnailUrl();
|
super.testThumbnailUrl();
|
||||||
assertEquals("https://static.media.ccc.de/media/events/gpn/gpn18/105-hd.jpg", extractor.getThumbnailUrl());
|
assertEquals("https://static.media.ccc.de/media/events/gpn/gpn18/105-hd.jpg", extractor.getThumbnailUrl());
|
||||||
}
|
}
|
||||||
|
@ -94,7 +94,7 @@ public class MediaCCCStreamExtractorTest {
|
||||||
private static final String URL = BASE_URL + ID;
|
private static final String URL = BASE_URL + ID;
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = MediaCCC.getStreamExtractor(URL);
|
extractor = MediaCCC.getStreamExtractor(URL);
|
||||||
|
@ -131,7 +131,8 @@ public class MediaCCCStreamExtractorTest {
|
||||||
@Override public List<String> expectedTags() { return Arrays.asList("36c3", "10565", "2019", "Security", "Main"); }
|
@Override public List<String> expectedTags() { return Arrays.asList("36c3", "10565", "2019", "Security", "Main"); }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Test public void testThumbnailUrl() throws Exception {
|
@Test
|
||||||
|
public void testThumbnailUrl() throws Exception {
|
||||||
super.testThumbnailUrl();
|
super.testThumbnailUrl();
|
||||||
assertEquals("https://static.media.ccc.de/media/congress/2019/10565-hd.jpg", extractor.getThumbnailUrl());
|
assertEquals("https://static.media.ccc.de/media/congress/2019/10565-hd.jpg", extractor.getThumbnailUrl());
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
package org.schabi.newpipe.extractor.services.media_ccc;
|
package org.schabi.newpipe.extractor.services.media_ccc;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.media_ccc.linkHandler.MediaCCCStreamLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.media_ccc.linkHandler.MediaCCCStreamLinkHandlerFactory;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
public class MediaCCCStreamLinkHandlerFactoryTest {
|
public class MediaCCCStreamLinkHandlerFactoryTest {
|
||||||
private static MediaCCCStreamLinkHandlerFactory linkHandler;
|
private static MediaCCCStreamLinkHandlerFactory linkHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
linkHandler = new MediaCCCStreamLinkHandlerFactory();
|
linkHandler = new MediaCCCStreamLinkHandlerFactory();
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package org.schabi.newpipe.extractor.services.media_ccc.search;
|
package org.schabi.newpipe.extractor.services.media_ccc.search;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.InfoItem;
|
import org.schabi.newpipe.extractor.InfoItem;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
|
@ -20,7 +20,7 @@ public class MediaCCCSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "kde";
|
private static final String QUERY = "kde";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = MediaCCC.getSearchExtractor(QUERY);
|
extractor = MediaCCC.getSearchExtractor(QUERY);
|
||||||
|
@ -43,7 +43,7 @@ public class MediaCCCSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "c3";
|
private static final String QUERY = "c3";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = MediaCCC.getSearchExtractor(QUERY, singletonList(CONFERENCES), "");
|
extractor = MediaCCC.getSearchExtractor(QUERY, singletonList(CONFERENCES), "");
|
||||||
|
@ -67,7 +67,7 @@ public class MediaCCCSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "linux";
|
private static final String QUERY = "linux";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = MediaCCC.getSearchExtractor(QUERY, singletonList(EVENTS), "");
|
extractor = MediaCCC.getSearchExtractor(QUERY, singletonList(EVENTS), "");
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
package org.schabi.newpipe.extractor.services.peertube;
|
package org.schabi.newpipe.extractor.services.peertube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Ignore;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.Test;
|
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
|
import org.schabi.newpipe.extractor.ExtractorAsserts;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
|
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.BaseChannelExtractorTest;
|
import org.schabi.newpipe.extractor.services.BaseChannelExtractorTest;
|
||||||
import org.schabi.newpipe.extractor.services.peertube.extractors.PeertubeAccountExtractor;
|
import org.schabi.newpipe.extractor.services.peertube.extractors.PeertubeAccountExtractor;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.*;
|
import static org.schabi.newpipe.extractor.services.DefaultTests.*;
|
||||||
|
@ -23,7 +23,7 @@ public class PeertubeAccountExtractorTest {
|
||||||
public static class Framasoft implements BaseChannelExtractorTest {
|
public static class Framasoft implements BaseChannelExtractorTest {
|
||||||
private static PeertubeAccountExtractor extractor;
|
private static PeertubeAccountExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
// setting instance might break test when running in parallel
|
// setting instance might break test when running in parallel
|
||||||
|
@ -102,7 +102,7 @@ public class PeertubeAccountExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSubscriberCount() throws ParsingException {
|
public void testSubscriberCount() throws ParsingException {
|
||||||
assertTrue("Wrong subscriber count", extractor.getSubscriberCount() >= 700);
|
ExtractorAsserts.assertGreaterOrEqual(700, extractor.getSubscriberCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -114,7 +114,7 @@ public class PeertubeAccountExtractorTest {
|
||||||
public static class FreeSoftwareFoundation implements BaseChannelExtractorTest {
|
public static class FreeSoftwareFoundation implements BaseChannelExtractorTest {
|
||||||
private static PeertubeAccountExtractor extractor;
|
private static PeertubeAccountExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
// setting instance might break test when running in parallel
|
// setting instance might break test when running in parallel
|
||||||
|
@ -203,7 +203,7 @@ public class PeertubeAccountExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSubscriberCount() throws ParsingException {
|
public void testSubscriberCount() throws ParsingException {
|
||||||
assertTrue("Wrong subscriber count", extractor.getSubscriberCount() >= 100);
|
ExtractorAsserts.assertGreaterOrEqual(100, extractor.getSubscriberCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,15 +1,16 @@
|
||||||
package org.schabi.newpipe.extractor.services.peertube;
|
package org.schabi.newpipe.extractor.services.peertube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
|
import org.schabi.newpipe.extractor.ExtractorAsserts;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
|
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.BaseChannelExtractorTest;
|
import org.schabi.newpipe.extractor.services.BaseChannelExtractorTest;
|
||||||
import org.schabi.newpipe.extractor.services.peertube.extractors.PeertubeChannelExtractor;
|
import org.schabi.newpipe.extractor.services.peertube.extractors.PeertubeChannelExtractor;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.*;
|
import static org.schabi.newpipe.extractor.services.DefaultTests.*;
|
||||||
|
@ -22,7 +23,7 @@ public class PeertubeChannelExtractorTest {
|
||||||
public static class LaQuadratureDuNet implements BaseChannelExtractorTest {
|
public static class LaQuadratureDuNet implements BaseChannelExtractorTest {
|
||||||
private static PeertubeChannelExtractor extractor;
|
private static PeertubeChannelExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
// setting instance might break test when running in parallel
|
// setting instance might break test when running in parallel
|
||||||
|
@ -116,7 +117,7 @@ public class PeertubeChannelExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSubscriberCount() throws ParsingException {
|
public void testSubscriberCount() throws ParsingException {
|
||||||
assertTrue("Wrong subscriber count", extractor.getSubscriberCount() >= 230);
|
ExtractorAsserts.assertGreaterOrEqual(230, extractor.getSubscriberCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -129,7 +130,7 @@ public class PeertubeChannelExtractorTest {
|
||||||
|
|
||||||
private static PeertubeChannelExtractor extractor;
|
private static PeertubeChannelExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
// setting instance might break test when running in parallel
|
// setting instance might break test when running in parallel
|
||||||
|
@ -233,7 +234,7 @@ public class PeertubeChannelExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSubscriberCount() throws ParsingException {
|
public void testSubscriberCount() throws ParsingException {
|
||||||
assertTrue("Wrong subscriber count", extractor.getSubscriberCount() >= 700);
|
ExtractorAsserts.assertGreaterOrEqual(700, extractor.getSubscriberCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
package org.schabi.newpipe.extractor.services.peertube;
|
package org.schabi.newpipe.extractor.services.peertube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubeChannelLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubeChannelLinkHandlerFactory;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -18,7 +18,7 @@ public class PeertubeChannelLinkHandlerFactoryTest {
|
||||||
|
|
||||||
private static PeertubeChannelLinkHandlerFactory linkHandler;
|
private static PeertubeChannelLinkHandlerFactory linkHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
PeerTube.setInstance(new PeertubeInstance("https://peertube.stream", "PeerTube on peertube.stream"));
|
PeerTube.setInstance(new PeertubeInstance("https://peertube.stream", "PeerTube on peertube.stream"));
|
||||||
linkHandler = PeertubeChannelLinkHandlerFactory.getInstance();
|
linkHandler = PeertubeChannelLinkHandlerFactory.getInstance();
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services.peertube;
|
package org.schabi.newpipe.extractor.services.peertube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.ListExtractor.InfoItemsPage;
|
import org.schabi.newpipe.extractor.ListExtractor.InfoItemsPage;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
|
@ -15,16 +15,16 @@ import org.schabi.newpipe.extractor.utils.Utils;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
||||||
|
|
||||||
public class PeertubeCommentsExtractorTest {
|
public class PeertubeCommentsExtractorTest {
|
||||||
public static class Default {
|
public static class Default {
|
||||||
private static PeertubeCommentsExtractor extractor;
|
private static PeertubeCommentsExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = (PeertubeCommentsExtractor) PeerTube
|
extractor = (PeertubeCommentsExtractor) PeerTube
|
||||||
|
@ -97,7 +97,7 @@ public class PeertubeCommentsExtractorTest {
|
||||||
public static class DeletedComments {
|
public static class DeletedComments {
|
||||||
private static PeertubeCommentsExtractor extractor;
|
private static PeertubeCommentsExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = (PeertubeCommentsExtractor) PeerTube
|
extractor = (PeertubeCommentsExtractor) PeerTube
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
package org.schabi.newpipe.extractor.services.peertube;
|
package org.schabi.newpipe.extractor.services.peertube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubeCommentsLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubeCommentsLinkHandlerFactory;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for {@link PeertubeCommentsLinkHandlerFactory}
|
* Test for {@link PeertubeCommentsLinkHandlerFactory}
|
||||||
|
@ -17,7 +17,7 @@ public class PeertubeCommentsLinkHandlerFactoryTest {
|
||||||
|
|
||||||
private static PeertubeCommentsLinkHandlerFactory linkHandler;
|
private static PeertubeCommentsLinkHandlerFactory linkHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
linkHandler = PeertubeCommentsLinkHandlerFactory.getInstance();
|
linkHandler = PeertubeCommentsLinkHandlerFactory.getInstance();
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
package org.schabi.newpipe.extractor.services.peertube;
|
package org.schabi.newpipe.extractor.services.peertube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Ignore;
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.ExtractorAsserts;
|
import org.schabi.newpipe.extractor.ExtractorAsserts;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.peertube.extractors.PeertubePlaylistExtractor;
|
import org.schabi.newpipe.extractor.services.peertube.extractors.PeertubePlaylistExtractor;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
||||||
|
|
||||||
public class PeertubePlaylistExtractorTest {
|
public class PeertubePlaylistExtractorTest {
|
||||||
|
@ -17,7 +17,7 @@ public class PeertubePlaylistExtractorTest {
|
||||||
public static class Shocking {
|
public static class Shocking {
|
||||||
private static PeertubePlaylistExtractor extractor;
|
private static PeertubePlaylistExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = (PeertubePlaylistExtractor) PeerTube
|
extractor = (PeertubePlaylistExtractor) PeerTube
|
||||||
|
@ -31,7 +31,7 @@ public class PeertubePlaylistExtractorTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore("URL changes with every request")
|
@Disabled("URL changes with every request")
|
||||||
public void testGetThumbnailUrl() throws ParsingException {
|
public void testGetThumbnailUrl() throws ParsingException {
|
||||||
assertEquals("https://framatube.org/static/thumbnails/playlist-96b0ee2b-a5a7-4794-8769-58d8ccb79ab7.jpg", extractor.getThumbnailUrl());
|
assertEquals("https://framatube.org/static/thumbnails/playlist-96b0ee2b-a5a7-4794-8769-58d8ccb79ab7.jpg", extractor.getThumbnailUrl());
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ public class PeertubePlaylistExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetStreamCount() throws ParsingException {
|
public void testGetStreamCount() throws ParsingException {
|
||||||
ExtractorAsserts.assertAtLeast(39, extractor.getStreamCount());
|
ExtractorAsserts.assertGreaterOrEqual(39, extractor.getStreamCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
package org.schabi.newpipe.extractor.services.peertube;
|
package org.schabi.newpipe.extractor.services.peertube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubePlaylistLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubePlaylistLinkHandlerFactory;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for {@link PeertubePlaylistLinkHandlerFactory}
|
* Test for {@link PeertubePlaylistLinkHandlerFactory}
|
||||||
|
@ -17,7 +17,7 @@ public class PeertubePlaylistLinkHandlerFactoryTest {
|
||||||
|
|
||||||
private static PeertubePlaylistLinkHandlerFactory linkHandler;
|
private static PeertubePlaylistLinkHandlerFactory linkHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
linkHandler = PeertubePlaylistLinkHandlerFactory.getInstance();
|
linkHandler = PeertubePlaylistLinkHandlerFactory.getInstance();
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package org.schabi.newpipe.extractor.services.peertube;
|
package org.schabi.newpipe.extractor.services.peertube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Ignore;
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
|
@ -19,7 +19,7 @@ import java.util.Locale;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
||||||
|
|
||||||
public abstract class PeertubeStreamExtractorTest extends DefaultStreamExtractorTest {
|
public abstract class PeertubeStreamExtractorTest extends DefaultStreamExtractorTest {
|
||||||
|
@ -36,7 +36,7 @@ public abstract class PeertubeStreamExtractorTest extends DefaultStreamExtractor
|
||||||
private static final String URL = INSTANCE + BASE_URL + ID + "?start=" + TIMESTAMP_MINUTE + "m" + TIMESTAMP_SECOND + "s";
|
private static final String URL = INSTANCE + BASE_URL + ID + "?start=" + TIMESTAMP_MINUTE + "m" + TIMESTAMP_SECOND + "s";
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
// setting instance might break test when running in parallel (!)
|
// setting instance might break test when running in parallel (!)
|
||||||
|
@ -102,7 +102,7 @@ public abstract class PeertubeStreamExtractorTest extends DefaultStreamExtractor
|
||||||
private static final String URL = INSTANCE + BASE_URL + ID;
|
private static final String URL = INSTANCE + BASE_URL + ID;
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
// setting instance might break test when running in parallel (!)
|
// setting instance might break test when running in parallel (!)
|
||||||
|
@ -140,14 +140,14 @@ public abstract class PeertubeStreamExtractorTest extends DefaultStreamExtractor
|
||||||
@Override public List<String> expectedTags() { return Arrays.asList("Marinauts", "adobe flash", "adobe flash player", "flash games", "the marinauts"); }
|
@Override public List<String> expectedTags() { return Arrays.asList("Marinauts", "adobe flash", "adobe flash player", "flash games", "the marinauts"); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore("Test broken, SSL problem")
|
@Disabled("Test broken, SSL problem")
|
||||||
public static class AgeRestricted extends PeertubeStreamExtractorTest {
|
public static class AgeRestricted extends PeertubeStreamExtractorTest {
|
||||||
private static final String ID = "dbd8e5e1-c527-49b6-b70c-89101dbb9c08";
|
private static final String ID = "dbd8e5e1-c527-49b6-b70c-89101dbb9c08";
|
||||||
private static final String INSTANCE = "https://nocensoring.net";
|
private static final String INSTANCE = "https://nocensoring.net";
|
||||||
private static final String URL = INSTANCE + "/videos/embed/" + ID;
|
private static final String URL = INSTANCE + "/videos/embed/" + ID;
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());;
|
NewPipe.init(DownloaderTestImpl.getInstance());;
|
||||||
// setting instance might break test when running in parallel (!)
|
// setting instance might break test when running in parallel (!)
|
||||||
|
@ -186,7 +186,7 @@ public abstract class PeertubeStreamExtractorTest extends DefaultStreamExtractor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
PeerTube.setInstance(new PeertubeInstance("https://peertube.cpy.re", "PeerTube test server"));
|
PeerTube.setInstance(new PeertubeInstance("https://peertube.cpy.re", "PeerTube test server"));
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
package org.schabi.newpipe.extractor.services.peertube;
|
package org.schabi.newpipe.extractor.services.peertube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubeStreamLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubeStreamLinkHandlerFactory;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -17,7 +17,7 @@ public class PeertubeStreamLinkHandlerFactoryTest {
|
||||||
|
|
||||||
private static PeertubeStreamLinkHandlerFactory linkHandler;
|
private static PeertubeStreamLinkHandlerFactory linkHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
PeerTube.setInstance(new PeertubeInstance("https://framatube.org", "Framatube"));
|
PeerTube.setInstance(new PeertubeInstance("https://framatube.org", "Framatube"));
|
||||||
linkHandler = PeertubeStreamLinkHandlerFactory.getInstance();
|
linkHandler = PeertubeStreamLinkHandlerFactory.getInstance();
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
package org.schabi.newpipe.extractor.services.peertube;
|
package org.schabi.newpipe.extractor.services.peertube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.BaseListExtractorTest;
|
import org.schabi.newpipe.extractor.services.BaseListExtractorTest;
|
||||||
import org.schabi.newpipe.extractor.services.peertube.extractors.PeertubeTrendingExtractor;
|
import org.schabi.newpipe.extractor.services.peertube.extractors.PeertubeTrendingExtractor;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.*;
|
import static org.schabi.newpipe.extractor.services.DefaultTests.*;
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ public class PeertubeTrendingExtractorTest {
|
||||||
public static class Trending implements BaseListExtractorTest {
|
public static class Trending implements BaseListExtractorTest {
|
||||||
private static PeertubeTrendingExtractor extractor;
|
private static PeertubeTrendingExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
// setting instance might break test when running in parallel
|
// setting instance might break test when running in parallel
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
package org.schabi.newpipe.extractor.services.peertube;
|
package org.schabi.newpipe.extractor.services.peertube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.linkhandler.LinkHandlerFactory;
|
import org.schabi.newpipe.extractor.linkhandler.LinkHandlerFactory;
|
||||||
import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubeTrendingLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubeTrendingLinkHandlerFactory;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -18,7 +18,7 @@ import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
||||||
public class PeertubeTrendingLinkHandlerFactoryTest {
|
public class PeertubeTrendingLinkHandlerFactoryTest {
|
||||||
private static LinkHandlerFactory LinkHandlerFactory;
|
private static LinkHandlerFactory LinkHandlerFactory;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
// setting instance might break test when running in parallel
|
// setting instance might break test when running in parallel
|
||||||
PeerTube.setInstance(new PeertubeInstance("https://peertube.mastodon.host", "PeerTube on Mastodon.host"));
|
PeerTube.setInstance(new PeertubeInstance("https://peertube.mastodon.host", "PeerTube on Mastodon.host"));
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package org.schabi.newpipe.extractor.services.peertube.search;
|
package org.schabi.newpipe.extractor.services.peertube.search;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Ignore;
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.InfoItem;
|
import org.schabi.newpipe.extractor.InfoItem;
|
||||||
import org.schabi.newpipe.extractor.ListExtractor.InfoItemsPage;
|
import org.schabi.newpipe.extractor.ListExtractor.InfoItemsPage;
|
||||||
|
@ -26,7 +26,7 @@ public class PeertubeSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "fsf";
|
private static final String QUERY = "fsf";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
// setting instance might break test when running in parallel
|
// setting instance might break test when running in parallel
|
||||||
|
@ -49,7 +49,7 @@ public class PeertubeSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "kde";
|
private static final String QUERY = "kde";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
// setting instance might break test when running in parallel
|
// setting instance might break test when running in parallel
|
||||||
|
@ -70,7 +70,7 @@ public class PeertubeSearchExtractorTest {
|
||||||
|
|
||||||
public static class PagingTest {
|
public static class PagingTest {
|
||||||
@Test
|
@Test
|
||||||
@Ignore("Exception in CI: javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed")
|
@Disabled("Exception in CI: javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed")
|
||||||
public void duplicatedItemsCheck() throws Exception {
|
public void duplicatedItemsCheck() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
final SearchExtractor extractor = PeerTube.getSearchExtractor("internet", singletonList(VIDEOS), "");
|
final SearchExtractor extractor = PeerTube.getSearchExtractor("internet", singletonList(VIDEOS), "");
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
package org.schabi.newpipe.extractor.services.peertube.search;
|
package org.schabi.newpipe.extractor.services.peertube.search;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.extractor.services.peertube.PeertubeInstance;
|
import org.schabi.newpipe.extractor.services.peertube.PeertubeInstance;
|
||||||
import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubeSearchQueryHandlerFactory;
|
import org.schabi.newpipe.extractor.services.peertube.linkHandler.PeertubeSearchQueryHandlerFactory;
|
||||||
|
|
||||||
import static java.util.Collections.singletonList;
|
import static java.util.Collections.singletonList;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
import static org.schabi.newpipe.extractor.ServiceList.PeerTube;
|
||||||
|
|
||||||
public class PeertubeSearchQHTest {
|
public class PeertubeSearchQHTest {
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUpClass() throws Exception {
|
public static void setUpClass() throws Exception {
|
||||||
// setting instance might break test when running in parallel
|
// setting instance might break test when running in parallel
|
||||||
PeerTube.setInstance(new PeertubeInstance("https://peertube.mastodon.host", "PeerTube on Mastodon.host"));
|
PeerTube.setInstance(new PeertubeInstance("https://peertube.mastodon.host", "PeerTube on Mastodon.host"));
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services.soundcloud;
|
package org.schabi.newpipe.extractor.services.soundcloud;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
|
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
|
||||||
|
@ -9,7 +9,7 @@ import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.BaseChannelExtractorTest;
|
import org.schabi.newpipe.extractor.services.BaseChannelExtractorTest;
|
||||||
import org.schabi.newpipe.extractor.services.soundcloud.extractors.SoundcloudChannelExtractor;
|
import org.schabi.newpipe.extractor.services.soundcloud.extractors.SoundcloudChannelExtractor;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertEmpty;
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertEmpty;
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
|
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
|
||||||
|
@ -22,7 +22,7 @@ public class SoundcloudChannelExtractorTest {
|
||||||
public static class LilUzi implements BaseChannelExtractorTest {
|
public static class LilUzi implements BaseChannelExtractorTest {
|
||||||
private static SoundcloudChannelExtractor extractor;
|
private static SoundcloudChannelExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = (SoundcloudChannelExtractor) SoundCloud
|
extractor = (SoundcloudChannelExtractor) SoundCloud
|
||||||
|
@ -99,7 +99,7 @@ public class SoundcloudChannelExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSubscriberCount() {
|
public void testSubscriberCount() {
|
||||||
assertTrue("Wrong subscriber count", extractor.getSubscriberCount() >= 1e6);
|
assertTrue(extractor.getSubscriberCount() >= 1e6, "Wrong subscriber count");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -111,7 +111,7 @@ public class SoundcloudChannelExtractorTest {
|
||||||
public static class DubMatix implements BaseChannelExtractorTest {
|
public static class DubMatix implements BaseChannelExtractorTest {
|
||||||
private static SoundcloudChannelExtractor extractor;
|
private static SoundcloudChannelExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = (SoundcloudChannelExtractor) SoundCloud
|
extractor = (SoundcloudChannelExtractor) SoundCloud
|
||||||
|
@ -198,7 +198,7 @@ public class SoundcloudChannelExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSubscriberCount() {
|
public void testSubscriberCount() {
|
||||||
assertTrue("Wrong subscriber count", extractor.getSubscriberCount() >= 2e6);
|
assertTrue(extractor.getSubscriberCount() >= 2e6, "Wrong subscriber count");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
package org.schabi.newpipe.extractor.services.soundcloud;
|
package org.schabi.newpipe.extractor.services.soundcloud;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.BaseListExtractorTest;
|
import org.schabi.newpipe.extractor.services.BaseListExtractorTest;
|
||||||
import org.schabi.newpipe.extractor.services.soundcloud.extractors.SoundcloudChartsExtractor;
|
import org.schabi.newpipe.extractor.services.soundcloud.extractors.SoundcloudChartsExtractor;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
|
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.*;
|
import static org.schabi.newpipe.extractor.services.DefaultTests.*;
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ public class SoundcloudChartsExtractorTest {
|
||||||
public static class NewAndHot implements BaseListExtractorTest {
|
public static class NewAndHot implements BaseListExtractorTest {
|
||||||
private static SoundcloudChartsExtractor extractor;
|
private static SoundcloudChartsExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = (SoundcloudChartsExtractor) SoundCloud.getKioskList()
|
extractor = (SoundcloudChartsExtractor) SoundCloud.getKioskList()
|
||||||
|
@ -71,7 +71,7 @@ public class SoundcloudChartsExtractorTest {
|
||||||
public static class Top50Charts implements BaseListExtractorTest {
|
public static class Top50Charts implements BaseListExtractorTest {
|
||||||
private static SoundcloudChartsExtractor extractor;
|
private static SoundcloudChartsExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = (SoundcloudChartsExtractor) SoundCloud.getKioskList()
|
extractor = (SoundcloudChartsExtractor) SoundCloud.getKioskList()
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
package org.schabi.newpipe.extractor.services.soundcloud;
|
package org.schabi.newpipe.extractor.services.soundcloud;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.soundcloud.linkHandler.SoundcloudChartsLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.soundcloud.linkHandler.SoundcloudChartsLinkHandlerFactory;
|
||||||
|
|
||||||
import static junit.framework.TestCase.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for {@link SoundcloudChartsLinkHandlerFactory}
|
* Test for {@link SoundcloudChartsLinkHandlerFactory}
|
||||||
|
@ -17,7 +17,7 @@ import static org.junit.Assert.assertTrue;
|
||||||
public class SoundcloudChartsLinkHandlerFactoryTest {
|
public class SoundcloudChartsLinkHandlerFactoryTest {
|
||||||
private static SoundcloudChartsLinkHandlerFactory linkHandler;
|
private static SoundcloudChartsLinkHandlerFactory linkHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
linkHandler = new SoundcloudChartsLinkHandlerFactory();
|
linkHandler = new SoundcloudChartsLinkHandlerFactory();
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
|
|
@ -1,50 +1,49 @@
|
||||||
package org.schabi.newpipe.extractor.services.soundcloud;
|
package org.schabi.newpipe.extractor.services.soundcloud;
|
||||||
|
|
||||||
import org.junit.Assert;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
public class SoundcloudParsingHelperTest {
|
public class SoundcloudParsingHelperTest {
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void assertThatHardcodedClientIdIsValid() throws Exception {
|
public void assertThatHardcodedClientIdIsValid() throws Exception {
|
||||||
assertTrue("Hardcoded client id is not valid anymore",
|
assertTrue(SoundcloudParsingHelper.checkIfHardcodedClientIdIsValid(),
|
||||||
SoundcloudParsingHelper.checkIfHardcodedClientIdIsValid());
|
"Hardcoded client id is not valid anymore");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void assertHardCodedClientIdMatchesCurrentClientId() throws IOException, ExtractionException {
|
public void assertHardCodedClientIdMatchesCurrentClientId() throws IOException, ExtractionException {
|
||||||
assertEquals(
|
assertEquals(
|
||||||
"Hardcoded client doesn't match extracted clientId",
|
|
||||||
SoundcloudParsingHelper.HARDCODED_CLIENT_ID,
|
SoundcloudParsingHelper.HARDCODED_CLIENT_ID,
|
||||||
SoundcloudParsingHelper.clientId());
|
SoundcloudParsingHelper.clientId(),
|
||||||
|
"Hardcoded client doesn't match extracted clientId");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void resolveUrlWithEmbedPlayerTest() throws Exception {
|
public void resolveUrlWithEmbedPlayerTest() throws Exception {
|
||||||
Assert.assertEquals("https://soundcloud.com/trapcity", SoundcloudParsingHelper.resolveUrlWithEmbedPlayer("https://api.soundcloud.com/users/26057743"));
|
assertEquals("https://soundcloud.com/trapcity", SoundcloudParsingHelper.resolveUrlWithEmbedPlayer("https://api.soundcloud.com/users/26057743"));
|
||||||
Assert.assertEquals("https://soundcloud.com/nocopyrightsounds", SoundcloudParsingHelper.resolveUrlWithEmbedPlayer("https://api.soundcloud.com/users/16069159"));
|
assertEquals("https://soundcloud.com/nocopyrightsounds", SoundcloudParsingHelper.resolveUrlWithEmbedPlayer("https://api.soundcloud.com/users/16069159"));
|
||||||
Assert.assertEquals("https://soundcloud.com/trapcity", SoundcloudParsingHelper.resolveUrlWithEmbedPlayer("https://api-v2.soundcloud.com/users/26057743"));
|
assertEquals("https://soundcloud.com/trapcity", SoundcloudParsingHelper.resolveUrlWithEmbedPlayer("https://api-v2.soundcloud.com/users/26057743"));
|
||||||
Assert.assertEquals("https://soundcloud.com/nocopyrightsounds", SoundcloudParsingHelper.resolveUrlWithEmbedPlayer("https://api-v2.soundcloud.com/users/16069159"));
|
assertEquals("https://soundcloud.com/nocopyrightsounds", SoundcloudParsingHelper.resolveUrlWithEmbedPlayer("https://api-v2.soundcloud.com/users/16069159"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void resolveIdWithWidgetApiTest() throws Exception {
|
public void resolveIdWithWidgetApiTest() throws Exception {
|
||||||
Assert.assertEquals("26057743", SoundcloudParsingHelper.resolveIdWithWidgetApi("https://soundcloud.com/trapcity"));
|
assertEquals("26057743", SoundcloudParsingHelper.resolveIdWithWidgetApi("https://soundcloud.com/trapcity"));
|
||||||
Assert.assertEquals("16069159", SoundcloudParsingHelper.resolveIdWithWidgetApi("https://soundcloud.com/nocopyrightsounds"));
|
assertEquals("16069159", SoundcloudParsingHelper.resolveIdWithWidgetApi("https://soundcloud.com/nocopyrightsounds"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,9 +1,10 @@
|
||||||
package org.schabi.newpipe.extractor.services.soundcloud;
|
package org.schabi.newpipe.extractor.services.soundcloud;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Ignore;
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
|
import org.schabi.newpipe.extractor.ExtractorAsserts;
|
||||||
import org.schabi.newpipe.extractor.ListExtractor;
|
import org.schabi.newpipe.extractor.ListExtractor;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.playlist.PlaylistExtractor;
|
import org.schabi.newpipe.extractor.playlist.PlaylistExtractor;
|
||||||
|
@ -11,8 +12,7 @@ import org.schabi.newpipe.extractor.services.BasePlaylistExtractorTest;
|
||||||
import org.schabi.newpipe.extractor.services.soundcloud.extractors.SoundcloudPlaylistExtractor;
|
import org.schabi.newpipe.extractor.services.soundcloud.extractors.SoundcloudPlaylistExtractor;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
||||||
|
|
||||||
import static org.hamcrest.CoreMatchers.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.junit.Assert.*;
|
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
|
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.*;
|
import static org.schabi.newpipe.extractor.services.DefaultTests.*;
|
||||||
|
@ -24,7 +24,7 @@ public class SoundcloudPlaylistExtractorTest {
|
||||||
public static class LuvTape implements BasePlaylistExtractorTest {
|
public static class LuvTape implements BasePlaylistExtractorTest {
|
||||||
private static SoundcloudPlaylistExtractor extractor;
|
private static SoundcloudPlaylistExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = (SoundcloudPlaylistExtractor) SoundCloud
|
extractor = (SoundcloudPlaylistExtractor) SoundCloud
|
||||||
|
@ -91,10 +91,10 @@ public class SoundcloudPlaylistExtractorTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUploaderUrl() {
|
void testUploaderUrl() {
|
||||||
final String uploaderUrl = extractor.getUploaderUrl();
|
final String uploaderUrl = extractor.getUploaderUrl();
|
||||||
assertIsSecureUrl(uploaderUrl);
|
assertIsSecureUrl(uploaderUrl);
|
||||||
assertThat(uploaderUrl, containsString("liluzivert"));
|
ExtractorAsserts.assertContains("liluzivert", uploaderUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -109,10 +109,10 @@ public class SoundcloudPlaylistExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStreamCount() {
|
public void testStreamCount() {
|
||||||
assertTrue("Stream count does not fit: " + extractor.getStreamCount(), extractor.getStreamCount() >= 10);
|
ExtractorAsserts.assertGreaterOrEqual(10, extractor.getStreamCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Test
|
||||||
public void testUploaderVerified() throws Exception {
|
public void testUploaderVerified() throws Exception {
|
||||||
assertTrue(extractor.isUploaderVerified());
|
assertTrue(extractor.isUploaderVerified());
|
||||||
}
|
}
|
||||||
|
@ -121,7 +121,7 @@ public class SoundcloudPlaylistExtractorTest {
|
||||||
public static class RandomHouseMusic implements BasePlaylistExtractorTest {
|
public static class RandomHouseMusic implements BasePlaylistExtractorTest {
|
||||||
private static SoundcloudPlaylistExtractor extractor;
|
private static SoundcloudPlaylistExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = (SoundcloudPlaylistExtractor) SoundCloud
|
extractor = (SoundcloudPlaylistExtractor) SoundCloud
|
||||||
|
@ -188,10 +188,10 @@ public class SoundcloudPlaylistExtractorTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUploaderUrl() {
|
void testUploaderUrl() {
|
||||||
final String uploaderUrl = extractor.getUploaderUrl();
|
final String uploaderUrl = extractor.getUploaderUrl();
|
||||||
assertIsSecureUrl(uploaderUrl);
|
assertIsSecureUrl(uploaderUrl);
|
||||||
assertThat(uploaderUrl, containsString("micky96"));
|
ExtractorAsserts.assertContains("micky96", uploaderUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -206,10 +206,10 @@ public class SoundcloudPlaylistExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStreamCount() {
|
public void testStreamCount() {
|
||||||
assertTrue("Stream count does not fit: " + extractor.getStreamCount(), extractor.getStreamCount() >= 10);
|
ExtractorAsserts.assertGreaterOrEqual(10, extractor.getStreamCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Test
|
||||||
public void testUploaderVerified() throws Exception {
|
public void testUploaderVerified() throws Exception {
|
||||||
assertFalse(extractor.isUploaderVerified());
|
assertFalse(extractor.isUploaderVerified());
|
||||||
}
|
}
|
||||||
|
@ -218,7 +218,7 @@ public class SoundcloudPlaylistExtractorTest {
|
||||||
public static class EDMxxx implements BasePlaylistExtractorTest {
|
public static class EDMxxx implements BasePlaylistExtractorTest {
|
||||||
private static SoundcloudPlaylistExtractor extractor;
|
private static SoundcloudPlaylistExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = (SoundcloudPlaylistExtractor) SoundCloud
|
extractor = (SoundcloudPlaylistExtractor) SoundCloud
|
||||||
|
@ -231,7 +231,7 @@ public class SoundcloudPlaylistExtractorTest {
|
||||||
//////////////////////////////////////////////////////////////////////////*/
|
//////////////////////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetPageInNewExtractor() throws Exception {
|
void testGetPageInNewExtractor() throws Exception {
|
||||||
PlaylistExtractor newExtractor = SoundCloud.getPlaylistExtractor(extractor.getUrl());
|
PlaylistExtractor newExtractor = SoundCloud.getPlaylistExtractor(extractor.getUrl());
|
||||||
defaultTestGetPageInNewExtractor(extractor, newExtractor);
|
defaultTestGetPageInNewExtractor(extractor, newExtractor);
|
||||||
}
|
}
|
||||||
|
@ -300,10 +300,10 @@ public class SoundcloudPlaylistExtractorTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUploaderUrl() {
|
void testUploaderUrl() {
|
||||||
final String uploaderUrl = extractor.getUploaderUrl();
|
final String uploaderUrl = extractor.getUploaderUrl();
|
||||||
assertIsSecureUrl(uploaderUrl);
|
assertIsSecureUrl(uploaderUrl);
|
||||||
assertTrue(uploaderUrl, uploaderUrl.contains("user350509423"));
|
ExtractorAsserts.assertContains("user350509423", uploaderUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -318,10 +318,10 @@ public class SoundcloudPlaylistExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStreamCount() {
|
public void testStreamCount() {
|
||||||
assertTrue("Stream count does not fit: " + extractor.getStreamCount(), extractor.getStreamCount() >= 370);
|
ExtractorAsserts.assertGreaterOrEqual(370, extractor.getStreamCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Test
|
||||||
public void testUploaderVerified() throws Exception {
|
public void testUploaderVerified() throws Exception {
|
||||||
assertFalse(extractor.isUploaderVerified());
|
assertFalse(extractor.isUploaderVerified());
|
||||||
}
|
}
|
||||||
|
@ -330,7 +330,7 @@ public class SoundcloudPlaylistExtractorTest {
|
||||||
public static class SmallPlaylist implements BasePlaylistExtractorTest {
|
public static class SmallPlaylist implements BasePlaylistExtractorTest {
|
||||||
private static SoundcloudPlaylistExtractor extractor;
|
private static SoundcloudPlaylistExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = (SoundcloudPlaylistExtractor) SoundCloud
|
extractor = (SoundcloudPlaylistExtractor) SoundCloud
|
||||||
|
@ -377,7 +377,7 @@ public class SoundcloudPlaylistExtractorTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Ignore("Test broken? Playlist has 2 entries, each page has 1 entry meaning it has 2 pages.")
|
@Disabled("Test broken? Playlist has 2 entries, each page has 1 entry meaning it has 2 pages.")
|
||||||
public void testMoreRelatedItems() throws Exception {
|
public void testMoreRelatedItems() throws Exception {
|
||||||
try {
|
try {
|
||||||
defaultTestMoreItems(extractor);
|
defaultTestMoreItems(extractor);
|
||||||
|
@ -404,10 +404,10 @@ public class SoundcloudPlaylistExtractorTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUploaderUrl() {
|
void testUploaderUrl() {
|
||||||
final String uploaderUrl = extractor.getUploaderUrl();
|
final String uploaderUrl = extractor.getUploaderUrl();
|
||||||
assertIsSecureUrl(uploaderUrl);
|
assertIsSecureUrl(uploaderUrl);
|
||||||
assertThat(uploaderUrl, containsString("breezy-123"));
|
ExtractorAsserts.assertContains("breezy-123", uploaderUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -425,7 +425,7 @@ public class SoundcloudPlaylistExtractorTest {
|
||||||
assertEquals(2, extractor.getStreamCount());
|
assertEquals(2, extractor.getStreamCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Test
|
||||||
public void testUploaderVerified() throws Exception {
|
public void testUploaderVerified() throws Exception {
|
||||||
assertFalse(extractor.isUploaderVerified());
|
assertFalse(extractor.isUploaderVerified());
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
package org.schabi.newpipe.extractor.services.soundcloud;
|
package org.schabi.newpipe.extractor.services.soundcloud;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Ignore;
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
|
import org.schabi.newpipe.extractor.ExtractorAsserts;
|
||||||
import org.schabi.newpipe.extractor.MediaFormat;
|
import org.schabi.newpipe.extractor.MediaFormat;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
|
@ -20,9 +21,7 @@ import java.util.List;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import static junit.framework.TestCase.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.hamcrest.CoreMatchers.containsString;
|
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
|
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
|
||||||
|
|
||||||
public class SoundcloudStreamExtractorTest {
|
public class SoundcloudStreamExtractorTest {
|
||||||
|
@ -35,7 +34,7 @@ public class SoundcloudStreamExtractorTest {
|
||||||
private static final String URL = UPLOADER + "/" + ID + "#t=" + TIMESTAMP;
|
private static final String URL = UPLOADER + "/" + ID + "#t=" + TIMESTAMP;
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = SoundCloud.getStreamExtractor(URL);
|
extractor = SoundCloud.getStreamExtractor(URL);
|
||||||
|
@ -71,9 +70,15 @@ public class SoundcloudStreamExtractorTest {
|
||||||
@Override public boolean expectedHasSubtitles() { return false; }
|
@Override public boolean expectedHasSubtitles() { return false; }
|
||||||
@Override public boolean expectedHasFrames() { return false; }
|
@Override public boolean expectedHasFrames() { return false; }
|
||||||
@Override public int expectedStreamSegmentsCount() { return 0; }
|
@Override public int expectedStreamSegmentsCount() { return 0; }
|
||||||
@Override public boolean expectedHasRelatedItems() { return true; } // One stream is returned
|
|
||||||
@Override public String expectedLicence() { return "all-rights-reserved"; }
|
@Override public String expectedLicence() { return "all-rights-reserved"; }
|
||||||
@Override public String expectedCategory() { return "Pop"; }
|
@Override public String expectedCategory() { return "Pop"; }
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Override
|
||||||
|
@Disabled("Unreliable, sometimes it has related items, sometimes it does not")
|
||||||
|
public void testRelatedItems() throws Exception {
|
||||||
|
super.testRelatedItems();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class SoundcloudGoPlusTrack extends DefaultStreamExtractorTest {
|
public static class SoundcloudGoPlusTrack extends DefaultStreamExtractorTest {
|
||||||
|
@ -83,7 +88,7 @@ public class SoundcloudStreamExtractorTest {
|
||||||
private static final String URL = UPLOADER + "/" + ID + "#t=" + TIMESTAMP;
|
private static final String URL = UPLOADER + "/" + ID + "#t=" + TIMESTAMP;
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = SoundCloud.getStreamExtractor(URL);
|
extractor = SoundCloud.getStreamExtractor(URL);
|
||||||
|
@ -96,7 +101,7 @@ public class SoundcloudStreamExtractorTest {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Test
|
@Test
|
||||||
@Ignore("Unreliable, sometimes it has related items, sometimes it does not. See " +
|
@Disabled("Unreliable, sometimes it has related items, sometimes it does not. See " +
|
||||||
"https://github.com/TeamNewPipe/NewPipeExtractor/runs/2280013723#step:5:263 " +
|
"https://github.com/TeamNewPipe/NewPipeExtractor/runs/2280013723#step:5:263 " +
|
||||||
"https://github.com/TeamNewPipe/NewPipeExtractor/pull/601")
|
"https://github.com/TeamNewPipe/NewPipeExtractor/pull/601")
|
||||||
public void testRelatedItems() throws Exception {
|
public void testRelatedItems() throws Exception {
|
||||||
|
@ -140,7 +145,7 @@ public class SoundcloudStreamExtractorTest {
|
||||||
private static final String URL = UPLOADER + "/" + ID + "#t=" + TIMESTAMP;
|
private static final String URL = UPLOADER + "/" + ID + "#t=" + TIMESTAMP;
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = SoundCloud.getStreamExtractor(URL);
|
extractor = SoundCloud.getStreamExtractor(URL);
|
||||||
|
@ -186,12 +191,12 @@ public class SoundcloudStreamExtractorTest {
|
||||||
final String mediaUrl = audioStream.getUrl();
|
final String mediaUrl = audioStream.getUrl();
|
||||||
if (audioStream.getFormat() == MediaFormat.OPUS) {
|
if (audioStream.getFormat() == MediaFormat.OPUS) {
|
||||||
// assert that it's an OPUS 64 kbps media URL with a single range which comes from an HLS SoundCloud CDN
|
// assert that it's an OPUS 64 kbps media URL with a single range which comes from an HLS SoundCloud CDN
|
||||||
assertThat(mediaUrl, containsString("-hls-opus-media.sndcdn.com"));
|
ExtractorAsserts.assertContains("-hls-opus-media.sndcdn.com", mediaUrl);
|
||||||
assertThat(mediaUrl, containsString(".64.opus"));
|
ExtractorAsserts.assertContains(".64.opus", mediaUrl);
|
||||||
}
|
}
|
||||||
if (audioStream.getFormat() == MediaFormat.MP3) {
|
if (audioStream.getFormat() == MediaFormat.MP3) {
|
||||||
// assert that it's a MP3 128 kbps media URL which comes from a progressive SoundCloud CDN
|
// assert that it's a MP3 128 kbps media URL which comes from a progressive SoundCloud CDN
|
||||||
assertThat(mediaUrl, containsString("-media.sndcdn.com/bKOA7Pwbut93.128.mp3"));
|
ExtractorAsserts.assertContains("-media.sndcdn.com/bKOA7Pwbut93.128.mp3", mediaUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services.soundcloud;
|
package org.schabi.newpipe.extractor.services.soundcloud;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Ignore;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.Test;
|
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
|
@ -11,7 +10,7 @@ import org.schabi.newpipe.extractor.services.soundcloud.linkHandler.SoundcloudSt
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for {@link SoundcloudStreamLinkHandlerFactory}
|
* Test for {@link SoundcloudStreamLinkHandlerFactory}
|
||||||
|
@ -19,15 +18,15 @@ import static org.junit.Assert.*;
|
||||||
public class SoundcloudStreamLinkHandlerFactoryTest {
|
public class SoundcloudStreamLinkHandlerFactoryTest {
|
||||||
private static SoundcloudStreamLinkHandlerFactory linkHandler;
|
private static SoundcloudStreamLinkHandlerFactory linkHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
linkHandler = SoundcloudStreamLinkHandlerFactory.getInstance();
|
linkHandler = SoundcloudStreamLinkHandlerFactory.getInstance();
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = IllegalArgumentException.class)
|
@Test
|
||||||
public void getIdWithNullAsUrl() throws ParsingException {
|
public void getIdWithNullAsUrl() {
|
||||||
linkHandler.fromUrl(null).getId();
|
assertThrows(IllegalArgumentException.class, () -> linkHandler.fromUrl(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
package org.schabi.newpipe.extractor.services.soundcloud;
|
package org.schabi.newpipe.extractor.services.soundcloud;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
|
import org.junit.jupiter.params.provider.ValueSource;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.ServiceList;
|
import org.schabi.newpipe.extractor.ServiceList;
|
||||||
|
@ -15,7 +17,7 @@ import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for {@link SoundcloudSubscriptionExtractor}
|
* Test for {@link SoundcloudSubscriptionExtractor}
|
||||||
|
@ -24,54 +26,49 @@ public class SoundcloudSubscriptionExtractorTest {
|
||||||
private static SoundcloudSubscriptionExtractor subscriptionExtractor;
|
private static SoundcloudSubscriptionExtractor subscriptionExtractor;
|
||||||
private static LinkHandlerFactory urlHandler;
|
private static LinkHandlerFactory urlHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setupClass() {
|
public static void setupClass() {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
subscriptionExtractor = new SoundcloudSubscriptionExtractor(ServiceList.SoundCloud);
|
subscriptionExtractor = new SoundcloudSubscriptionExtractor(ServiceList.SoundCloud);
|
||||||
urlHandler = ServiceList.SoundCloud.getChannelLHFactory();
|
urlHandler = ServiceList.SoundCloud.getChannelLHFactory();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@ParameterizedTest
|
||||||
public void testFromChannelUrl() throws Exception {
|
@ValueSource(strings = {
|
||||||
testList(subscriptionExtractor.fromChannelUrl("https://soundcloud.com/monstercat"));
|
"https://soundcloud.com/monstercat",
|
||||||
testList(subscriptionExtractor.fromChannelUrl("http://soundcloud.com/monstercat"));
|
"http://soundcloud.com/monstercat",
|
||||||
testList(subscriptionExtractor.fromChannelUrl("soundcloud.com/monstercat"));
|
"soundcloud.com/monstercat",
|
||||||
testList(subscriptionExtractor.fromChannelUrl("monstercat"));
|
"monstercat",
|
||||||
|
// Empty followings user
|
||||||
//Empty followings user
|
"some-random-user-184047028"
|
||||||
testList(subscriptionExtractor.fromChannelUrl("some-random-user-184047028"));
|
})
|
||||||
}
|
void testFromChannelUrl(final String channelUrl) throws Exception {
|
||||||
|
for (SubscriptionItem item : subscriptionExtractor.fromChannelUrl(channelUrl)) {
|
||||||
@Test
|
|
||||||
public void testInvalidSourceException() {
|
|
||||||
List<String> invalidList = Arrays.asList(
|
|
||||||
"httttps://invalid.com/user",
|
|
||||||
".com/monstercat",
|
|
||||||
"ithinkthatthisuserdontexist",
|
|
||||||
"",
|
|
||||||
null
|
|
||||||
);
|
|
||||||
|
|
||||||
for (String invalidUser : invalidList) {
|
|
||||||
try {
|
|
||||||
subscriptionExtractor.fromChannelUrl(invalidUser);
|
|
||||||
|
|
||||||
fail("didn't throw exception");
|
|
||||||
} catch (IOException e) {
|
|
||||||
// Ignore it, could be an unstable network on the CI server
|
|
||||||
} catch (Exception e) {
|
|
||||||
boolean isExpectedException = e instanceof SubscriptionExtractor.InvalidSourceException;
|
|
||||||
assertTrue(e.getClass().getSimpleName() + " is not the expected exception", isExpectedException);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void testList(List<SubscriptionItem> subscriptionItems) throws ParsingException {
|
|
||||||
for (SubscriptionItem item : subscriptionItems) {
|
|
||||||
assertNotNull(item.getName());
|
assertNotNull(item.getName());
|
||||||
assertNotNull(item.getUrl());
|
assertNotNull(item.getUrl());
|
||||||
assertTrue(urlHandler.acceptUrl(item.getUrl()));
|
assertTrue(urlHandler.acceptUrl(item.getUrl()));
|
||||||
assertFalse(item.getServiceId() == -1);
|
assertNotEquals(-1, item.getServiceId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ParameterizedTest
|
||||||
|
@ValueSource(strings = {
|
||||||
|
"httttps://invalid.com/user",
|
||||||
|
".com/monstercat",
|
||||||
|
"ithinkthatthisuserdontexist",
|
||||||
|
""
|
||||||
|
})
|
||||||
|
void testInvalidSourceException(final String invalidUser) {
|
||||||
|
assertThrows(
|
||||||
|
SubscriptionExtractor.InvalidSourceException.class,
|
||||||
|
() -> subscriptionExtractor.fromChannelUrl(invalidUser));
|
||||||
|
}
|
||||||
|
|
||||||
|
// null can't be added to the above value source because it's not a constant
|
||||||
|
@Test
|
||||||
|
void testInvalidSourceExceptionWhenUrlIsNull() {
|
||||||
|
assertThrows(
|
||||||
|
SubscriptionExtractor.InvalidSourceException.class,
|
||||||
|
() -> subscriptionExtractor.fromChannelUrl(null));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services.soundcloud;
|
package org.schabi.newpipe.extractor.services.soundcloud;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
||||||
|
@ -9,7 +9,7 @@ import org.schabi.newpipe.extractor.suggestion.SuggestionExtractor;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
|
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -18,7 +18,7 @@ import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
|
||||||
public class SoundcloudSuggestionExtractorTest {
|
public class SoundcloudSuggestionExtractorTest {
|
||||||
private static SuggestionExtractor suggestionExtractor;
|
private static SuggestionExtractor suggestionExtractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
suggestionExtractor = SoundCloud.getSuggestionExtractor();
|
suggestionExtractor = SoundCloud.getSuggestionExtractor();
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services.soundcloud.search;
|
package org.schabi.newpipe.extractor.services.soundcloud.search;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Ignore;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.Test;
|
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.InfoItem;
|
import org.schabi.newpipe.extractor.InfoItem;
|
||||||
import org.schabi.newpipe.extractor.ListExtractor.InfoItemsPage;
|
import org.schabi.newpipe.extractor.ListExtractor.InfoItemsPage;
|
||||||
|
@ -20,7 +19,7 @@ import java.net.URLEncoder;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static java.util.Collections.singletonList;
|
import static java.util.Collections.singletonList;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
|
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.assertNoDuplicatedItems;
|
import static org.schabi.newpipe.extractor.services.DefaultTests.assertNoDuplicatedItems;
|
||||||
import static org.schabi.newpipe.extractor.services.soundcloud.linkHandler.SoundcloudSearchQueryHandlerFactory.*;
|
import static org.schabi.newpipe.extractor.services.soundcloud.linkHandler.SoundcloudSearchQueryHandlerFactory.*;
|
||||||
|
@ -32,7 +31,7 @@ public class SoundcloudSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "lill uzi vert";
|
private static final String QUERY = "lill uzi vert";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = SoundCloud.getSearchExtractor(QUERY);
|
extractor = SoundCloud.getSearchExtractor(QUERY);
|
||||||
|
@ -55,7 +54,7 @@ public class SoundcloudSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "lill uzi vert";
|
private static final String QUERY = "lill uzi vert";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = SoundCloud.getSearchExtractor(QUERY, singletonList(TRACKS), "");
|
extractor = SoundCloud.getSearchExtractor(QUERY, singletonList(TRACKS), "");
|
||||||
|
@ -79,7 +78,7 @@ public class SoundcloudSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "lill uzi vert";
|
private static final String QUERY = "lill uzi vert";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = SoundCloud.getSearchExtractor(QUERY, singletonList(USERS), "");
|
extractor = SoundCloud.getSearchExtractor(QUERY, singletonList(USERS), "");
|
||||||
|
@ -103,7 +102,7 @@ public class SoundcloudSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "lill uzi vert";
|
private static final String QUERY = "lill uzi vert";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = SoundCloud.getSearchExtractor(QUERY, singletonList(PLAYLISTS), "");
|
extractor = SoundCloud.getSearchExtractor(QUERY, singletonList(PLAYLISTS), "");
|
||||||
|
@ -149,7 +148,7 @@ public class SoundcloudSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "David Guetta";
|
private static final String QUERY = "David Guetta";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = SoundCloud.getSearchExtractor(QUERY, singletonList(USERS), "");
|
extractor = SoundCloud.getSearchExtractor(QUERY, singletonList(USERS), "");
|
||||||
|
@ -168,7 +167,7 @@ public class SoundcloudSearchExtractorTest {
|
||||||
@Override public InfoItem.InfoType expectedInfoItemType() { return InfoItem.InfoType.CHANNEL; }
|
@Override public InfoItem.InfoType expectedInfoItemType() { return InfoItem.InfoType.CHANNEL; }
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsVerified() throws IOException, ExtractionException {
|
void testIsVerified() throws IOException, ExtractionException {
|
||||||
final List<InfoItem> items = extractor.getInitialPage().getItems();
|
final List<InfoItem> items = extractor.getInitialPage().getItems();
|
||||||
boolean verified = false;
|
boolean verified = false;
|
||||||
for (InfoItem item : items) {
|
for (InfoItem item : items) {
|
||||||
|
|
|
@ -1,19 +1,18 @@
|
||||||
package org.schabi.newpipe.extractor.services.soundcloud.search;
|
package org.schabi.newpipe.extractor.services.soundcloud.search;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Ignore;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.Test;
|
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
|
|
||||||
import static java.util.Arrays.asList;
|
import static java.util.Arrays.asList;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
|
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
|
||||||
import static org.schabi.newpipe.extractor.services.soundcloud.linkHandler.SoundcloudSearchQueryHandlerFactory.*;
|
import static org.schabi.newpipe.extractor.services.soundcloud.linkHandler.SoundcloudSearchQueryHandlerFactory.*;
|
||||||
|
|
||||||
public class SoundcloudSearchQHTest {
|
public class SoundcloudSearchQHTest {
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUpClass() throws Exception {
|
public static void setUpClass() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
|
import org.schabi.newpipe.extractor.ExtractorAsserts;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
|
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
|
||||||
import org.schabi.newpipe.extractor.exceptions.AccountTerminatedException;
|
import org.schabi.newpipe.extractor.exceptions.AccountTerminatedException;
|
||||||
|
@ -16,9 +17,8 @@ import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelEx
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import static org.hamcrest.CoreMatchers.containsString;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertContains;
|
||||||
import static org.junit.Assert.*;
|
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.*;
|
import static org.schabi.newpipe.extractor.services.DefaultTests.*;
|
||||||
|
@ -31,132 +31,123 @@ public class YoutubeChannelExtractorTest {
|
||||||
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/channel/";
|
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/channel/";
|
||||||
|
|
||||||
public static class NotAvailable {
|
public static class NotAvailable {
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws IOException {
|
public static void setUp() throws IOException {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
NewPipe.init(new DownloaderFactory().getDownloader(RESOURCE_PATH + "notAvailable"));
|
NewPipe.init(new DownloaderFactory().getDownloader(RESOURCE_PATH + "notAvailable"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = ContentNotAvailableException.class)
|
@Test
|
||||||
public void deletedFetch() throws Exception {
|
public void deletedFetch() throws Exception {
|
||||||
final ChannelExtractor extractor =
|
final ChannelExtractor extractor =
|
||||||
YouTube.getChannelExtractor("https://www.youtube.com/channel/UCAUc4iz6edWerIjlnL8OSSw");
|
YouTube.getChannelExtractor("https://www.youtube.com/channel/UCAUc4iz6edWerIjlnL8OSSw");
|
||||||
extractor.fetchPage();
|
|
||||||
|
assertThrows(ContentNotAvailableException.class, extractor::fetchPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = ContentNotAvailableException.class)
|
@Test
|
||||||
public void nonExistentFetch() throws Exception {
|
public void nonExistentFetch() throws Exception {
|
||||||
final ChannelExtractor extractor =
|
final ChannelExtractor extractor =
|
||||||
YouTube.getChannelExtractor("https://www.youtube.com/channel/DOESNT-EXIST");
|
YouTube.getChannelExtractor("https://www.youtube.com/channel/DOESNT-EXIST");
|
||||||
extractor.fetchPage();
|
|
||||||
|
assertThrows(ContentNotAvailableException.class, extractor::fetchPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = AccountTerminatedException.class)
|
@Test
|
||||||
public void accountTerminatedTOSFetch() throws Exception {
|
public void accountTerminatedTOSFetch() throws Exception {
|
||||||
// "This account has been terminated for a violation of YouTube's Terms of Service."
|
// "This account has been terminated for a violation of YouTube's Terms of Service."
|
||||||
final ChannelExtractor extractor =
|
final ChannelExtractor extractor =
|
||||||
YouTube.getChannelExtractor("https://www.youtube.com/channel/UCTGjY2I-ZUGnwVoWAGRd7XQ");
|
YouTube.getChannelExtractor("https://www.youtube.com/channel/UCTGjY2I-ZUGnwVoWAGRd7XQ");
|
||||||
try {
|
|
||||||
extractor.fetchPage();
|
AccountTerminatedException ex =
|
||||||
} catch (final AccountTerminatedException e) {
|
assertThrows(AccountTerminatedException.class, extractor::fetchPage);
|
||||||
assertEquals(e.getReason(), AccountTerminatedException.Reason.VIOLATION);
|
assertEquals(AccountTerminatedException.Reason.VIOLATION, ex.getReason());
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = AccountTerminatedException.class)
|
@Test
|
||||||
public void accountTerminatedCommunityFetch() throws Exception {
|
public void accountTerminatedCommunityFetch() throws Exception {
|
||||||
// "This account has been terminated for violating YouTube's Community Guidelines."
|
// "This account has been terminated for violating YouTube's Community Guidelines."
|
||||||
final ChannelExtractor extractor =
|
final ChannelExtractor extractor =
|
||||||
YouTube.getChannelExtractor("https://www.youtube.com/channel/UC0AuOxCr9TZ0TtEgL1zpIgA");
|
YouTube.getChannelExtractor("https://www.youtube.com/channel/UC0AuOxCr9TZ0TtEgL1zpIgA");
|
||||||
try {
|
|
||||||
extractor.fetchPage();
|
AccountTerminatedException ex =
|
||||||
} catch (final AccountTerminatedException e) {
|
assertThrows(AccountTerminatedException.class, extractor::fetchPage);
|
||||||
assertEquals(e.getReason(), AccountTerminatedException.Reason.VIOLATION);
|
assertEquals(AccountTerminatedException.Reason.VIOLATION, ex.getReason());
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = AccountTerminatedException.class)
|
@Test
|
||||||
public void accountTerminatedHateFetch() throws Exception {
|
public void accountTerminatedHateFetch() throws Exception {
|
||||||
// "This account has been terminated due to multiple or severe violations
|
// "This account has been terminated due to multiple or severe violations
|
||||||
// of YouTube's policy prohibiting hate speech."
|
// of YouTube's policy prohibiting hate speech."
|
||||||
final ChannelExtractor extractor =
|
final ChannelExtractor extractor =
|
||||||
YouTube.getChannelExtractor("https://www.youtube.com/channel/UCPWXIOPK-9myzek6jHR5yrg");
|
YouTube.getChannelExtractor("https://www.youtube.com/channel/UCPWXIOPK-9myzek6jHR5yrg");
|
||||||
try {
|
|
||||||
extractor.fetchPage();
|
AccountTerminatedException ex =
|
||||||
} catch (final AccountTerminatedException e) {
|
assertThrows(AccountTerminatedException.class, extractor::fetchPage);
|
||||||
assertEquals(e.getReason(), AccountTerminatedException.Reason.VIOLATION);
|
assertEquals(AccountTerminatedException.Reason.VIOLATION, ex.getReason());
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = AccountTerminatedException.class)
|
@Test
|
||||||
public void accountTerminatedBullyFetch() throws Exception {
|
public void accountTerminatedBullyFetch() throws Exception {
|
||||||
// "This account has been terminated due to multiple or severe violations
|
// "This account has been terminated due to multiple or severe violations
|
||||||
// of YouTube's policy prohibiting content designed to harass, bully or threaten."
|
// of YouTube's policy prohibiting content designed to harass, bully or threaten."
|
||||||
final ChannelExtractor extractor =
|
final ChannelExtractor extractor =
|
||||||
YouTube.getChannelExtractor("https://youtube.com/channel/UCB1o7_gbFp2PLsamWxFenBg");
|
YouTube.getChannelExtractor("https://youtube.com/channel/UCB1o7_gbFp2PLsamWxFenBg");
|
||||||
try {
|
|
||||||
extractor.fetchPage();
|
AccountTerminatedException ex =
|
||||||
} catch (final AccountTerminatedException e) {
|
assertThrows(AccountTerminatedException.class, extractor::fetchPage);
|
||||||
assertEquals(e.getReason(), AccountTerminatedException.Reason.VIOLATION);
|
assertEquals(AccountTerminatedException.Reason.VIOLATION, ex.getReason());
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = AccountTerminatedException.class)
|
@Test
|
||||||
public void accountTerminatedSpamFetch() throws Exception {
|
public void accountTerminatedSpamFetch() throws Exception {
|
||||||
// "This account has been terminated due to multiple or severe violations
|
// "This account has been terminated due to multiple or severe violations
|
||||||
// of YouTube's policy against spam, deceptive practices and misleading content
|
// of YouTube's policy against spam, deceptive practices and misleading content
|
||||||
// or other Terms of Service violations."
|
// or other Terms of Service violations."
|
||||||
final ChannelExtractor extractor =
|
final ChannelExtractor extractor =
|
||||||
YouTube.getChannelExtractor("https://www.youtube.com/channel/UCoaO4U_p7G7AwalqSbGCZOA");
|
YouTube.getChannelExtractor("https://www.youtube.com/channel/UCoaO4U_p7G7AwalqSbGCZOA");
|
||||||
try {
|
|
||||||
extractor.fetchPage();
|
AccountTerminatedException ex =
|
||||||
} catch (final AccountTerminatedException e) {
|
assertThrows(AccountTerminatedException.class, extractor::fetchPage);
|
||||||
assertEquals(e.getReason(), AccountTerminatedException.Reason.VIOLATION);
|
assertEquals(AccountTerminatedException.Reason.VIOLATION, ex.getReason());
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = AccountTerminatedException.class)
|
@Test
|
||||||
public void accountTerminatedCopyrightFetch() throws Exception {
|
public void accountTerminatedCopyrightFetch() throws Exception {
|
||||||
// "This account has been terminated because we received multiple third-party claims
|
// "This account has been terminated because we received multiple third-party claims
|
||||||
// of copyright infringement regarding material that the user posted."
|
// of copyright infringement regarding material that the user posted."
|
||||||
final ChannelExtractor extractor =
|
final ChannelExtractor extractor =
|
||||||
YouTube.getChannelExtractor("https://www.youtube.com/channel/UCI4i4RgFT5ilfMpna4Z_Y8w");
|
YouTube.getChannelExtractor("https://www.youtube.com/channel/UCI4i4RgFT5ilfMpna4Z_Y8w");
|
||||||
try {
|
|
||||||
extractor.fetchPage();
|
AccountTerminatedException ex =
|
||||||
} catch (final AccountTerminatedException e) {
|
assertThrows(AccountTerminatedException.class, extractor::fetchPage);
|
||||||
assertEquals(e.getReason(), AccountTerminatedException.Reason.VIOLATION);
|
assertEquals(AccountTerminatedException.Reason.VIOLATION, ex.getReason());
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class NotSupported {
|
public static class NotSupported {
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws IOException {
|
public static void setUp() throws IOException {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
NewPipe.init(new DownloaderFactory().getDownloader(RESOURCE_PATH + "notSupported"));
|
NewPipe.init(new DownloaderFactory().getDownloader(RESOURCE_PATH + "notSupported"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = ContentNotSupportedException.class)
|
@Test
|
||||||
public void noVideoTab() throws Exception {
|
void noVideoTab() throws Exception {
|
||||||
final ChannelExtractor extractor = YouTube.getChannelExtractor("https://invidio.us/channel/UC-9-kyTW8ZkZNDHQJ6FgpwQ");
|
final ChannelExtractor extractor = YouTube.getChannelExtractor("https://invidio.us/channel/UC-9-kyTW8ZkZNDHQJ6FgpwQ");
|
||||||
|
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
extractor.getInitialPage();
|
assertThrows(ContentNotSupportedException.class, extractor::getInitialPage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Gronkh implements BaseChannelExtractorTest {
|
public static class Gronkh implements BaseChannelExtractorTest {
|
||||||
private static YoutubeChannelExtractor extractor;
|
private static YoutubeChannelExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -215,21 +206,21 @@ public class YoutubeChannelExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDescription() throws Exception {
|
public void testDescription() throws Exception {
|
||||||
assertThat(extractor.getDescription(), containsString("Ungebremster Spieltrieb seit 1896."));
|
assertContains("Ungebremster Spieltrieb seit 1896.", extractor.getDescription());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAvatarUrl() throws Exception {
|
public void testAvatarUrl() throws Exception {
|
||||||
String avatarUrl = extractor.getAvatarUrl();
|
String avatarUrl = extractor.getAvatarUrl();
|
||||||
assertIsSecureUrl(avatarUrl);
|
assertIsSecureUrl(avatarUrl);
|
||||||
assertTrue(avatarUrl, avatarUrl.contains("yt3"));
|
ExtractorAsserts.assertContains("yt3", avatarUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testBannerUrl() throws Exception {
|
public void testBannerUrl() throws Exception {
|
||||||
String bannerUrl = extractor.getBannerUrl();
|
String bannerUrl = extractor.getBannerUrl();
|
||||||
assertIsSecureUrl(bannerUrl);
|
assertIsSecureUrl(bannerUrl);
|
||||||
assertTrue(bannerUrl, bannerUrl.contains("yt3"));
|
ExtractorAsserts.assertContains("yt3", bannerUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -239,8 +230,7 @@ public class YoutubeChannelExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSubscriberCount() throws Exception {
|
public void testSubscriberCount() throws Exception {
|
||||||
assertTrue("Wrong subscriber count", extractor.getSubscriberCount() >= 0);
|
ExtractorAsserts.assertGreaterOrEqual(4_900_000, extractor.getSubscriberCount());
|
||||||
assertTrue("Subscriber count too small", extractor.getSubscriberCount() >= 4e6);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -254,7 +244,7 @@ public class YoutubeChannelExtractorTest {
|
||||||
public static class VSauce implements BaseChannelExtractorTest {
|
public static class VSauce implements BaseChannelExtractorTest {
|
||||||
private static YoutubeChannelExtractor extractor;
|
private static YoutubeChannelExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -313,22 +303,21 @@ public class YoutubeChannelExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDescription() throws Exception {
|
public void testDescription() throws Exception {
|
||||||
assertTrue("What it actually was: " + extractor.getDescription(),
|
assertContains("Our World is Amazing. \n\nQuestions? Ideas? Tweet me:", extractor.getDescription());
|
||||||
extractor.getDescription().contains("Our World is Amazing. \n\nQuestions? Ideas? Tweet me:"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAvatarUrl() throws Exception {
|
public void testAvatarUrl() throws Exception {
|
||||||
String avatarUrl = extractor.getAvatarUrl();
|
String avatarUrl = extractor.getAvatarUrl();
|
||||||
assertIsSecureUrl(avatarUrl);
|
assertIsSecureUrl(avatarUrl);
|
||||||
assertTrue(avatarUrl, avatarUrl.contains("yt3"));
|
ExtractorAsserts.assertContains("yt3", avatarUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testBannerUrl() throws Exception {
|
public void testBannerUrl() throws Exception {
|
||||||
String bannerUrl = extractor.getBannerUrl();
|
String bannerUrl = extractor.getBannerUrl();
|
||||||
assertIsSecureUrl(bannerUrl);
|
assertIsSecureUrl(bannerUrl);
|
||||||
assertTrue(bannerUrl, bannerUrl.contains("yt3"));
|
ExtractorAsserts.assertContains("yt3", bannerUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -338,11 +327,10 @@ public class YoutubeChannelExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSubscriberCount() throws Exception {
|
public void testSubscriberCount() throws Exception {
|
||||||
assertTrue("Wrong subscriber count", extractor.getSubscriberCount() >= 0);
|
ExtractorAsserts.assertGreaterOrEqual(17_000_000, extractor.getSubscriberCount());
|
||||||
assertTrue("Subscriber count too small", extractor.getSubscriberCount() >= 10e6);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Test
|
||||||
public void testVerified() throws Exception {
|
public void testVerified() throws Exception {
|
||||||
assertTrue(extractor.isVerified());
|
assertTrue(extractor.isVerified());
|
||||||
}
|
}
|
||||||
|
@ -352,7 +340,7 @@ public class YoutubeChannelExtractorTest {
|
||||||
public static class Kurzgesagt implements BaseChannelExtractorTest {
|
public static class Kurzgesagt implements BaseChannelExtractorTest {
|
||||||
private static YoutubeChannelExtractor extractor;
|
private static YoutubeChannelExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -373,8 +361,7 @@ public class YoutubeChannelExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testName() throws Exception {
|
public void testName() throws Exception {
|
||||||
String name = extractor.getName();
|
assertTrue(extractor.getName().startsWith("Kurzgesagt"));
|
||||||
assertTrue(name, name.startsWith("Kurzgesagt"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -412,8 +399,7 @@ public class YoutubeChannelExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDescription() throws Exception {
|
public void testDescription() throws Exception {
|
||||||
final String description = extractor.getDescription();
|
ExtractorAsserts.assertContains("small team who want to make science look beautiful", extractor.getDescription());
|
||||||
assertTrue(description, description.contains("small team who want to make science look beautiful"));
|
|
||||||
//TODO: Description get cuts out, because the og:description is optimized and don't have all the content
|
//TODO: Description get cuts out, because the og:description is optimized and don't have all the content
|
||||||
//assertTrue(description, description.contains("Currently we make one animation video per month"));
|
//assertTrue(description, description.contains("Currently we make one animation video per month"));
|
||||||
}
|
}
|
||||||
|
@ -422,14 +408,14 @@ public class YoutubeChannelExtractorTest {
|
||||||
public void testAvatarUrl() throws Exception {
|
public void testAvatarUrl() throws Exception {
|
||||||
String avatarUrl = extractor.getAvatarUrl();
|
String avatarUrl = extractor.getAvatarUrl();
|
||||||
assertIsSecureUrl(avatarUrl);
|
assertIsSecureUrl(avatarUrl);
|
||||||
assertTrue(avatarUrl, avatarUrl.contains("yt3"));
|
ExtractorAsserts.assertContains("yt3", avatarUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testBannerUrl() throws Exception {
|
public void testBannerUrl() throws Exception {
|
||||||
String bannerUrl = extractor.getBannerUrl();
|
String bannerUrl = extractor.getBannerUrl();
|
||||||
assertIsSecureUrl(bannerUrl);
|
assertIsSecureUrl(bannerUrl);
|
||||||
assertTrue(bannerUrl, bannerUrl.contains("yt3"));
|
ExtractorAsserts.assertContains("yt3", bannerUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -439,10 +425,10 @@ public class YoutubeChannelExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSubscriberCount() throws Exception {
|
public void testSubscriberCount() throws Exception {
|
||||||
assertTrue("Wrong subscriber count", extractor.getSubscriberCount() >= 5e6);
|
ExtractorAsserts.assertGreaterOrEqual(17_000_000, extractor.getSubscriberCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Test
|
||||||
public void testVerified() throws Exception {
|
public void testVerified() throws Exception {
|
||||||
assertTrue(extractor.isVerified());
|
assertTrue(extractor.isVerified());
|
||||||
}
|
}
|
||||||
|
@ -452,7 +438,7 @@ public class YoutubeChannelExtractorTest {
|
||||||
|
|
||||||
private static YoutubeChannelExtractor extractor;
|
private static YoutubeChannelExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
// Test is not deterministic, mocks can't be used
|
// Test is not deterministic, mocks can't be used
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
@ -471,7 +457,7 @@ public class YoutubeChannelExtractorTest {
|
||||||
public static class CaptainDisillusion implements BaseChannelExtractorTest {
|
public static class CaptainDisillusion implements BaseChannelExtractorTest {
|
||||||
private static YoutubeChannelExtractor extractor;
|
private static YoutubeChannelExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -530,22 +516,21 @@ public class YoutubeChannelExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDescription() throws Exception {
|
public void testDescription() throws Exception {
|
||||||
final String description = extractor.getDescription();
|
ExtractorAsserts.assertContains("In a world where", extractor.getDescription());
|
||||||
assertTrue(description, description.contains("In a world where"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAvatarUrl() throws Exception {
|
public void testAvatarUrl() throws Exception {
|
||||||
String avatarUrl = extractor.getAvatarUrl();
|
String avatarUrl = extractor.getAvatarUrl();
|
||||||
assertIsSecureUrl(avatarUrl);
|
assertIsSecureUrl(avatarUrl);
|
||||||
assertTrue(avatarUrl, avatarUrl.contains("yt3"));
|
ExtractorAsserts.assertContains("yt3", avatarUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testBannerUrl() throws Exception {
|
public void testBannerUrl() throws Exception {
|
||||||
String bannerUrl = extractor.getBannerUrl();
|
String bannerUrl = extractor.getBannerUrl();
|
||||||
assertIsSecureUrl(bannerUrl);
|
assertIsSecureUrl(bannerUrl);
|
||||||
assertTrue(bannerUrl, bannerUrl.contains("yt3"));
|
ExtractorAsserts.assertContains("yt3", bannerUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -555,10 +540,10 @@ public class YoutubeChannelExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSubscriberCount() throws Exception {
|
public void testSubscriberCount() throws Exception {
|
||||||
assertTrue("Wrong subscriber count", extractor.getSubscriberCount() >= 5e5);
|
ExtractorAsserts.assertGreaterOrEqual(2_000_000, extractor.getSubscriberCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Test
|
||||||
public void testVerified() throws Exception {
|
public void testVerified() throws Exception {
|
||||||
assertTrue(extractor.isVerified());
|
assertTrue(extractor.isVerified());
|
||||||
}
|
}
|
||||||
|
@ -567,7 +552,7 @@ public class YoutubeChannelExtractorTest {
|
||||||
public static class RandomChannel implements BaseChannelExtractorTest {
|
public static class RandomChannel implements BaseChannelExtractorTest {
|
||||||
private static YoutubeChannelExtractor extractor;
|
private static YoutubeChannelExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -632,22 +617,21 @@ public class YoutubeChannelExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDescription() throws Exception {
|
public void testDescription() throws Exception {
|
||||||
final String description = extractor.getDescription();
|
ExtractorAsserts.assertContains("Hey there iu will upoload a load of pranks onto this channel", extractor.getDescription());
|
||||||
assertTrue(description, description.contains("Hey there iu will upoload a load of pranks onto this channel"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAvatarUrl() throws Exception {
|
public void testAvatarUrl() throws Exception {
|
||||||
String avatarUrl = extractor.getAvatarUrl();
|
String avatarUrl = extractor.getAvatarUrl();
|
||||||
assertIsSecureUrl(avatarUrl);
|
assertIsSecureUrl(avatarUrl);
|
||||||
assertTrue(avatarUrl, avatarUrl.contains("yt3"));
|
ExtractorAsserts.assertContains("yt3", avatarUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testBannerUrl() throws Exception {
|
public void testBannerUrl() throws Exception {
|
||||||
String bannerUrl = extractor.getBannerUrl();
|
String bannerUrl = extractor.getBannerUrl();
|
||||||
assertIsSecureUrl(bannerUrl);
|
assertIsSecureUrl(bannerUrl);
|
||||||
assertTrue(bannerUrl, bannerUrl.contains("yt3"));
|
ExtractorAsserts.assertContains("yt3", bannerUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -657,11 +641,10 @@ public class YoutubeChannelExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSubscriberCount() throws Exception {
|
public void testSubscriberCount() throws Exception {
|
||||||
long subscribers = extractor.getSubscriberCount();
|
ExtractorAsserts.assertGreaterOrEqual(50, extractor.getSubscriberCount());
|
||||||
assertTrue("Wrong subscriber count: " + subscribers, subscribers >= 50);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Test
|
||||||
public void testVerified() throws Exception {
|
public void testVerified() throws Exception {
|
||||||
assertFalse(extractor.isVerified());
|
assertFalse(extractor.isVerified());
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeChannelLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeChannelLinkHandlerFactory;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for {@link YoutubeChannelLinkHandlerFactory}
|
* Test for {@link YoutubeChannelLinkHandlerFactory}
|
||||||
|
@ -18,7 +18,7 @@ public class YoutubeChannelLinkHandlerFactoryTest {
|
||||||
|
|
||||||
private static YoutubeChannelLinkHandlerFactory linkHandler;
|
private static YoutubeChannelLinkHandlerFactory linkHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
linkHandler = YoutubeChannelLinkHandlerFactory.getInstance();
|
linkHandler = YoutubeChannelLinkHandlerFactory.getInstance();
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.extractor.ListExtractor;
|
import org.schabi.newpipe.extractor.ListExtractor;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
|
@ -16,7 +16,7 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import static org.junit.Assert.fail;
|
import static org.junit.jupiter.api.Assertions.fail;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestRelatedItems;
|
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestRelatedItems;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.extractor.ListExtractor.InfoItemsPage;
|
import org.schabi.newpipe.extractor.ListExtractor.InfoItemsPage;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
|
@ -19,10 +19,10 @@ import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
|
||||||
public class YoutubeCommentsExtractorTest {
|
public class YoutubeCommentsExtractorTest {
|
||||||
|
@ -36,7 +36,7 @@ public class YoutubeCommentsExtractorTest {
|
||||||
private static final String commentContent = "Category: Education";
|
private static final String commentContent = "Category: Education";
|
||||||
private static YoutubeCommentsExtractor extractor;
|
private static YoutubeCommentsExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -125,7 +125,7 @@ public class YoutubeCommentsExtractorTest {
|
||||||
private final static String url = "https://www.youtube.com/watch?v=VM_6n762j6M";
|
private final static String url = "https://www.youtube.com/watch?v=VM_6n762j6M";
|
||||||
private static YoutubeCommentsExtractor extractor;
|
private static YoutubeCommentsExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -165,7 +165,7 @@ public class YoutubeCommentsExtractorTest {
|
||||||
private final static String url = "https://www.youtube.com/watch?v=tR11b7uh17Y";
|
private final static String url = "https://www.youtube.com/watch?v=tR11b7uh17Y";
|
||||||
private static YoutubeCommentsExtractor extractor;
|
private static YoutubeCommentsExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -199,7 +199,7 @@ public class YoutubeCommentsExtractorTest {
|
||||||
heartedByUploader = true;
|
heartedByUploader = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assertTrue("No comments was hearted by uploader", heartedByUploader);
|
assertTrue(heartedByUploader, "No comments was hearted by uploader");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -208,7 +208,7 @@ public class YoutubeCommentsExtractorTest {
|
||||||
private final static String url = "https://www.youtube.com/watch?v=bjFtFMilb34";
|
private final static String url = "https://www.youtube.com/watch?v=bjFtFMilb34";
|
||||||
private static YoutubeCommentsExtractor extractor;
|
private static YoutubeCommentsExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -238,7 +238,7 @@ public class YoutubeCommentsExtractorTest {
|
||||||
assertFalse(Utils.isBlank(c.getCommentText()));
|
assertFalse(Utils.isBlank(c.getCommentText()));
|
||||||
}
|
}
|
||||||
|
|
||||||
assertTrue("First comment isn't pinned", comments.getItems().get(0).isPinned());
|
assertTrue(comments.getItems().get(0).isPinned(), "First comment isn't pinned");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,7 +250,7 @@ public class YoutubeCommentsExtractorTest {
|
||||||
private final static String url = "https://www.youtube.com/watch?v=QqsLTNkzvaY";
|
private final static String url = "https://www.youtube.com/watch?v=QqsLTNkzvaY";
|
||||||
private static YoutubeCommentsExtractor extractor;
|
private static YoutubeCommentsExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -268,9 +268,9 @@ public class YoutubeCommentsExtractorTest {
|
||||||
|
|
||||||
CommentsInfoItem pinnedComment = comments.getItems().get(0);
|
CommentsInfoItem pinnedComment = comments.getItems().get(0);
|
||||||
|
|
||||||
assertTrue("First comment isn't pinned", pinnedComment.isPinned());
|
assertTrue(pinnedComment.isPinned(), "First comment isn't pinned");
|
||||||
assertTrue("The first pinned comment has no likes", pinnedComment.getLikeCount() > 0);
|
assertTrue(pinnedComment.getLikeCount() > 0, "The first pinned comment has no likes");
|
||||||
assertTrue("The first pinned comment has no vote count", !Utils.isBlank(pinnedComment.getTextualLikeCount()));
|
assertFalse(Utils.isBlank(pinnedComment.getTextualLikeCount()), "The first pinned comment has no vote count");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -282,7 +282,7 @@ public class YoutubeCommentsExtractorTest {
|
||||||
private final static String url = "https://www.youtube.com/watch?v=QqsLTNkzvaY";
|
private final static String url = "https://www.youtube.com/watch?v=QqsLTNkzvaY";
|
||||||
private static YoutubeCommentsExtractor extractor;
|
private static YoutubeCommentsExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -302,8 +302,8 @@ public class YoutubeCommentsExtractorTest {
|
||||||
|
|
||||||
CommentsInfoItem pinnedComment = comments.getItems().get(0);
|
CommentsInfoItem pinnedComment = comments.getItems().get(0);
|
||||||
|
|
||||||
assertTrue("First comment isn't pinned", pinnedComment.isPinned());
|
assertTrue(pinnedComment.isPinned(), "First comment isn't pinned");
|
||||||
assertTrue("The first pinned comment has no vote count", !Utils.isBlank(pinnedComment.getTextualLikeCount()));
|
assertFalse(Utils.isBlank(pinnedComment.getTextualLikeCount()), "The first pinned comment has no vote count");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -311,7 +311,7 @@ public class YoutubeCommentsExtractorTest {
|
||||||
private final static String url = "https://www.youtube.com/watch?v=xaQJbozY_Is";
|
private final static String url = "https://www.youtube.com/watch?v=xaQJbozY_Is";
|
||||||
private static YoutubeCommentsExtractor extractor;
|
private static YoutubeCommentsExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -329,11 +329,12 @@ public class YoutubeCommentsExtractorTest {
|
||||||
|
|
||||||
CommentsInfoItem firstComment = comments.getItems().get(0);
|
CommentsInfoItem firstComment = comments.getItems().get(0);
|
||||||
|
|
||||||
assertTrue("First comment isn't pinned", firstComment.isPinned());
|
assertTrue(firstComment.isPinned(), "First comment isn't pinned");
|
||||||
|
|
||||||
InfoItemsPage<CommentsInfoItem> replies = extractor.getPage(firstComment.getReplies());
|
InfoItemsPage<CommentsInfoItem> replies = extractor.getPage(firstComment.getReplies());
|
||||||
|
|
||||||
assertEquals("First reply comment did not match", "First", replies.getItems().get(0).getCommentText());
|
assertEquals("First", replies.getItems().get(0).getCommentText(),
|
||||||
|
"First reply comment did not match");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,29 +1,30 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeCommentsLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeCommentsLinkHandlerFactory;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
public class YoutubeCommentsLinkHandlerFactoryTest {
|
public class YoutubeCommentsLinkHandlerFactoryTest {
|
||||||
|
|
||||||
private static YoutubeCommentsLinkHandlerFactory linkHandler;
|
private static YoutubeCommentsLinkHandlerFactory linkHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
linkHandler = YoutubeCommentsLinkHandlerFactory.getInstance();
|
linkHandler = YoutubeCommentsLinkHandlerFactory.getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = IllegalArgumentException.class)
|
@Test
|
||||||
public void getIdWithNullAsUrl() throws ParsingException {
|
public void getIdWithNullAsUrl() {
|
||||||
linkHandler.fromId(null);
|
assertThrows(IllegalArgumentException.class, () -> linkHandler.fromId(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ContentNotAvailableException;
|
import org.schabi.newpipe.extractor.exceptions.ContentNotAvailableException;
|
||||||
|
@ -12,8 +12,9 @@ import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeFeedExtra
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.assertNoMoreItems;
|
import static org.schabi.newpipe.extractor.services.DefaultTests.assertNoMoreItems;
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestRelatedItems;
|
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestRelatedItems;
|
||||||
|
@ -25,7 +26,7 @@ public class YoutubeFeedExtractorTest {
|
||||||
public static class Kurzgesagt implements BaseListExtractorTest {
|
public static class Kurzgesagt implements BaseListExtractorTest {
|
||||||
private static YoutubeFeedExtractor extractor;
|
private static YoutubeFeedExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -46,8 +47,7 @@ public class YoutubeFeedExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testName() {
|
public void testName() {
|
||||||
String name = extractor.getName();
|
assertTrue(extractor.getName().startsWith("Kurzgesagt"));
|
||||||
assertTrue(name, name.startsWith("Kurzgesagt"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -82,16 +82,16 @@ public class YoutubeFeedExtractorTest {
|
||||||
|
|
||||||
public static class NotAvailable {
|
public static class NotAvailable {
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws IOException {
|
public static void setUp() throws IOException {
|
||||||
NewPipe.init(new DownloaderFactory().getDownloader(RESOURCE_PATH + "notAvailable/"));
|
NewPipe.init(new DownloaderFactory().getDownloader(RESOURCE_PATH + "notAvailable/"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = ContentNotAvailableException.class)
|
@Test
|
||||||
public void AccountTerminatedFetch() throws Exception {
|
void AccountTerminatedFetch() throws Exception {
|
||||||
YoutubeFeedExtractor extractor = (YoutubeFeedExtractor) YouTube
|
YoutubeFeedExtractor extractor = (YoutubeFeedExtractor) YouTube
|
||||||
.getFeedExtractor("https://www.youtube.com/channel/UCTGjY2I-ZUGnwVoWAGRd7XQ");
|
.getFeedExtractor("https://www.youtube.com/channel/UCTGjY2I-ZUGnwVoWAGRd7XQ");
|
||||||
extractor.fetchPage();
|
assertThrows(ContentNotAvailableException.class, extractor::fetchPage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,31 +1,31 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
import org.junit.Before;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import org.junit.Test;
|
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
|
import org.schabi.newpipe.extractor.ExtractorAsserts;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import static org.hamcrest.CoreMatchers.*;
|
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
|
||||||
|
|
||||||
public class YoutubeJavaScriptExtractorTest {
|
public class YoutubeJavaScriptExtractorTest {
|
||||||
|
|
||||||
@Before
|
@BeforeEach
|
||||||
public void setup() throws IOException {
|
public void setup() throws IOException {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testExtractJavaScriptUrlIframe() throws ParsingException {
|
public void testExtractJavaScriptUrlIframe() throws ParsingException {
|
||||||
assertThat(YoutubeJavaScriptExtractor.extractJavaScriptUrl(), endsWith("base.js"));
|
assertTrue(YoutubeJavaScriptExtractor.extractJavaScriptUrl().endsWith("base.js"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testExtractJavaScriptUrlEmbed() throws ParsingException {
|
public void testExtractJavaScriptUrlEmbed() throws ParsingException {
|
||||||
assertThat(YoutubeJavaScriptExtractor.extractJavaScriptUrl("d4IGg5dqeO8"), endsWith("base.js"));
|
assertTrue(YoutubeJavaScriptExtractor.extractJavaScriptUrl("d4IGg5dqeO8").endsWith("base.js"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -48,9 +48,8 @@ public class YoutubeJavaScriptExtractorTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertPlayerJsCode(final String playerJsCode) {
|
private void assertPlayerJsCode(final String playerJsCode) {
|
||||||
assertThat(playerJsCode, allOf(
|
ExtractorAsserts.assertContains(" Copyright The Closure Library Authors.\n"
|
||||||
containsString(" Copyright The Closure Library Authors.\n"
|
+ " SPDX-License-Identifier: Apache-2.0", playerJsCode);
|
||||||
+ " SPDX-License-Identifier: Apache-2.0"),
|
ExtractorAsserts.assertContains("var _yt_player", playerJsCode);
|
||||||
containsString("var _yt_player")));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
|
@ -10,7 +10,7 @@ import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeTrendingE
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.assertNoMoreItems;
|
import static org.schabi.newpipe.extractor.services.DefaultTests.assertNoMoreItems;
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestRelatedItems;
|
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestRelatedItems;
|
||||||
|
@ -22,7 +22,7 @@ public class YoutubeKioskExtractorTest {
|
||||||
public static class Trending implements BaseListExtractorTest {
|
public static class Trending implements BaseListExtractorTest {
|
||||||
private static YoutubeTrendingExtractor extractor;
|
private static YoutubeTrendingExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
import com.grack.nanojson.JsonWriter;
|
import com.grack.nanojson.JsonWriter;
|
||||||
import org.hamcrest.MatcherAssert;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.Ignore;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.Test;
|
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
|
import org.schabi.newpipe.extractor.ExtractorAsserts;
|
||||||
import org.schabi.newpipe.extractor.ListExtractor;
|
import org.schabi.newpipe.extractor.ListExtractor;
|
||||||
import org.schabi.newpipe.extractor.ListExtractor.InfoItemsPage;
|
import org.schabi.newpipe.extractor.ListExtractor.InfoItemsPage;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
|
@ -15,33 +15,29 @@ import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeMixPlayli
|
||||||
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import static org.hamcrest.CoreMatchers.containsString;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.hamcrest.CoreMatchers.startsWith;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.junit.Assert.assertFalse;
|
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.*;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.*;
|
||||||
import static org.schabi.newpipe.extractor.utils.Utils.UTF_8;
|
|
||||||
|
|
||||||
public class YoutubeMixPlaylistExtractorTest {
|
public class YoutubeMixPlaylistExtractorTest {
|
||||||
|
|
||||||
private static final String VIDEO_ID = "_AzeUSL9lZc";
|
|
||||||
private static final String VIDEO_TITLE =
|
|
||||||
"Most Beautiful And Emotional Piano: Anime Music Shigatsu wa Kimi no Uso OST IMO";
|
|
||||||
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/mix/";
|
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/mix/";
|
||||||
private static final Map<String, String> dummyCookie = new HashMap<>();
|
private static final Map<String, String> dummyCookie = new HashMap<>();
|
||||||
|
|
||||||
private static YoutubeMixPlaylistExtractor extractor;
|
private static YoutubeMixPlaylistExtractor extractor;
|
||||||
|
|
||||||
@Ignore("Test broken, video was blocked by SME and is only available in Japan")
|
|
||||||
public static class Mix {
|
public static class Mix {
|
||||||
|
private static final String VIDEO_ID = "QMVCAPd5cwBcg";
|
||||||
|
private static final String VIDEO_TITLE = "Mix – ";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -54,41 +50,41 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getServiceId() {
|
void getServiceId() {
|
||||||
assertEquals(YouTube.getServiceId(), extractor.getServiceId());
|
assertEquals(YouTube.getServiceId(), extractor.getServiceId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getName() throws Exception {
|
void getName() throws Exception {
|
||||||
final String name = extractor.getName();
|
final String name = extractor.getName();
|
||||||
assertThat(name, startsWith("Mix"));
|
ExtractorAsserts.assertContains("Mix", name);
|
||||||
assertThat(name, containsString(VIDEO_TITLE));
|
ExtractorAsserts.assertContains(VIDEO_TITLE, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getThumbnailUrl() throws Exception {
|
void getThumbnailUrl() throws Exception {
|
||||||
final String thumbnailUrl = extractor.getThumbnailUrl();
|
final String thumbnailUrl = extractor.getThumbnailUrl();
|
||||||
assertIsSecureUrl(thumbnailUrl);
|
assertIsSecureUrl(thumbnailUrl);
|
||||||
MatcherAssert.assertThat(thumbnailUrl, containsString("yt"));
|
ExtractorAsserts.assertContains("yt", thumbnailUrl);
|
||||||
assertThat(thumbnailUrl, containsString(VIDEO_ID));
|
ExtractorAsserts.assertContains(VIDEO_ID, thumbnailUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getInitialPage() throws Exception {
|
void getInitialPage() throws Exception {
|
||||||
final InfoItemsPage<StreamInfoItem> streams = extractor.getInitialPage();
|
final InfoItemsPage<StreamInfoItem> streams = extractor.getInitialPage();
|
||||||
assertFalse(streams.getItems().isEmpty());
|
assertFalse(streams.getItems().isEmpty());
|
||||||
assertTrue(streams.hasNextPage());
|
assertTrue(streams.hasNextPage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getPage() throws Exception {
|
void getPage() throws Exception {
|
||||||
final byte[] body = JsonWriter.string(prepareDesktopJsonBuilder(
|
final byte[] body = JsonWriter.string(prepareDesktopJsonBuilder(
|
||||||
NewPipe.getPreferredLocalization(), NewPipe.getPreferredContentCountry())
|
NewPipe.getPreferredLocalization(), NewPipe.getPreferredContentCountry())
|
||||||
.value("videoId", VIDEO_ID)
|
.value("videoId", VIDEO_ID)
|
||||||
.value("playlistId", "RD" + VIDEO_ID)
|
.value("playlistId", "RD" + VIDEO_ID)
|
||||||
.value("params", "OAE%3D")
|
.value("params", "OAE%3D")
|
||||||
.done())
|
.done())
|
||||||
.getBytes(UTF_8);
|
.getBytes(StandardCharsets.UTF_8);
|
||||||
|
|
||||||
final InfoItemsPage<StreamInfoItem> streams = extractor.getPage(new Page(
|
final InfoItemsPage<StreamInfoItem> streams = extractor.getPage(new Page(
|
||||||
YOUTUBEI_V1_URL + "next?key=" + getKey(), null, null, dummyCookie, body));
|
YOUTUBEI_V1_URL + "next?key=" + getKey(), null, null, dummyCookie, body));
|
||||||
|
@ -97,7 +93,7 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getContinuations() throws Exception {
|
void getContinuations() throws Exception {
|
||||||
InfoItemsPage<StreamInfoItem> streams = extractor.getInitialPage();
|
InfoItemsPage<StreamInfoItem> streams = extractor.getInitialPage();
|
||||||
final Set<String> urls = new HashSet<>();
|
final Set<String> urls = new HashSet<>();
|
||||||
|
|
||||||
|
@ -119,53 +115,54 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getStreamCount() {
|
void getStreamCount() {
|
||||||
assertEquals(ListExtractor.ITEM_COUNT_INFINITE, extractor.getStreamCount());
|
assertEquals(ListExtractor.ITEM_COUNT_INFINITE, extractor.getStreamCount());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore("Test broken, video was removed by the uploader")
|
|
||||||
public static class MixWithIndex {
|
public static class MixWithIndex {
|
||||||
|
|
||||||
private static final int INDEX = 13;
|
private static final String VIDEO_ID = "QMVCAPd5cwBcg";
|
||||||
private static final String VIDEO_ID_NUMBER_13 = "qHtzO49SDmk";
|
private static final String VIDEO_TITLE = "Mix – ";
|
||||||
|
private static final int INDEX = 4;
|
||||||
|
private static final String VIDEO_ID_NUMBER_4 = "lWA2pjMjpBs";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
NewPipe.init(new DownloaderFactory().getDownloader(RESOURCE_PATH + "mixWithIndex"));
|
NewPipe.init(new DownloaderFactory().getDownloader(RESOURCE_PATH + "mixWithIndex"));
|
||||||
dummyCookie.put(YoutubeMixPlaylistExtractor.COOKIE_NAME, "whatever");
|
dummyCookie.put(YoutubeMixPlaylistExtractor.COOKIE_NAME, "whatever");
|
||||||
extractor = (YoutubeMixPlaylistExtractor) YouTube
|
extractor = (YoutubeMixPlaylistExtractor) YouTube
|
||||||
.getPlaylistExtractor("https://www.youtube.com/watch?v=" + VIDEO_ID_NUMBER_13
|
.getPlaylistExtractor("https://www.youtube.com/watch?v=" + VIDEO_ID_NUMBER_4
|
||||||
+ "&list=RD" + VIDEO_ID + "&index=" + INDEX);
|
+ "&list=RD" + VIDEO_ID + "&index=" + INDEX);
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getName() throws Exception {
|
void getName() throws Exception {
|
||||||
final String name = extractor.getName();
|
final String name = extractor.getName();
|
||||||
assertThat(name, startsWith("Mix"));
|
ExtractorAsserts.assertContains("Mix", name);
|
||||||
assertThat(name, containsString(VIDEO_TITLE));
|
ExtractorAsserts.assertContains(VIDEO_TITLE, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getThumbnailUrl() throws Exception {
|
void getThumbnailUrl() throws Exception {
|
||||||
final String thumbnailUrl = extractor.getThumbnailUrl();
|
final String thumbnailUrl = extractor.getThumbnailUrl();
|
||||||
assertIsSecureUrl(thumbnailUrl);
|
assertIsSecureUrl(thumbnailUrl);
|
||||||
assertThat(thumbnailUrl, containsString("yt"));
|
ExtractorAsserts.assertContains("yt", thumbnailUrl);
|
||||||
assertThat(thumbnailUrl, containsString(VIDEO_ID));
|
ExtractorAsserts.assertContains(VIDEO_ID, thumbnailUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getInitialPage() throws Exception {
|
void getInitialPage() throws Exception {
|
||||||
final InfoItemsPage<StreamInfoItem> streams = extractor.getInitialPage();
|
final InfoItemsPage<StreamInfoItem> streams = extractor.getInitialPage();
|
||||||
assertFalse(streams.getItems().isEmpty());
|
assertFalse(streams.getItems().isEmpty());
|
||||||
assertTrue(streams.hasNextPage());
|
assertTrue(streams.hasNextPage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getPage() throws Exception {
|
void getPage() throws Exception {
|
||||||
final byte[] body = JsonWriter.string(prepareDesktopJsonBuilder(
|
final byte[] body = JsonWriter.string(prepareDesktopJsonBuilder(
|
||||||
NewPipe.getPreferredLocalization(), NewPipe.getPreferredContentCountry())
|
NewPipe.getPreferredLocalization(), NewPipe.getPreferredContentCountry())
|
||||||
.value("videoId", VIDEO_ID)
|
.value("videoId", VIDEO_ID)
|
||||||
|
@ -173,7 +170,7 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
.value("playlistIndex", INDEX)
|
.value("playlistIndex", INDEX)
|
||||||
.value("params", "OAE%3D")
|
.value("params", "OAE%3D")
|
||||||
.done())
|
.done())
|
||||||
.getBytes(UTF_8);
|
.getBytes(StandardCharsets.UTF_8);
|
||||||
|
|
||||||
final InfoItemsPage<StreamInfoItem> streams = extractor.getPage(new Page(
|
final InfoItemsPage<StreamInfoItem> streams = extractor.getPage(new Page(
|
||||||
YOUTUBEI_V1_URL + "next?key=" + getKey(), null, null, dummyCookie, body));
|
YOUTUBEI_V1_URL + "next?key=" + getKey(), null, null, dummyCookie, body));
|
||||||
|
@ -182,7 +179,7 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getContinuations() throws Exception {
|
void getContinuations() throws Exception {
|
||||||
InfoItemsPage<StreamInfoItem> streams = extractor.getInitialPage();
|
InfoItemsPage<StreamInfoItem> streams = extractor.getInitialPage();
|
||||||
final Set<String> urls = new HashSet<>();
|
final Set<String> urls = new HashSet<>();
|
||||||
|
|
||||||
|
@ -203,15 +200,15 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getStreamCount() {
|
void getStreamCount() {
|
||||||
assertEquals(ListExtractor.ITEM_COUNT_INFINITE, extractor.getStreamCount());
|
assertEquals(ListExtractor.ITEM_COUNT_INFINITE, extractor.getStreamCount());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore("Test broken")
|
|
||||||
public static class MyMix {
|
public static class MyMix {
|
||||||
|
private static final String VIDEO_ID = "_AzeUSL9lZc";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -224,39 +221,39 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getServiceId() {
|
void getServiceId() {
|
||||||
assertEquals(YouTube.getServiceId(), extractor.getServiceId());
|
assertEquals(YouTube.getServiceId(), extractor.getServiceId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getName() throws Exception {
|
void getName() throws Exception {
|
||||||
final String name = extractor.getName();
|
final String name = extractor.getName();
|
||||||
assertEquals("My Mix", name);
|
assertEquals("My Mix", name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getThumbnailUrl() throws Exception {
|
void getThumbnailUrl() throws Exception {
|
||||||
final String thumbnailUrl = extractor.getThumbnailUrl();
|
final String thumbnailUrl = extractor.getThumbnailUrl();
|
||||||
assertIsSecureUrl(thumbnailUrl);
|
assertIsSecureUrl(thumbnailUrl);
|
||||||
assertThat(thumbnailUrl, startsWith("https://i.ytimg.com/vi/_AzeUSL9lZc"));
|
assertTrue(thumbnailUrl.startsWith("https://i.ytimg.com/vi/_AzeUSL9lZc"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getInitialPage() throws Exception {
|
void getInitialPage() throws Exception {
|
||||||
final InfoItemsPage<StreamInfoItem> streams = extractor.getInitialPage();
|
final InfoItemsPage<StreamInfoItem> streams = extractor.getInitialPage();
|
||||||
assertFalse(streams.getItems().isEmpty());
|
assertFalse(streams.getItems().isEmpty());
|
||||||
assertTrue(streams.hasNextPage());
|
assertTrue(streams.hasNextPage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getPage() throws Exception {
|
void getPage() throws Exception {
|
||||||
final byte[] body = JsonWriter.string(prepareDesktopJsonBuilder(
|
final byte[] body = JsonWriter.string(prepareDesktopJsonBuilder(
|
||||||
NewPipe.getPreferredLocalization(), NewPipe.getPreferredContentCountry())
|
NewPipe.getPreferredLocalization(), NewPipe.getPreferredContentCountry())
|
||||||
.value("videoId", VIDEO_ID)
|
.value("videoId", VIDEO_ID)
|
||||||
.value("playlistId", "RDMM" + VIDEO_ID)
|
.value("playlistId", "RDMM" + VIDEO_ID)
|
||||||
.value("params", "OAE%3D")
|
.value("params", "OAE%3D")
|
||||||
.done())
|
.done())
|
||||||
.getBytes(UTF_8);
|
.getBytes(StandardCharsets.UTF_8);
|
||||||
|
|
||||||
final InfoItemsPage<StreamInfoItem> streams = extractor.getPage(new Page(
|
final InfoItemsPage<StreamInfoItem> streams = extractor.getPage(new Page(
|
||||||
YOUTUBEI_V1_URL + "next?key=" + getKey(), null, null, dummyCookie, body));
|
YOUTUBEI_V1_URL + "next?key=" + getKey(), null, null, dummyCookie, body));
|
||||||
|
@ -265,7 +262,7 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getContinuations() throws Exception {
|
void getContinuations() throws Exception {
|
||||||
InfoItemsPage<StreamInfoItem> streams = extractor.getInitialPage();
|
InfoItemsPage<StreamInfoItem> streams = extractor.getInitialPage();
|
||||||
final Set<String> urls = new HashSet<>();
|
final Set<String> urls = new HashSet<>();
|
||||||
|
|
||||||
|
@ -287,14 +284,16 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getStreamCount() {
|
void getStreamCount() {
|
||||||
assertEquals(ListExtractor.ITEM_COUNT_INFINITE, extractor.getStreamCount());
|
assertEquals(ListExtractor.ITEM_COUNT_INFINITE, extractor.getStreamCount());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Invalid {
|
public static class Invalid {
|
||||||
|
|
||||||
@BeforeClass
|
private static final String VIDEO_ID = "QMVCAPd5cwBcg";
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
public static void setUp() throws IOException {
|
public static void setUp() throws IOException {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -302,23 +301,23 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
dummyCookie.put(YoutubeMixPlaylistExtractor.COOKIE_NAME, "whatever");
|
dummyCookie.put(YoutubeMixPlaylistExtractor.COOKIE_NAME, "whatever");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore
|
@Test
|
||||||
@Test(expected = IllegalArgumentException.class)
|
void getPageEmptyUrl() throws Exception {
|
||||||
public void getPageEmptyUrl() throws Exception {
|
|
||||||
extractor = (YoutubeMixPlaylistExtractor) YouTube
|
extractor = (YoutubeMixPlaylistExtractor) YouTube
|
||||||
.getPlaylistExtractor("https://www.youtube.com/watch?v=" + VIDEO_ID
|
.getPlaylistExtractor("https://www.youtube.com/watch?v=" + VIDEO_ID
|
||||||
+ "&list=RD" + VIDEO_ID);
|
+ "&list=RD" + VIDEO_ID);
|
||||||
|
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
extractor.getPage(new Page(""));
|
assertThrows(IllegalArgumentException.class, () -> extractor.getPage(new Page("")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = ExtractionException.class)
|
@Test
|
||||||
public void invalidVideoId() throws Exception {
|
void invalidVideoId() throws Exception {
|
||||||
extractor = (YoutubeMixPlaylistExtractor) YouTube
|
extractor = (YoutubeMixPlaylistExtractor) YouTube
|
||||||
.getPlaylistExtractor("https://www.youtube.com/watch?v=" + "abcde"
|
.getPlaylistExtractor("https://www.youtube.com/watch?v=" + "abcde"
|
||||||
+ "&list=RD" + "abcde");
|
+ "&list=RD" + "abcde");
|
||||||
extractor.fetchPage();
|
|
||||||
extractor.getName();
|
assertThrows(ExtractionException.class, extractor::fetchPage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,7 +328,7 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
private static final String CHANNEL_TITLE = "Linus Tech Tips";
|
private static final String CHANNEL_TITLE = "Linus Tech Tips";
|
||||||
|
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -342,35 +341,35 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getName() throws Exception {
|
void getName() throws Exception {
|
||||||
final String name = extractor.getName();
|
final String name = extractor.getName();
|
||||||
assertThat(name, startsWith("Mix"));
|
ExtractorAsserts.assertContains("Mix", name);
|
||||||
assertThat(name, containsString(CHANNEL_TITLE));
|
ExtractorAsserts.assertContains(CHANNEL_TITLE, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getThumbnailUrl() throws Exception {
|
void getThumbnailUrl() throws Exception {
|
||||||
final String thumbnailUrl = extractor.getThumbnailUrl();
|
final String thumbnailUrl = extractor.getThumbnailUrl();
|
||||||
assertIsSecureUrl(thumbnailUrl);
|
assertIsSecureUrl(thumbnailUrl);
|
||||||
assertThat(thumbnailUrl, containsString("yt"));
|
ExtractorAsserts.assertContains("yt", thumbnailUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getInitialPage() throws Exception {
|
void getInitialPage() throws Exception {
|
||||||
final InfoItemsPage<StreamInfoItem> streams = extractor.getInitialPage();
|
final InfoItemsPage<StreamInfoItem> streams = extractor.getInitialPage();
|
||||||
assertFalse(streams.getItems().isEmpty());
|
assertFalse(streams.getItems().isEmpty());
|
||||||
assertTrue(streams.hasNextPage());
|
assertTrue(streams.hasNextPage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getPage() throws Exception {
|
void getPage() throws Exception {
|
||||||
final byte[] body = JsonWriter.string(prepareDesktopJsonBuilder(
|
final byte[] body = JsonWriter.string(prepareDesktopJsonBuilder(
|
||||||
NewPipe.getPreferredLocalization(), NewPipe.getPreferredContentCountry())
|
NewPipe.getPreferredLocalization(), NewPipe.getPreferredContentCountry())
|
||||||
.value("videoId", VIDEO_ID_OF_CHANNEL)
|
.value("videoId", VIDEO_ID_OF_CHANNEL)
|
||||||
.value("playlistId", "RDCM" + CHANNEL_ID)
|
.value("playlistId", "RDCM" + CHANNEL_ID)
|
||||||
.value("params", "OAE%3D")
|
.value("params", "OAE%3D")
|
||||||
.done())
|
.done())
|
||||||
.getBytes(UTF_8);
|
.getBytes(StandardCharsets.UTF_8);
|
||||||
|
|
||||||
final InfoItemsPage<StreamInfoItem> streams = extractor.getPage(new Page(
|
final InfoItemsPage<StreamInfoItem> streams = extractor.getPage(new Page(
|
||||||
YOUTUBEI_V1_URL + "next?key=" + getKey(), null, null, dummyCookie, body));
|
YOUTUBEI_V1_URL + "next?key=" + getKey(), null, null, dummyCookie, body));
|
||||||
|
@ -379,7 +378,7 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getStreamCount() {
|
void getStreamCount() {
|
||||||
assertEquals(ListExtractor.ITEM_COUNT_INFINITE, extractor.getStreamCount());
|
assertEquals(ListExtractor.ITEM_COUNT_INFINITE, extractor.getStreamCount());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
||||||
|
@ -10,14 +10,14 @@ import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
public class YoutubeParsingHelperTest {
|
public class YoutubeParsingHelperTest {
|
||||||
|
|
||||||
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/";
|
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws IOException {
|
public static void setUp() throws IOException {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -26,14 +26,14 @@ public class YoutubeParsingHelperTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAreHardcodedClientVersionAndKeyValid() throws IOException, ExtractionException {
|
public void testAreHardcodedClientVersionAndKeyValid() throws IOException, ExtractionException {
|
||||||
assertTrue("Hardcoded client version and key are not valid anymore",
|
assertTrue(YoutubeParsingHelper.areHardcodedClientVersionAndKeyValid(),
|
||||||
YoutubeParsingHelper.areHardcodedClientVersionAndKeyValid());
|
"Hardcoded client version and key are not valid anymore");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAreHardcodedYoutubeMusicKeysValid() throws IOException, ExtractionException {
|
public void testAreHardcodedYoutubeMusicKeysValid() throws IOException, ExtractionException {
|
||||||
assertTrue("Hardcoded YouTube Music keys are not valid anymore",
|
assertTrue(YoutubeParsingHelper.isHardcodedYoutubeMusicKeyValid(),
|
||||||
YoutubeParsingHelper.isHardcodedYoutubeMusicKeyValid());
|
"Hardcoded YouTube Music keys are not valid anymore");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Ignore;
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
|
import org.schabi.newpipe.extractor.ExtractorAsserts;
|
||||||
import org.schabi.newpipe.extractor.ListExtractor;
|
import org.schabi.newpipe.extractor.ListExtractor;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ContentNotAvailableException;
|
import org.schabi.newpipe.extractor.exceptions.ContentNotAvailableException;
|
||||||
|
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.playlist.PlaylistExtractor;
|
import org.schabi.newpipe.extractor.playlist.PlaylistExtractor;
|
||||||
import org.schabi.newpipe.extractor.services.BasePlaylistExtractorTest;
|
import org.schabi.newpipe.extractor.services.BasePlaylistExtractorTest;
|
||||||
|
@ -16,9 +18,10 @@ import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import static junit.framework.TestCase.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.assertNoMoreItems;
|
import static org.schabi.newpipe.extractor.services.DefaultTests.assertNoMoreItems;
|
||||||
|
@ -35,32 +38,32 @@ public class YoutubePlaylistExtractorTest {
|
||||||
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/playlist/";
|
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/playlist/";
|
||||||
|
|
||||||
public static class NotAvailable {
|
public static class NotAvailable {
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws IOException {
|
public static void setUp() throws IOException {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
NewPipe.init(new DownloaderFactory().getDownloader(RESOURCE_PATH + "notAvailable"));
|
NewPipe.init(new DownloaderFactory().getDownloader(RESOURCE_PATH + "notAvailable"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = ContentNotAvailableException.class)
|
@Test
|
||||||
public void nonExistentFetch() throws Exception {
|
void nonExistentFetch() throws Exception {
|
||||||
final PlaylistExtractor extractor =
|
final PlaylistExtractor extractor =
|
||||||
YouTube.getPlaylistExtractor("https://www.youtube.com/playlist?list=PL11111111111111111111111111111111");
|
YouTube.getPlaylistExtractor("https://www.youtube.com/playlist?list=PL11111111111111111111111111111111");
|
||||||
extractor.fetchPage();
|
assertThrows(ContentNotAvailableException.class, extractor::fetchPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = ContentNotAvailableException.class)
|
@Test
|
||||||
public void invalidId() throws Exception {
|
void invalidId() throws Exception {
|
||||||
final PlaylistExtractor extractor =
|
final PlaylistExtractor extractor =
|
||||||
YouTube.getPlaylistExtractor("https://www.youtube.com/playlist?list=INVALID_ID");
|
YouTube.getPlaylistExtractor("https://www.youtube.com/playlist?list=INVALID_ID");
|
||||||
extractor.fetchPage();
|
assertThrows(ContentNotAvailableException.class, extractor::fetchPage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class TimelessPopHits implements BasePlaylistExtractorTest {
|
public static class TimelessPopHits implements BasePlaylistExtractorTest {
|
||||||
private static YoutubePlaylistExtractor extractor;
|
private static YoutubePlaylistExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -81,8 +84,7 @@ public class YoutubePlaylistExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testName() throws Exception {
|
public void testName() throws Exception {
|
||||||
String name = extractor.getName();
|
assertTrue(extractor.getName().startsWith("Pop Music Playlist"));
|
||||||
assertTrue(name, name.startsWith("Pop Music Playlist"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -122,15 +124,15 @@ public class YoutubePlaylistExtractorTest {
|
||||||
public void testThumbnailUrl() throws Exception {
|
public void testThumbnailUrl() throws Exception {
|
||||||
final String thumbnailUrl = extractor.getThumbnailUrl();
|
final String thumbnailUrl = extractor.getThumbnailUrl();
|
||||||
assertIsSecureUrl(thumbnailUrl);
|
assertIsSecureUrl(thumbnailUrl);
|
||||||
assertTrue(thumbnailUrl, thumbnailUrl.contains("yt"));
|
ExtractorAsserts.assertContains("yt", thumbnailUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore
|
@Disabled
|
||||||
@Test
|
@Test
|
||||||
public void testBannerUrl() {
|
public void testBannerUrl() {
|
||||||
final String bannerUrl = extractor.getBannerUrl();
|
final String bannerUrl = extractor.getBannerUrl();
|
||||||
assertIsSecureUrl(bannerUrl);
|
assertIsSecureUrl(bannerUrl);
|
||||||
assertTrue(bannerUrl, bannerUrl.contains("yt"));
|
ExtractorAsserts.assertContains("yt", bannerUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -141,18 +143,18 @@ public class YoutubePlaylistExtractorTest {
|
||||||
@Test
|
@Test
|
||||||
public void testUploaderName() throws Exception {
|
public void testUploaderName() throws Exception {
|
||||||
final String uploaderName = extractor.getUploaderName();
|
final String uploaderName = extractor.getUploaderName();
|
||||||
assertTrue(uploaderName, uploaderName.contains("Just Hits"));
|
ExtractorAsserts.assertContains("Just Hits", uploaderName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUploaderAvatarUrl() throws Exception {
|
public void testUploaderAvatarUrl() throws Exception {
|
||||||
final String uploaderAvatarUrl = extractor.getUploaderAvatarUrl();
|
final String uploaderAvatarUrl = extractor.getUploaderAvatarUrl();
|
||||||
assertTrue(uploaderAvatarUrl, uploaderAvatarUrl.contains("yt"));
|
ExtractorAsserts.assertContains("yt", uploaderAvatarUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStreamCount() throws Exception {
|
public void testStreamCount() throws Exception {
|
||||||
assertTrue("Error in the streams count", extractor.getStreamCount() > 100);
|
ExtractorAsserts.assertGreater(100, extractor.getStreamCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -164,7 +166,7 @@ public class YoutubePlaylistExtractorTest {
|
||||||
public static class HugePlaylist implements BasePlaylistExtractorTest {
|
public static class HugePlaylist implements BasePlaylistExtractorTest {
|
||||||
private static YoutubePlaylistExtractor extractor;
|
private static YoutubePlaylistExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -242,15 +244,15 @@ public class YoutubePlaylistExtractorTest {
|
||||||
public void testThumbnailUrl() throws Exception {
|
public void testThumbnailUrl() throws Exception {
|
||||||
final String thumbnailUrl = extractor.getThumbnailUrl();
|
final String thumbnailUrl = extractor.getThumbnailUrl();
|
||||||
assertIsSecureUrl(thumbnailUrl);
|
assertIsSecureUrl(thumbnailUrl);
|
||||||
assertTrue(thumbnailUrl, thumbnailUrl.contains("yt"));
|
ExtractorAsserts.assertContains("yt", thumbnailUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore
|
@Disabled
|
||||||
@Test
|
@Test
|
||||||
public void testBannerUrl() {
|
public void testBannerUrl() {
|
||||||
final String bannerUrl = extractor.getBannerUrl();
|
final String bannerUrl = extractor.getBannerUrl();
|
||||||
assertIsSecureUrl(bannerUrl);
|
assertIsSecureUrl(bannerUrl);
|
||||||
assertTrue(bannerUrl, bannerUrl.contains("yt"));
|
ExtractorAsserts.assertContains("yt", bannerUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -266,12 +268,12 @@ public class YoutubePlaylistExtractorTest {
|
||||||
@Test
|
@Test
|
||||||
public void testUploaderAvatarUrl() throws Exception {
|
public void testUploaderAvatarUrl() throws Exception {
|
||||||
final String uploaderAvatarUrl = extractor.getUploaderAvatarUrl();
|
final String uploaderAvatarUrl = extractor.getUploaderAvatarUrl();
|
||||||
assertTrue(uploaderAvatarUrl, uploaderAvatarUrl.contains("yt"));
|
ExtractorAsserts.assertContains("yt", uploaderAvatarUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStreamCount() throws Exception {
|
public void testStreamCount() throws Exception {
|
||||||
assertTrue("Error in the streams count", extractor.getStreamCount() > 100);
|
ExtractorAsserts.assertGreater(100, extractor.getStreamCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -283,7 +285,7 @@ public class YoutubePlaylistExtractorTest {
|
||||||
public static class LearningPlaylist implements BasePlaylistExtractorTest {
|
public static class LearningPlaylist implements BasePlaylistExtractorTest {
|
||||||
private static YoutubePlaylistExtractor extractor;
|
private static YoutubePlaylistExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -304,8 +306,7 @@ public class YoutubePlaylistExtractorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testName() throws Exception {
|
public void testName() throws Exception {
|
||||||
String name = extractor.getName();
|
assertTrue(extractor.getName().startsWith("Anatomy & Physiology"));
|
||||||
assertTrue(name, name.startsWith("Anatomy & Physiology"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -332,7 +333,7 @@ public class YoutubePlaylistExtractorTest {
|
||||||
defaultTestRelatedItems(extractor);
|
defaultTestRelatedItems(extractor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore
|
@Disabled
|
||||||
@Test
|
@Test
|
||||||
public void testMoreRelatedItems() throws Exception {
|
public void testMoreRelatedItems() throws Exception {
|
||||||
defaultTestMoreItems(extractor);
|
defaultTestMoreItems(extractor);
|
||||||
|
@ -346,15 +347,15 @@ public class YoutubePlaylistExtractorTest {
|
||||||
public void testThumbnailUrl() throws Exception {
|
public void testThumbnailUrl() throws Exception {
|
||||||
final String thumbnailUrl = extractor.getThumbnailUrl();
|
final String thumbnailUrl = extractor.getThumbnailUrl();
|
||||||
assertIsSecureUrl(thumbnailUrl);
|
assertIsSecureUrl(thumbnailUrl);
|
||||||
assertTrue(thumbnailUrl, thumbnailUrl.contains("yt"));
|
ExtractorAsserts.assertContains("yt", thumbnailUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore
|
@Disabled
|
||||||
@Test
|
@Test
|
||||||
public void testBannerUrl() {
|
public void testBannerUrl() {
|
||||||
final String bannerUrl = extractor.getBannerUrl();
|
final String bannerUrl = extractor.getBannerUrl();
|
||||||
assertIsSecureUrl(bannerUrl);
|
assertIsSecureUrl(bannerUrl);
|
||||||
assertTrue(bannerUrl, bannerUrl.contains("yt"));
|
ExtractorAsserts.assertContains("yt", bannerUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -365,18 +366,18 @@ public class YoutubePlaylistExtractorTest {
|
||||||
@Test
|
@Test
|
||||||
public void testUploaderName() throws Exception {
|
public void testUploaderName() throws Exception {
|
||||||
final String uploaderName = extractor.getUploaderName();
|
final String uploaderName = extractor.getUploaderName();
|
||||||
assertTrue(uploaderName, uploaderName.contains("CrashCourse"));
|
ExtractorAsserts.assertContains("CrashCourse", uploaderName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUploaderAvatarUrl() throws Exception {
|
public void testUploaderAvatarUrl() throws Exception {
|
||||||
final String uploaderAvatarUrl = extractor.getUploaderAvatarUrl();
|
final String uploaderAvatarUrl = extractor.getUploaderAvatarUrl();
|
||||||
assertTrue(uploaderAvatarUrl, uploaderAvatarUrl.contains("yt"));
|
ExtractorAsserts.assertContains("yt", uploaderAvatarUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStreamCount() throws Exception {
|
public void testStreamCount() throws Exception {
|
||||||
assertTrue("Error in the streams count", extractor.getStreamCount() > 40);
|
ExtractorAsserts.assertGreater(40, extractor.getStreamCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -387,7 +388,7 @@ public class YoutubePlaylistExtractorTest {
|
||||||
|
|
||||||
public static class ContinuationsTests {
|
public static class ContinuationsTests {
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws IOException {
|
public static void setUp() throws IOException {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -413,7 +414,7 @@ public class YoutubePlaylistExtractorTest {
|
||||||
|
|
||||||
final ListExtractor.InfoItemsPage<StreamInfoItem> page = defaultTestMoreItems(
|
final ListExtractor.InfoItemsPage<StreamInfoItem> page = defaultTestMoreItems(
|
||||||
extractor);
|
extractor);
|
||||||
assertFalse("More items available when it shouldn't", page.hasNextPage());
|
assertFalse(page.hasNextPage(), "More items available when it shouldn't");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubePlaylistLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubePlaylistLinkHandlerFactory;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for {@link YoutubePlaylistLinkHandlerFactory}
|
* Test for {@link YoutubePlaylistLinkHandlerFactory}
|
||||||
|
@ -15,15 +15,15 @@ import static org.junit.Assert.*;
|
||||||
public class YoutubePlaylistLinkHandlerFactoryTest {
|
public class YoutubePlaylistLinkHandlerFactoryTest {
|
||||||
private static YoutubePlaylistLinkHandlerFactory linkHandler;
|
private static YoutubePlaylistLinkHandlerFactory linkHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
linkHandler = YoutubePlaylistLinkHandlerFactory.getInstance();
|
linkHandler = YoutubePlaylistLinkHandlerFactory.getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = IllegalArgumentException.class)
|
@Test
|
||||||
public void getIdWithNullAsUrl() throws ParsingException {
|
public void getIdWithNullAsUrl() {
|
||||||
linkHandler.fromId(null);
|
assertThrows(IllegalArgumentException.class, () -> linkHandler.fromId(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -20,8 +20,8 @@ package org.schabi.newpipe.extractor.services.youtube;
|
||||||
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
|
@ -30,9 +30,9 @@ import org.schabi.newpipe.extractor.playlist.PlaylistExtractor;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeMixPlaylistExtractor;
|
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeMixPlaylistExtractor;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubePlaylistExtractor;
|
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubePlaylistExtractor;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -42,7 +42,7 @@ public class YoutubeServiceTest {
|
||||||
static StreamingService service;
|
static StreamingService service;
|
||||||
static KioskList kioskList;
|
static KioskList kioskList;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
service = YouTube;
|
service = YouTube;
|
||||||
|
@ -50,25 +50,25 @@ public class YoutubeServiceTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetKioskAvailableKiosks() throws Exception {
|
void testGetKioskAvailableKiosks() {
|
||||||
assertFalse("No kiosk got returned", kioskList.getAvailableKiosks().isEmpty());
|
assertFalse(kioskList.getAvailableKiosks().isEmpty(), "No kiosk got returned");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetDefaultKiosk() throws Exception {
|
void testGetDefaultKiosk() throws Exception {
|
||||||
assertEquals(kioskList.getDefaultKioskExtractor(null).getId(), "Trending");
|
assertEquals(kioskList.getDefaultKioskExtractor(null).getId(), "Trending");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getPlayListExtractorIsNormalPlaylist() throws Exception {
|
void getPlayListExtractorIsNormalPlaylist() throws Exception {
|
||||||
final PlaylistExtractor extractor = service.getPlaylistExtractor(
|
final PlaylistExtractor extractor = service.getPlaylistExtractor(
|
||||||
"https://www.youtube.com/watch?v=JhqtYOnNrTs&list=PL-EkZZikQIQVqk9rBWzEo5b-2GeozElS");
|
"https://www.youtube.com/watch?v=JhqtYOnNrTs&list=PL-EkZZikQIQVqk9rBWzEo5b-2GeozElS");
|
||||||
assertTrue(extractor instanceof YoutubePlaylistExtractor);
|
assertTrue(extractor instanceof YoutubePlaylistExtractor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getPlaylistExtractorIsMix() throws Exception {
|
void getPlaylistExtractorIsMix() throws Exception {
|
||||||
final String videoId = "_AzeUSL9lZc";
|
final String videoId = "_AzeUSL9lZc";
|
||||||
PlaylistExtractor extractor = YouTube.getPlaylistExtractor(
|
PlaylistExtractor extractor = YouTube.getPlaylistExtractor(
|
||||||
"https://www.youtube.com/watch?v=" + videoId + "&list=RD" + videoId);
|
"https://www.youtube.com/watch?v=" + videoId + "&list=RD" + videoId);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.FoundAdException;
|
import org.schabi.newpipe.extractor.exceptions.FoundAdException;
|
||||||
|
@ -11,7 +11,7 @@ import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeStreamLi
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for {@link YoutubeStreamLinkHandlerFactory}
|
* Test for {@link YoutubeStreamLinkHandlerFactory}
|
||||||
|
@ -20,20 +20,20 @@ public class YoutubeStreamLinkHandlerFactoryTest {
|
||||||
private static String AD_URL = "https://googleads.g.doubleclick.net/aclk?sa=l&ai=C-2IPgeVTWPf4GcOStgfOnIOADf78n61GvKmmobYDrgIQASDj-5MDKAJg9ZXOgeAEoAGgy_T-A8gBAakC2gkpmquIsT6oAwGqBJMBT9BgD5kVgbN0dX602bFFaDw9vsxq-We-S8VkrXVBi6W_e7brZ36GCz1WO3EPEeklYuJjXLUowwCOKsd-8xr1UlS_tusuFJv9iX35xoBHKTRvs8-0aDbfEIm6in37QDfFuZjqgEMB8-tg0Jn_Pf1RU5OzbuU40B4Gy25NUTnOxhDKthOhKBUSZEksCEerUV8GMu10iAXCxquwApIFBggDEAEYAaAGGsgGlIjthrUDgAfItIsBqAemvhvYBwHSCAUIgGEQAbgT6AE&num=1&sig=AOD64_1DybDd4qAm5O7o9UAbTNRdqXXHFQ&ctype=21&video_id=dMO_IXYPZew&client=ca-pub-6219811747049371&adurl=http://www.youtube.com/watch%3Fv%3DdMO_IXYPZew";
|
private static String AD_URL = "https://googleads.g.doubleclick.net/aclk?sa=l&ai=C-2IPgeVTWPf4GcOStgfOnIOADf78n61GvKmmobYDrgIQASDj-5MDKAJg9ZXOgeAEoAGgy_T-A8gBAakC2gkpmquIsT6oAwGqBJMBT9BgD5kVgbN0dX602bFFaDw9vsxq-We-S8VkrXVBi6W_e7brZ36GCz1WO3EPEeklYuJjXLUowwCOKsd-8xr1UlS_tusuFJv9iX35xoBHKTRvs8-0aDbfEIm6in37QDfFuZjqgEMB8-tg0Jn_Pf1RU5OzbuU40B4Gy25NUTnOxhDKthOhKBUSZEksCEerUV8GMu10iAXCxquwApIFBggDEAEYAaAGGsgGlIjthrUDgAfItIsBqAemvhvYBwHSCAUIgGEQAbgT6AE&num=1&sig=AOD64_1DybDd4qAm5O7o9UAbTNRdqXXHFQ&ctype=21&video_id=dMO_IXYPZew&client=ca-pub-6219811747049371&adurl=http://www.youtube.com/watch%3Fv%3DdMO_IXYPZew";
|
||||||
private static YoutubeStreamLinkHandlerFactory linkHandler;
|
private static YoutubeStreamLinkHandlerFactory linkHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() {
|
public static void setUp() {
|
||||||
linkHandler = YoutubeStreamLinkHandlerFactory.getInstance();
|
linkHandler = YoutubeStreamLinkHandlerFactory.getInstance();
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = IllegalArgumentException.class)
|
@Test
|
||||||
public void getIdWithNullAsUrl() throws ParsingException {
|
public void getIdWithNullAsUrl() {
|
||||||
linkHandler.fromId(null);
|
assertThrows(IllegalArgumentException.class, () -> linkHandler.fromId(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = FoundAdException.class)
|
@Test
|
||||||
public void getIdForAd() throws ParsingException {
|
public void getIdForAd() throws ParsingException {
|
||||||
linkHandler.fromUrl(AD_URL).getId();
|
assertThrows(FoundAdException.class, () -> linkHandler.fromUrl(AD_URL));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.ServiceList;
|
import org.schabi.newpipe.extractor.ServiceList;
|
||||||
|
@ -16,7 +16,7 @@ import java.io.FileInputStream;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.schabi.newpipe.FileUtils.resolveTestResource;
|
import static org.schabi.newpipe.FileUtils.resolveTestResource;
|
||||||
import static org.schabi.newpipe.extractor.utils.Utils.UTF_8;
|
import static org.schabi.newpipe.extractor.utils.Utils.UTF_8;
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ public class YoutubeSubscriptionExtractorTest {
|
||||||
private static YoutubeSubscriptionExtractor subscriptionExtractor;
|
private static YoutubeSubscriptionExtractor subscriptionExtractor;
|
||||||
private static LinkHandlerFactory urlHandler;
|
private static LinkHandlerFactory urlHandler;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setupClass() {
|
public static void setupClass() {
|
||||||
//Doesn't make network requests
|
//Doesn't make network requests
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
@ -107,7 +107,7 @@ public class YoutubeSubscriptionExtractorTest {
|
||||||
if (!correctType) {
|
if (!correctType) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
assertTrue(e.getClass().getSimpleName() + " is not InvalidSourceException", correctType);
|
assertTrue(correctType, e.getClass().getSimpleName() + " is not InvalidSourceException");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,8 +20,8 @@ package org.schabi.newpipe.extractor.services.youtube;
|
||||||
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
||||||
|
@ -31,7 +31,7 @@ import org.schabi.newpipe.extractor.suggestion.SuggestionExtractor;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -43,7 +43,7 @@ public class YoutubeSuggestionExtractorTest {
|
||||||
|
|
||||||
private static SuggestionExtractor suggestionExtractor;
|
private static SuggestionExtractor suggestionExtractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.mozilla.javascript.EvaluatorException;
|
import org.mozilla.javascript.EvaluatorException;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
|
@ -9,14 +9,13 @@ import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import static org.hamcrest.CoreMatchers.equalTo;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
||||||
import static org.junit.Assert.assertNotEquals;
|
import static org.junit.jupiter.api.Assertions.fail;
|
||||||
import static org.junit.Assert.fail;
|
|
||||||
|
|
||||||
public class YoutubeThrottlingDecrypterTest {
|
public class YoutubeThrottlingDecrypterTest {
|
||||||
|
|
||||||
@Before
|
@BeforeEach
|
||||||
public void setup() throws IOException {
|
public void setup() throws IOException {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
}
|
}
|
||||||
|
@ -49,9 +48,9 @@ public class YoutubeThrottlingDecrypterTest {
|
||||||
@Test
|
@Test
|
||||||
public void testDecode__noNParam__success() throws ParsingException {
|
public void testDecode__noNParam__success() throws ParsingException {
|
||||||
final String noNParamUrl = "https://r5---sn-4g5ednsz.googlevideo.com/videoplayback?expire=1626553257&ei=SefyYPmIFoKT1wLtqbjgCQ&ip=127.0.0.1&id=o-AIT5xGifsaEAdEOAb5vd06J9VNtm-KHHolnaZRGPjHZi&itag=140&source=youtube&requiressl=yes&mh=xO&mm=31%2C29&mn=sn-4g5ednsz%2Csn-4g5e6nsr&ms=au%2Crdu&mv=m&mvi=5&pl=24&initcwndbps=1322500&vprv=1&mime=audio%2Fmp4&ns=cA2SS5atEe0mH8tMwGTO4RIG&gir=yes&clen=3009275&dur=185.898&lmt=1626356984653961&mt=1626531173&fvip=5&keepalive=yes&fexp=24001373%2C24007246&beids=23886212&c=WEB&txp=6411222&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRgIhAPueRlTutSlzPafxrqBmgZz5m7-Zfbw3QweDp3j4XO9SAiEA5tF7_ZCJFKmS-D6I1jlUURjpjoiTbsYyKuarV4u6E8Y%3D&sig=AOq0QJ8wRQIgRD_4WwkPeTEKGVSQqPsznMJGqq4nVJ8o1ChGBCgi4Y0CIQCZT3tI40YLKBWJCh2Q7AlvuUIpN0ficzdSElLeQpJdrw==";
|
final String noNParamUrl = "https://r5---sn-4g5ednsz.googlevideo.com/videoplayback?expire=1626553257&ei=SefyYPmIFoKT1wLtqbjgCQ&ip=127.0.0.1&id=o-AIT5xGifsaEAdEOAb5vd06J9VNtm-KHHolnaZRGPjHZi&itag=140&source=youtube&requiressl=yes&mh=xO&mm=31%2C29&mn=sn-4g5ednsz%2Csn-4g5e6nsr&ms=au%2Crdu&mv=m&mvi=5&pl=24&initcwndbps=1322500&vprv=1&mime=audio%2Fmp4&ns=cA2SS5atEe0mH8tMwGTO4RIG&gir=yes&clen=3009275&dur=185.898&lmt=1626356984653961&mt=1626531173&fvip=5&keepalive=yes&fexp=24001373%2C24007246&beids=23886212&c=WEB&txp=6411222&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRgIhAPueRlTutSlzPafxrqBmgZz5m7-Zfbw3QweDp3j4XO9SAiEA5tF7_ZCJFKmS-D6I1jlUURjpjoiTbsYyKuarV4u6E8Y%3D&sig=AOq0QJ8wRQIgRD_4WwkPeTEKGVSQqPsznMJGqq4nVJ8o1ChGBCgi4Y0CIQCZT3tI40YLKBWJCh2Q7AlvuUIpN0ficzdSElLeQpJdrw==";
|
||||||
String decrypted = new YoutubeThrottlingDecrypter().apply(noNParamUrl);
|
final String decrypted = new YoutubeThrottlingDecrypter().apply(noNParamUrl);
|
||||||
|
|
||||||
assertThat(decrypted, equalTo(noNParamUrl));
|
assertEquals(noNParamUrl, decrypted);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -20,8 +20,8 @@ package org.schabi.newpipe.extractor.services.youtube;
|
||||||
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
|
@ -30,8 +30,8 @@ import org.schabi.newpipe.extractor.linkhandler.LinkHandlerFactory;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -43,7 +43,7 @@ public class YoutubeTrendingKioskInfoTest {
|
||||||
|
|
||||||
static KioskInfo kioskInfo;
|
static KioskInfo kioskInfo;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp()
|
public static void setUp()
|
||||||
throws Exception {
|
throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
|
|
|
@ -20,17 +20,17 @@ package org.schabi.newpipe.extractor.services.youtube;
|
||||||
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.linkhandler.LinkHandlerFactory;
|
import org.schabi.newpipe.extractor.linkhandler.LinkHandlerFactory;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeTrendingLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeTrendingLinkHandlerFactory;
|
||||||
|
|
||||||
import static junit.framework.TestCase.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -39,7 +39,7 @@ import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
public class YoutubeTrendingLinkHandlerFactoryTest {
|
public class YoutubeTrendingLinkHandlerFactoryTest {
|
||||||
private static LinkHandlerFactory LinkHandlerFactory;
|
private static LinkHandlerFactory LinkHandlerFactory;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
LinkHandlerFactory = YouTube.getKioskList().getListLinkHandlerFactoryByType("Trending");
|
LinkHandlerFactory = YouTube.getKioskList().getListLinkHandlerFactoryByType("Trending");
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube.search;
|
package org.schabi.newpipe.extractor.services.youtube.search;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Ignore;
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.InfoItem;
|
import org.schabi.newpipe.extractor.InfoItem;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
|
@ -23,7 +23,7 @@ public class YoutubeMusicSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "mocromaniac";
|
private static final String QUERY = "mocromaniac";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_SONGS), "");
|
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_SONGS), "");
|
||||||
|
@ -45,7 +45,7 @@ public class YoutubeMusicSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "fresku";
|
private static final String QUERY = "fresku";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_VIDEOS), "");
|
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_VIDEOS), "");
|
||||||
|
@ -67,7 +67,7 @@ public class YoutubeMusicSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "johnny sellah";
|
private static final String QUERY = "johnny sellah";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_ALBUMS), "");
|
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_ALBUMS), "");
|
||||||
|
@ -89,7 +89,7 @@ public class YoutubeMusicSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "louivos";
|
private static final String QUERY = "louivos";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_PLAYLISTS), "");
|
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_PLAYLISTS), "");
|
||||||
|
@ -107,12 +107,12 @@ public class YoutubeMusicSearchExtractorTest {
|
||||||
@Override public InfoItem.InfoType expectedInfoItemType() { return InfoItem.InfoType.PLAYLIST; }
|
@Override public InfoItem.InfoType expectedInfoItemType() { return InfoItem.InfoType.PLAYLIST; }
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore
|
@Disabled
|
||||||
public static class MusicArtists extends DefaultSearchExtractorTest {
|
public static class MusicArtists extends DefaultSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "kevin";
|
private static final String QUERY = "kevin";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_ARTISTS), "");
|
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_ARTISTS), "");
|
||||||
|
@ -135,7 +135,7 @@ public class YoutubeMusicSearchExtractorTest {
|
||||||
private static final String QUERY = "megaman x3";
|
private static final String QUERY = "megaman x3";
|
||||||
private static final boolean CORRECTED = true;
|
private static final boolean CORRECTED = true;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_SONGS), "");
|
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_SONGS), "");
|
||||||
|
@ -159,7 +159,7 @@ public class YoutubeMusicSearchExtractorTest {
|
||||||
private static final String QUERY = "nocopyrigh sounds";
|
private static final String QUERY = "nocopyrigh sounds";
|
||||||
private static final String EXPECTED_SUGGESTION = "nocopyrightsounds";
|
private static final String EXPECTED_SUGGESTION = "nocopyrightsounds";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_SONGS), "");
|
extractor = YouTube.getSearchExtractor(QUERY, singletonList(YoutubeSearchQueryHandlerFactory.MUSIC_SONGS), "");
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube.search;
|
package org.schabi.newpipe.extractor.services.youtube.search;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.extractor.*;
|
import org.schabi.newpipe.extractor.*;
|
||||||
import org.schabi.newpipe.extractor.channel.ChannelInfoItem;
|
import org.schabi.newpipe.extractor.channel.ChannelInfoItem;
|
||||||
|
@ -22,8 +22,8 @@ import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
import static java.util.Collections.singletonList;
|
import static java.util.Collections.singletonList;
|
||||||
import static junit.framework.TestCase.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertEmptyErrors;
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertEmptyErrors;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.assertNoDuplicatedItems;
|
import static org.schabi.newpipe.extractor.services.DefaultTests.assertNoDuplicatedItems;
|
||||||
|
@ -37,7 +37,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "test";
|
private static final String QUERY = "test";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -60,7 +60,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "test";
|
private static final String QUERY = "test";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -85,7 +85,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "test";
|
private static final String QUERY = "test";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -110,7 +110,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "test";
|
private static final String QUERY = "test";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -136,7 +136,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
private static final String QUERY = "newpip";
|
private static final String QUERY = "newpip";
|
||||||
private static final String EXPECTED_SUGGESTION = "newpipe";
|
private static final String EXPECTED_SUGGESTION = "newpipe";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -161,7 +161,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
private static final String QUERY = "pewdeipie";
|
private static final String QUERY = "pewdeipie";
|
||||||
private static final String EXPECTED_SUGGESTION = "pewdiepie";
|
private static final String EXPECTED_SUGGESTION = "pewdiepie";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -186,7 +186,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "UCO6AK";
|
private static final String QUERY = "UCO6AK";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -217,7 +217,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
assertEquals(0, nextEmptyPage.getItems().size());
|
assertEquals(0, nextEmptyPage.getItems().size());
|
||||||
assertEmptyErrors("Empty page has errors", nextEmptyPage.getErrors());
|
assertEmptyErrors("Empty page has errors", nextEmptyPage.getErrors());
|
||||||
|
|
||||||
assertFalse("More items available when it shouldn't", nextEmptyPage.hasNextPage());
|
assertFalse(nextEmptyPage.hasNextPage(), "More items available when it shouldn't");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -241,8 +241,8 @@ public class YoutubeSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "Covid";
|
private static final String QUERY = "Covid";
|
||||||
|
|
||||||
@Test
|
@BeforeAll
|
||||||
public void clarificationTest() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
NewPipe.init(new DownloaderFactory().getDownloader(RESOURCE_PATH + "metaInfo"));
|
NewPipe.init(new DownloaderFactory().getDownloader(RESOURCE_PATH + "metaInfo"));
|
||||||
|
@ -278,7 +278,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "bbc";
|
private static final String QUERY = "bbc";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -316,7 +316,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "sidemen";
|
private static final String QUERY = "sidemen";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -348,7 +348,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
private static SearchExtractor extractor;
|
private static SearchExtractor extractor;
|
||||||
private static final String QUERY = "44wLAzydRFU";
|
private static final String QUERY = "44wLAzydRFU";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube.search;
|
package org.schabi.newpipe.extractor.services.youtube.search;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static java.util.Arrays.asList;
|
import static java.util.Arrays.asList;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.CHANNELS;
|
import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.CHANNELS;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.MUSIC_SONGS;
|
import static org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory.MUSIC_SONGS;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube.stream;
|
package org.schabi.newpipe.extractor.services.youtube.stream;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
|
@ -10,7 +10,6 @@ import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExt
|
||||||
import org.schabi.newpipe.extractor.stream.StreamExtractor;
|
import org.schabi.newpipe.extractor.stream.StreamExtractor;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamType;
|
import org.schabi.newpipe.extractor.stream.StreamType;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
@ -26,7 +25,7 @@ public class YoutubeStreamExtractorAgeRestrictedTest extends DefaultStreamExtrac
|
||||||
private static final String URL = YoutubeStreamExtractorDefaultTest.BASE_URL + ID + "&t=" + TIMESTAMP;
|
private static final String URL = YoutubeStreamExtractorDefaultTest.BASE_URL + ID + "&t=" + TIMESTAMP;
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -55,7 +54,7 @@ public class YoutubeStreamExtractorAgeRestrictedTest extends DefaultStreamExtrac
|
||||||
@Nullable @Override public String expectedUploadDate() { return "2018-03-11 00:00:00.000"; }
|
@Nullable @Override public String expectedUploadDate() { return "2018-03-11 00:00:00.000"; }
|
||||||
@Nullable @Override public String expectedTextualUploadDate() { return "2018-03-11"; }
|
@Nullable @Override public String expectedTextualUploadDate() { return "2018-03-11"; }
|
||||||
@Override public long expectedLikeCountAtLeast() { return 3_700; }
|
@Override public long expectedLikeCountAtLeast() { return 3_700; }
|
||||||
@Override public long expectedDislikeCountAtLeast() { return 30; }
|
@Override public long expectedDislikeCountAtLeast() { return -1; }
|
||||||
@Override public boolean expectedHasRelatedItems() { return false; } // no related videos (!)
|
@Override public boolean expectedHasRelatedItems() { return false; } // no related videos (!)
|
||||||
@Override public int expectedAgeLimit() { return 18; }
|
@Override public int expectedAgeLimit() { return 18; }
|
||||||
@Override public boolean expectedHasSubtitles() { return false; }
|
@Override public boolean expectedHasSubtitles() { return false; }
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube.stream;
|
package org.schabi.newpipe.extractor.services.youtube.stream;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
|
@ -29,7 +29,7 @@ public class YoutubeStreamExtractorControversialTest extends DefaultStreamExtrac
|
||||||
private static final String URL = YoutubeStreamExtractorDefaultTest.BASE_URL + ID;
|
private static final String URL = YoutubeStreamExtractorDefaultTest.BASE_URL + ID;
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -58,7 +58,7 @@ public class YoutubeStreamExtractorControversialTest extends DefaultStreamExtrac
|
||||||
@Nullable @Override public String expectedUploadDate() { return "2010-09-09 00:00:00.000"; }
|
@Nullable @Override public String expectedUploadDate() { return "2010-09-09 00:00:00.000"; }
|
||||||
@Nullable @Override public String expectedTextualUploadDate() { return "2010-09-09"; }
|
@Nullable @Override public String expectedTextualUploadDate() { return "2010-09-09"; }
|
||||||
@Override public long expectedLikeCountAtLeast() { return 13300; }
|
@Override public long expectedLikeCountAtLeast() { return 13300; }
|
||||||
@Override public long expectedDislikeCountAtLeast() { return 2600; }
|
@Override public long expectedDislikeCountAtLeast() { return -1; }
|
||||||
@Override public List<String> expectedTags() { return Arrays.asList("Books", "Burning", "Jones", "Koran", "Qur'an", "Terry", "the amazing atheist"); }
|
@Override public List<String> expectedTags() { return Arrays.asList("Books", "Burning", "Jones", "Koran", "Qur'an", "Terry", "the amazing atheist"); }
|
||||||
@Override public String expectedCategory() { return "Entertainment"; }
|
@Override public String expectedCategory() { return "Entertainment"; }
|
||||||
@Override public String expectedLicence() { return "YouTube licence"; }
|
@Override public String expectedLicence() { return "YouTube licence"; }
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube.stream;
|
package org.schabi.newpipe.extractor.services.youtube.stream;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Ignore;
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
import org.schabi.newpipe.downloader.DownloaderTestImpl;
|
||||||
import org.schabi.newpipe.extractor.MetaInfo;
|
import org.schabi.newpipe.extractor.MetaInfo;
|
||||||
|
@ -29,8 +29,9 @@ import java.util.Random;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
import static org.schabi.newpipe.extractor.utils.Utils.EMPTY_STRING;
|
import static org.schabi.newpipe.extractor.utils.Utils.EMPTY_STRING;
|
||||||
|
|
||||||
|
@ -59,7 +60,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
public static final String YOUTUBE_LICENCE = "YouTube licence";
|
public static final String YOUTUBE_LICENCE = "YouTube licence";
|
||||||
|
|
||||||
public static class NotAvailable {
|
public static class NotAvailable {
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws IOException {
|
public static void setUp() throws IOException {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -67,56 +68,56 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
NewPipe.init(new DownloaderFactory().getDownloader(RESOURCE_PATH + "notAvailable"));
|
NewPipe.init(new DownloaderFactory().getDownloader(RESOURCE_PATH + "notAvailable"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = GeographicRestrictionException.class)
|
@Test
|
||||||
public void geoRestrictedContent() throws Exception {
|
void geoRestrictedContent() throws Exception {
|
||||||
final StreamExtractor extractor =
|
final StreamExtractor extractor =
|
||||||
YouTube.getStreamExtractor(BASE_URL + "_PL2HJKxnOM");
|
YouTube.getStreamExtractor(BASE_URL + "_PL2HJKxnOM");
|
||||||
extractor.fetchPage();
|
assertThrows(GeographicRestrictionException.class, extractor::fetchPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = ContentNotAvailableException.class)
|
@Test
|
||||||
public void nonExistentFetch() throws Exception {
|
void nonExistentFetch() throws Exception {
|
||||||
final StreamExtractor extractor =
|
final StreamExtractor extractor =
|
||||||
YouTube.getStreamExtractor(BASE_URL + "don-t-exist");
|
YouTube.getStreamExtractor(BASE_URL + "don-t-exist");
|
||||||
extractor.fetchPage();
|
assertThrows(ContentNotAvailableException.class, extractor::fetchPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = ParsingException.class)
|
@Test
|
||||||
public void invalidId() throws Exception {
|
void invalidId() throws Exception {
|
||||||
final StreamExtractor extractor =
|
final StreamExtractor extractor =
|
||||||
YouTube.getStreamExtractor(BASE_URL + "INVALID_ID_INVALID_ID");
|
YouTube.getStreamExtractor(BASE_URL + "INVALID_ID_INVALID_ID");
|
||||||
extractor.fetchPage();
|
assertThrows(ParsingException.class, extractor::fetchPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = PaidContentException.class)
|
@Test
|
||||||
public void paidContent() throws Exception {
|
void paidContent() throws Exception {
|
||||||
final StreamExtractor extractor =
|
final StreamExtractor extractor =
|
||||||
YouTube.getStreamExtractor(BASE_URL + "ayI2iBwGdxw");
|
YouTube.getStreamExtractor(BASE_URL + "ayI2iBwGdxw");
|
||||||
extractor.fetchPage();
|
assertThrows(PaidContentException.class, extractor::fetchPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = PrivateContentException.class)
|
@Test
|
||||||
public void privateContent() throws Exception {
|
void privateContent() throws Exception {
|
||||||
final StreamExtractor extractor =
|
final StreamExtractor extractor =
|
||||||
YouTube.getStreamExtractor(BASE_URL + "8VajtrESJzA");
|
YouTube.getStreamExtractor(BASE_URL + "8VajtrESJzA");
|
||||||
extractor.fetchPage();
|
assertThrows(PrivateContentException.class, extractor::fetchPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = YoutubeMusicPremiumContentException.class)
|
@Test
|
||||||
public void youtubeMusicPremiumContent() throws Exception {
|
void youtubeMusicPremiumContent() throws Exception {
|
||||||
final StreamExtractor extractor =
|
final StreamExtractor extractor =
|
||||||
YouTube.getStreamExtractor(BASE_URL + "sMJ8bRN2dak");
|
YouTube.getStreamExtractor(BASE_URL + "sMJ8bRN2dak");
|
||||||
extractor.fetchPage();
|
assertThrows(YoutubeMusicPremiumContentException.class, extractor::fetchPage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class DescriptionTestPewdiepie extends DefaultStreamExtractorTest {
|
public static class DescriptionTestPewdiepie extends DefaultStreamExtractorTest {
|
||||||
private static final String ID = "7PIMiDcwNvc";
|
private static final String ID = "7PIMiDcwNvc";
|
||||||
private static final int TIMESTAMP = 17;
|
private static final int TIMESTAMP = 7483;
|
||||||
private static final String URL = BASE_URL + ID + "&t=" + TIMESTAMP;
|
private static final String URL = BASE_URL + ID + "&t=" + TIMESTAMP + "s";
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -148,7 +149,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
@Nullable @Override public String expectedUploadDate() { return "2019-08-24 00:00:00.000"; }
|
@Nullable @Override public String expectedUploadDate() { return "2019-08-24 00:00:00.000"; }
|
||||||
@Nullable @Override public String expectedTextualUploadDate() { return "2019-08-24"; }
|
@Nullable @Override public String expectedTextualUploadDate() { return "2019-08-24"; }
|
||||||
@Override public long expectedLikeCountAtLeast() { return 5212900; }
|
@Override public long expectedLikeCountAtLeast() { return 5212900; }
|
||||||
@Override public long expectedDislikeCountAtLeast() { return 30600; }
|
@Override public long expectedDislikeCountAtLeast() { return -1; }
|
||||||
@Override public int expectedStreamSegmentsCount() { return 0; }
|
@Override public int expectedStreamSegmentsCount() { return 0; }
|
||||||
@Override public String expectedLicence() { return YOUTUBE_LICENCE; }
|
@Override public String expectedLicence() { return YOUTUBE_LICENCE; }
|
||||||
@Override public String expectedCategory() { return "Entertainment"; }
|
@Override public String expectedCategory() { return "Entertainment"; }
|
||||||
|
@ -160,7 +161,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
private static final String URL = BASE_URL + ID;
|
private static final String URL = BASE_URL + ID;
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -192,7 +193,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
@Nullable @Override public String expectedUploadDate() { return "2018-06-19 00:00:00.000"; }
|
@Nullable @Override public String expectedUploadDate() { return "2018-06-19 00:00:00.000"; }
|
||||||
@Nullable @Override public String expectedTextualUploadDate() { return "2018-06-19"; }
|
@Nullable @Override public String expectedTextualUploadDate() { return "2018-06-19"; }
|
||||||
@Override public long expectedLikeCountAtLeast() { return 340100; }
|
@Override public long expectedLikeCountAtLeast() { return 340100; }
|
||||||
@Override public long expectedDislikeCountAtLeast() { return 18700; }
|
@Override public long expectedDislikeCountAtLeast() { return -1; }
|
||||||
@Override public boolean expectedUploaderVerified() { return true; }
|
@Override public boolean expectedUploaderVerified() { return true; }
|
||||||
@Override public String expectedLicence() { return YOUTUBE_LICENCE; }
|
@Override public String expectedLicence() { return YOUTUBE_LICENCE; }
|
||||||
@Override public String expectedCategory() { return "Science & Technology"; }
|
@Override public String expectedCategory() { return "Science & Technology"; }
|
||||||
|
@ -207,14 +208,14 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
// @formatter:on
|
// @formatter:on
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore("Test broken, video was made private")
|
@Disabled("Test broken, video was made private")
|
||||||
public static class RatingsDisabledTest extends DefaultStreamExtractorTest {
|
public static class RatingsDisabledTest extends DefaultStreamExtractorTest {
|
||||||
private static final String ID = "HRKu0cvrr_o";
|
private static final String ID = "HRKu0cvrr_o";
|
||||||
private static final int TIMESTAMP = 17;
|
private static final int TIMESTAMP = 17;
|
||||||
private static final String URL = BASE_URL + ID + "&t=" + TIMESTAMP;
|
private static final String URL = BASE_URL + ID + "&t=" + TIMESTAMP;
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -252,7 +253,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
private static final String URL = BASE_URL + ID;
|
private static final String URL = BASE_URL + ID;
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -282,7 +283,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
@Nullable @Override public String expectedUploadDate() { return "2021-03-17 00:00:00.000"; }
|
@Nullable @Override public String expectedUploadDate() { return "2021-03-17 00:00:00.000"; }
|
||||||
@Nullable @Override public String expectedTextualUploadDate() { return "2021-03-17"; }
|
@Nullable @Override public String expectedTextualUploadDate() { return "2021-03-17"; }
|
||||||
@Override public long expectedLikeCountAtLeast() { return 2300; }
|
@Override public long expectedLikeCountAtLeast() { return 2300; }
|
||||||
@Override public long expectedDislikeCountAtLeast() { return 450; }
|
@Override public long expectedDislikeCountAtLeast() { return -1; }
|
||||||
@Override public boolean expectedHasSubtitles() { return false; }
|
@Override public boolean expectedHasSubtitles() { return false; }
|
||||||
@Override public int expectedStreamSegmentsCount() { return 13; }
|
@Override public int expectedStreamSegmentsCount() { return 13; }
|
||||||
@Override public String expectedLicence() { return YOUTUBE_LICENCE; }
|
@Override public String expectedLicence() { return YOUTUBE_LICENCE; }
|
||||||
|
@ -314,7 +315,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
private static final String URL = BASE_URL + ID;
|
private static final String URL = BASE_URL + ID;
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -342,7 +343,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
@Nullable @Override public String expectedUploadDate() { return "2020-11-18 00:00:00.000"; }
|
@Nullable @Override public String expectedUploadDate() { return "2020-11-18 00:00:00.000"; }
|
||||||
@Nullable @Override public String expectedTextualUploadDate() { return "2020-11-18"; }
|
@Nullable @Override public String expectedTextualUploadDate() { return "2020-11-18"; }
|
||||||
@Override public long expectedLikeCountAtLeast() { return 48500; }
|
@Override public long expectedLikeCountAtLeast() { return 48500; }
|
||||||
@Override public long expectedDislikeCountAtLeast() { return 20000; }
|
@Override public long expectedDislikeCountAtLeast() { return -1; }
|
||||||
@Override public boolean expectedHasSubtitles() { return true; }
|
@Override public boolean expectedHasSubtitles() { return true; }
|
||||||
@Override public int expectedStreamSegmentsCount() { return 7; }
|
@Override public int expectedStreamSegmentsCount() { return 7; }
|
||||||
@Override public String expectedLicence() { return YOUTUBE_LICENCE; }
|
@Override public String expectedLicence() { return YOUTUBE_LICENCE; }
|
||||||
|
@ -368,12 +369,12 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Test
|
@Test
|
||||||
@Ignore("encoding problem")
|
@Disabled("encoding problem")
|
||||||
public void testName() {}
|
public void testName() {}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Test
|
@Test
|
||||||
@Ignore("encoding problem")
|
@Disabled("encoding problem")
|
||||||
public void testTags() {}
|
public void testTags() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -383,7 +384,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
private static final String URL = BASE_URL + ID;
|
private static final String URL = BASE_URL + ID;
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -411,7 +412,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
@Nullable @Override public String expectedUploadDate() { return "2019-06-12 00:00:00.000"; }
|
@Nullable @Override public String expectedUploadDate() { return "2019-06-12 00:00:00.000"; }
|
||||||
@Nullable @Override public String expectedTextualUploadDate() { return "2019-06-12"; }
|
@Nullable @Override public String expectedTextualUploadDate() { return "2019-06-12"; }
|
||||||
@Override public long expectedLikeCountAtLeast() { return 70000; }
|
@Override public long expectedLikeCountAtLeast() { return 70000; }
|
||||||
@Override public long expectedDislikeCountAtLeast() { return 500; }
|
@Override public long expectedDislikeCountAtLeast() { return -1; }
|
||||||
@Override public List<MetaInfo> expectedMetaInfo() throws MalformedURLException {
|
@Override public List<MetaInfo> expectedMetaInfo() throws MalformedURLException {
|
||||||
return Collections.singletonList(new MetaInfo(
|
return Collections.singletonList(new MetaInfo(
|
||||||
EMPTY_STRING,
|
EMPTY_STRING,
|
||||||
|
@ -437,7 +438,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
public static class UnlistedTest {
|
public static class UnlistedTest {
|
||||||
private static YoutubeStreamExtractor extractor;
|
private static YoutubeStreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeStreamExtractor.resetDeobfuscationCode();
|
YoutubeStreamExtractor.resetDeobfuscationCode();
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
@ -457,7 +458,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
private static final String URL = BASE_URL + ID;
|
private static final String URL = BASE_URL + ID;
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeStreamExtractor.resetDeobfuscationCode();
|
YoutubeStreamExtractor.resetDeobfuscationCode();
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube.stream;
|
package org.schabi.newpipe.extractor.services.youtube.stream;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
|
@ -26,7 +26,7 @@ public class YoutubeStreamExtractorLivestreamTest extends DefaultStreamExtractor
|
||||||
private static final String URL = YoutubeStreamExtractorDefaultTest.BASE_URL + ID + "&t=" + TIMESTAMP;
|
private static final String URL = YoutubeStreamExtractorDefaultTest.BASE_URL + ID + "&t=" + TIMESTAMP;
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -63,7 +63,7 @@ public class YoutubeStreamExtractorLivestreamTest extends DefaultStreamExtractor
|
||||||
@Nullable @Override public String expectedUploadDate() { return "2020-02-22 00:00:00.000"; }
|
@Nullable @Override public String expectedUploadDate() { return "2020-02-22 00:00:00.000"; }
|
||||||
@Nullable @Override public String expectedTextualUploadDate() { return "2020-02-22"; }
|
@Nullable @Override public String expectedTextualUploadDate() { return "2020-02-22"; }
|
||||||
@Override public long expectedLikeCountAtLeast() { return 825000; }
|
@Override public long expectedLikeCountAtLeast() { return 825000; }
|
||||||
@Override public long expectedDislikeCountAtLeast() { return 15600; }
|
@Override public long expectedDislikeCountAtLeast() { return -1; }
|
||||||
@Override public boolean expectedHasSubtitles() { return false; }
|
@Override public boolean expectedHasSubtitles() { return false; }
|
||||||
@Nullable @Override public String expectedDashMpdUrlContains() { return "https://manifest.googlevideo.com/api/manifest/dash/"; }
|
@Nullable @Override public String expectedDashMpdUrlContains() { return "https://manifest.googlevideo.com/api/manifest/dash/"; }
|
||||||
@Override public boolean expectedHasFrames() { return false; }
|
@Override public boolean expectedHasFrames() { return false; }
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube.stream;
|
package org.schabi.newpipe.extractor.services.youtube.stream;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
|
@ -25,7 +25,7 @@ public class YoutubeStreamExtractorUnlistedTest extends DefaultStreamExtractorTe
|
||||||
static final String URL = YoutubeStreamExtractorDefaultTest.BASE_URL + ID;
|
static final String URL = YoutubeStreamExtractorDefaultTest.BASE_URL + ID;
|
||||||
private static StreamExtractor extractor;
|
private static StreamExtractor extractor;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
@ -54,7 +54,7 @@ public class YoutubeStreamExtractorUnlistedTest extends DefaultStreamExtractorTe
|
||||||
@Nullable @Override public String expectedUploadDate() { return "2017-09-22 00:00:00.000"; }
|
@Nullable @Override public String expectedUploadDate() { return "2017-09-22 00:00:00.000"; }
|
||||||
@Nullable @Override public String expectedTextualUploadDate() { return "2017-09-22"; }
|
@Nullable @Override public String expectedTextualUploadDate() { return "2017-09-22"; }
|
||||||
@Override public long expectedLikeCountAtLeast() { return 110; }
|
@Override public long expectedLikeCountAtLeast() { return 110; }
|
||||||
@Override public long expectedDislikeCountAtLeast() { return 0; }
|
@Override public long expectedDislikeCountAtLeast() { return -1; }
|
||||||
@Override public StreamExtractor.Privacy expectedPrivacy() { return UNLISTED; }
|
@Override public StreamExtractor.Privacy expectedPrivacy() { return UNLISTED; }
|
||||||
@Override public String expectedLicence() { return "YouTube licence"; }
|
@Override public String expectedLicence() { return "YouTube licence"; }
|
||||||
@Override public String expectedCategory() { return "Gaming"; }
|
@Override public String expectedCategory() { return "Gaming"; }
|
||||||
|
|
|
@ -5,12 +5,12 @@ import com.grack.nanojson.JsonArray;
|
||||||
import com.grack.nanojson.JsonObject;
|
import com.grack.nanojson.JsonObject;
|
||||||
import com.grack.nanojson.JsonParser;
|
import com.grack.nanojson.JsonParser;
|
||||||
import com.grack.nanojson.JsonParserException;
|
import com.grack.nanojson.JsonParserException;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
|
|
||||||
public class JsonUtilsTest {
|
public class JsonUtilsTest {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
package org.schabi.newpipe.extractor.utils;
|
package org.schabi.newpipe.extractor.utils;
|
||||||
|
|
||||||
import org.junit.Ignore;
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.schabi.newpipe.extractor.utils.StringUtils.matchToClosingParenthesis;
|
import static org.schabi.newpipe.extractor.utils.StringUtils.matchToClosingParenthesis;
|
||||||
|
|
||||||
public class StringUtilsTest {
|
public class StringUtilsTest {
|
||||||
|
@ -48,7 +48,7 @@ public class StringUtilsTest {
|
||||||
assertEquals(expected, substring);
|
assertEquals(expected, substring);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore("Functionality currently not needed")
|
@Disabled("Functionality currently not needed")
|
||||||
@Test
|
@Test
|
||||||
public void lessClosing__success() {
|
public void lessClosing__success() {
|
||||||
String expected = "{{{}}}";
|
String expected = "{{{}}}";
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
package org.schabi.newpipe.extractor.utils;
|
package org.schabi.newpipe.extractor.utils;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
public class UtilsTest {
|
public class UtilsTest {
|
||||||
@Test
|
@Test
|
||||||
|
|
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue