Breaking changes:

'Gift': changed from class to enum, so now you can handle
incoming gifts in switch

`Events`
- new:
     onGiftComboFinished
- Removed:
      onGiftBrodcast
- Rename:
     onGiftMessage -> onGift
     onRoomPinMessage -> onRoomPin
     onRoomMessage -> onRoom
     onLinkMessage -> onLink
     onBarrageMessage -> onBarrage
     onPollMessage -> onPoll
     onShopMessage -> onShop
     onDetectMessage -> onDetect

`GiftManager`
   added:
      registerGift
      findById
      findByName
      getGifts
   removed:
      getActiveGifts
This commit is contained in:
JW
2023-10-12 03:41:36 +02:00
parent b18ca25865
commit 2d6111ef4d
48 changed files with 657 additions and 180 deletions

View File

@@ -22,8 +22,10 @@
*/
package io.github.jwdeveloper.tiktok.tools.collector;
import io.github.jwdeveloper.tiktok.messages.webcast.WebcastGiftMessage;
import io.github.jwdeveloper.tiktok.tools.collector.client.TikTokMessageCollectorClient;
import java.io.IOException;
import java.sql.SQLException;
public class RunCollector {
@@ -33,15 +35,48 @@ public class RunCollector {
//WebcastLinkMicBattleItemCard does streamer win battle?
public static void main(String[] args) throws SQLException {
public static void main(String[] args) throws SQLException, IOException {
TikTokMessageCollectorClient.create("messageCollector")
.addUser("bangbetmenygy")
.addUser("mr_cios")
.addUser("sleepstreamxxx")
.addUser("psychotropnazywo")
.addUser("accordionistka")
TikTokMessageCollectorClient.create("giftsCollector")
.addUser("cbcgod")
// .addUser("mr_cios")
// .addUser("cbcgod")
// .addUser("psychotropnazywo")
// .addUser("accordionistka")
.addEventFilter(WebcastGiftMessage.class)
.addOnBuilder(liveClientBuilder ->
{
liveClientBuilder.onGift((liveClient, event) ->
{
});
liveClientBuilder.onGiftCombo((liveClient, event) ->
{
});
liveClientBuilder.onGift((liveClient, event) ->
{
var sb = new StringBuilder();
sb.append("GIFT User: " + event.getUser().getDisplayName()+" ");
sb.append("Name: " + event.getGift().name() + " ");
sb.append("Combo: " + event.getCombo() + " ");
System.out.println(sb.toString());
});
liveClientBuilder.onGiftCombo((liveClient, event) ->
{
var sb = new StringBuilder();
sb.append("COMBO User: " + event.getUser().getDisplayName()+" ");
sb.append("Name: " + event.getGift().name() + " ");
sb.append("Combo: " + event.getCombo() + " ");
sb.append("Type: " + event.getComboState().name());
System.out.println(sb.toString());
});
})
.buildAndRun();
System.in.read();
}

View File

@@ -62,7 +62,7 @@ public class MessageCollector {
var queue = messages.get(name);
if (queue.size() > limit) {
queue.poll();
queue.remove();
}
queue.add(new MessageData(base64, host, LocalDateTime.now().toString()));

View File

@@ -34,6 +34,7 @@ import io.github.jwdeveloper.tiktok.tools.collector.tables.TikTokMessageModel;
import io.github.jwdeveloper.tiktok.tools.collector.tables.TikTokResponseModel;
import java.util.Base64;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;
@@ -46,8 +47,9 @@ public class TikTokClientFactory {
this.tikTokDatabase = tikTokDatabase;
}
public CompletableFuture<LiveClient> runClientAsync(String tiktokUser, Consumer<LiveClientBuilder> onBuilder) {
public CompletableFuture<LiveClient> runClientAsync(String tiktokUser, List<Class<?>> filters, Consumer<LiveClientBuilder> onBuilder) {
var builder = TikTokLive.newClient(tiktokUser);
var msgFilter = filters.stream().map(Class::getSimpleName).toList();
onBuilder.accept(builder);
return builder.onConnected((liveClient, event) ->
{
@@ -62,7 +64,12 @@ public class TikTokClientFactory {
responseModel.setHostName(liveClient.getRoomInfo().getHostName());
tikTokDatabase.insertResponse(responseModel);
liveClient.getLogger().info("Response");
for (var message : event.getResponse().getMessagesList()) {
for (var message : event.getResponse().getMessagesList())
{
if(msgFilter.size() > 0 && !msgFilter.contains(message.getMethod()))
{
continue;
}
messageCollector.addMessage(liveClient.getLogger(), liveClient.getRoomInfo().getHostName(), message);
}
})
@@ -71,7 +78,7 @@ public class TikTokClientFactory {
var eventName = event.getEvent().getClass().getSimpleName();
/*
if (filter.size() != 0 && !filter.contains(event.getEvent().getClass())) {
if (msgFilter.size() != 0 && !msgFilter.contains(event.getEvent().getClass())) {
return;
}*/
@@ -83,7 +90,7 @@ public class TikTokClientFactory {
model.setMessage(messageBinary);
// tikTokDatabase.insertMessage(model);
liveClient.getLogger().info("EVENT: [" + tiktokUser + "] " + eventName);
// liveClient.getLogger().info("EVENT: [" + tiktokUser + "] " + eventName);
})
.onError((liveClient, event) ->
{

View File

@@ -82,7 +82,7 @@ public class TikTokMessagessCollectorBuilder {
db.init();
var factory = new TikTokClientFactory(messageCollector, db);
for (var user : users) {
var client = factory.runClientAsync(user, onBuilder);
var client = factory.runClientAsync(user,filters, onBuilder);
client.thenAccept(liveClient ->
{
tiktokclients.add(liveClient);

View File

@@ -47,7 +47,15 @@ public class RunJsonTester {
sb.append(MessageUtil.getContent(event.getData()));
liveClient.getLogger().info(sb.toString());
// liveClient.getLogger().info(sb.toString());
}).
onGift((liveClient, event) ->
{
liveClient.getLogger().info("Gift event: "+event.toJson());
})
.onGiftCombo((liveClient, event) ->
{
liveClient.getLogger().info("GiftCombo event"+event.toJson());
})
.onError((liveClient, event) ->
{