Fix messages

- WebcastSocialMessage
  - ImDeleteMessage
This commit is contained in:
JW
2023-08-22 20:47:27 +02:00
parent 6254443755
commit 26c7db8f99
15 changed files with 70 additions and 30 deletions

View File

@@ -29,11 +29,6 @@ public class ClientSettings {
/// </summary> /// </summary>
private String clientLanguage; private String clientLanguage;
/// <summary>
/// Size for Buffer for Socket-Connection
/// </summary>
private int socketBufferSize;
/// <summary> /// <summary>
/// Whether to Retry if Connection Fails /// Whether to Retry if Connection Fails
@@ -69,8 +64,16 @@ public class ClientSettings {
/// </summary> /// </summary>
private boolean checkForUnparsedData; private boolean checkForUnparsedData;
/// <summary>
/// Tiktok user name
/// </summary>
private String hostName; private String hostName;
/// <summary>
/// Parameters used in requests to tiktok api
/// </summary>
private Map<String, Object> clientParameters; private Map<String, Object> clientParameters;
} }

View File

@@ -45,7 +45,6 @@ public class Constants {
clientSettings.setHandleExistingMessagesOnConnect(true); clientSettings.setHandleExistingMessagesOnConnect(true);
clientSettings.setDownloadGiftInfo(true); clientSettings.setDownloadGiftInfo(true);
clientSettings.setRetryOnConnectionFailure(true); clientSettings.setRetryOnConnectionFailure(true);
clientSettings.setSocketBufferSize(500_000);
clientSettings.setPrintToConsole(true); clientSettings.setPrintToConsole(true);
clientSettings.setLogLevel(Level.ALL); clientSettings.setLogLevel(Level.ALL);
clientSettings.setCheckForUnparsedData(false); clientSettings.setCheckForUnparsedData(false);

View File

@@ -6,12 +6,10 @@ import lombok.Getter;
@Getter @Getter
public class TikTokIMDeleteEvent extends TikTokEvent { public class TikTokIMDeleteEvent extends TikTokEvent {
private final String data1; private final byte[] data;
private final String data2;
public TikTokIMDeleteEvent(WebcastImDeleteMessage msg) { public TikTokIMDeleteEvent(WebcastImDeleteMessage msg) {
super(msg.getHeader());; super(msg.getHeader());
data1 = msg.getData1(); data = msg.getData().toByteArray();
data2 = msg.getData2(); }
}
} }

View File

@@ -749,8 +749,7 @@ message WebcastHourlyRankMessage {
// Message related to Chat-moderation? // Message related to Chat-moderation?
message WebcastImDeleteMessage { message WebcastImDeleteMessage {
MessageHeader header = 1; MessageHeader header = 1;
string data1 = 2; bytes data = 3;
string data2 = 3;
} }
message WebcastInRoomBannerMessage { message WebcastInRoomBannerMessage {

View File

@@ -8,6 +8,4 @@ public class TikTokLive
{ {
return new TikTokLiveClientBuilder(userName); return new TikTokLiveClientBuilder(userName);
} }
} }

View File

@@ -48,9 +48,6 @@ public class TikTokLiveClientBuilder implements TikTokEventBuilder<TikTokLiveCli
clientSettings.setClientLanguage(Constants.DefaultClientSettings().getClientLanguage()); clientSettings.setClientLanguage(Constants.DefaultClientSettings().getClientLanguage());
} }
if (clientSettings.getSocketBufferSize() < 500_000) {
clientSettings.setSocketBufferSize(Constants.DefaultClientSettings().getSocketBufferSize());
}
if (clientSettings.getHostName() == null || clientSettings.getHostName() .equals("")) { if (clientSettings.getHostName() == null || clientSettings.getHostName() .equals("")) {
@@ -60,6 +57,8 @@ public class TikTokLiveClientBuilder implements TikTokEventBuilder<TikTokLiveCli
var params = clientSettings.getClientParameters(); var params = clientSettings.getClientParameters();
params.put("app_language", clientSettings.getClientLanguage()); params.put("app_language", clientSettings.getClientLanguage());
params.put("webcast_language", clientSettings.getClientLanguage()); params.put("webcast_language", clientSettings.getClientLanguage());
logger.setLevel(clientSettings.getLogLevel());
} }
public LiveClient build() { public LiveClient build() {

View File

@@ -119,7 +119,7 @@ public class WebResponseHandler extends WebResponseHandlerBase {
var message = WebcastSocialMessage.parseFrom(msg.getBinary()); var message = WebcastSocialMessage.parseFrom(msg.getBinary());
String type = message.getHeader().getSocialData().getType(); String type = message.getHeader().getSocialData().getType();
Pattern pattern = Pattern.compile("pm_mt_guidance_viewer_([0-9]+)_share"); Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(type); Matcher matcher = pattern.matcher(type);
if (matcher.find()) { if (matcher.find()) {
var value = matcher.group(0); var value = matcher.group(0);

View File

@@ -78,7 +78,7 @@ public abstract class WebResponseHandlerBase {
} }
} }
private void handleSingleMessage(WebcastResponse.Message message) throws Exception { public void handleSingleMessage(WebcastResponse.Message message) throws Exception {
if (!handlers.containsKey(message.getType())) { if (!handlers.containsKey(message.getType())) {
tikTokEventHandler.publish(new TikTokUnhandledEvent(message)); tikTokEventHandler.publish(new TikTokUnhandledEvent(message));
return; return;

View File

@@ -1,9 +1,8 @@
package io.github.jwdeveloper.tiktok; package io.github.jwdeveloper.tiktok;
import com.google.protobuf.InvalidProtocolBufferException; import com.google.protobuf.InvalidProtocolBufferException;
import io.github.jwdeveloper.tiktok.messages.WebcastChatMessage; import io.github.jwdeveloper.tiktok.common.TikTokBaseTest;
import io.github.jwdeveloper.tiktok.messages.WebcastGiftMessage; import io.github.jwdeveloper.tiktok.messages.*;
import io.github.jwdeveloper.tiktok.messages.WebcastLikeMessage;
import org.junit.Test; import org.junit.Test;
public class ParseMessagesTests extends TikTokBaseTest public class ParseMessagesTests extends TikTokBaseTest
@@ -11,13 +10,13 @@ public class ParseMessagesTests extends TikTokBaseTest
@Test @Test
public void ShouldParseLikeMessage() throws InvalidProtocolBufferException { public void ShouldParseMessageWebcastLikeMessage() throws InvalidProtocolBufferException {
var bytes = getFileBytesUtf("LikeMessage.bin"); var bytes = getFileBytesUtf("LikeMessage.bin");
var message = WebcastLikeMessage.parseFrom(bytes); var message = WebcastLikeMessage.parseFrom(bytes);
} }
@Test @Test
public void ShouldParseGiftMessage() throws InvalidProtocolBufferException { public void ShouldParseMessageWebcastGiftMessage() throws InvalidProtocolBufferException {
var bytes = getFileBytesUtf("MessageWebcastGiftMessage.bin"); var bytes = getFileBytesUtf("MessageWebcastGiftMessage.bin");
var message = WebcastGiftMessage.parseFrom(bytes); var message = WebcastGiftMessage.parseFrom(bytes);
} }
@@ -27,5 +26,16 @@ public class ParseMessagesTests extends TikTokBaseTest
var message = WebcastChatMessage.parseFrom(bytes); var message = WebcastChatMessage.parseFrom(bytes);
} }
@Test
public void ShouldParseMessageWebcastImDeleteMessage() throws InvalidProtocolBufferException {
var bytes = getFileBytesUtf("MessageWebcastImDeleteMessage.bin");
var message = WebcastImDeleteMessage.parseFrom(bytes);
}
@Test
public void ShouldParseMessageWebcastSocialMessage() throws InvalidProtocolBufferException {
var bytes = getFileBytesUtf("MessageWebcastSocialMessage.bin");
var message = WebcastSocialMessage.parseFrom(bytes);
}
} }

View File

@@ -0,0 +1,32 @@
package io.github.jwdeveloper.tiktok;
import com.google.protobuf.InvalidProtocolBufferException;
import io.github.jwdeveloper.tiktok.common.TikTokBaseTest;
import io.github.jwdeveloper.tiktok.events.messages.*;
import io.github.jwdeveloper.tiktok.handlers.TikTokEventHandler;
import io.github.jwdeveloper.tiktok.handlers.WebResponseHandler;
import io.github.jwdeveloper.tiktok.messages.WebcastResponse;
import io.github.jwdeveloper.tiktok.messages.WebcastSocialMessage;
import io.github.jwdeveloper.tiktok.models.SocialTypes;
import org.junit.Before;
import org.junit.Test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static org.mockito.Mockito.mock;
public class WebResponseHandlerTests extends TikTokBaseTest
{
public static WebResponseHandler sut;
@Before
public void before()
{
var mockEventHandler = mock(TikTokEventHandler.class);
var mockGiftManager = mock(TikTokGiftManager.class);
sut = new WebResponseHandler(mockEventHandler, mockGiftManager);
}
}

View File

@@ -1,4 +1,4 @@
package io.github.jwdeveloper.tiktok; package io.github.jwdeveloper.tiktok.common;
import com.google.protobuf.InvalidProtocolBufferException; import com.google.protobuf.InvalidProtocolBufferException;
import io.github.jwdeveloper.tiktok.messages.WebcastWebsocketMessage; import io.github.jwdeveloper.tiktok.messages.WebcastWebsocketMessage;

View File

@@ -0,0 +1 @@
CjUKFldlYmNhc3RJbURlbGV0ZU1lc3NhZ2UQhZab+vyKvvJkGJKWhYz+o7DxZCC0sajzoTEwARoJhojH2ojIjaBk

View File

@@ -0,0 +1 @@
CskHMAFChgcaDgoJI2ZmZmZmZmZmIJADIp8GCAsSDgoJI2ZmZmZmZmZmIJADqgGJBgqGBgiFiNKIpZnf0WIaCm1yIEEuTC5GLkFK/wQKxgFodHRwczovL3AxNi1zaWduLXVzZWFzdDJhLnRpa3Rva2Nkbi5jb20vdG9zLXVzZWFzdDJhLWF2dC0wMDY4LWV1dHRwLzkxODE3OWQ4MzQ0YWZiYjk3OTAzYjYyMGQwOTg1ZGEzfnRwbHYtdGlrdG9rLXNocmluazo3Mjo3Mi53ZWJwP3gtZXhwaXJlcz0xNjkyOTAwMDAwJngtc2lnbmF0dXJlPUE0RmtOWDMlMkIxNiUyRjlxeENvR1JReEczNFRnRUUlM0QKtAFodHRwczovL3AxNi1zaWduLXVzZWFzdDJhLnRpa3Rva2Nkbi5jb20vdG9zLXVzZWFzdDJhLWF2dC0wMDY4LWV1dHRwLzkxODE3OWQ4MzQ0YWZiYjk3OTAzYjYyMGQwOTg1ZGEzfmM1XzEwMHgxMDAud2VicD94LWV4cGlyZXM9MTY5MjkwMDAwMCZ4LXNpZ25hdHVyZT1EOHlYQUhNVGxGeUR5N3dqT3BXRllrUlBBWnclM0QKtgFodHRwczovL3AxNi1zaWduLXVzZWFzdDJhLnRpa3Rva2Nkbi5jb20vdG9zLXVzZWFzdDJhLWF2dC0wMDY4LWV1dHRwLzkxODE3OWQ4MzQ0YWZiYjk3OTAzYjYyMGQwOTg1ZGEzfmM1XzEwMHgxMDAuanBlZz94LWV4cGlyZXM9MTY5MjkwMDAwMCZ4LXNpZ25hdHVyZT1IYkIwNk00N2Y0JTJGT29jUWxla0gwREdDdkY3MCUzRBJEMTAweDEwMC90b3MtdXNlYXN0MmEtYXZ0LTAwNjgtZXV0dHAvOTE4MTc5ZDgzNDRhZmJiOTc5MDNiNjIwZDA5ODVkYTOyAQgI9h8Qmw0YAboBAIICALICCy56YXBpc3l3YW5l8gJMTVM0d0xqQUJBQUFBYXdVMzNGbnBIYllkMHdra1djeC1DTnBzeDdXT0lqOXdtOTBwQ2tRUmZPekJuZVdZczdXT0plSm5GVU5kdFh0MwoecG1fbXRfZ3VpZGFuY2Vfdmlld2VyXzEwX3NoYXJlEjJ7MDp1c2VyfSBzaGFyZWQgdGhlIExJVkUgd2l0aCBtb3JlIHRoYW4gMTAgZnJpZW5kc1ACsAEFwAECChRXZWJjYXN0U29jaWFsTWVzc2FnZRCglsC+2OG+8mQYoJaZxvrevPJkIOTf0vOhMUgBuAECEoYGSv8ECsYBaHR0cHM6Ly9wMTYtc2lnbi11c2Vhc3QyYS50aWt0b2tjZG4uY29tL3Rvcy11c2Vhc3QyYS1hdnQtMDA2OC1ldXR0cC85MTgxNzlkODM0NGFmYmI5NzkwM2I2MjBkMDk4NWRhM350cGx2LXRpa3Rvay1zaHJpbms6NzI6NzIud2VicD94LWV4cGlyZXM9MTY5MjkwMDAwMCZ4LXNpZ25hdHVyZT1BNEZrTlgzJTJCMTYlMkY5cXhDb0dSUXhHMzRUZ0VFJTNECrQBaHR0cHM6Ly9wMTYtc2lnbi11c2Vhc3QyYS50aWt0b2tjZG4uY29tL3Rvcy11c2Vhc3QyYS1hdnQtMDA2OC1ldXR0cC85MTgxNzlkODM0NGFmYmI5NzkwM2I2MjBkMDk4NWRhM35jNV8xMDB4MTAwLndlYnA/eC1leHBpcmVzPTE2OTI5MDAwMDAmeC1zaWduYXR1cmU9RDh5WEFITVRsRnlEeTd3ak9wV0ZZa1JQQVp3JTNECrYBaHR0cHM6Ly9wMTYtc2lnbi11c2Vhc3QyYS50aWt0b2tjZG4uY29tL3Rvcy11c2Vhc3QyYS1hdnQtMDA2OC1ldXR0cC85MTgxNzlkODM0NGFmYmI5NzkwM2I2MjBkMDk4NWRhM35jNV8xMDB4MTAwLmpwZWc/eC1leHBpcmVzPTE2OTI5MDAwMDAmeC1zaWduYXR1cmU9SGJCMDZNNDdmNCUyRk9vY1FsZWtIMERHQ3ZGNzAlM0QSRDEwMHgxMDAvdG9zLXVzZWFzdDJhLWF2dC0wMDY4LWV1dHRwLzkxODE3OWQ4MzQ0YWZiYjk3OTAzYjYyMGQwOTg1ZGEzsgEIEJsNGAEI9h+6AQCCAgCyAgsuemFwaXN5d2FuZfICTE1TNHdMakFCQUFBQWF3VTMzRm5wSGJZZDB3a2tXY3gtQ05wc3g3V09Jajl3bTkwcENrUVJmT3pCbmVXWXM3V09KZUpuRlVOZHRYdDMIhYjSiKWZ39FiGgptciBBLkwuRi5BGAEgAyoCLTFAGQ==

View File

@@ -6,7 +6,7 @@ import java.io.IOException;
public class Main { public class Main {
public static String TEST_USER_SUBJECT = "stiflerhub"; public static String TEST_USER_SUBJECT = "mr_cios";
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
var client = TikTokLive.newClient(TEST_USER_SUBJECT) var client = TikTokLive.newClient(TEST_USER_SUBJECT)

View File

@@ -5,7 +5,7 @@ import java.io.IOException;
public class SimpleExample { public class SimpleExample {
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
// Username of someone who is currently live // Username of someone who is currently live
var tiktokUsername = "szwagierkaqueen"; var tiktokUsername = "mr_cios";
TikTokLive.newClient(tiktokUsername) TikTokLive.newClient(tiktokUsername)
.configure(settings -> .configure(settings ->