aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPinapelz <donaldshan1@outlook.com>2023-04-15 02:01:03 -0700
committerPinapelz <donaldshan1@outlook.com>2023-04-15 02:01:03 -0700
commit4a8bcd9b59ef437597606dcd112af11d48509f92 (patch)
treecc0e81a609d7d76ced67b6174b5c4fc50bc54391
parent1b1bee7688caf28abfa6e481b517115d1c8bfac6 (diff)
Implemented POST request for searching comments
-rw-r--r--src/main/java/com/pina/Holodex.java12
-rw-r--r--src/main/java/com/pina/HolodexService.java20
-rw-r--r--src/main/java/com/pina/datatypes/CommentSearchResult.java8
-rw-r--r--src/main/java/com/pina/datatypes/SimpleCommentVideo.java16
-rw-r--r--src/main/java/com/pina/query/CommentSearchQueryBuilder.java130
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;
+ }
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage