Deux systèmes de commentaires coexistent : les commentaires classiques en fil, et les bullet comments (danmaku), ce texte en surimpression qui défile sur la vidéo en suivant la lecture.
Un CommentsExtractor est un ListExtractor<CommentsInfoItem> ; CommentsInfo.getInfo(url) le pilote comme n'importe quelle liste, avec getMoreItems pour la pagination. Il peut signaler que toute la section est désactivée via isCommentsDisabled().
Un CommentsInfoItem est riche :
java
String getCommentText(); String getUploaderName(); String getUploaderAvatarUrl();int getLikeCount(); String getTextualLikeCount();boolean isPinned(); boolean isHeartedByUploader(); boolean isUploaderVerified();int getStreamPosition(); // timestamp the comment points at, or NO_STREAM_POSITIONint getReplyCount(); Page getReplies(); // replies are their own pageCollection<Image> getPictures();
Les réponses ne sont pas en ligne : chaque élément porte une Pagereplies, récupérée via la même mécanique getMoreItems quand l'utilisateur déplie un fil.
Les bullet comments sont une autre bête, modélisés pour une surimpression plutôt que pour une liste. BulletCommentsExtractor (aussi un ListExtractor) ajoute des contrôles adaptés au direct :
java
boolean isLive(); boolean isDisabled();List<BulletCommentsInfoItem> getLiveMessages(); // poll new ones on a live streamvoid setCurrentPlayPosition(long ms); // align the overlay to playbackvoid disconnect(); void reconnect(); void clearMappingState();
Un BulletCommentsInfoItem décrit comment et quand peindre un bullet comment :
java
String getCommentText();Duration getDuration(); // when in the video it appears (required)int getArgbColor(); // ARGB32, e.g. white = 0xFFFFFFFFPosition getPosition(); // REGULAR, BOTTOM, TOP, SUPERCHATdouble getRelativeFontSize();int getLastingTime(); // how long it stays on screenboolean isLive();
Les éléments sont Comparable par leur timestamp, ainsi la surimpression peut les rejouer dans l'ordre.
Les bullet comments sont implémentés par BiliBili (BilibiliBulletCommentsExtractor), NicoNico (NiconicoBulletCommentsExtractor) et le chat en direct de YouTube (YoutubeBulletCommentsExtractor). Un service y adhère en surchargeant getBulletCommentsLHFactory() / getBulletCommentsExtractor() (null par défaut) et en déclarant la capacité BULLET_COMMENTS. Les services sans danmaku ne l'exposent simplement jamais.
Commentaires et bullet comments
Deux systèmes de commentaires coexistent : les commentaires classiques en fil, et les bullet comments (danmaku), ce texte en surimpression qui défile sur la vidéo en suivant la lecture.
Commentaires classiques
Un
CommentsExtractorest unListExtractor<CommentsInfoItem>;CommentsInfo.getInfo(url)le pilote comme n'importe quelle liste, avecgetMoreItemspour la pagination. Il peut signaler que toute la section est désactivée viaisCommentsDisabled().Un
CommentsInfoItemest riche :Les réponses ne sont pas en ligne : chaque élément porte une
Pagereplies, récupérée via la même mécaniquegetMoreItemsquand l'utilisateur déplie un fil.Bullet comments (danmaku)
Les bullet comments sont une autre bête, modélisés pour une surimpression plutôt que pour une liste.
BulletCommentsExtractor(aussi unListExtractor) ajoute des contrôles adaptés au direct :Un
BulletCommentsInfoItemdécrit comment et quand peindre un bullet comment :Les éléments sont
Comparablepar leur timestamp, ainsi la surimpression peut les rejouer dans l'ordre.Qui en dispose
Les bullet comments sont implémentés par BiliBili (
BilibiliBulletCommentsExtractor), NicoNico (NiconicoBulletCommentsExtractor) et le chat en direct de YouTube (YoutubeBulletCommentsExtractor). Un service y adhère en surchargeantgetBulletCommentsLHFactory()/getBulletCommentsExtractor()(null par défaut) et en déclarant la capacitéBULLET_COMMENTS. Les services sans danmaku ne l'exposent simplement jamais.