@@ -428,6 +428,69 @@ public static void setUp() throws Exception {
428428 // @formatter:on
429429 }
430430
431+ public static class NoVisualMetadataVideoTest extends DefaultStreamExtractorTest {
432+ // Video without visual metadata on YouTube clients (video title, upload date, channel name,
433+ // comments, ...)
434+ private static final String ID = "An8vtD1FDqs" ;
435+ private static final String URL = BASE_URL + ID ;
436+ private static StreamExtractor extractor ;
437+
438+ @ BeforeAll
439+ public static void setUp () throws Exception {
440+ YoutubeTestsUtils .ensureStateless ();
441+ NewPipe .init (DownloaderFactory .getDownloader (RESOURCE_PATH + "noVisualMetadata" ));
442+ extractor = YouTube .getStreamExtractor (URL );
443+ extractor .fetchPage ();
444+ }
445+
446+ @ Override public StreamType expectedStreamType () { return StreamType .VIDEO_STREAM ; }
447+ @ Override public String expectedUploaderName () { return "Makani" ; }
448+ @ Override public String expectedUploaderUrl () { return "https://www.youtube.com/channel/UC-iMZJ8NppwT2fLwzFWJKOQ" ; }
449+ @ Override public List <String > expectedDescriptionContains () { return Arrays .asList ("Makani" , "prototype" , "rotors" ); }
450+ @ Override public long expectedLength () { return 175 ; }
451+ @ Override public long expectedViewCountAtLeast () { return 88_000 ; }
452+ @ Nullable @ Override public String expectedUploadDate () { return "2017-05-16 00:00:00.000" ; }
453+ @ Nullable @ Override public String expectedTextualUploadDate () { return "2017-05-16" ; }
454+ @ Override public long expectedLikeCountAtLeast () { return -1 ; }
455+ @ Override public long expectedDislikeCountAtLeast () { return -1 ; }
456+ @ Override public StreamExtractor extractor () { return extractor ; }
457+ @ Override public StreamingService expectedService () { return YouTube ; }
458+ @ Override public String expectedName () { return "Makani’s first commercial-scale energy kite" ; }
459+ @ Override public String expectedId () { return "An8vtD1FDqs" ; }
460+ @ Override public String expectedUrlContains () { return BASE_URL + ID ; }
461+ @ Override public String expectedOriginalUrlContains () { return URL ; }
462+ @ Override public String expectedCategory () { return "Science & Technology" ; }
463+ @ Override public String expectedLicence () { return YOUTUBE_LICENCE ; }
464+ @ Override public List <String > expectedTags () {
465+ return Arrays .asList ("Makani" , "Moonshot" , "Moonshot Factory" , "Prototyping" ,
466+ "california" , "california wind" , "clean" , "clean energy" , "climate change" ,
467+ "climate crisis" , "energy" , "energy kite" , "google" , "google x" , "green" ,
468+ "green energy" , "kite" , "kite power" , "kite power solutions" ,
469+ "kite power systems" , "makani power" , "power" , "renewable" , "renewable energy" ,
470+ "renewable energy engineering" , "renewable energy projects" ,
471+ "renewable energy sources" , "renewables" , "solutions" , "tech" , "technology" ,
472+ "turbine" , "wind" , "wind energy" , "wind power" , "wind turbine" , "windmill" );
473+ }
474+
475+ @ Test
476+ @ Override
477+ public void testSubscriberCount () {
478+ assertThrows (ParsingException .class , () -> extractor .getUploaderSubscriberCount ());
479+ }
480+
481+ @ Test
482+ @ Override
483+ public void testLikeCount () {
484+ assertThrows (ParsingException .class , () -> extractor .getLikeCount ());
485+ }
486+
487+ @ Test
488+ @ Override
489+ public void testUploaderAvatarUrl () {
490+ assertThrows (ParsingException .class , () -> extractor .getUploaderAvatarUrl ());
491+ }
492+ }
493+
431494 public static class UnlistedTest {
432495 private static YoutubeStreamExtractor extractor ;
433496
0 commit comments