aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/App.java34
-rw-r--r--src/main/java/com/pina/Holodex.java19
-rw-r--r--src/main/java/com/pina/datatypes/CommentSearchResult.java3
-rw-r--r--src/main/java/com/pina/datatypes/Paginated.java3
-rw-r--r--src/main/java/com/pina/datatypes/SimpleCommentVideo.java5
-rw-r--r--src/main/java/com/pina/datatypes/VideoSearchResult.java3
-rw-r--r--src/main/java/com/pina/query/CommentSearchQueryBuilder.java4
-rw-r--r--src/main/java/com/pina/query/VideoSearchQueryBuilder.java4
8 files changed, 64 insertions, 11 deletions
diff --git a/src/main/java/App.java b/src/main/java/App.java
index 2183afd..6095c9b 100644
--- a/src/main/java/App.java
+++ b/src/main/java/App.java
@@ -1,7 +1,11 @@
import com.pina.Holodex;
import com.pina.HolodexException;
+import com.pina.datatypes.Channel;
import com.pina.datatypes.SimpleVideo;
-import com.pina.query.VideoSearchQueryBuilder;
+import com.pina.datatypes.Video;
+import com.pina.query.ChannelQueryBuilder;
+import com.pina.query.VideoByVideoIdQueryBuilder;
+import com.pina.query.VideoQueryBuilder;
import java.util.List;
@@ -10,17 +14,27 @@ public class App
public static void main( String[] args )
{
try {
- Holodex holodex = new Holodex("e6bf4c1a-b58c-4b25-bb13-47cdc1146321");
- Object srv = holodex.searchVideo(new VideoSearchQueryBuilder().setOrg(List.of("Nijisanji")).setSort("newest").
- setTarget(List.of("stream")).setPaginated(false).setLimit(10).setOffset(0)
- .setTopic(List.of("singing"))
- );
- System.out.println("--- Search Results ---");
- for (SimpleVideo video : (List<SimpleVideo>) srv) {
- System.out.println(video.title + " - " + video.channel.name);
+ Holodex holodex = new Holodex("YOUR_API_KEY_HERE");
+ Channel channel = holodex.getChannel("UC4WvIIAo89_AzGUh1AZ6Dkg");
+ System.out.println(channel.name + " is a member of " + channel.org + " and has " + channel.suborg + " as a suborg");
+
+ VideoQueryBuilder liveVideoQuery = new VideoQueryBuilder().setStatus("live").setOrg("Hololive");
+ List<SimpleVideo> currentlyLiveVideos = holodex.getLiveAndUpcomingVideos(liveVideoQuery);
+ System.out.println("Currently there are " + currentlyLiveVideos.size() + " livestreams on going in Hololive");
+
+ for (SimpleVideo video : currentlyLiveVideos) {
+ System.out.println(video.channel.name + " is currently live with " + video.live_viewers + " views");
}
- } catch (HolodexException ex) {
+ ChannelQueryBuilder channelQuery = new ChannelQueryBuilder();
+ channelQuery.setOrg("Nijisanji");
+ channelQuery.setLimit(75);
+ List<Channel> nijisanjiMembers = holodex.getChannels(channelQuery);
+
+ Video anotherVideo = holodex.getVideo(new VideoByVideoIdQueryBuilder().setVideoId("9-O_IWM3184").setLang("en"));
+ System.out.println(anotherVideo.channel.name + " uploaded a video titled " + anotherVideo.title +
+ " on " + anotherVideo.published_at);
+ } catch (HolodexException ex) {
throw new RuntimeException(ex);
}
diff --git a/src/main/java/com/pina/Holodex.java b/src/main/java/com/pina/Holodex.java
index 2b211e0..eca6147 100644
--- a/src/main/java/com/pina/Holodex.java
+++ b/src/main/java/com/pina/Holodex.java
@@ -188,6 +188,15 @@ public class Holodex {
return executeCall(call);
}
+ /**
+ * Sends a POST request to search for videos matching the VideoSearchQueryBuilder attributes
+ * If the query is paginated, the response will be a VideoSearchResult object
+ * If the query is not paginated, the response will be a list of SimpleVideo objects
+ * @param query
+ * @return
+ * @throws HolodexException
+ */
+
public Object searchVideo(VideoSearchQueryBuilder query) throws HolodexException {
Map<String, Object> payload = toMap(query);
RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"),
@@ -201,6 +210,14 @@ public class Holodex {
}
+ /**
+ * Sends a POST request to search for comments matching the CommentSearchQueryBuilder attributes
+ * If the query is paginated, the response will be a CommentSearchResult object
+ * If the query is not paginated, the response will be a list of SimpleCommentVideo objects
+ * @param query
+ * @return
+ * @throws HolodexException
+ */
public Object searchComment(CommentSearchQueryBuilder query) throws HolodexException{
Map<String, Object> payload = toMap(query);
RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"),
@@ -213,7 +230,7 @@ public class Holodex {
return executeCall(call);
}
- public static Map<String, Object> toMap(Object obj) throws HolodexException {
+ private static Map<String, Object> toMap(Object obj) throws HolodexException {
Map<String, Object> map = new HashMap<>();
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
diff --git a/src/main/java/com/pina/datatypes/CommentSearchResult.java b/src/main/java/com/pina/datatypes/CommentSearchResult.java
index a68b162..b85d3b3 100644
--- a/src/main/java/com/pina/datatypes/CommentSearchResult.java
+++ b/src/main/java/com/pina/datatypes/CommentSearchResult.java
@@ -2,6 +2,9 @@ package com.pina.datatypes;
import java.util.List;
+/**
+ * Result object for a paginated comment search
+ */
public class CommentSearchResult {
public int total;
public List<SimpleCommentVideo> items;
diff --git a/src/main/java/com/pina/datatypes/Paginated.java b/src/main/java/com/pina/datatypes/Paginated.java
index 8095daf..428cf52 100644
--- a/src/main/java/com/pina/datatypes/Paginated.java
+++ b/src/main/java/com/pina/datatypes/Paginated.java
@@ -5,6 +5,9 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+/**
+ * Annotation for paginated queries
+ */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Paginated {
diff --git a/src/main/java/com/pina/datatypes/SimpleCommentVideo.java b/src/main/java/com/pina/datatypes/SimpleCommentVideo.java
index 7a7c9d4..715eed8 100644
--- a/src/main/java/com/pina/datatypes/SimpleCommentVideo.java
+++ b/src/main/java/com/pina/datatypes/SimpleCommentVideo.java
@@ -2,6 +2,11 @@ package com.pina.datatypes;
import java.util.List;
+/**
+ * The same as SimpleVideo, but with comments
+ * @see SimpleVideo
+ *
+ */
public class SimpleCommentVideo {
public String id;
public String title;
diff --git a/src/main/java/com/pina/datatypes/VideoSearchResult.java b/src/main/java/com/pina/datatypes/VideoSearchResult.java
index 4a9996f..4525bc9 100644
--- a/src/main/java/com/pina/datatypes/VideoSearchResult.java
+++ b/src/main/java/com/pina/datatypes/VideoSearchResult.java
@@ -2,6 +2,9 @@ package com.pina.datatypes;
import java.util.List;
+/**
+ * Result object for a paginated video search
+ */
public class VideoSearchResult {
public int total;
public List<SimpleVideo> items;
diff --git a/src/main/java/com/pina/query/CommentSearchQueryBuilder.java b/src/main/java/com/pina/query/CommentSearchQueryBuilder.java
index a251a54..7e0f3f8 100644
--- a/src/main/java/com/pina/query/CommentSearchQueryBuilder.java
+++ b/src/main/java/com/pina/query/CommentSearchQueryBuilder.java
@@ -3,6 +3,10 @@ package com.pina.query;
import java.util.ArrayList;
import java.util.List;
+/**
+ * Builder for a comment search query
+ * Default values set in constructor
+ */
public class CommentSearchQueryBuilder {
private String sort;
private List<String> lang;
diff --git a/src/main/java/com/pina/query/VideoSearchQueryBuilder.java b/src/main/java/com/pina/query/VideoSearchQueryBuilder.java
index c4a82be..476994e 100644
--- a/src/main/java/com/pina/query/VideoSearchQueryBuilder.java
+++ b/src/main/java/com/pina/query/VideoSearchQueryBuilder.java
@@ -3,6 +3,10 @@ package com.pina.query;
import java.util.ArrayList;
import java.util.List;
+/**
+ * Builder for a video search query
+ * Default values set in constructor
+ */
public class VideoSearchQueryBuilder {
private String sort;
private List<String> lang;
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage