mirror of
https://github.com/jwdeveloper/TikTokLiveJava.git
synced 2026-02-27 08:49:40 -05:00
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:
@@ -116,6 +116,7 @@ public class Constants {
|
||||
public static Map<String, String> DefaultRequestHeaders() {
|
||||
var headers = new HashMap<String, String>();
|
||||
|
||||
headers.put("authority","www.tiktok.com");
|
||||
headers.put("Connection", "keep-alive");
|
||||
headers.put("Cache-Control", "max-age=0");
|
||||
headers.put("Accept", "text/html,application/json,application/protobuf");
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package io.github.jwdeveloper.tiktok.data.events.common;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class TikTokEmptyEvent extends TikTokEvent
|
||||
{
|
||||
|
||||
}
|
||||
@@ -26,8 +26,8 @@ package io.github.jwdeveloper.tiktok.data.events.common;
|
||||
import io.github.jwdeveloper.tiktok.utils.JsonUtil;
|
||||
import lombok.Getter;
|
||||
|
||||
/*
|
||||
Base class for all events
|
||||
/**
|
||||
* Base class for all events
|
||||
*/
|
||||
@Getter
|
||||
public abstract class TikTokEvent {
|
||||
|
||||
@@ -24,16 +24,32 @@ package io.github.jwdeveloper.tiktok.data.events.gift;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.annotations.EventMeta;
|
||||
import io.github.jwdeveloper.tiktok.annotations.EventType;
|
||||
import io.github.jwdeveloper.tiktok.data.models.Gift;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.data.models.gifts.Gift;
|
||||
import io.github.jwdeveloper.tiktok.data.models.gifts.GiftSendType;
|
||||
import io.github.jwdeveloper.tiktok.messages.webcast.WebcastGiftMessage;
|
||||
import lombok.Getter;
|
||||
|
||||
|
||||
/**
|
||||
* Triggered every time gift is sent
|
||||
*
|
||||
* @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
|
||||
*
|
||||
* Remember if comboState is Finsihed both TikTokGiftComboEvent and TikTokGiftEvent event gets triggered
|
||||
*/
|
||||
@EventMeta(eventType = EventType.Message)
|
||||
@Getter
|
||||
public class TikTokGiftComboEvent extends TikTokGiftEvent
|
||||
{
|
||||
public TikTokGiftComboEvent(Gift gift, WebcastGiftMessage msg) {
|
||||
public class TikTokGiftComboEvent extends TikTokGiftEvent {
|
||||
private final GiftSendType comboState;
|
||||
|
||||
public TikTokGiftComboEvent(Gift gift, WebcastGiftMessage msg, GiftSendType comboState) {
|
||||
super(gift, msg);
|
||||
this.comboState = comboState;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,14 +26,17 @@ package io.github.jwdeveloper.tiktok.data.events.gift;
|
||||
import io.github.jwdeveloper.tiktok.annotations.EventMeta;
|
||||
import io.github.jwdeveloper.tiktok.annotations.EventType;
|
||||
import io.github.jwdeveloper.tiktok.data.events.common.TikTokHeaderEvent;
|
||||
import io.github.jwdeveloper.tiktok.data.models.Gift;
|
||||
import io.github.jwdeveloper.tiktok.data.models.gifts.Gift;
|
||||
import io.github.jwdeveloper.tiktok.data.models.gifts.GiftSendType;
|
||||
import io.github.jwdeveloper.tiktok.data.models.users.User;
|
||||
import io.github.jwdeveloper.tiktok.messages.webcast.WebcastGiftMessage;
|
||||
import lombok.Getter;
|
||||
|
||||
|
||||
/*
|
||||
* Triggered every time a gift arrives.
|
||||
* Triggered when user sends gifts that has
|
||||
* no combo (most of expensive gifts)
|
||||
* or if combo has finished
|
||||
*/
|
||||
@EventMeta(eventType = EventType.Message)
|
||||
@Getter
|
||||
@@ -41,15 +44,10 @@ public class TikTokGiftEvent extends TikTokHeaderEvent {
|
||||
private final Gift gift;
|
||||
private final User user;
|
||||
private final int combo;
|
||||
private final boolean comboFinished;
|
||||
private final int comboIndex;
|
||||
|
||||
public TikTokGiftEvent(Gift gift, WebcastGiftMessage msg) {
|
||||
super(msg.getCommon());
|
||||
this.gift = gift;
|
||||
user = User.map(msg.getUser(),msg.getUserIdentity());
|
||||
user = User.map(msg.getUser(), msg.getUserIdentity());
|
||||
combo = msg.getComboCount();
|
||||
comboFinished = msg.getRepeatEnd() > 0;
|
||||
comboIndex = msg.getRepeatCount();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,9 @@ import io.github.jwdeveloper.tiktok.data.events.common.TikTokEvent;
|
||||
import io.github.jwdeveloper.tiktok.messages.webcast.WebcastResponse;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.Value;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
|
||||
/**
|
||||
@@ -41,4 +44,12 @@ public class TikTokWebsocketMessageEvent extends TikTokEvent
|
||||
private TikTokEvent event;
|
||||
|
||||
private WebcastResponse.Message message;
|
||||
|
||||
private MetaData metaData;
|
||||
|
||||
@Value
|
||||
public static class MetaData
|
||||
{
|
||||
Duration handlingTime;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,9 +69,14 @@ public class Text {
|
||||
var format = matcher.replaceAll("%s");
|
||||
|
||||
var output = new ArrayList<String>();
|
||||
for (var piece : textPieces) {
|
||||
for (var piece : textPieces)
|
||||
{
|
||||
output.add(piece.getText());
|
||||
}
|
||||
if(matcher.groupCount() != output.size())
|
||||
{
|
||||
return format;
|
||||
}
|
||||
return String.format(format, output.toArray());
|
||||
}
|
||||
|
||||
|
||||
@@ -21,8 +21,9 @@
|
||||
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
// This enum is generated
|
||||
package io.github.jwdeveloper.tiktok.data.models;
|
||||
package io.github.jwdeveloper.tiktok.data.models.gifts;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.data.models.Picture;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@@ -0,0 +1,18 @@
|
||||
package io.github.jwdeveloper.tiktok.data.models.gifts;
|
||||
|
||||
public enum GiftSendType
|
||||
{
|
||||
Finished,
|
||||
Begin,
|
||||
Active;
|
||||
|
||||
|
||||
public static GiftSendType fromNumber(long number)
|
||||
{
|
||||
return switch ((int) number) {
|
||||
case 0 -> GiftSendType.Finished;
|
||||
case 1, 2, 4 -> GiftSendType.Active;
|
||||
default -> GiftSendType.Finished;
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -46,9 +46,6 @@ public class User {
|
||||
@Getter(AccessLevel.NONE)
|
||||
private Set<UserAttribute> attributes;
|
||||
|
||||
@Setter
|
||||
private boolean tracked;
|
||||
|
||||
public List<UserAttribute> getAttributes() {
|
||||
return attributes.stream().toList();
|
||||
}
|
||||
|
||||
@@ -25,8 +25,10 @@ package io.github.jwdeveloper.tiktok.handler;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.data.events.common.TikTokEvent;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public interface TikTokMessageHandler
|
||||
{
|
||||
TikTokEvent handle(byte[] messagePayload) throws Exception;
|
||||
List<TikTokEvent> handle(byte[] messagePayload) throws Exception;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
*/
|
||||
package io.github.jwdeveloper.tiktok.live;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.data.models.Gift;
|
||||
import io.github.jwdeveloper.tiktok.data.models.gifts.Gift;
|
||||
import io.github.jwdeveloper.tiktok.data.models.Picture;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
package io.github.jwdeveloper.tiktok.live;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.data.events.common.TikTokEvent;
|
||||
import io.github.jwdeveloper.tiktok.data.models.Gift;
|
||||
import io.github.jwdeveloper.tiktok.data.models.gifts.Gift;
|
||||
import io.github.jwdeveloper.tiktok.data.models.users.User;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -52,7 +52,6 @@ public interface EventsBuilder<T> {
|
||||
T onWebsocketUnhandledMessage(EventConsumer<TikTokWebsocketUnhandledMessageEvent> event);
|
||||
|
||||
T onGiftCombo(EventConsumer<TikTokGiftComboEvent> event);
|
||||
|
||||
T onGift(EventConsumer<TikTokGiftEvent> event);
|
||||
|
||||
T onQuestion(EventConsumer<TikTokQuestionEvent> event);
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package io.github.jwdeveloper.tiktok.utils;
|
||||
|
||||
public class Stopwatch {
|
||||
private long startTime;
|
||||
private long stopTime;
|
||||
|
||||
public void start() {
|
||||
startTime = System.nanoTime();
|
||||
}
|
||||
|
||||
public long stop() {
|
||||
stopTime = System.nanoTime();
|
||||
return getElapsedTime();
|
||||
}
|
||||
|
||||
public long getElapsedTime() {
|
||||
return stopTime - startTime;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user