diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/playlist/PlaylistInfo.java b/extractor/src/main/java/org/schabi/newpipe/extractor/playlist/PlaylistInfo.java index 87fcb947f..f8c307380 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/playlist/PlaylistInfo.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/playlist/PlaylistInfo.java @@ -11,6 +11,8 @@ import org.schabi.newpipe.extractor.stream.StreamInfoItem; import org.schabi.newpipe.extractor.utils.ExtractorHelper; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; public class PlaylistInfo extends ListInfo { @@ -45,6 +47,9 @@ public class PlaylistInfo extends ListInfo { extractor.getServiceId(), extractor.getLinkHandler(), extractor.getName()); + // collect uploader extraction failures until we are sure this is not + // just a playlist without an uploader + List uploaderParsingErrors = new ArrayList(3); try { info.setOriginalUrl(extractor.getOriginalUrl()); @@ -64,23 +69,31 @@ public class PlaylistInfo extends ListInfo { try { info.setUploaderUrl(extractor.getUploaderUrl()); } catch (Exception e) { - info.addError(e); + info.setUploaderUrl(""); + uploaderParsingErrors.add(e); } try { info.setUploaderName(extractor.getUploaderName()); } catch (Exception e) { - info.addError(e); + info.setUploaderName(""); + uploaderParsingErrors.add(e); } try { info.setUploaderAvatarUrl(extractor.getUploaderAvatarUrl()); } catch (Exception e) { - info.addError(e); + info.setUploaderAvatarUrl(""); + uploaderParsingErrors.add(e); } try { info.setBannerUrl(extractor.getBannerUrl()); } catch (Exception e) { info.addError(e); } + // do not fail if everything but the uploader infos could be collected + if (uploaderParsingErrors.size() > 0 && + (!info.getErrors().isEmpty() || uploaderParsingErrors.size() < 3)) { + info.addAllErrors(uploaderParsingErrors); + } final InfoItemsPage itemsPage = ExtractorHelper.getItemsPageOrLogError(info, extractor); info.setRelatedItems(itemsPage.getItems());