From 4a8bcd9b59ef437597606dcd112af11d48509f92 Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Sat, 15 Apr 2023 02:01:03 -0700 Subject: Implemented POST request for searching comments --- src/main/java/com/pina/Holodex.java | 12 ++ src/main/java/com/pina/HolodexService.java | 20 ++++ .../com/pina/datatypes/CommentSearchResult.java | 8 ++ .../com/pina/datatypes/SimpleCommentVideo.java | 16 +++ .../com/pina/query/CommentSearchQueryBuilder.java | 130 +++++++++++++++++++++ 5 files changed, 186 insertions(+) create mode 100644 src/main/java/com/pina/datatypes/CommentSearchResult.java create mode 100644 src/main/java/com/pina/datatypes/SimpleCommentVideo.java create mode 100644 src/main/java/com/pina/query/CommentSearchQueryBuilder.java (limited to 'src/main') diff --git a/src/main/java/com/pina/Holodex.java b/src/main/java/com/pina/Holodex.java index 6f8e8d2..2b211e0 100644 --- a/src/main/java/com/pina/Holodex.java +++ b/src/main/java/com/pina/Holodex.java @@ -201,6 +201,18 @@ public class Holodex { } + public Object searchComment(CommentSearchQueryBuilder query) throws HolodexException{ + Map payload = toMap(query); + RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), + new Gson().toJson(payload)); + if(query.isPaginated()) { + Call call = service.postPaginatedCommentSearch(body); + return executeCall(call); + } + Call> call = service.postCommentSearch(body); + return executeCall(call); + } + public static Map toMap(Object obj) throws HolodexException { Map map = new HashMap<>(); Field[] fields = obj.getClass().getDeclaredFields(); diff --git a/src/main/java/com/pina/HolodexService.java b/src/main/java/com/pina/HolodexService.java index 40502b7..516d419 100644 --- a/src/main/java/com/pina/HolodexService.java +++ b/src/main/java/com/pina/HolodexService.java @@ -175,6 +175,8 @@ public interface HolodexService { /** * /api/v2/search/videoSearch endpoint + * @param videoSearchResult + * @return */ @POST("/api/v2/search/videoSearch") @Paginated(false) @@ -188,6 +190,24 @@ public interface HolodexService { @Body RequestBody videoSearchResult ); + /** + * /api/v2/search/channelSearch endpoint + * @param commentSearchResult + * @return + */ + @POST("/api/v2/search/commentSearch") + @Paginated(false) + Call> postCommentSearch( + @Body RequestBody commentSearchResult + ); + + @POST("/api/v2/search/commentSearch") + @Paginated(true) + Call postPaginatedCommentSearch( + @Body RequestBody commentSearchResult + ); + + } diff --git a/src/main/java/com/pina/datatypes/CommentSearchResult.java b/src/main/java/com/pina/datatypes/CommentSearchResult.java new file mode 100644 index 0000000..a68b162 --- /dev/null +++ b/src/main/java/com/pina/datatypes/CommentSearchResult.java @@ -0,0 +1,8 @@ +package com.pina.datatypes; + +import java.util.List; + +public class CommentSearchResult { + public int total; + public List items; +} diff --git a/src/main/java/com/pina/datatypes/SimpleCommentVideo.java b/src/main/java/com/pina/datatypes/SimpleCommentVideo.java new file mode 100644 index 0000000..7a7c9d4 --- /dev/null +++ b/src/main/java/com/pina/datatypes/SimpleCommentVideo.java @@ -0,0 +1,16 @@ +package com.pina.datatypes; + +import java.util.List; + +public class SimpleCommentVideo { + public String id; + public String title; + public String type; + public String published_at; + public String available_at; + public int duration; + public String status; + public int songcount; + public SimpleChannel channel; + public List comments; +} diff --git a/src/main/java/com/pina/query/CommentSearchQueryBuilder.java b/src/main/java/com/pina/query/CommentSearchQueryBuilder.java new file mode 100644 index 0000000..a251a54 --- /dev/null +++ b/src/main/java/com/pina/query/CommentSearchQueryBuilder.java @@ -0,0 +1,130 @@ +package com.pina.query; + +import java.util.ArrayList; +import java.util.List; + +public class CommentSearchQueryBuilder { + private String sort; + private List lang; + private List target; + private List conditions; + private List topic; + private List vch; + private List org; + private List comment; + private boolean paginated; + private int offset; + private int limit; + + public CommentSearchQueryBuilder(){ + this.sort = "newest"; + this.paginated = true; + this.offset = 0; + this.limit = 10; + this.topic = new ArrayList(); + this.comment = new ArrayList(); + this.org = List.of("Nijisanji"); + this.vch = new ArrayList(); + this.conditions = new ArrayList(); + this.lang = List.of("en"); + } + + public String getSort() { + return sort; + } + + public CommentSearchQueryBuilder setSort(String sort) { + this.sort = sort; + return this; + } + + public List getLang() { + return lang; + } + + public CommentSearchQueryBuilder setLang(List lang) { + this.lang = lang; + return this; + } + + public List getTarget() { + return target; + } + + public CommentSearchQueryBuilder setTarget(List target) { + this.target = target; + return this; + } + + public List getConditions() { + return conditions; + } + + public CommentSearchQueryBuilder setConditions(List conditions) { + this.conditions = conditions; + return this; + } + + public List getTopic() { + return topic; + } + + public CommentSearchQueryBuilder setTopic(List topic) { + this.topic = topic; + return this; + } + + public List getVch() { + return vch; + } + + public CommentSearchQueryBuilder setVch(List vch) { + this.vch = vch; + return this; + } + + public List getOrg() { + return org; + } + + public CommentSearchQueryBuilder setOrg(List org) { + this.org = org; + return this; + } + + public List getComment() { + return comment; + } + + public CommentSearchQueryBuilder setComment(List comment) { + this.comment = comment; + return this; + } + + public boolean isPaginated() { + return paginated; + } + + public CommentSearchQueryBuilder setPaginated(boolean paginated) { + this.paginated = paginated; + return this; + } + + public int getOffset() { + return offset; + } + + public CommentSearchQueryBuilder setOffset(int offset) { + this.offset = offset; + return this; + } + + public int getLimit() { + return limit; + } + + public CommentSearchQueryBuilder setLimit(int limit) { + this.limit = limit; + return this; + } +} -- cgit v1.2.3