Add streamPosition for comments
SoundCloud is the only service which supports adding comments at a specific timestamp in the stream.
This commit is contained in:
parent
d4186d100b
commit
b70c0f93c7
|
@ -20,6 +20,9 @@ public class CommentsInfoItem extends InfoItem {
|
|||
private String textualLikeCount;
|
||||
private boolean heartedByUploader;
|
||||
private boolean pinned;
|
||||
private int streamPosition;
|
||||
|
||||
public static final int NO_STREAM_POSITION = -1;
|
||||
|
||||
public CommentsInfoItem(int serviceId, String url, String name) {
|
||||
super(InfoType.COMMENT, serviceId, url, name);
|
||||
|
@ -121,4 +124,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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -94,4 +94,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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -87,6 +87,12 @@ public class CommentsInfoItemsCollector extends InfoItemsCollector<CommentsInfoI
|
|||
addError(e);
|
||||
}
|
||||
|
||||
try {
|
||||
resultItem.setStreamPosition(extractor.getStreamPosition());
|
||||
} catch (Exception e) {
|
||||
addError(e);
|
||||
}
|
||||
|
||||
return resultItem;
|
||||
}
|
||||
|
||||
|
|
|
@ -43,6 +43,11 @@ public class SoundcloudCommentsInfoItemExtractor implements CommentsInfoItemExtr
|
|||
return json.getObject("user").getBoolean("verified");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStreamPosition() throws ParsingException {
|
||||
return json.getInt("timestamp") / 1000; // convert milliseconds to seconds
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUploaderUrl() {
|
||||
return json.getObject("user").getString("permalink_url");
|
||||
|
@ -65,7 +70,7 @@ public class SoundcloudCommentsInfoItemExtractor implements CommentsInfoItemExtr
|
|||
}
|
||||
|
||||
@Override
|
||||
public String getUrl() throws ParsingException {
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
|
|
|
@ -184,7 +184,7 @@ public class YoutubeCommentsInfoItemExtractor implements CommentsInfoItemExtract
|
|||
return json.has("pinnedCommentBadge");
|
||||
}
|
||||
|
||||
public boolean isUploaderVerified() throws ParsingException {
|
||||
public boolean isUploaderVerified() {
|
||||
// impossible to get this information from the mobile layout
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue