diff --git a/src/com/ixab/GUI/StreamChooserMenu.form b/src/com/ixab/GUI/StreamChooserMenu.form index e0b0968..e60901a 100644 --- a/src/com/ixab/GUI/StreamChooserMenu.form +++ b/src/com/ixab/GUI/StreamChooserMenu.form @@ -1,49 +1,52 @@
diff --git a/src/com/ixab/GUI/StreamChooserMenu.java b/src/com/ixab/GUI/StreamChooserMenu.java index 2ecf729..9bf8bb7 100644 --- a/src/com/ixab/GUI/StreamChooserMenu.java +++ b/src/com/ixab/GUI/StreamChooserMenu.java @@ -1,11 +1,9 @@ package com.ixab.GUI; -import com.ixab.*; -import com.ixab.ConfigHandling.Config; import com.ixab.ConfigHandling.ConfigFileIOHandler; import com.ixab.ConfigHandling.ConfigFileInstanceHandler; +import com.ixab.StreamHandling.StreamInfo; import com.ixab.StreamHandling.StreamOpener; -import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils; import javax.swing.*; import java.awt.event.ActionEvent; @@ -15,19 +13,23 @@ import java.awt.event.KeyEvent; public class StreamChooserMenu { private JPanel panel; - private JComboBox comboBox1; + private JComboBox comboBoxStreams; private JComboBox comboBox2; private JTextField textField1; private JButton hinzufügenButton; private JButton streamAbspielenButton; private JButton entfernenButton; + private JLabel labelStreamStatus; + private JLabel labelStreamViewers; + private JLabel labelStreamTitle; + private JLabel labelStreamGame; public StreamChooserMenu() { this.initComboBoxes(); streamAbspielenButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - StreamOpener so = new StreamOpener(ConfigFileInstanceHandler.getConfig(), ConfigFileInstanceHandler.getConfig().getStreams().indexOf(comboBox1.getSelectedItem()), comboBox2.getSelectedItem().toString()); + StreamOpener so = new StreamOpener(ConfigFileInstanceHandler.getConfig(), ConfigFileInstanceHandler.getConfig().getStreams().indexOf(comboBoxStreams.getSelectedItem()), comboBox2.getSelectedItem().toString()); so.start(); } }); @@ -40,15 +42,20 @@ public class StreamChooserMenu { entfernenButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - ConfigFileInstanceHandler.getConfig().removeStream(comboBox1.getSelectedItem()); + ConfigFileInstanceHandler.getConfig().removeStream(comboBoxStreams.getSelectedItem()); ConfigFileIOHandler.save(ConfigFileInstanceHandler.getConfig()); initStreamsComboBox(); } }); - comboBox1.addActionListener(new ActionListener() { + comboBoxStreams.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO: implement twitch api and update stream info + StreamInfo.getStreamInfo(comboBoxStreams.getSelectedItem().toString()); + labelStreamStatus.setText(StreamInfo.getStatus()); + labelStreamGame.setText(StreamInfo.getGame()); + labelStreamViewers.setText(StreamInfo.getViewers()); + labelStreamTitle.setText(StreamInfo.getTitle()); } }); textField1.addKeyListener(new KeyAdapter() { @@ -72,10 +79,10 @@ public class StreamChooserMenu { initStreamsComboBox(); } private void initStreamsComboBox() { - comboBox1.removeAllItems(); + comboBoxStreams.removeAllItems(); for (String streamName : ConfigFileInstanceHandler.getConfig().getStreams()) { - comboBox1.addItem(streamName); + comboBoxStreams.addItem(streamName); } } private void initQualityComboBox() { diff --git a/src/com/ixab/Main.java b/src/com/ixab/Main.java index 71702a1..56f82e6 100644 --- a/src/com/ixab/Main.java +++ b/src/com/ixab/Main.java @@ -8,7 +8,7 @@ import com.ixab.GUI.StreamChooserMenu; import javax.swing.*; public class Main { - private final static double version = 0.1; + private final static double version = 0.2; private static Config c = null; public static void main(String[] args) { try { diff --git a/src/com/ixab/StreamHandling/StreamInfo.java b/src/com/ixab/StreamHandling/StreamInfo.java new file mode 100644 index 0000000..5892f7a --- /dev/null +++ b/src/com/ixab/StreamHandling/StreamInfo.java @@ -0,0 +1,93 @@ +package com.ixab.StreamHandling; + +import org.json.JSONObject; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.MalformedURLException; +import java.net.URL; + +public class StreamInfo { + private static JSONObject streamData = null; + private static JSONObject streamPreviewData = null; + public static String getGame() { + if (streamData == null && streamPreviewData == null) { + return "0"; + } else { + JSONObject channelData = new JSONObject(streamData.get("channel").toString()); + return channelData.get("game").toString(); + } + } + public static String getTitle() { + if (streamData == null && streamPreviewData == null) { + return "0"; + } else { + JSONObject channelData = new JSONObject(streamData.get("channel").toString()); + return channelData.get("status").toString(); + } + } + public static String getViewers() { + if (streamData == null && streamPreviewData == null) { + return "0"; + } else { + return streamData.get("viewers").toString(); + } + } + public static String getStatus() { + if (streamData == null && streamPreviewData == null) { + return "offline"; + } else { + return "online"; + } + } + public static void getStreamInfo(String streamName) { + InputStream is = null; + URL url = null; + JSONObject object = null; + StringBuilder urlBuilder = new StringBuilder(); + urlBuilder.append("https://api.twitch.tv/kraken/streams/"); + + urlBuilder.append(streamName); + + String URLString = urlBuilder.toString(); + + try { + url = new URL(URLString); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + try { + is = url.openStream(); + } catch (IOException e) { + e.printStackTrace(); + } + InputStreamReader isr = new InputStreamReader(is); + BufferedReader br = new BufferedReader(isr); + + try { + String line; + StringBuilder sb = new StringBuilder(); + while ((line = br.readLine()) != null) + { + sb.append(line); + } + object = new JSONObject(sb.toString()); + + } catch (IOException e) { + e.printStackTrace(); + } + + String result = object.get("stream").toString(); + + if (result == "null") { + streamData = null; + streamPreviewData = null; + } else { + streamData = new JSONObject(result); + streamPreviewData = new JSONObject(streamData.get("preview").toString()); + } + + } +}