diff options
| -rw-r--r-- | src/main/java/App.java | 34 | ||||
| -rw-r--r-- | src/main/java/com/pina/Holodex.java | 19 | ||||
| -rw-r--r-- | src/main/java/com/pina/datatypes/CommentSearchResult.java | 3 | ||||
| -rw-r--r-- | src/main/java/com/pina/datatypes/Paginated.java | 3 | ||||
| -rw-r--r-- | src/main/java/com/pina/datatypes/SimpleCommentVideo.java | 5 | ||||
| -rw-r--r-- | src/main/java/com/pina/datatypes/VideoSearchResult.java | 3 | ||||
| -rw-r--r-- | src/main/java/com/pina/query/CommentSearchQueryBuilder.java | 4 | ||||
| -rw-r--r-- | src/main/java/com/pina/query/VideoSearchQueryBuilder.java | 4 |
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; |
