Compare commits

...

2 Commits

Author SHA1 Message Date
kohlerpop1
cfdced9645 Add direct method to provide sessionId and ttTargetIdc for sending chats from 1 client. 2025-10-06 23:08:10 -04:00
GitHub Action
7589a2ac4a Update version in pom.xml 2025-10-05 02:40:59 +00:00
12 changed files with 29 additions and 16 deletions

View File

@@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>TikTokLiveJava</artifactId> <artifactId>TikTokLiveJava</artifactId>
<groupId>io.github.jwdeveloper.tiktok</groupId> <groupId>io.github.jwdeveloper.tiktok</groupId>
<version>1.11.3-Release</version> <version>1.11.4-Release</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>API</artifactId> <artifactId>API</artifactId>

View File

@@ -66,5 +66,5 @@ public interface LiveHttpClient
LiveConnectionData.Response fetchLiveConnectionData(LiveConnectionData.Request request); LiveConnectionData.Response fetchLiveConnectionData(LiveConnectionData.Request request);
boolean sendChat(LiveRoomInfo roomInfo, String content); boolean sendChat(LiveRoomInfo roomInfo, String content, String sessionId, String ttTargetIdc);
} }

View File

@@ -102,4 +102,12 @@ public interface LiveClient {
* <p>We cannot fix this as it is a TikTok issue, not a library issue. * <p>We cannot fix this as it is a TikTok issue, not a library issue.
*/ */
boolean sendChat(String content); boolean sendChat(String content);
/**
* Send a chat message to the connected room
* @return true if successful, otherwise false
* @apiNote This is known to return true on some sessionIds despite failing!
* <p>We cannot fix this as it is a TikTok issue, not a library issue.
*/
boolean sendChat(String content, String sessionId, String ttTargetIdc);
} }

View File

@@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>TikTokLiveJava</artifactId> <artifactId>TikTokLiveJava</artifactId>
<groupId>io.github.jwdeveloper.tiktok</groupId> <groupId>io.github.jwdeveloper.tiktok</groupId>
<version>1.11.3-Release</version> <version>1.11.4-Release</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -199,7 +199,12 @@ public class TikTokLiveClient implements LiveClient
@Override @Override
public boolean sendChat(String content) { public boolean sendChat(String content) {
return httpClient.sendChat(roomInfo, content); return sendChat(content, clientSettings.getSessionId(), clientSettings.getTtTargetIdc());
}
@Override
public boolean sendChat(String content, String sessionId, String ttTargetIdc) {
return httpClient.sendChat(roomInfo, content, sessionId, ttTargetIdc);
} }
public void connectAsync(Consumer<LiveClient> onConnection) { public void connectAsync(Consumer<LiveClient> onConnection) {

View File

@@ -182,23 +182,23 @@ public class TikTokLiveHttpClient implements LiveHttpClient
} }
@Override @Override
public boolean sendChat(LiveRoomInfo roomInfo, String content) { public boolean sendChat(LiveRoomInfo roomInfo, String content, String sessionId, String ttTargetIdc) {
var proxyClientSettings = clientSettings.getHttpSettings().getProxyClientSettings(); var proxyClientSettings = clientSettings.getHttpSettings().getProxyClientSettings();
if (proxyClientSettings.isEnabled()) { if (proxyClientSettings.isEnabled()) {
while (proxyClientSettings.hasNext()) { while (proxyClientSettings.hasNext()) {
try { try {
return requestSendChat(roomInfo, content); return requestSendChat(roomInfo, content, sessionId, ttTargetIdc);
} catch (TikTokProxyRequestException ignored) {} } catch (TikTokProxyRequestException ignored) {}
} }
} }
return requestSendChat(roomInfo, content); return requestSendChat(roomInfo, content, sessionId, ttTargetIdc);
} }
public boolean requestSendChat(LiveRoomInfo roomInfo, String content) { public boolean requestSendChat(LiveRoomInfo roomInfo, String content, String sessionId, String ttTargetIdc) {
JsonObject body = new JsonObject(); JsonObject body = new JsonObject();
body.addProperty("content", content); body.addProperty("content", content);
body.addProperty("sessionId", clientSettings.getSessionId()); body.addProperty("sessionId", sessionId);
body.addProperty("ttTargetIdc", clientSettings.getTtTargetIdc()); body.addProperty("ttTargetIdc", ttTargetIdc);
body.addProperty("roomId", roomInfo.getRoomId()); body.addProperty("roomId", roomInfo.getRoomId());
HttpClientBuilder builder = httpFactory.client(clientSettings.isUseEulerstreamEnterprise() ? TIKTOK_CHAT_ENTERPRISE_URL : TIKTOK_CHAT_URL) HttpClientBuilder builder = httpFactory.client(clientSettings.isUseEulerstreamEnterprise() ? TIKTOK_CHAT_ENTERPRISE_URL : TIKTOK_CHAT_URL)
.withHeader("Content-Type", "application/json"); .withHeader("Content-Type", "application/json");

View File

@@ -64,7 +64,7 @@ public class TikTokLiveHttpOfflineClient implements LiveHttpClient {
} }
@Override @Override
public boolean sendChat(LiveRoomInfo roomInfo, String content) { public boolean sendChat(LiveRoomInfo roomInfo, String content, String sessionId, String ttTargetIdc) {
// DO NOTHING // DO NOTHING
return false; return false;
} }

View File

@@ -41,7 +41,7 @@
<parent> <parent>
<artifactId>TikTokLiveJava</artifactId> <artifactId>TikTokLiveJava</artifactId>
<groupId>io.github.jwdeveloper.tiktok</groupId> <groupId>io.github.jwdeveloper.tiktok</groupId>
<version>1.11.3-Release</version> <version>1.11.4-Release</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>io.github.jwdeveloper.tiktok</groupId> <groupId>io.github.jwdeveloper.tiktok</groupId>
<artifactId>TikTokLiveJava</artifactId> <artifactId>TikTokLiveJava</artifactId>
<version>1.11.3-Release</version> <version>1.11.4-Release</version>
</parent> </parent>

View File

@@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>TikTokLiveJava</artifactId> <artifactId>TikTokLiveJava</artifactId>
<groupId>io.github.jwdeveloper.tiktok</groupId> <groupId>io.github.jwdeveloper.tiktok</groupId>
<version>1.11.3-Release</version> <version>1.11.4-Release</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>extension-recorder</artifactId> <artifactId>extension-recorder</artifactId>

View File

@@ -7,7 +7,7 @@
<groupId>io.github.jwdeveloper.tiktok</groupId> <groupId>io.github.jwdeveloper.tiktok</groupId>
<artifactId>TikTokLiveJava</artifactId> <artifactId>TikTokLiveJava</artifactId>
<packaging>pom</packaging> <packaging>pom</packaging>
<version>1.11.3-Release</version> <version>1.11.4-Release</version>
<modules> <modules>
<module>API</module> <module>API</module>
<module>Client</module> <module>Client</module>

View File

@@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>TikTokLiveJava</artifactId> <artifactId>TikTokLiveJava</artifactId>
<groupId>io.github.jwdeveloper.tiktok</groupId> <groupId>io.github.jwdeveloper.tiktok</groupId>
<version>1.11.3-Release</version> <version>1.11.4-Release</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>