From 7621e321411dcfeb5ee3758b23a5fb712e0a6bed Mon Sep 17 00:00:00 2001 From: JW Date: Thu, 12 Oct 2023 05:28:06 +0200 Subject: [PATCH] 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 --- .../data/events/common/TikTokEmptyEvent.java | 22 +++++ .../events/gift/TikTokGiftComboEvent.java | 10 +-- .../jwdeveloper/tiktok/data/models/Text.java | 2 +- .../data/models/gifts/GiftSendType.java | 22 +++++ .../tiktok/data/models/users/User.java | 5 +- .../jwdeveloper/tiktok/utils/Stopwatch.java | 22 +++++ Client/pom.xml | 13 +-- .../events/TikTokGiftEventHandler.java | 22 +++++ .../tiktok/http/TikTokApiService.java | 4 +- .../mappers/TikTokGenericEventMapper.java | 22 +++++ .../jwdeveloper/tiktok/ListenerExample.java | 7 +- .../tiktok/ListenerExample$1.class | Bin 983 -> 983 bytes Tools-EventsCollector/pom.xml | 2 +- .../tiktok/tools/collector/RunCollector.java | 4 +- .../tiktok/tools/collector/RunCollector.class | Bin 5206 -> 5206 bytes Tools-EventsWebViewer/pom.xml | 4 +- .../jwdeveloper/tiktok/CodeExample.java | 79 +++++++++--------- .../tiktok/CodeExamplesGenerator.java | 72 ++++++++++++++++ .../tiktok/EventsInfoGenerator.java | 8 +- .../tiktok/ListenerExampleGenerator.java | 47 +++++++++++ .../jwdeveloper/tiktok/ReadmeGenerator.java | 38 ++++----- .../src/main/resources/template.md | 11 ++- 22 files changed, 317 insertions(+), 99 deletions(-) create mode 100644 Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/CodeExamplesGenerator.java create mode 100644 Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/ListenerExampleGenerator.java diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/common/TikTokEmptyEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/common/TikTokEmptyEvent.java index bb51d4e..f0b0b5b 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/common/TikTokEmptyEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/common/TikTokEmptyEvent.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ package io.github.jwdeveloper.tiktok.data.events.common; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/gift/TikTokGiftComboEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/gift/TikTokGiftComboEvent.java index 2363fbe..cbc81ca 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/gift/TikTokGiftComboEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/gift/TikTokGiftComboEvent.java @@ -35,11 +35,11 @@ import lombok.Getter; * * @see GiftSendType it has 3 states * - * Example when user sends gift with combo - * Combo: 1 -> comboState = GiftSendType.Begin - * Combo: 4 -> comboState = GiftSendType.Active - * Combo: 8 -> comboState = GiftSendType.Active - * Combo: 12 -> comboState = GiftSendType.Finsihed + *

Example when user sends gift with combo

+ *

>Combo: 1 -> comboState = GiftSendType.Begin

+ *

Combo: 4 -> comboState = GiftSendType.Active

+ *

Combo: 8 -> comboState = GiftSendType.Active

+ *

Combo: 12 -> comboState = GiftSendType.Finsihed

* * Remember if comboState is Finsihed both TikTokGiftComboEvent and TikTokGiftEvent event gets triggered */ diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/models/Text.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/models/Text.java index bb467e7..02e3d98 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/models/Text.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/models/Text.java @@ -108,7 +108,7 @@ public class Text { @Override public String getText() { - return user.getDisplayName(); + return user.getProfileName(); } } diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/models/gifts/GiftSendType.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/models/gifts/GiftSendType.java index 3a1b6c7..f6cac7c 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/models/gifts/GiftSendType.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/models/gifts/GiftSendType.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ package io.github.jwdeveloper.tiktok.data.models.gifts; public enum GiftSendType diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/models/users/User.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/models/users/User.java index 28ea7b7..0b331f3 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/models/users/User.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/models/users/User.java @@ -27,7 +27,6 @@ import io.github.jwdeveloper.tiktok.data.models.Picture; import io.github.jwdeveloper.tiktok.messages.webcast.WebcastEnvelopeMessage; import lombok.AccessLevel; import lombok.Getter; -import lombok.Setter; import java.util.Arrays; import java.util.HashSet; @@ -38,7 +37,7 @@ import java.util.Set; public class User { private final Long id; private final String name; - private String displayName; + private String profileName; private Picture picture; private long following; private long followers; @@ -124,7 +123,7 @@ public class User { public User(io.github.jwdeveloper.tiktok.messages.data.User user) { this(user.getId(), user.getDisplayId(), Picture.map(user.getAvatarThumb())); - displayName = user.getNickname(); + profileName = user.getNickname(); following = user.getFollowInfo().getFollowingCount(); followers = user.getFollowInfo().getFollowerCount(); badges = user.getBadgeListList().stream().map(Badge::map).toList(); diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/utils/Stopwatch.java b/API/src/main/java/io/github/jwdeveloper/tiktok/utils/Stopwatch.java index 22e2e48..4e30ceb 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/utils/Stopwatch.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/utils/Stopwatch.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ package io.github.jwdeveloper.tiktok.utils; public class Stopwatch { diff --git a/Client/pom.xml b/Client/pom.xml index 4009d70..e48ce4d 100644 --- a/Client/pom.xml +++ b/Client/pom.xml @@ -24,11 +24,7 @@ ${project.version} compile - - org.modelmapper - modelmapper - 3.0.0 - + com.google.protobuf protobuf-java @@ -45,12 +41,7 @@ Java-WebSocket 1.5.4 - - org.slf4j - slf4j-simple - 2.0.7 - runtime - + diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/events/TikTokGiftEventHandler.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/events/TikTokGiftEventHandler.java index 29d1238..06a47ba 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/events/TikTokGiftEventHandler.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/events/TikTokGiftEventHandler.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ package io.github.jwdeveloper.tiktok.handlers.events; import io.github.jwdeveloper.tiktok.data.events.common.TikTokEvent; diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokApiService.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokApiService.java index 7051565..f95d30f 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokApiService.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokApiService.java @@ -87,7 +87,9 @@ public class TikTokApiService { String html; try { html = tiktokHttpClient.getLivestreamPage(userName); - } catch (Exception e) { + } + catch (Exception e) + { throw new TikTokLiveRequestException("Failed to fetch room id from WebCast, see stacktrace for more info.", e); } diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokGenericEventMapper.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokGenericEventMapper.java index b517637..bf564b2 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokGenericEventMapper.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokGenericEventMapper.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ package io.github.jwdeveloper.tiktok.mappers; import io.github.jwdeveloper.tiktok.data.events.common.TikTokEvent; diff --git a/Examples/src/main/java/io/github/jwdeveloper/tiktok/ListenerExample.java b/Examples/src/main/java/io/github/jwdeveloper/tiktok/ListenerExample.java index 67b3b04..19fccb4 100644 --- a/Examples/src/main/java/io/github/jwdeveloper/tiktok/ListenerExample.java +++ b/Examples/src/main/java/io/github/jwdeveloper/tiktok/ListenerExample.java @@ -34,7 +34,9 @@ import io.github.jwdeveloper.tiktok.utils.ConsoleColors; import java.io.IOException; -public class ListenerExample { +public class ListenerExample +{ + // /** * * Listeners are an alternative way of handling events. @@ -84,7 +86,7 @@ public class ListenerExample { public void onGift(LiveClient liveClient, TikTokGiftEvent event) { var message = switch (event.getGift()) { case ROSE -> "Thanks :)"; - case APPETIZERS -> ":$"; + case APPETIZERS -> ":OO"; case APRIL -> ":D"; case TIKTOK -> ":P"; case CAP -> ":F"; @@ -100,6 +102,7 @@ public class ListenerExample { } + // private static void showLogo() { System.out.println(ConsoleColors.GREEN+""" diff --git a/Examples/target/classes/io/github/jwdeveloper/tiktok/ListenerExample$1.class b/Examples/target/classes/io/github/jwdeveloper/tiktok/ListenerExample$1.class index e1a702d8c8a04ee0917c7da787c76d7370f7e0ee..0bc82c076e67a9eb6fdbc818bf86a044023ba837 100644 GIT binary patch delta 13 Ucmcc4ew}?oBQs<8 io.github.jwdeveloper.tiktok Tools - 0.0.25-Release + ${project.version} compile diff --git a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/RunCollector.java b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/RunCollector.java index 72c5730..fd47545 100644 --- a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/RunCollector.java +++ b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/RunCollector.java @@ -59,7 +59,7 @@ public class RunCollector { liveClientBuilder.onGift((liveClient, event) -> { var sb = new StringBuilder(); - sb.append("GIFT User: " + event.getUser().getDisplayName()+" "); + sb.append("GIFT User: " + event.getUser().getProfileName()+" "); sb.append("Name: " + event.getGift().name() + " "); sb.append("Combo: " + event.getCombo() + " "); System.out.println(sb.toString()); @@ -67,7 +67,7 @@ public class RunCollector { liveClientBuilder.onGiftCombo((liveClient, event) -> { var sb = new StringBuilder(); - sb.append("COMBO User: " + event.getUser().getDisplayName()+" "); + sb.append("COMBO User: " + event.getUser().getProfileName()+" "); sb.append("Name: " + event.getGift().name() + " "); sb.append("Combo: " + event.getCombo() + " "); sb.append("Type: " + event.getComboState().name()); diff --git a/Tools-EventsCollector/target/classes/io/github/jwdeveloper/tiktok/tools/collector/RunCollector.class b/Tools-EventsCollector/target/classes/io/github/jwdeveloper/tiktok/tools/collector/RunCollector.class index 784b75945a23bd38f3c05ef887a0635ffaf7763c..fdd408f6794802bce6a097f071e0b975757c2aaf 100644 GIT binary patch delta 20 bcmcbnaZO``6dQX$QGQxxPU>bwHd8(TP-X_g delta 20 bcmcbnaZO``6dSusW^qAIV&!H 4.0.0 Tools-EventsWebViewer - 0.0.1-SNAPSHOT - Demo project for Spring Boot io.javalin @@ -25,7 +23,7 @@ io.github.jwdeveloper.tiktok Tools-EventsCollector - 0.0.25-Release + ${project.version} compile diff --git a/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/CodeExample.java b/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/CodeExample.java index 4f4e7a0..bbef55e 100644 --- a/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/CodeExample.java +++ b/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/CodeExample.java @@ -22,54 +22,56 @@ */ package io.github.jwdeveloper.tiktok; -import io.github.jwdeveloper.tiktok.data.models.gifts.Gift; - import java.time.Duration; import java.util.logging.Level; -public class CodeExample -{ - public static void main(String[] args) - { +public class CodeExample { + public static void main(String[] args) { TikTokLive.newClient("mrBeast") - .onGift((liveClient, event) -> - { - System.out.println("Thank you for Money!"); - }) - .buildAndConnect(); - } - - - - public static void codeExample() - { - TikTokLive.newClient("bangbetmenygy") .onGift((liveClient, event) -> { - if(event.getGift() == Gift.ROSE) - { - liveClient.getLogger().info("Rose from "+event.getUser().getDisplayName()); - return; - } - liveClient.getLogger().info("Thank you for "+event.getGift().getName()); - }) - .onJoin((liveClient, event) -> - { - liveClient.getLogger().info("Hello "+event.getUser().getDisplayName()); - }) - .onConnected((liveClient, event) -> - { - liveClient.getLogger().info("Connected to live "); - }) - .onError((liveClient, event) -> - { - liveClient.getLogger().info("ERROR! "+event.getException().getMessage()); + System.out.println("Thank you for Money!"); }) .buildAndConnect(); } - public static void configExample() - { + + public static void codeExample() { + // + TikTokLive.newClient("bangbetmenygy") + .onGift((liveClient, event) -> + { + String message = switch (event.getGift()) { + case ROSE -> "ROSE!"; + case GG -> "GOOD GAME"; + case TIKTOK -> "Ye"; + case CORGI -> "Nice gift"; + default -> "Thank you for " + event.getGift().getName(); + }; + System.out.println(event.getUser().getProfileName() + " sends " + message); + }) + .onGiftCombo((liveClient, event) -> + { + System.out.println(event.getComboState()+ " " + event.getCombo() + " " + event.getGift().getName()); + }) + .onJoin((liveClient, event) -> + { + System.out.println(event.getUser().getProfileName() + "Hello on my stream! "); + }) + .onConnected((liveClient, event) -> + { + System.out.println("Connected to live "); + }) + .onError((liveClient, event) -> + { + System.out.println("Error! " + event.getException().getMessage()); + }) + .buildAndConnect(); + // + } + + public static void configExample() { + // TikTokLive.newClient("bangbetmenygy") .configure((settings) -> { @@ -92,6 +94,7 @@ public class CodeExample settings.setRoomId("XXXXXXXXXXXXXXXXX"); }) .buildAndConnect(); + // } diff --git a/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/CodeExamplesGenerator.java b/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/CodeExamplesGenerator.java new file mode 100644 index 0000000..dbe6740 --- /dev/null +++ b/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/CodeExamplesGenerator.java @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package io.github.jwdeveloper.tiktok; + +import io.github.jwdeveloper.tiktok.utils.FilesUtility; +import io.github.jwdeveloper.tiktok.utils.TemplateUtility; + +import java.util.HashMap; +import java.util.regex.Pattern; + +public class CodeExamplesGenerator { + public static void main(String[] args) { + var result = new CodeExamplesGenerator().run(); + System.out.println(result); + } + + public String run() { + + var content = FilesUtility.loadFileContent("C:\\Users\\ja\\IdeaProjects\\TikTokLiveJava\\Tools-ReadmeGenerator\\src\\main\\java\\io\\github\\jwdeveloper\\tiktok\\CodeExample.java"); + var p = "(.*?)"; + var r = Pattern.compile(p, Pattern.DOTALL); + var m = r.matcher(content); + + + var pattern = """ + ```java + {{code}} + ``` + 3. Configure (optional) + + ```java + {{config}} + ``` + """; + + + var values = new HashMap(); + m.find(); + var code = m.group(0) + .replace("", "") + .replace("// ", "") + .replaceAll("(?m)^ {8}", ""); + values.put("code", code); + + m.find(); + values.put("config", m.group(1)); + var result = TemplateUtility.generateTemplate(pattern, values); + + + return result; + } +} diff --git a/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/EventsInfoGenerator.java b/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/EventsInfoGenerator.java index fd6dd59..b171415 100644 --- a/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/EventsInfoGenerator.java +++ b/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/EventsInfoGenerator.java @@ -82,11 +82,15 @@ public class EventsInfoGenerator { variables.put("method-name", dto.getMethodName()); variables.put("content", doc); variables.put("event-name", dto.getEventClazz().getSimpleName()); + + var baseUrl = "https://github.com/jwdeveloper/TikTokLiveJava/blob/master/API/src/main/java/"; + baseUrl += dto.getEventClazz().getPackageName().replace(".","/"); + baseUrl += "/"+dto.getEventClazz().getSimpleName()+".java"; + variables.put("event-file-url",baseUrl); var temp = """ - - ## {{method-name}} [{{event-name}}](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + ## {{method-name}} [{{event-name}}]({{event-file-url}}) {{content}} 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 new file mode 100644 index 0000000..bbc32e6 --- /dev/null +++ b/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/ListenerExampleGenerator.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package io.github.jwdeveloper.tiktok; + +import io.github.jwdeveloper.tiktok.utils.FilesUtility; + +import java.util.regex.Pattern; + +public class ListenerExampleGenerator +{ + public static void main(String[] arg) + { + var result = new ListenerExampleGenerator(); + System.out.println(result); + } + + + public String run() + { + var content = FilesUtility.loadFileContent("C:\\Users\\ja\\IdeaProjects\\TikTokLiveJava\\Examples\\src\\main\\java\\io\\github\\jwdeveloper\\tiktok\\ListenerExample.java"); + var p = "(.*?)"; + var r = Pattern.compile(p, Pattern.DOTALL); + var m = r.matcher(content); + m.find(); + return m.group(1); + } +} diff --git a/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/ReadmeGenerator.java b/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/ReadmeGenerator.java index 198f20f..b5a1d29 100644 --- a/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/ReadmeGenerator.java +++ b/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/ReadmeGenerator.java @@ -26,48 +26,38 @@ import io.github.jwdeveloper.tiktok.utils.FilesUtility; import io.github.jwdeveloper.tiktok.utils.TemplateUtility; import java.util.HashMap; -import java.util.regex.Pattern; -public class ReadmeGenerator -{ - public static void main(String[] args) - { +public class ReadmeGenerator { + public static void main(String[] args) { var generator = new ReadmeGenerator(); generator.generate(); } - public void generate() - { - var template = FilesUtility.getFileFromResource(ReadmeGenerator.class,"template.md"); - var variables = new HashMap(); + + public void generate() { + var template = FilesUtility.getFileFromResource(ReadmeGenerator.class, "template.md"); + var variables = new HashMap(); variables.put("version", getCurrentVersion()); - - var exampleCodePath = "C:\\Users\\ja\\IdeaProjects\\TikTokLiveJava\\Examples\\src\\main\\java\\io\\github\\jwdeveloper\\tiktok\\SimpleExample.java"; - variables.put("code-content", getCodeExample(exampleCodePath)); - + variables.put("code-content", new CodeExamplesGenerator().run()); variables.put("events-content", new EventsInfoGenerator().run()); - - var listenerExamplePath = "C:\\Users\\ja\\IdeaProjects\\TikTokLiveJava\\Examples\\src\\main\\java\\io\\github\\jwdeveloper\\tiktok\\ListenerExample.java"; - // variables.put("listener-content", getCodeExample(listenerExamplePath)); - + variables.put("listener-content",new ListenerExampleGenerator().run()); template = TemplateUtility.generateTemplate(template, variables); var outputPath = "C:\\Users\\ja\\IdeaProjects\\TikTokLiveJava\\Tools-ReadmeGenerator\\src\\main\\resources\\output.md"; FilesUtility.saveFile(outputPath, template); } - public String getCurrentVersion() - { - var version = System.getenv("version");; + public String getCurrentVersion() { + var version = System.getenv("version"); + ; - return version == null?"NOT_FOUND":version; + return version == null ? "NOT_FOUND" : version; } - public String getCodeExample(String path) - { + public String getCodeExample(String path) { var content = FilesUtility.loadFileContent(path); - content = content.substring(content.indexOf("*/")+2); + content = content.substring(content.indexOf("*/") + 2); return content; } diff --git a/Tools-ReadmeGenerator/src/main/resources/template.md b/Tools-ReadmeGenerator/src/main/resources/template.md index 44f79b1..ca60bf3 100644 --- a/Tools-ReadmeGenerator/src/main/resources/template.md +++ b/Tools-ReadmeGenerator/src/main/resources/template.md @@ -29,7 +29,7 @@ # Introduction -A Java library inspired by [TikTokLive](https://github.com/isaackogan/TikTokLive) and [TikTokLiveSharp](https://github.com/sebheron/TikTokLiveSharp). Use it to receive live stream events such as comments and gifts in realtime from [TikTok LIVE](https://www.tiktok.com/live) by connecting to TikTok's internal WebCast push service. +A Java library inspired by [TikTokLive](https://github.com/isaackogan/TikTokLive) and [TikTokLiveSharp](https://github.com/frankvHoof93/TikTokLiveSharp). Use it to receive live stream events such as comments and gifts in realtime from [TikTok LIVE](https://www.tiktok.com/live) by connecting to TikTok's internal WebCast push service. The library includes a wrapper that connects to the WebCast service using just the username (`uniqueId`). This allows you to connect to your own live chat as well as the live chat of other streamers. No credentials are required. Events such as [Members Joining](#member), [Gifts](#gift), [Subscriptions](#subscribe), [Viewers](#roomuser), [Follows](#social), [Shares](#social), [Questions](#questionnew), [Likes](#like) and [Battles](#linkmicbattle) can be tracked. @@ -45,9 +45,8 @@ Do you prefer other programming languages? #### Overview - [Getting started](#getting-started) -- [Configuration](#configuration) -- [Methods](#methods) - [Events](#events) +- [Listeners](#listeners) - [Contributing](#contributing) ## Getting started @@ -74,20 +73,20 @@ Do you prefer other programming languages? 2. Create your first chat connection -```java {{code-content}} -``` + ## Events {{events-content}}
-## Listener Example +## Listeners ```java {{listener-content}} ``` + ## Contributing Your improvements are welcome! Feel free to open an issue or pull request.