mirror of
https://github.com/jwdeveloper/TikTokLiveJava.git
synced 2026-02-27 16:59:39 -05:00
Compare commits
5 Commits
1.10.4-Rel
...
develop-1.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7e59099793 | ||
|
|
dd2f311539 | ||
|
|
ba69f5f5eb | ||
|
|
e9a91f5741 | ||
|
|
053bb5e3dc |
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>TikTokLiveJava</artifactId>
|
||||
<groupId>io.github.jwdeveloper.tiktok</groupId>
|
||||
<version>1.10.3-Release</version>
|
||||
<version>1.10.5-Release</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>API</artifactId>
|
||||
|
||||
@@ -90,11 +90,18 @@ public class LiveClientSettings {
|
||||
private boolean throwOnAgeRestriction;
|
||||
|
||||
/**
|
||||
* Optional: Sometimes not every messages from chat are send to TikTokLiveJava to fix this issue you can set sessionId
|
||||
* @see <a href="https://github.com/isaackogan/TikTok-Live-Connector#send-chat-messages">Documentation: How to obtain sessionId</a>
|
||||
* Optional: Sometimes not every messages from chat are send to TikTokLiveJava to fix this issue you can set sessionId.
|
||||
* <p>This requires {@link #ttTargetIdc} also being set correctly for sessionid to be effective.
|
||||
* @apiNote This cookie is supplied by <a href="https://www.tiktok.com">TikTok</a> and can be found in your browser cookies.
|
||||
*/
|
||||
private String sessionId;
|
||||
|
||||
/**
|
||||
* Used with {@link #sessionId} to verify it is valid and return extra chat messages and 18+ content.
|
||||
* @apiNote This cookie is supplied by <a href="https://www.tiktok.com">TikTok</a> and can be found in your browser cookies.
|
||||
*/
|
||||
private String ttTargetIdc;
|
||||
|
||||
/**
|
||||
* Optional: By default roomID is fetched before connect to live, but you can set it manually
|
||||
*/
|
||||
|
||||
@@ -51,9 +51,17 @@ public interface LiveClient {
|
||||
|
||||
/**
|
||||
* Disconnects the connection.
|
||||
* @param type
|
||||
* <p>0 - Normal - Initiates disconnection and returns
|
||||
* <p>1 - Disconnects blocking and returns after closure
|
||||
* <p>2 - Disconnects and kills connection to websocket
|
||||
* <p>Default {@link #disconnect()} is 0
|
||||
*/
|
||||
void disconnect();
|
||||
void disconnect(int type);
|
||||
|
||||
default void disconnect() {
|
||||
disconnect(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Use to manually invoke event
|
||||
|
||||
@@ -27,6 +27,6 @@ import io.github.jwdeveloper.tiktok.live.LiveClient;
|
||||
|
||||
public interface LiveSocketClient {
|
||||
void start(LiveConnectionData.Response webcastResponse, LiveClient tikTokLiveClient);
|
||||
void stop();
|
||||
void stop(int type);
|
||||
boolean isConnected();
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>TikTokLiveJava</artifactId>
|
||||
<groupId>io.github.jwdeveloper.tiktok</groupId>
|
||||
<version>1.10.3-Release</version>
|
||||
<version>1.10.5-Release</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
||||
@@ -153,9 +153,9 @@ public class TikTokLiveClient implements LiveClient
|
||||
tikTokEventHandler.publish(this, new TikTokRoomInfoEvent(roomInfo));
|
||||
}
|
||||
|
||||
public void disconnect() {
|
||||
public void disconnect(int type) {
|
||||
if (webSocketClient.isConnected())
|
||||
webSocketClient.stop();
|
||||
webSocketClient.stop(type);
|
||||
if (!roomInfo.hasConnectionState(ConnectionState.DISCONNECTED))
|
||||
setState(ConnectionState.DISCONNECTED);
|
||||
}
|
||||
|
||||
@@ -113,6 +113,7 @@ public class TikTokLiveHttpClient implements LiveHttpClient
|
||||
.withParam("uniqueId", request.getUserName())
|
||||
.withParam("sourceType", "54") //MAGIC NUMBER, WHAT 54 means?
|
||||
.withCookie("sessionid", clientSettings.getSessionId())
|
||||
.withCookie("tt-target-idc", clientSettings.getTtTargetIdc())
|
||||
.build()
|
||||
.toJsonResponse();
|
||||
|
||||
@@ -141,6 +142,7 @@ public class TikTokLiveHttpClient implements LiveHttpClient
|
||||
var result = httpFactory.client(url)
|
||||
.withParam("room_id", request.getRoomId())
|
||||
.withCookie("sessionid", clientSettings.getSessionId())
|
||||
.withCookie("tt-target-idc", clientSettings.getTtTargetIdc())
|
||||
.build()
|
||||
.toJsonResponse();
|
||||
|
||||
@@ -197,6 +199,8 @@ public class TikTokLiveHttpClient implements LiveHttpClient
|
||||
.withParam("client", "ttlive-java")
|
||||
.withParam("room_id", room_id);
|
||||
|
||||
if (clientSettings.getSessionId() != null) // Allows receiving of all comments and Subscribe Events
|
||||
builder.withParam("session_id", clientSettings.getSessionId());
|
||||
if (clientSettings.getApiKey() != null)
|
||||
builder.withParam("apiKey", clientSettings.getApiKey());
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ import io.github.jwdeveloper.tiktok.data.settings.*;
|
||||
import io.github.jwdeveloper.tiktok.exceptions.*;
|
||||
import io.github.jwdeveloper.tiktok.live.*;
|
||||
import org.java_websocket.client.WebSocketClient;
|
||||
import org.java_websocket.framing.CloseFrame;
|
||||
|
||||
import javax.net.ssl.*;
|
||||
import java.net.Proxy;
|
||||
@@ -56,18 +57,18 @@ public class TikTokWebSocketClient implements LiveSocketClient {
|
||||
@Override
|
||||
public void start(LiveConnectionData.Response connectionData, LiveClient liveClient) {
|
||||
if (isConnected())
|
||||
stop();
|
||||
stop(0);
|
||||
|
||||
messageHandler.handle(liveClient, connectionData.getWebcastResponse());
|
||||
|
||||
var headers = new HashMap<>(clientSettings.getHttpSettings().getHeaders());
|
||||
headers.put("Cookie", connectionData.getWebsocketCookies());
|
||||
webSocketClient = new TikTokWebSocketListener(connectionData.getWebsocketUrl(),
|
||||
headers,
|
||||
clientSettings.getHttpSettings().getTimeout().toMillisPart(),
|
||||
messageHandler,
|
||||
tikTokEventHandler,
|
||||
liveClient);
|
||||
headers,
|
||||
clientSettings.getHttpSettings().getTimeout().toMillisPart(),
|
||||
messageHandler,
|
||||
tikTokEventHandler,
|
||||
liveClient);
|
||||
|
||||
ProxyClientSettings proxyClientSettings = clientSettings.getHttpSettings().getProxyClientSettings();
|
||||
if (proxyClientSettings.isEnabled() && proxyClientSettings.isAllowWebsocket())
|
||||
@@ -128,9 +129,19 @@ public class TikTokWebSocketClient implements LiveSocketClient {
|
||||
}
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
public void stop(int type) {
|
||||
if (isConnected()) {
|
||||
webSocketClient.close();
|
||||
switch (type) {
|
||||
case 1 -> {
|
||||
try {
|
||||
webSocketClient.closeBlocking();
|
||||
} catch (InterruptedException e) {
|
||||
throw new TikTokLiveException("Failed to stop the websocket");
|
||||
}
|
||||
}
|
||||
case 2 -> webSocketClient.closeConnection(CloseFrame.NORMAL, "");
|
||||
default -> webSocketClient.close();
|
||||
}
|
||||
heartbeatTask.stop();
|
||||
}
|
||||
webSocketClient = null;
|
||||
|
||||
@@ -44,7 +44,7 @@ public class TikTokWebSocketOfflineClient implements LiveSocketClient {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
public void stop(int type) {
|
||||
if (liveClient != null)
|
||||
handler.publish(liveClient, new TikTokDisconnectedEvent("Stopping"));
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
<parent>
|
||||
<artifactId>TikTokLiveJava</artifactId>
|
||||
<groupId>io.github.jwdeveloper.tiktok</groupId>
|
||||
<version>1.10.3-Release</version>
|
||||
<version>1.10.5-Release</version>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>io.github.jwdeveloper.tiktok</groupId>
|
||||
<artifactId>TikTokLiveJava</artifactId>
|
||||
<version>1.10.3-Release</version>
|
||||
<version>1.10.5-Release</version>
|
||||
</parent>
|
||||
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>TikTokLiveJava</artifactId>
|
||||
<groupId>io.github.jwdeveloper.tiktok</groupId>
|
||||
<version>1.10.3-Release</version>
|
||||
<version>1.10.5-Release</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>extension-recorder</artifactId>
|
||||
|
||||
2
pom.xml
2
pom.xml
@@ -7,7 +7,7 @@
|
||||
<groupId>io.github.jwdeveloper.tiktok</groupId>
|
||||
<artifactId>TikTokLiveJava</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<version>1.10.3-Release</version>
|
||||
<version>1.10.5-Release</version>
|
||||
<modules>
|
||||
<module>API</module>
|
||||
<module>Client</module>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>TikTokLiveJava</artifactId>
|
||||
<groupId>io.github.jwdeveloper.tiktok</groupId>
|
||||
<version>1.10.3-Release</version>
|
||||
<version>1.10.5-Release</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user