1111import org .schabi .newpipe .extractor .utils .ExtractorHelper ;
1212
1313import java .io .IOException ;
14+ import java .util .ArrayList ;
15+ import java .util .List ;
1416
1517public class PlaylistInfo extends ListInfo <StreamInfoItem > {
1618
@@ -45,6 +47,9 @@ public static PlaylistInfo getInfo(PlaylistExtractor extractor) throws Extractio
4547 extractor .getServiceId (),
4648 extractor .getLinkHandler (),
4749 extractor .getName ());
50+ // collect uploader extraction failures until we are sure this is not
51+ // just a playlist without an uploader
52+ List <Throwable > uploaderParsingErrors = new ArrayList <Throwable >(3 );
4853
4954 try {
5055 info .setOriginalUrl (extractor .getOriginalUrl ());
@@ -64,23 +69,31 @@ public static PlaylistInfo getInfo(PlaylistExtractor extractor) throws Extractio
6469 try {
6570 info .setUploaderUrl (extractor .getUploaderUrl ());
6671 } catch (Exception e ) {
67- info .addError (e );
72+ info .setUploaderUrl ("" );
73+ uploaderParsingErrors .add (e );
6874 }
6975 try {
7076 info .setUploaderName (extractor .getUploaderName ());
7177 } catch (Exception e ) {
72- info .addError (e );
78+ info .setUploaderName ("" );
79+ uploaderParsingErrors .add (e );
7380 }
7481 try {
7582 info .setUploaderAvatarUrl (extractor .getUploaderAvatarUrl ());
7683 } catch (Exception e ) {
77- info .addError (e );
84+ info .setUploaderAvatarUrl ("" );
85+ uploaderParsingErrors .add (e );
7886 }
7987 try {
8088 info .setBannerUrl (extractor .getBannerUrl ());
8189 } catch (Exception e ) {
8290 info .addError (e );
8391 }
92+ // do not fail if everything but the uploader infos could be collected
93+ if (uploaderParsingErrors .size () > 0 &&
94+ (!info .getErrors ().isEmpty () || uploaderParsingErrors .size () < 3 )) {
95+ info .addAllErrors (uploaderParsingErrors );
96+ }
8497
8598 final InfoItemsPage <StreamInfoItem > itemsPage = ExtractorHelper .getItemsPageOrLogError (info , extractor );
8699 info .setRelatedItems (itemsPage .getItems ());
0 commit comments