diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/comments/CommentsInfoItem.java b/extractor/src/main/java/org/schabi/newpipe/extractor/comments/CommentsInfoItem.java index d27909276..822069b39 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/comments/CommentsInfoItem.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/comments/CommentsInfoItem.java @@ -20,6 +20,10 @@ public class CommentsInfoItem extends InfoItem { private String textualLikeCount; private boolean heartedByUploader; private boolean pinned; + private int streamPosition; + + public static final int NO_LIKE_COUNT = -1; + public static final int NO_STREAM_POSITION = -1; public CommentsInfoItem(int serviceId, String url, String name) { super(InfoType.COMMENT, serviceId, url, name); @@ -82,6 +86,10 @@ public class CommentsInfoItem extends InfoItem { this.uploadDate = uploadDate; } + /** + * @return the comment's like count + * or {@link CommentsInfoItem#NO_LIKE_COUNT} if it is unavailable + */ public int getLikeCount() { return likeCount; } @@ -121,4 +129,17 @@ public class CommentsInfoItem extends InfoItem { public boolean isUploaderVerified() { return uploaderVerified; } + + public void setStreamPosition(final int streamPosition) { + this.streamPosition = streamPosition; + } + + /** + * Get the playback position of the stream to which this comment belongs. + * This is not supported by all services. + * @return the playback position in seconds or {@link #NO_STREAM_POSITION} if not available + */ + public int getStreamPosition() { + return streamPosition; + } } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/comments/CommentsInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/comments/CommentsInfoItemExtractor.java index 15266e2ee..4d70bf87d 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/comments/CommentsInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/comments/CommentsInfoItemExtractor.java @@ -12,15 +12,20 @@ import javax.annotation.Nullable; public interface CommentsInfoItemExtractor extends InfoItemExtractor { /** - * Return the like count of the comment, or -1 if it's unavailable + * Return the like count of the comment, + * or {@link CommentsInfoItem#NO_LIKE_COUNT} if it is unavailable. + * *
+ * * NOTE: Currently only implemented for YT {@link YoutubeCommentsInfoItemExtractor#getLikeCount()} * with limitations (only approximate like count is returned) * * @see StreamExtractor#getLikeCount() + * @return the comment's like count + * or {@link CommentsInfoItem#NO_LIKE_COUNT} if it is unavailable */ default int getLikeCount() throws ParsingException { - return -1; + return CommentsInfoItem.NO_LIKE_COUNT; } /** @@ -94,4 +99,12 @@ public interface CommentsInfoItemExtractor extends InfoItemExtractor { default boolean isUploaderVerified() throws ParsingException { return false; } + + /** + * The playback position of the stream to which this comment belongs. + * @see CommentsInfoItem#getStreamPosition() + */ + default int getStreamPosition() throws ParsingException { + return CommentsInfoItem.NO_STREAM_POSITION; + } } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/comments/CommentsInfoItemsCollector.java b/extractor/src/main/java/org/schabi/newpipe/extractor/comments/CommentsInfoItemsCollector.java index 97d394e10..3dc2d95f1 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/comments/CommentsInfoItemsCollector.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/comments/CommentsInfoItemsCollector.java @@ -87,6 +87,12 @@ public class CommentsInfoItemsCollector extends InfoItemsCollector