diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelTabExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelTabExtractor.java index e8488d709..14e7ed483 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelTabExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelTabExtractor.java @@ -300,7 +300,7 @@ public class YoutubeChannelTabExtractor extends ChannelTabExtractor { getCommitVideoConsumer(collector, timeAgoParser, channelIds, richItem.getObject("videoRenderer")); } else if (richItem.has("reelItemRenderer")) { - getCommitReelItemConsumer(collector, timeAgoParser, channelIds, + getCommitReelItemConsumer(collector, channelIds, richItem.getObject("reelItemRenderer")); } else if (richItem.has("playlistRenderer")) { getCommitPlaylistConsumer(collector, channelIds, @@ -356,11 +356,10 @@ public class YoutubeChannelTabExtractor extends ChannelTabExtractor { } private void getCommitReelItemConsumer(@Nonnull final MultiInfoItemsCollector collector, - @Nonnull final TimeAgoParser timeAgoParser, @Nonnull final List channelIds, @Nonnull final JsonObject jsonObject) { collector.commit( - new YoutubeReelInfoItemExtractor(jsonObject, timeAgoParser) { + new YoutubeReelInfoItemExtractor(jsonObject) { @Override public String getUploaderName() throws ParsingException { if (channelIds.size() >= 2) { diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubePlaylistExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubePlaylistExtractor.java index bb4df7cd2..a8999fdd3 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubePlaylistExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubePlaylistExtractor.java @@ -411,8 +411,7 @@ public class YoutubePlaylistExtractor extends PlaylistExtractor { richItemRenderer.getObject("content"); if (richItemRendererContent.has(REEL_ITEM_RENDERER)) { collector.commit(new YoutubeReelInfoItemExtractor( - richItemRendererContent.getObject(REEL_ITEM_RENDERER), - timeAgoParser)); + richItemRendererContent.getObject(REEL_ITEM_RENDERER))); } } } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeReelInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeReelInfoItemExtractor.java index 911cb4bed..3b9326247 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeReelInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeReelInfoItemExtractor.java @@ -1,25 +1,24 @@ package org.schabi.newpipe.extractor.services.youtube.extractors; +import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getTextFromObject; +import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getThumbnailsFromInfoItem; +import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; + import com.grack.nanojson.JsonObject; import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.localization.DateWrapper; -import org.schabi.newpipe.extractor.localization.TimeAgoParser; import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeStreamLinkHandlerFactory; import org.schabi.newpipe.extractor.stream.StreamInfoItemExtractor; import org.schabi.newpipe.extractor.stream.StreamType; import org.schabi.newpipe.extractor.utils.Utils; +import java.util.List; + import javax.annotation.Nonnull; import javax.annotation.Nullable; -import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getTextFromObject; -import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getThumbnailsFromInfoItem; -import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; - -import java.util.List; - /** * A {@link StreamInfoItemExtractor} for YouTube's {@code reelItemRenderers}. * @@ -33,13 +32,9 @@ public class YoutubeReelInfoItemExtractor implements StreamInfoItemExtractor { @Nonnull private final JsonObject reelInfo; - @Nullable - private final TimeAgoParser timeAgoParser; - public YoutubeReelInfoItemExtractor(@Nonnull final JsonObject reelInfo, - @Nullable final TimeAgoParser timeAgoParser) { + public YoutubeReelInfoItemExtractor(@Nonnull final JsonObject reelInfo) { this.reelInfo = reelInfo; - this.timeAgoParser = timeAgoParser; } @Override @@ -68,28 +63,6 @@ public class YoutubeReelInfoItemExtractor implements StreamInfoItemExtractor { return StreamType.VIDEO_STREAM; } - @Override - public long getDuration() throws ParsingException { - // Duration of reelItems is only provided in the accessibility data - // example: "VIDEO TITLE - 49 seconds - play video" - // "VIDEO TITLE - 1 minute, 1 second - play video" - final String accessibilityLabel = reelInfo.getObject("accessibility") - .getObject("accessibilityData").getString("label"); - if (accessibilityLabel == null || timeAgoParser == null) { - return 0; - } - - // This approach may be language dependent - final String[] labelParts = accessibilityLabel.split(" [\u2013-] "); - - if (labelParts.length > 2) { - final String textualDuration = labelParts[labelParts.length - 2]; - return timeAgoParser.parseDuration(textualDuration); - } - - return -1; - } - @Override public long getViewCount() throws ParsingException { final String viewCountText = getTextFromObject(reelInfo.getObject("viewCountText")); @@ -117,6 +90,11 @@ public class YoutubeReelInfoItemExtractor implements StreamInfoItemExtractor { return false; } + @Override + public long getDuration() throws ParsingException { + return -1; + } + @Override public String getUploaderName() throws ParsingException { return null; diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamInfoItemExtractor.java index 49f782909..399ecfe13 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamInfoItemExtractor.java @@ -50,7 +50,7 @@ public interface StreamInfoItemExtractor extends InfoItemExtractor { /** * Get the stream duration in seconds * - * @return the stream duration in seconds + * @return the stream duration in seconds or -1 if no duration is available * @throws ParsingException if there is an error in the extraction */ long getDuration() throws ParsingException;