mirror of
https://github.com/jwdeveloper/TikTokLiveJava.git
synced 2026-02-28 01:09:40 -05:00
Changes:
LiveRoomInfo
+ new method getConnectionState() getting current state of connection
+ ListenersManager
getBindingModels() renamed to getListeners()
+ Introducing documentation, each public interface got small documentation
+ New property in config .setSessionId()
+ New event: onReconnecting()
Bugs:
CommentEvent was throwing mapping exception
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package io.github.jwdeveloper.tiktok.tools.collector;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.TikTokLive;
|
||||
import io.github.jwdeveloper.tiktok.events.objects.Badge;
|
||||
import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveMessageException;
|
||||
import io.github.jwdeveloper.tiktok.tools.collector.db.TikTokDatabase;
|
||||
import io.github.jwdeveloper.tiktok.tools.collector.tables.ExceptionInfoModel;
|
||||
@@ -13,9 +12,10 @@ import java.util.ArrayList;
|
||||
import java.util.Base64;
|
||||
import java.util.List;
|
||||
|
||||
public class Main {
|
||||
public class RunCollector {
|
||||
|
||||
//https://protobuf-decoder.netlify.app/
|
||||
//https://streamdps.com/tiktok-widgets/gifts/
|
||||
/*
|
||||
mia_tattoo
|
||||
moniczkka
|
||||
@@ -25,8 +25,6 @@ public class Main {
|
||||
public static List<String> ignoredEvents;
|
||||
|
||||
public static void main(String[] args) throws SQLException {
|
||||
|
||||
|
||||
ignoredEvents = new ArrayList<>();
|
||||
//ignoredEvents = List.of("TikTokJoinEvent","TikTokLikeEvent");
|
||||
|
||||
@@ -34,27 +32,26 @@ public class Main {
|
||||
var db = new TikTokDatabase("test");
|
||||
db.init();
|
||||
|
||||
var errors = db.selectErrors();
|
||||
|
||||
var users = new ArrayList<String>();
|
||||
// users.add("mia_tattoo");
|
||||
// users.add("moniczkka");
|
||||
// users.add("besin1276");
|
||||
users.add("jackwoln");
|
||||
for(var user : users)
|
||||
{
|
||||
// users.add("mia_tattoo");
|
||||
// users.add("moniczkka");
|
||||
// users.add("besin1276");
|
||||
users.add("evequinte96");
|
||||
for (var user : users) {
|
||||
runTikTokLiveInstance(user, db);
|
||||
}
|
||||
}
|
||||
|
||||
private static void runTikTokLiveInstance(String tiktokUser, TikTokDatabase tikTokDatabase)
|
||||
{
|
||||
private static void runTikTokLiveInstance(String tiktokUser, TikTokDatabase tikTokDatabase) {
|
||||
|
||||
TikTokLive.newClient(tiktokUser)
|
||||
.onWebsocketMessage((liveClient, event) ->
|
||||
{
|
||||
var eventName = event.getEvent().getClass().getSimpleName();
|
||||
|
||||
if(ignoredEvents.contains(eventName))
|
||||
{
|
||||
if (ignoredEvents.contains(eventName)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -67,32 +64,32 @@ public class Main {
|
||||
.build();
|
||||
|
||||
tikTokDatabase.insertMessage(model);
|
||||
System.out.println("EVENT: ["+tiktokUser+"] " + eventName);
|
||||
System.out.println("EVENT: [" + tiktokUser + "] " + eventName);
|
||||
})
|
||||
.onError((liveClient, event) ->
|
||||
{
|
||||
var exception = event.getException();
|
||||
var exceptionContent = ExceptionInfoModel.getStackTraceAsString(exception);
|
||||
var builder = TikTokErrorModel.builder();
|
||||
var errorModel = new TikTokErrorModel();
|
||||
if (exception instanceof TikTokLiveMessageException ex) {
|
||||
builder.hostName(tiktokUser)
|
||||
.errorName(ex.messageName())
|
||||
.errorType("error-message")
|
||||
.exceptionContent(exceptionContent)
|
||||
.message(ex.messageToBase64())
|
||||
.response(ex.webcastResponseToBase64());
|
||||
errorModel.setHostName(tiktokUser);
|
||||
errorModel.setErrorName(ex.messageName());
|
||||
errorModel.setErrorType("error-message");
|
||||
errorModel.setExceptionContent(exceptionContent);
|
||||
errorModel.setMessage(ex.messageToBase64());
|
||||
errorModel.setResponse(ex.webcastResponseToBase64());
|
||||
} else {
|
||||
builder.hostName(tiktokUser)
|
||||
.errorName(exception.getClass().getSimpleName())
|
||||
.errorType("error-system")
|
||||
.exceptionContent(exceptionContent)
|
||||
.message("")
|
||||
.response("");
|
||||
errorModel.setHostName(tiktokUser);
|
||||
errorModel.setErrorName(exception.getClass().getSimpleName());
|
||||
errorModel.setErrorType("error-system");
|
||||
errorModel.setExceptionContent(exceptionContent);
|
||||
errorModel.setMessage("");
|
||||
errorModel.setResponse("");
|
||||
}
|
||||
|
||||
var error = builder.build();
|
||||
tikTokDatabase.insertError(error);
|
||||
System.out.println("ERROR: "+error.getErrorName());
|
||||
|
||||
tikTokDatabase.insertError(errorModel);
|
||||
System.out.println("ERROR: " + errorModel.getErrorName());
|
||||
exception.printStackTrace();
|
||||
|
||||
})
|
||||
@@ -5,11 +5,11 @@ import io.github.jwdeveloper.tiktok.tools.collector.tables.TikTokMessageModel;
|
||||
import org.jdbi.v3.core.Jdbi;
|
||||
import org.jdbi.v3.sqlobject.SqlObjectPlugin;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.SQLException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
public class TikTokDatabase
|
||||
{
|
||||
@@ -24,12 +24,13 @@ public class TikTokDatabase
|
||||
public void init() throws SQLException {
|
||||
var jdbcUrl ="jdbc:sqlite:"+database+".db";
|
||||
var connection = DriverManager.getConnection(jdbcUrl);
|
||||
Jdbi jdbi = Jdbi.create(jdbcUrl)
|
||||
var jdbi = Jdbi.create(jdbcUrl)
|
||||
.installPlugin(new SqlObjectPlugin());
|
||||
jdbi.useHandle(handle -> {
|
||||
handle.execute(SqlConsts.CREATE_MESSAGES_TABLE);
|
||||
handle.execute(SqlConsts.CREATE_ERROR_TABLE);
|
||||
});
|
||||
// jdbi.registerRowMapper(new TikTokErrorModelMapper());
|
||||
messagesTable = jdbi.onDemand(TikTokMessageModelDAO.class);
|
||||
errorTable = jdbi.onDemand(TikTokErrorModelDAO.class);
|
||||
}
|
||||
@@ -47,4 +48,9 @@ public class TikTokDatabase
|
||||
message.setCreatedAt(dateFormat.format(new Date()));
|
||||
errorTable.insertTikTokMessage(message);
|
||||
}
|
||||
|
||||
public List<TikTokErrorModel> selectErrors()
|
||||
{
|
||||
return errorTable.selectErrors();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,12 +2,21 @@ package io.github.jwdeveloper.tiktok.tools.collector.db;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.tools.collector.tables.TikTokErrorModel;
|
||||
|
||||
import org.jdbi.v3.sqlobject.config.RegisterBeanMapper;
|
||||
import org.jdbi.v3.sqlobject.customizer.BindBean;
|
||||
import org.jdbi.v3.sqlobject.statement.SqlQuery;
|
||||
import org.jdbi.v3.sqlobject.statement.SqlUpdate;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@RegisterBeanMapper(TikTokErrorModel.class)
|
||||
public interface TikTokErrorModelDAO
|
||||
{
|
||||
@SqlUpdate("INSERT INTO TikTokErrorModel (hostName, errorName, errorType, exceptionContent, message, response, createdAt) " +
|
||||
"VALUES (:hostName, :errorName, :errorType, :exceptionContent, :message, :response, :createdAt)")
|
||||
void insertTikTokMessage(@BindBean TikTokErrorModel message);
|
||||
|
||||
@SqlQuery("SELECT * FROM TikTokErrorModel")
|
||||
List<TikTokErrorModel> selectErrors();
|
||||
}
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
package io.github.jwdeveloper.tiktok.tools.collector.tables;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
public class TikTokErrorModel
|
||||
{
|
||||
private Integer id;
|
||||
|
||||
@@ -3,8 +3,6 @@ package io.github.jwdeveloper.tiktok.tools.collector.tables;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
package io.github.jwdeveloper.tiktok.tools.tester;
|
||||
|
||||
import com.google.protobuf.InvalidProtocolBufferException;
|
||||
import io.github.jwdeveloper.tiktok.ClientSettings;
|
||||
import io.github.jwdeveloper.tiktok.TikTokGiftManager;
|
||||
import io.github.jwdeveloper.tiktok.TikTokRoomInfo;
|
||||
import io.github.jwdeveloper.tiktok.events.messages.TikTokErrorEvent;
|
||||
import io.github.jwdeveloper.tiktok.handlers.TikTokEventObserver;
|
||||
import io.github.jwdeveloper.tiktok.handlers.TikTokMessageHandlerRegistration;
|
||||
import io.github.jwdeveloper.tiktok.messages.WebcastResponse;
|
||||
import io.github.jwdeveloper.tiktok.tools.collector.db.TikTokDatabase;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.Base64;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class RunTester {
|
||||
|
||||
public static void main(String[] args) throws SQLException, InvalidProtocolBufferException {
|
||||
|
||||
var db = new TikTokDatabase("test");
|
||||
db.init();
|
||||
var errors = db.selectErrors();
|
||||
|
||||
|
||||
var handler = getMessageHandler();
|
||||
for (var error : errors) {
|
||||
|
||||
var bytes = Base64.getDecoder().decode(error.getResponse());
|
||||
var response = WebcastResponse.parseFrom(bytes);
|
||||
handler.handle(null,response);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static TikTokMessageHandlerRegistration getMessageHandler()
|
||||
{
|
||||
var observer = new TikTokEventObserver();
|
||||
observer.<TikTokErrorEvent>subscribe(TikTokErrorEvent.class,(liveClient, event) ->
|
||||
{
|
||||
event.getException().printStackTrace();
|
||||
});
|
||||
var settings = new ClientSettings();
|
||||
//settings.setPrintMessageData(true);
|
||||
var logger = Logger.getGlobal();
|
||||
var roomInfo = new TikTokRoomInfo();
|
||||
var manager = new TikTokGiftManager();
|
||||
return new TikTokMessageHandlerRegistration(observer,settings,logger,manager,roomInfo);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user