aboutsummaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorPinapelz <donaldshan1@outlook.com>2023-04-04 12:11:11 -0700
committerPinapelz <donaldshan1@outlook.com>2023-04-04 12:11:11 -0700
commit28550a86f6f9b4dea05e3c19fb89ab7e4f6996ef (patch)
treebf88782db8c047ff26fdf8ab4c82002d4e7e8850 /src/main
Initial Commit
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/App.java21
-rw-r--r--src/main/java/com/pina/Channel.java12
-rw-r--r--src/main/java/com/pina/Holodex.java44
-rw-r--r--src/main/java/com/pina/HolodexException.java11
-rw-r--r--src/main/java/com/pina/HolodexService.java16
-rw-r--r--src/main/java/com/pina/LiveStream.java18
-rw-r--r--src/main/java/com/pina/UpcomingStream.java10
7 files changed, 132 insertions, 0 deletions
diff --git a/src/main/java/App.java b/src/main/java/App.java
new file mode 100644
index 0000000..73691fb
--- /dev/null
+++ b/src/main/java/App.java
@@ -0,0 +1,21 @@
+import com.pina.Holodex;
+import com.pina.HolodexException;
+import com.pina.LiveStream;
+
+import java.util.List;
+
+public class App
+{
+ public static void main( String[] args )
+ {
+ Holodex holodex = new Holodex();
+ try {
+ List<LiveStream> liveStreams = holodex.getLiveStreams();
+ for (LiveStream stream : liveStreams) {
+ System.out.println(stream.title + " by " + stream.channel.name);
+ }
+ } catch (HolodexException e) {
+ System.err.println("Failed to get live streams: " + e.getMessage());
+ }
+ }
+}
diff --git a/src/main/java/com/pina/Channel.java b/src/main/java/com/pina/Channel.java
new file mode 100644
index 0000000..36cf499
--- /dev/null
+++ b/src/main/java/com/pina/Channel.java
@@ -0,0 +1,12 @@
+package com.pina;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class Channel {
+ public String english_name;
+ public String id;
+ public String name;
+ public String photo;
+ public String type;
+}
diff --git a/src/main/java/com/pina/Holodex.java b/src/main/java/com/pina/Holodex.java
new file mode 100644
index 0000000..38c519a
--- /dev/null
+++ b/src/main/java/com/pina/Holodex.java
@@ -0,0 +1,44 @@
+package com.pina;
+
+import retrofit2.Call;
+import retrofit2.Response;
+import retrofit2.Retrofit;
+import retrofit2.converter.jackson.JacksonConverterFactory;
+
+import java.io.IOException;
+import java.util.List;
+
+public class Holodex {
+ private final HolodexService service;
+
+ public Holodex(){
+ Retrofit retrofit = new Retrofit.Builder()
+ .baseUrl("https://holodex.net")
+ .addConverterFactory(JacksonConverterFactory.create())
+ .build();
+ service = retrofit.create(HolodexService.class);
+ }
+ public List<LiveStream> getLiveStreams() throws HolodexException {
+ Call<List<LiveStream>> call = service.getLiveStreams("channel,clip");
+ return executeCall(call);
+ }
+
+ public List<UpcomingStream> getUpcomingStreams() throws HolodexException {
+ Call<List<UpcomingStream>> call = service.getUpcomingStreams("channel,clip");
+ return executeCall(call);
+ }
+
+ private <T> T executeCall(Call<T> call) throws HolodexException {
+ try {
+ Response<T> response = call.execute();
+ if (response.isSuccessful()) {
+ return response.body();
+ } else {
+ throw new HolodexException("API returned error: " + response.code());
+ }
+ } catch (IOException e) {
+ System.out.println(e);
+ throw new HolodexException("Failed to execute API call", e);
+ }
+ }
+}
diff --git a/src/main/java/com/pina/HolodexException.java b/src/main/java/com/pina/HolodexException.java
new file mode 100644
index 0000000..8dc8cbd
--- /dev/null
+++ b/src/main/java/com/pina/HolodexException.java
@@ -0,0 +1,11 @@
+package com.pina;
+
+public class HolodexException extends Exception{
+ public HolodexException(String message) {
+ super(message);
+ }
+
+ public HolodexException(String message, Throwable cause) {
+ super(message, cause);
+ }
+}
diff --git a/src/main/java/com/pina/HolodexService.java b/src/main/java/com/pina/HolodexService.java
new file mode 100644
index 0000000..98351ca
--- /dev/null
+++ b/src/main/java/com/pina/HolodexService.java
@@ -0,0 +1,16 @@
+package com.pina;
+
+import java.util.List;
+import retrofit2.Call;
+import retrofit2.http.GET;
+import retrofit2.http.Query;
+
+public interface HolodexService {
+ @GET("/api/v2/live")
+ Call<List<LiveStream>> getLiveStreams(@Query("include") String include);
+
+ @GET("/api/v2/upcoming")
+ Call<List<UpcomingStream>> getUpcomingStreams(@Query("include") String include);
+
+}
+
diff --git a/src/main/java/com/pina/LiveStream.java b/src/main/java/com/pina/LiveStream.java
new file mode 100644
index 0000000..5e1d7a9
--- /dev/null
+++ b/src/main/java/com/pina/LiveStream.java
@@ -0,0 +1,18 @@
+package com.pina;
+
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class LiveStream {
+ public String id;
+ public String title;
+ public String thumbnail;
+ public String status;
+ public int viewers;
+ public Channel channel;
+}
+
+
+
diff --git a/src/main/java/com/pina/UpcomingStream.java b/src/main/java/com/pina/UpcomingStream.java
new file mode 100644
index 0000000..dbdcc9b
--- /dev/null
+++ b/src/main/java/com/pina/UpcomingStream.java
@@ -0,0 +1,10 @@
+package com.pina;
+
+public class UpcomingStream {
+ public String id;
+ public String title;
+ public String thumbnail;
+ public String scheduled_start_time;
+ public String channel_id;
+ public String channel_name;
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage