essential-actions

Clone or download

Implement Twitch host channel action

Modified Files

M build.sh
+3 −0
#!/bin/bash
#!/bin/bash
FOLD=../PreBuiltPlugins
FOLD=../PreBuiltPlugins
hotkey() {
hotkey() {
pushd . || exit
pushd . || exit
cd hotkeyaction && mvn clean package
cd hotkeyaction && mvn clean package
mv target/hotkeyaction-1.0.0.jar $FOLD/hotkeyaction.jar
mv target/hotkeyaction-1.0.0.jar $FOLD/hotkeyaction.jar
popd || exit
popd || exit
}
}
mediakey() {
mediakey() {
pushd . || exit
pushd . || exit
cd mediakeyaction && mvn clean package
cd mediakeyaction && mvn clean package
mv target/mediakeyaction-1.0.0.jar $FOLD/mediakeyaction.jar
mv target/mediakeyaction-1.0.0.jar $FOLD/mediakeyaction.jar
popd || exit
popd || exit
}
}
obssuite() {
obssuite() {
pushd . || exit
pushd . || exit
cd obssuite/mother && mvn clean install package
cd obssuite/mother && mvn clean install package
mv target/obssuite_motheraction-1.0.0.jar ../$FOLD/obssuite_motheraction.jar
mv target/obssuite_motheraction-1.0.0.jar ../$FOLD/obssuite_motheraction.jar
cd ../setcurrentprofile && mvn clean package
cd ../setcurrentprofile && mvn clean package
mv target/obssuite_setcurrentprofileaction-1.0.0.jar ../$FOLD/obssuite_setcurrentprofileaction.jar
mv target/obssuite_setcurrentprofileaction-1.0.0.jar ../$FOLD/obssuite_setcurrentprofileaction.jar
cd ../setcurrentscene && mvn clean package
cd ../setcurrentscene && mvn clean package
mv target/obssuite_setcurrentsceneaction-1.0.0.jar ../$FOLD/obssuite_setcurrentsceneaction.jar
mv target/obssuite_setcurrentsceneaction-1.0.0.jar ../$FOLD/obssuite_setcurrentsceneaction.jar
cd ../setcurrenttransition && mvn clean package
cd ../setcurrenttransition && mvn clean package
mv target/obssuite_setcurrenttransitionaction-1.0.0.jar ../$FOLD/obssuite_setcurrenttransitionaction.jar
mv target/obssuite_setcurrenttransitionaction-1.0.0.jar ../$FOLD/obssuite_setcurrenttransitionaction.jar
cd ../setmute && mvn clean package
cd ../setmute && mvn clean package
mv target/obssuite_setmuteaction-1.0.0.jar ../$FOLD/obssuite_setmuteaction.jar
mv target/obssuite_setmuteaction-1.0.0.jar ../$FOLD/obssuite_setmuteaction.jar
cd ../setcurrentprofile && mvn clean package
cd ../setcurrentprofile && mvn clean package
mv target/obssuite_setcurrentprofileaction-1.0.0.jar ../$FOLD/obssuite_setcurrentprofileaction.jar
mv target/obssuite_setcurrentprofileaction-1.0.0.jar ../$FOLD/obssuite_setcurrentprofileaction.jar
cd ../setpreviewscene && mvn clean package
cd ../setpreviewscene && mvn clean package
mv target/obssuite_setpreviewsceneaction-1.0.0.jar ../$FOLD/obssuite_setpreviewsceneaction.jar
mv target/obssuite_setpreviewsceneaction-1.0.0.jar ../$FOLD/obssuite_setpreviewsceneaction.jar
cd ../setrecording && mvn clean package
cd ../setrecording && mvn clean package
mv target/obssuite_setrecordingaction-1.0.0.jar ../$FOLD/obssuite_setrecordingaction.jar
mv target/obssuite_setrecordingaction-1.0.0.jar ../$FOLD/obssuite_setrecordingaction.jar
cd ../setreplaybuffer && mvn clean package
cd ../setreplaybuffer && mvn clean package
mv target/obssuite_setreplaybufferaction-1.0.0.jar ../$FOLD/obssuite_setreplaybufferaction.jar
mv target/obssuite_setreplaybufferaction-1.0.0.jar ../$FOLD/obssuite_setreplaybufferaction.jar
cd ../setstreaming && mvn clean package
cd ../setstreaming && mvn clean package
mv target/obssuite_setstreamingaction-1.0.0.jar ../$FOLD/obssuite_setstreamingaction.jar
mv target/obssuite_setstreamingaction-1.0.0.jar ../$FOLD/obssuite_setstreamingaction.jar
cd ../setstudiomode && mvn clean package
cd ../setstudiomode && mvn clean package
mv target/obssuite_setstudiomodeaction-1.0.0.jar ../$FOLD/obssuite_setstudiomodeaction.jar
mv target/obssuite_setstudiomodeaction-1.0.0.jar ../$FOLD/obssuite_setstudiomodeaction.jar
cd ../setvolume && mvn clean package
cd ../setvolume && mvn clean package
mv target/obssuite_setvolumeaction-1.0.0.jar ../$FOLD/obssuite_setvolumeaction.jar
mv target/obssuite_setvolumeaction-1.0.0.jar ../$FOLD/obssuite_setvolumeaction.jar
popd || exit
popd || exit
}
}
playaudioclip() {
playaudioclip() {
pushd . || exit
pushd . || exit
cd playaudioclipaction && mvn clean package
cd playaudioclipaction && mvn clean package
mv target/playaudioclipaction-1.0.0.jar $FOLD/playaudioclipaction.jar
mv target/playaudioclipaction-1.0.0.jar $FOLD/playaudioclipaction.jar
popd || exit
popd || exit
}
}
runcommand() {
runcommand() {
pushd . || exit
pushd . || exit
cd runcommandaction && mvn clean package
cd runcommandaction && mvn clean package
mv target/runcommandaction-1.0.0.jar $FOLD/runcommandaction.jar
mv target/runcommandaction-1.0.0.jar $FOLD/runcommandaction.jar
popd || exit
popd || exit
}
}
textblock() {
textblock() {
pushd . || exit
pushd . || exit
cd textblockaction && mvn clean package
cd textblockaction && mvn clean package
mv target/textblockaction-1.0.0.jar $FOLD/textblockaction.jar
mv target/textblockaction-1.0.0.jar $FOLD/textblockaction.jar
popd || exit
popd || exit
}
}
twitter() {
twitter() {
pushd . || exit
pushd . || exit
cd twitteraction && mvn clean package
cd twitteraction && mvn clean package
mv target/twitteraction-1.0.0.jar $FOLD/twitteraction.jar
mv target/twitteraction-1.0.0.jar $FOLD/twitteraction.jar
popd || exit
popd || exit
}
}
twitchchat() {
twitchchat() {
pushd . || exit
pushd . || exit
cd twitch/twitch-chat-connect && mvn clean install package
cd twitch/twitch-chat-connect && mvn clean install package
mv target/twitch-chat-connect-1.0.0.jar ../$FOLD/twitch-chat-connect.jar
mv target/twitch-chat-connect-1.0.0.jar ../$FOLD/twitch-chat-connect.jar
cd ../send-channel-msg && mvn clean install package
cd ../send-channel-msg && mvn clean install package
mv target/twitch-send-channel-msg-1.0.0.jar ../$FOLD/twitch-send-channel-msg.jar
mv target/twitch-send-channel-msg-1.0.0.jar ../$FOLD/twitch-send-channel-msg.jar
cd ../clear-chat && mvn clean install package
cd ../clear-chat && mvn clean install package
mv target/twitch-clear-chat-1.0.0.jar ../$FOLD/twitch-clear-chat.jar
mv target/twitch-clear-chat-1.0.0.jar ../$FOLD/twitch-clear-chat.jar
cd ../set-color && mvn clean install package
cd ../set-color && mvn clean install package
mv target/twitch-set-color-1.0.0.jar ../$FOLD/twitch-set-color.jar
mv target/twitch-set-color-1.0.0.jar ../$FOLD/twitch-set-color.jar
cd ../whisper && mvn clean install package
cd ../whisper && mvn clean install package
mv target/twitch-whisper-1.0.0.jar ../$FOLD/twitch-whisper.jar
mv target/twitch-whisper-1.0.0.jar ../$FOLD/twitch-whisper.jar
cd ../unraid && mvn clean install package
cd ../unraid && mvn clean install package
mv target/twitch-unraid-1.0.0.jar ../$FOLD/twitch-unraid.jar
mv target/twitch-unraid-1.0.0.jar ../$FOLD/twitch-unraid.jar
cd ../unhost && mvn clean install package
cd ../unhost && mvn clean install package
mv target/twitch-unhost-1.0.0.jar ../$FOLD/twitch-unhost.jar
mv target/twitch-unhost-1.0.0.jar ../$FOLD/twitch-unhost.jar
cd ../add-stream-marker && mvn clean install package
cd ../add-stream-marker && mvn clean install package
mv target/twitch-add-stream-marker-1.0.0.jar ../$FOLD/twitch-add-stream-marker.jar
mv target/twitch-add-stream-marker-1.0.0.jar ../$FOLD/twitch-add-stream-marker.jar
cd ../host-channel && mvn clean install package
mv target/twitch-host-channel-1.0.0.jar ../$FOLD/twitch-host-channel.jar
popd || exit
popd || exit
}
}
websiteaction() {
websiteaction() {
pushd . || exit
pushd . || exit
cd websiteaction && mvn clean package
cd websiteaction && mvn clean package
mv target/websiteaction-1.0.0.jar $FOLD/websiteaction.jar
mv target/websiteaction-1.0.0.jar $FOLD/websiteaction.jar
popd || exit
popd || exit
}
}
case "$1" in
case "$1" in
hotkey)
hotkey)
hotkey
hotkey
;;
;;
mediakey)
mediakey)
mediakey
mediakey
;;
;;
playaudioclip)
playaudioclip)
playaudioclip
playaudioclip
;;
;;
runcommand)
runcommand)
runcommand
runcommand
;;
;;
textblock)
textblock)
textblock
textblock
;;
;;
twitter)
twitter)
twitter
twitter
;;
;;
website)
website)
website
website
;;
;;
obssuite)
obssuite)
obssuite
obssuite
;;
;;
twitchchat)
twitchchat)
twitchchat
twitchchat
;;
;;
*)
*)
# build all actions as default
# build all actions as default
hotkey
hotkey
mediakey
mediakey
obssuite
obssuite
playaudioclip
playaudioclip
runcommand
runcommand
textblock
textblock
twitter
twitter
twitchchat
twitchchat
website
website
;;
;;
esac
esac
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.stream-pi</groupId>
<artifactId>twitch-host-channel</artifactId>
<version>1.0.0</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<streamPiActionApiVersion>1.0.0</streamPiActionApiVersion>
<streamPiUtilVersion>1.0.0</streamPiUtilVersion>
<streamPiTwitchChatConnectVersion>1.0.0</streamPiTwitchChatConnectVersion>
<javaTwirkVersion>0.6.3</javaTwirkVersion>
</properties>
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>test-jar</id>
<phase>package</phase>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.stream-pi</groupId>
<artifactId>util</artifactId>
<version>${streamPiUtilVersion}</version>
</dependency>
<dependency>
<groupId>com.stream-pi</groupId>
<artifactId>action-api</artifactId>
<version>${streamPiActionApiVersion}</version>
</dependency>
<dependency>
<groupId>com.github.gikkman</groupId>
<artifactId>Java-Twirk</artifactId>
<version>${javaTwirkVersion}</version>
</dependency>
<dependency>
<groupId>com.stream-pi</groupId>
<artifactId>twitch-chat-connect</artifactId>
<version>${streamPiTwitchChatConnectVersion}</version>
</dependency>
</dependencies>
</project>
package hostchannel;
import com.gikk.twirk.Twirk;
import com.gikk.twirk.TwirkBuilder;
import com.stream_pi.action_api.actionproperty.property.Property;
import com.stream_pi.action_api.actionproperty.property.Type;
import com.stream_pi.action_api.normalaction.NormalAction;
import com.stream_pi.util.exception.StreamPiException;
import com.stream_pi.util.version.Version;
import connect.chat.TwitchChatCredentials;
public class HostChannelAction extends NormalAction
{
private final String channelKey = "channel_hc";
private final String channelToHostKey = "channel_to_host_hc";
private Twirk twirk;
public HostChannelAction()
{
setName("Host Channel");
setCategory("Twitch Chat");
setVisibilityInServerSettingsPane(false);
setAuthor("j4ckofalltrades");
setVersion(new Version(1, 0, 0));
setHelpLink("https://github.com/stream-pi/essentialactions#twitch-chat-integration");
}
@Override
public void initProperties() throws Exception
{
Property channel = new Property(channelKey, Type.STRING);
channel.setDisplayName("Channel");
channel.setDefaultValueStr("channel");
channel.setCanBeBlank(false);
Property channelToHost = new Property(channelToHostKey, Type.STRING);
channelToHost.setDisplayName("Channel to host");
channelToHost.setDefaultValueStr("channel_to_host");
channelToHost.setCanBeBlank(false);
addClientProperties(channel, channelToHost);
}
@Override
public void initAction() throws Exception
{
}
@Override
public void onActionClicked() throws Exception
{
final TwitchChatCredentials.ChatCredentials credentials = TwitchChatCredentials.getCredentials();
credentials.ensureCredentialsInitialized();
final String channel = getClientProperties().getSingleProperty(channelKey).getStringValue();
final String channelToHost = getClientProperties().getSingleProperty(channelToHostKey).getStringValue();
try
{
twirk = new TwirkBuilder(channel, credentials.getNickname(), credentials.getOauthToken()).build();
twirk.connect();
twirk.channelMessage(String.format("/host %s", channelToHost));
} catch (Exception ex)
{
throw new StreamPiException(
"Failed to host channel",
String.format("Could not host channel '%s', please try again.", channelToHost));
}
}
@Override
public void onShutDown() throws Exception
{
if (twirk != null) {
try
{
twirk.disconnect();
} catch (Exception ex) {
throw new StreamPiException("Twitch connection error", "Please try again.");
}
}
}
}
module com.stream_pi.twitch.hostchannelaction {
requires com.stream_pi.util;
requires com.stream_pi.action_api;
requires com.stream_pi.twitchchatconnectaction;
requires Java.Twirk;
provides com.stream_pi.action_api.normalaction.NormalAction with hostchannel.HostChannelAction;
}