diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/settings/LiveClientSettings.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/settings/LiveClientSettings.java index e8c6a15..af8e992 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/settings/LiveClientSettings.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/settings/LiveClientSettings.java @@ -33,6 +33,13 @@ import java.util.logging.Level; @Data public class LiveClientSettings { + + /** + * Determines if gifts data is downloaded before TikTokLive starts, + * when `false` then client.giftManager() does not contain initial gifts + */ + private boolean fetchGifts; + /** * ISO-Language for Client */ diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLive.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLive.java index 941a3ef..cde7406 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLive.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLive.java @@ -93,6 +93,7 @@ public class TikTokLive { } + //I don't like it, but it is reasonable for now private static GiftsManager giftsManager; /** @@ -100,21 +101,18 @@ public class TikTokLive { * * @return GiftsManager */ - public static GiftsManager gifts() - { - if(giftsManager != null) - { + public static GiftsManager gifts() { + if (giftsManager != null) { return giftsManager; } - - try + synchronized (GiftsManager.class) { - giftsManager = new TikTokGiftsManager(requests().fetchGiftsData().getGifts()); - return giftsManager; - } catch (Exception ex) - { - throw ex; + if (giftsManager == null) + { + return new TikTokGiftsManager(requests().fetchGiftsData().getGifts()); + } } + return giftsManager; } diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java index 62cd1f1..306febc 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java @@ -58,6 +58,7 @@ public class TikTokLiveClientBuilder implements LiveClientBuilder { protected final List listeners; protected Consumer onCustomMappings; protected Logger logger; + protected GiftsManager giftsManager; public TikTokLiveClientBuilder(String userName) { this.clientSettings = LiveClientSettings.createDefault(); @@ -99,6 +100,7 @@ public class TikTokLiveClientBuilder implements LiveClientBuilder { httpSettings.getParams().put("webcast_language", clientSettings.getClientLanguage()); this.logger = LoggerFactory.create(clientSettings.getHostName(), clientSettings); + this.giftsManager = clientSettings.isFetchGifts() ? TikTokLive.gifts() : new TikTokGiftsManager(List.of()); } public LiveClient build() { @@ -112,8 +114,6 @@ public class TikTokLiveClientBuilder implements LiveClientBuilder { var httpClientFactory = new HttpClientFactory(clientSettings); var tikTokLiveHttpClient = new TikTokLiveHttpClient(httpClientFactory, clientSettings); - var gifts = tikTokLiveHttpClient.getGiftsData().getGifts(); - var giftsManager = new TikTokGiftsManager(gifts); var eventsMapper = createMapper(giftsManager, tiktokRoomInfo); var messageHandler = new TikTokLiveMessageHandler(tikTokEventHandler, eventsMapper); diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/gifts/TikTokGiftsManager.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/gifts/TikTokGiftsManager.java index 9d2a54f..763b710 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/gifts/TikTokGiftsManager.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/gifts/TikTokGiftsManager.java @@ -14,7 +14,8 @@ import java.util.stream.Collectors; public class TikTokGiftsManager implements GiftsManager { private final Map giftsByIdIndex; - public TikTokGiftsManager(List giftList) { + public TikTokGiftsManager(List giftList) + { giftsByIdIndex = giftList.stream().collect(Collectors.toConcurrentMap(Gift::getId, e -> e)); } diff --git a/Examples/src/main/java/io/github/jwdeveloper/tiktok/CollectorExample.java b/Examples/src/main/java/io/github/jwdeveloper/tiktok/CollectorExample.java index e75930e..98e52c4 100644 --- a/Examples/src/main/java/io/github/jwdeveloper/tiktok/CollectorExample.java +++ b/Examples/src/main/java/io/github/jwdeveloper/tiktok/CollectorExample.java @@ -23,7 +23,6 @@ package io.github.jwdeveloper.tiktok; - import io.github.jwdeveloper.tiktok.extension.collector.TikTokLiveCollector; import java.io.IOException; @@ -49,7 +48,7 @@ public class CollectorExample { collector.connectDatabase(); var users = List.of("tehila_723", "dino123597", "domaxyzx", "dash4214", "obserwacje_live"); - var sessionTag = "Tag1"; + Map additionalDataFields = Map.of("sessionTag", "ExampleTag"); for (var user : users) { TikTokLive.newClient(user) .configure(liveClientSettings -> @@ -60,8 +59,9 @@ public class CollectorExample { { event.getException().printStackTrace(); }) - .addListener(collector.newListener(Map.of("sessionTag", sessionTag), document -> + .addListener(collector.newListener(additionalDataFields, document -> { + //filtering document data before it is inserted to database if (document.get("dataType") == "message") { return false; } diff --git a/Examples/src/main/java/io/github/jwdeveloper/tiktok/CustomEventExample.java b/Examples/src/main/java/io/github/jwdeveloper/tiktok/CustomEventExample.java index d2d92e0..ec38858 100644 --- a/Examples/src/main/java/io/github/jwdeveloper/tiktok/CustomEventExample.java +++ b/Examples/src/main/java/io/github/jwdeveloper/tiktok/CustomEventExample.java @@ -44,7 +44,6 @@ public class CustomEventExample { { clientSettings.setPrintToConsole(true); }) - .onGift((liveClient, event) -> { if (event.getGift().getDiamondCost() > 100) diff --git a/Examples/src/main/java/io/github/jwdeveloper/tiktok/GiftsExample.java b/Examples/src/main/java/io/github/jwdeveloper/tiktok/GiftsExample.java index 732f436..bd56d3d 100644 --- a/Examples/src/main/java/io/github/jwdeveloper/tiktok/GiftsExample.java +++ b/Examples/src/main/java/io/github/jwdeveloper/tiktok/GiftsExample.java @@ -29,6 +29,8 @@ public class GiftsExample { public static void main(String[] args) { var giftsManager = TikTokLive.gifts(); + + var giftsList = giftsManager.toList(); for (var gift : giftsList) { System.out.println("Gift: " + gift); diff --git a/Examples/src/main/java/io/github/jwdeveloper/tiktok/SimpleExample.java b/Examples/src/main/java/io/github/jwdeveloper/tiktok/SimpleExample.java index 680f6de..ca45379 100644 --- a/Examples/src/main/java/io/github/jwdeveloper/tiktok/SimpleExample.java +++ b/Examples/src/main/java/io/github/jwdeveloper/tiktok/SimpleExample.java @@ -32,12 +32,13 @@ import java.time.Duration; import java.util.logging.Level; public class SimpleExample { - public static String TIKTOK_HOSTNAME = "dash4114"; + public static String TIKTOK_HOSTNAME = "kvadromama_marina1"; public static void main(String[] args) throws IOException { showLogo(); + var gifts = TikTokLive.gifts(); TikTokLive.newClient(SimpleExample.TIKTOK_HOSTNAME) .configure(clientSettings -> diff --git a/Tools-EventsCollector/pom.xml b/Tools-EventsCollector/pom.xml index a324743..c6e91f4 100644 --- a/Tools-EventsCollector/pom.xml +++ b/Tools-EventsCollector/pom.xml @@ -52,7 +52,7 @@ io.github.jwdeveloper.tiktok - Tools + Tools-ReadmeGenerator ${project.version} compile diff --git a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/client/MessagesManager.java b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/client/MessagesManager.java index 6963492..5859099 100644 --- a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/client/MessagesManager.java +++ b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/client/MessagesManager.java @@ -24,8 +24,8 @@ package io.github.jwdeveloper.tiktok.tools.collector.client; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; +import io.github.jwdeveloper.tiktok.FilesUtility; import io.github.jwdeveloper.tiktok.messages.webcast.WebcastResponse; -import io.github.jwdeveloper.tiktok.utils.FilesUtility; import io.github.jwdeveloper.tiktok.utils.JsonUtil; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/Tools-ReadmeGenerator/pom.xml b/Tools-ReadmeGenerator/pom.xml index 0348b03..2be5c92 100644 --- a/Tools-ReadmeGenerator/pom.xml +++ b/Tools-ReadmeGenerator/pom.xml @@ -23,12 +23,6 @@ - - io.github.jwdeveloper.tiktok - Tools - ${project.version} - compile - com.github.jwdeveloper.Descrabble Descrabble-Full @@ -44,7 +38,7 @@ io.github.jwdeveloper.tiktok Client - 1.3.0-Release + ${project.version} compile diff --git a/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/ListenerExampleGenerator.java b/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/ListenerExampleGenerator.java index bbc32e6..c85466d 100644 --- a/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/ListenerExampleGenerator.java +++ b/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/ListenerExampleGenerator.java @@ -22,7 +22,6 @@ */ package io.github.jwdeveloper.tiktok; -import io.github.jwdeveloper.tiktok.utils.FilesUtility; import java.util.regex.Pattern;