diff options
| author | Pinapelz <donaldshan1@outlook.com> | 2023-04-15 02:01:03 -0700 |
|---|---|---|
| committer | Pinapelz <donaldshan1@outlook.com> | 2023-04-15 02:01:03 -0700 |
| commit | 4a8bcd9b59ef437597606dcd112af11d48509f92 (patch) | |
| tree | cc0e81a609d7d76ced67b6174b5c4fc50bc54391 | |
| parent | 1b1bee7688caf28abfa6e481b517115d1c8bfac6 (diff) | |
Implemented POST request for searching comments
| -rw-r--r-- | src/main/java/com/pina/Holodex.java | 12 | ||||
| -rw-r--r-- | src/main/java/com/pina/HolodexService.java | 20 | ||||
| -rw-r--r-- | src/main/java/com/pina/datatypes/CommentSearchResult.java | 8 | ||||
| -rw-r--r-- | src/main/java/com/pina/datatypes/SimpleCommentVideo.java | 16 | ||||
| -rw-r--r-- | src/main/java/com/pina/query/CommentSearchQueryBuilder.java | 130 |
5 files changed, 186 insertions, 0 deletions
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<String, Object> payload = toMap(query); + RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), + new Gson().toJson(payload)); + if(query.isPaginated()) { + Call<CommentSearchResult> call = service.postPaginatedCommentSearch(body); + return executeCall(call); + } + Call<List<SimpleCommentVideo>> call = service.postCommentSearch(body); + return executeCall(call); + } + public static Map<String, Object> toMap(Object obj) throws HolodexException { Map<String, Object> 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<List<SimpleCommentVideo>> postCommentSearch( + @Body RequestBody commentSearchResult + ); + + @POST("/api/v2/search/commentSearch") + @Paginated(true) + Call<CommentSearchResult> 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<SimpleCommentVideo> 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<Comment> 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<String> lang; + private List<String> target; + private List<String> conditions; + private List<String> topic; + private List<String> vch; + private List<String> org; + private List<String> 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<String>(); + this.comment = new ArrayList<String>(); + this.org = List.of("Nijisanji"); + this.vch = new ArrayList<String>(); + this.conditions = new ArrayList<String>(); + this.lang = List.of("en"); + } + + public String getSort() { + return sort; + } + + public CommentSearchQueryBuilder setSort(String sort) { + this.sort = sort; + return this; + } + + public List<String> getLang() { + return lang; + } + + public CommentSearchQueryBuilder setLang(List<String> lang) { + this.lang = lang; + return this; + } + + public List<String> getTarget() { + return target; + } + + public CommentSearchQueryBuilder setTarget(List<String> target) { + this.target = target; + return this; + } + + public List<String> getConditions() { + return conditions; + } + + public CommentSearchQueryBuilder setConditions(List<String> conditions) { + this.conditions = conditions; + return this; + } + + public List<String> getTopic() { + return topic; + } + + public CommentSearchQueryBuilder setTopic(List<String> topic) { + this.topic = topic; + return this; + } + + public List<String> getVch() { + return vch; + } + + public CommentSearchQueryBuilder setVch(List<String> vch) { + this.vch = vch; + return this; + } + + public List<String> getOrg() { + return org; + } + + public CommentSearchQueryBuilder setOrg(List<String> org) { + this.org = org; + return this; + } + + public List<String> getComment() { + return comment; + } + + public CommentSearchQueryBuilder setComment(List<String> 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; + } +} |
