mirror of
https://github.com/jwdeveloper/TikTokLiveJava.git
synced 2026-02-27 08:49:40 -05:00
Changes:
- Implementation on all features in `clientSettings` - Code optimization - More detail exceptions - Downloading gifts
This commit is contained in:
@@ -12,16 +12,7 @@ public class ClientSettings {
|
||||
/// <summary>
|
||||
/// Timeout for Connections
|
||||
/// </summary>
|
||||
|
||||
private Duration timeout;
|
||||
/// <summary>
|
||||
/// Polling-Interval for Socket-Connection
|
||||
/// </summary
|
||||
|
||||
private Duration pollingInterval;
|
||||
/// <summary>
|
||||
/// Proxy for Connection
|
||||
/// </summary>
|
||||
|
||||
// public RotatingProxy Proxy;
|
||||
/// <summary>
|
||||
@@ -35,6 +26,11 @@ public class ClientSettings {
|
||||
/// </summary>
|
||||
private boolean retryOnConnectionFailure;
|
||||
|
||||
/// <summary>
|
||||
/// Wait to connect again for selected amount of time
|
||||
/// </summary>
|
||||
private Duration retryConnectionTimeout;
|
||||
|
||||
/// <summary>
|
||||
/// Whether to handle Messages received from Room when Connecting
|
||||
/// </summary>
|
||||
@@ -59,12 +55,6 @@ public class ClientSettings {
|
||||
/// </summary>
|
||||
private boolean printMessageData;
|
||||
|
||||
/// <summary>
|
||||
/// Whether to check Messages for Unparsed Data
|
||||
/// </summary>
|
||||
private boolean checkForUnparsedData;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Tiktok user name
|
||||
/// </summary>
|
||||
|
||||
@@ -40,14 +40,13 @@ public class Constants {
|
||||
public static ClientSettings DefaultClientSettings() {
|
||||
var clientSettings = new ClientSettings();
|
||||
clientSettings.setTimeout(Duration.ofSeconds(DEFAULT_TIMEOUT));
|
||||
clientSettings.setPollingInterval(Duration.ofSeconds(DEFAULT_POLLTIME));
|
||||
clientSettings.setClientLanguage("en-US");
|
||||
clientSettings.setHandleExistingMessagesOnConnect(true);
|
||||
clientSettings.setDownloadGiftInfo(true);
|
||||
clientSettings.setRetryOnConnectionFailure(true);
|
||||
clientSettings.setPrintToConsole(true);
|
||||
clientSettings.setRetryOnConnectionFailure(false);
|
||||
clientSettings.setRetryConnectionTimeout(Duration.ofSeconds(1));
|
||||
clientSettings.setPrintToConsole(false);
|
||||
clientSettings.setLogLevel(Level.ALL);
|
||||
clientSettings.setCheckForUnparsedData(false);
|
||||
clientSettings.setPrintMessageData(false);
|
||||
clientSettings.setClientParameters(Constants.DefaultClientParams());
|
||||
return clientSettings;
|
||||
|
||||
@@ -1,95 +1,94 @@
|
||||
package io.github.jwdeveloper.tiktok.events;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.events.messages.*;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
|
||||
|
||||
public interface TikTokEventBuilder<T> {
|
||||
T onUnhandledSocial(Consumer<TikTokUnhandledSocialEvent> event);
|
||||
T onUnhandledSocial(TikTokEventConsumer<TikTokUnhandledSocialEvent> event);
|
||||
|
||||
T onLinkMicFanTicket(Consumer<TikTokLinkMicFanTicketEvent> event);
|
||||
T onLinkMicFanTicket(TikTokEventConsumer<TikTokLinkMicFanTicketEvent> event);
|
||||
|
||||
T onEnvelope(Consumer<TikTokEnvelopeEvent> event);
|
||||
T onEnvelope(TikTokEventConsumer<TikTokEnvelopeEvent> event);
|
||||
|
||||
T onShopMessage(Consumer<TikTokShopMessageEvent> event);
|
||||
T onShopMessage(TikTokEventConsumer<TikTokShopMessageEvent> event);
|
||||
|
||||
T onDetectMessage(Consumer<TikTokDetectMessageEvent> event);
|
||||
T onDetectMessage(TikTokEventConsumer<TikTokDetectMessageEvent> event);
|
||||
|
||||
T onLinkLayerMessage(Consumer<TikTokLinkLayerMessageEvent> event);
|
||||
T onLinkLayerMessage(TikTokEventConsumer<TikTokLinkLayerMessageEvent> event);
|
||||
|
||||
T onConnected(Consumer<TikTokConnectedEvent> event);
|
||||
T onConnected(TikTokEventConsumer<TikTokConnectedEvent> event);
|
||||
|
||||
T onCaption(Consumer<TikTokCaptionEvent> event);
|
||||
T onCaption(TikTokEventConsumer<TikTokCaptionEvent> event);
|
||||
|
||||
T onQuestion(Consumer<TikTokQuestionEvent> event);
|
||||
T onQuestion(TikTokEventConsumer<TikTokQuestionEvent> event);
|
||||
|
||||
T onRoomPinMessage(Consumer<TikTokRoomPinMessageEvent> event);
|
||||
T onRoomPinMessage(TikTokEventConsumer<TikTokRoomPinMessageEvent> event);
|
||||
|
||||
T onRoomMessage(Consumer<TikTokRoomMessageEvent> event);
|
||||
T onRoomMessage(TikTokEventConsumer<TikTokRoomMessageEvent> event);
|
||||
|
||||
T onLivePaused(Consumer<TikTokLivePausedEvent> event);
|
||||
T onLivePaused(TikTokEventConsumer<TikTokLivePausedEvent> event);
|
||||
|
||||
T onLike(Consumer<TikTokLikeEvent> event);
|
||||
T onLike(TikTokEventConsumer<TikTokLikeEvent> event);
|
||||
|
||||
T onLinkMessage(Consumer<TikTokLinkMessageEvent> event);
|
||||
T onLinkMessage(TikTokEventConsumer<TikTokLinkMessageEvent> event);
|
||||
|
||||
T onBarrageMessage(Consumer<TikTokBarrageMessageEvent> event);
|
||||
T onBarrageMessage(TikTokEventConsumer<TikTokBarrageMessageEvent> event);
|
||||
|
||||
T onGiftMessage(Consumer<TikTokGiftMessageEvent> event);
|
||||
T onGiftMessage(TikTokEventConsumer<TikTokGiftMessageEvent> event);
|
||||
|
||||
T onLinkMicArmies(Consumer<TikTokLinkMicArmiesEvent> event);
|
||||
T onLinkMicArmies(TikTokEventConsumer<TikTokLinkMicArmiesEvent> event);
|
||||
|
||||
T onEmote(Consumer<TikTokEmoteEvent> event);
|
||||
T onEmote(TikTokEventConsumer<TikTokEmoteEvent> event);
|
||||
|
||||
T onUnauthorizedMember(Consumer<TikTokUnauthorizedMemberEvent> event);
|
||||
T onUnauthorizedMember(TikTokEventConsumer<TikTokUnauthorizedMemberEvent> event);
|
||||
|
||||
T onInRoomBanner(Consumer<TikTokInRoomBannerEvent> event);
|
||||
T onInRoomBanner(TikTokEventConsumer<TikTokInRoomBannerEvent> event);
|
||||
|
||||
T onLinkMicMethod(Consumer<TikTokLinkMicMethodEvent> event);
|
||||
T onLinkMicMethod(TikTokEventConsumer<TikTokLinkMicMethodEvent> event);
|
||||
|
||||
T onSubscribe(Consumer<TikTokSubscribeEvent> event);
|
||||
T onSubscribe(TikTokEventConsumer<TikTokSubscribeEvent> event);
|
||||
|
||||
T onPollMessage(Consumer<TikTokPollMessageEvent> event);
|
||||
T onPollMessage(TikTokEventConsumer<TikTokPollMessageEvent> event);
|
||||
|
||||
T onFollow(Consumer<TikTokFollowEvent> event);
|
||||
T onFollow(TikTokEventConsumer<TikTokFollowEvent> event);
|
||||
|
||||
T onRoomViewerData(Consumer<TikTokRoomViewerDataEvent> event);
|
||||
T onRoomViewerData(TikTokEventConsumer<TikTokRoomViewerDataEvent> event);
|
||||
|
||||
T onGoalUpdate(Consumer<TikTokGoalUpdateEvent> event);
|
||||
T onGoalUpdate(TikTokEventConsumer<TikTokGoalUpdateEvent> event);
|
||||
|
||||
T onComment(Consumer<TikTokCommentEvent> event);
|
||||
T onComment(TikTokEventConsumer<TikTokCommentEvent> event);
|
||||
|
||||
T onRankUpdate(Consumer<TikTokRankUpdateEvent> event);
|
||||
T onRankUpdate(TikTokEventConsumer<TikTokRankUpdateEvent> event);
|
||||
|
||||
T onIMDelete(Consumer<TikTokIMDeleteEvent> event);
|
||||
T onIMDelete(TikTokEventConsumer<TikTokIMDeleteEvent> event);
|
||||
|
||||
T onLiveEnded(Consumer<TikTokLiveEndedEvent> event);
|
||||
T onLiveEnded(TikTokEventConsumer<TikTokLiveEndedEvent> event);
|
||||
|
||||
T onError(Consumer<TikTokErrorEvent> event);
|
||||
T onError(TikTokEventConsumer<TikTokErrorEvent> event);
|
||||
|
||||
T onUnhandled(Consumer<TikTokUnhandledEvent> event);
|
||||
T onUnhandled(TikTokEventConsumer<TikTokUnhandledEvent> event);
|
||||
|
||||
T onJoin(Consumer<TikTokJoinEvent> event);
|
||||
T onJoin(TikTokEventConsumer<TikTokJoinEvent> event);
|
||||
|
||||
T onRankText(Consumer<TikTokRankTextEvent> event);
|
||||
T onRankText(TikTokEventConsumer<TikTokRankTextEvent> event);
|
||||
|
||||
T onShare(Consumer<TikTokShareEvent> event);
|
||||
T onShare(TikTokEventConsumer<TikTokShareEvent> event);
|
||||
|
||||
T onUnhandledMember(Consumer<TikTokUnhandledMemberEvent> event);
|
||||
T onUnhandledMember(TikTokEventConsumer<TikTokUnhandledMemberEvent> event);
|
||||
|
||||
T onSubNotify(Consumer<TikTokSubNotifyEvent> event);
|
||||
T onSubNotify(TikTokEventConsumer<TikTokSubNotifyEvent> event);
|
||||
|
||||
T onLinkMicBattle(Consumer<TikTokLinkMicBattleEvent> event);
|
||||
T onLinkMicBattle(TikTokEventConsumer<TikTokLinkMicBattleEvent> event);
|
||||
|
||||
T onDisconnected(Consumer<TikTokDisconnectedEvent> event);
|
||||
T onDisconnected(TikTokEventConsumer<TikTokDisconnectedEvent> event);
|
||||
|
||||
T onGiftBroadcast(Consumer<TikTokGiftBroadcastEvent> event);
|
||||
T onGiftBroadcast(TikTokEventConsumer<TikTokGiftBroadcastEvent> event);
|
||||
|
||||
T onUnhandledControl(Consumer<TikTokUnhandledControlEvent> event);
|
||||
T onUnhandledControl(TikTokEventConsumer<TikTokUnhandledControlEvent> event);
|
||||
|
||||
T onEvent(Consumer<TikTokEvent> event);
|
||||
T onEvent(TikTokEventConsumer<TikTokEvent> event);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ package io.github.jwdeveloper.tiktok.events;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.live.LiveClient;
|
||||
|
||||
public interface TikTokLiveEvent<T extends TikTokEvent>
|
||||
public interface TikTokEventConsumer<T extends TikTokEvent>
|
||||
{
|
||||
void onEvent(LiveClient liveClient, T event);
|
||||
}
|
||||
@@ -3,38 +3,39 @@ package io.github.jwdeveloper.tiktok.events.messages;
|
||||
import io.github.jwdeveloper.tiktok.annotations.Nullable;
|
||||
import io.github.jwdeveloper.tiktok.events.TikTokEvent;
|
||||
import io.github.jwdeveloper.tiktok.events.objects.Gift;
|
||||
import io.github.jwdeveloper.tiktok.events.objects.TikTokGift;
|
||||
import io.github.jwdeveloper.tiktok.events.objects.User;
|
||||
import io.github.jwdeveloper.tiktok.messages.WebcastGiftMessage;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public class TikTokGiftMessageEvent extends TikTokEvent {
|
||||
private final Gift gift;
|
||||
|
||||
@Nullable
|
||||
private User sender;
|
||||
private final Gift gift;
|
||||
|
||||
private final String purchaseId;
|
||||
@Nullable
|
||||
private User sender;
|
||||
|
||||
private final String receipt;
|
||||
private final String purchaseId;
|
||||
|
||||
private final Integer amount;
|
||||
private final String receipt;
|
||||
|
||||
private final Boolean streakFinished;
|
||||
private final Integer amount;
|
||||
|
||||
private final Integer streakIndex;
|
||||
private final Boolean streakFinished;
|
||||
|
||||
public TikTokGiftMessageEvent(WebcastGiftMessage msg) {
|
||||
super(msg.getHeader());;
|
||||
gift = new Gift(msg.getGiftDetails());
|
||||
if(msg.hasSender())
|
||||
{
|
||||
sender = new User(msg.getSender());
|
||||
private final Integer streakIndex;
|
||||
|
||||
public TikTokGiftMessageEvent(WebcastGiftMessage msg) {
|
||||
super(msg.getHeader());
|
||||
gift = new Gift(msg.getGiftDetails());
|
||||
if (msg.hasSender()) {
|
||||
sender = new User(msg.getSender());
|
||||
}
|
||||
purchaseId = msg.getLogId();
|
||||
receipt = msg.getReceiptJson();
|
||||
amount = msg.getAmount();
|
||||
streakFinished = msg.getRepeatEnd();
|
||||
streakIndex = msg.getRepeatCount();
|
||||
}
|
||||
purchaseId = msg.getLogId();
|
||||
receipt = msg.getReceiptJson();
|
||||
amount = msg.getAmount();
|
||||
streakFinished = msg.getRepeatEnd();
|
||||
streakIndex = msg.getRepeatCount();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,10 +20,15 @@ public class TikTokRankUpdateEvent extends TikTokEvent {
|
||||
var rankData = msg.getData().getRankings();
|
||||
eventType = rankData.getType();
|
||||
label = rankData.getLabel();
|
||||
rank = rankData.getDetails(0).getLabel();
|
||||
if(rankData.getDetailsList().isEmpty())
|
||||
{
|
||||
rank = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
rank = rankData.getDetails(0).getLabel();
|
||||
}
|
||||
color = rankData.getColor().getColor();
|
||||
|
||||
|
||||
}
|
||||
|
||||
public TikTokRankUpdateEvent(WebcastRankUpdateMessage msg) {
|
||||
@@ -31,7 +36,14 @@ public class TikTokRankUpdateEvent extends TikTokEvent {
|
||||
var rankData = msg.getData().getRankData();
|
||||
eventType = rankData.getType();
|
||||
label = rankData.getLabel();
|
||||
rank = rankData.getDetails(0).getLabel();
|
||||
if(rankData.getDetailsList().isEmpty())
|
||||
{
|
||||
rank = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
rank = rankData.getDetails(0).getLabel();
|
||||
}
|
||||
color = rankData.getColor().getColor();
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package io.github.jwdeveloper.tiktok.exceptions;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.messages.WebcastResponse;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Base64;
|
||||
|
||||
public class TikTokLiveMessageException extends TikTokLiveException {
|
||||
|
||||
@Getter
|
||||
private final WebcastResponse.Message webcastMessage;
|
||||
@Getter
|
||||
private final WebcastResponse webcastResponse;
|
||||
|
||||
|
||||
public TikTokLiveMessageException(WebcastResponse.Message message,
|
||||
WebcastResponse webcastResponse,
|
||||
Throwable cause) {
|
||||
super("Error while handling Message: " + message.getType() + ": \n", cause);
|
||||
this.webcastMessage = message;
|
||||
this.webcastResponse = webcastResponse;
|
||||
}
|
||||
|
||||
public void messageToBase64()
|
||||
{
|
||||
var decoded = Base64.getEncoder().encodeToString(webcastMessage.getBinary().toByteArray());
|
||||
}
|
||||
|
||||
public void webcastResponseToBase64()
|
||||
{
|
||||
var decoded = Base64.getEncoder().encodeToString(webcastResponse.toByteArray());
|
||||
}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
package io.github.jwdeveloper.tiktok.exceptions;
|
||||
|
||||
public class TikTokLiveMessageParsingException extends TikTokLiveException
|
||||
{
|
||||
public TikTokLiveMessageParsingException() {
|
||||
}
|
||||
|
||||
public TikTokLiveMessageParsingException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public TikTokLiveMessageParsingException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public TikTokLiveMessageParsingException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public TikTokLiveMessageParsingException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package io.github.jwdeveloper.tiktok.exceptions;
|
||||
|
||||
public class TikTokLiveOfflineHostException extends TikTokLiveException
|
||||
{
|
||||
public TikTokLiveOfflineHostException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package io.github.jwdeveloper.tiktok.exceptions;
|
||||
|
||||
|
||||
public class TikTokMessageMappingException extends TikTokLiveException
|
||||
{
|
||||
public TikTokMessageMappingException(Class<?> inputClazz, Class<?> outputClass, Throwable throwable)
|
||||
{
|
||||
super("Unable to handle mapping from class: " + inputClazz.getSimpleName() + " to class " + outputClass.getSimpleName(),throwable);
|
||||
}
|
||||
|
||||
public TikTokMessageMappingException(Class<?> inputClazz, Class<?> outputClass, String message)
|
||||
{
|
||||
super("Unable to handle mapping from class: " + inputClazz.getSimpleName() + " to class " + outputClass.getSimpleName()+": "+message);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package io.github.jwdeveloper.tiktok.exceptions;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
public class TikTokProtocolBufferException extends TikTokLiveException
|
||||
{
|
||||
@Getter
|
||||
private final byte[] bytes;
|
||||
|
||||
public TikTokProtocolBufferException(String message, byte[] bytes, Throwable cause)
|
||||
{
|
||||
super(message, cause);
|
||||
this.bytes = bytes;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package io.github.jwdeveloper.tiktok.handler;
|
||||
|
||||
|
||||
import io.github.jwdeveloper.tiktok.events.TikTokEvent;
|
||||
import io.github.jwdeveloper.tiktok.messages.WebcastResponse;
|
||||
|
||||
public interface TikTokMessageHandler
|
||||
{
|
||||
TikTokEvent handle(WebcastResponse.Message message) throws Exception;
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
package io.github.jwdeveloper.tiktok.http.Resource;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ClientFetchDataResponse {
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package io.github.jwdeveloper.tiktok.live;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.events.objects.TikTokGift;
|
||||
import io.github.jwdeveloper.tiktok.models.GiftId;
|
||||
import io.github.jwdeveloper.tiktok.models.gifts.TikTokGiftInfo;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface GiftManager
|
||||
{
|
||||
Map<Integer, TikTokGiftInfo> getGiftsInfo();
|
||||
|
||||
Map<GiftId, TikTokGift> getActiveGifts();
|
||||
}
|
||||
@@ -6,5 +6,6 @@ public interface LiveClient {
|
||||
|
||||
void disconnect();
|
||||
|
||||
GiftManager getGiftManager();
|
||||
LiveRoomInfo getRoomInfo();
|
||||
}
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
package io.github.jwdeveloper.tiktok.live;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class TikTokRoomInfo implements LiveRoomInfo
|
||||
{
|
||||
private int viewersCount;
|
||||
|
||||
private String roomId;
|
||||
|
||||
private String userName;
|
||||
private ConnectionState connectionState = ConnectionState.DISCONNECTED;
|
||||
|
||||
public boolean hasConnectionState(ConnectionState state)
|
||||
{
|
||||
return connectionState == state;
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@ import lombok.Data;
|
||||
@AllArgsConstructor
|
||||
public class GiftId
|
||||
{
|
||||
public long Gift;
|
||||
private long giftId;
|
||||
|
||||
public String UserName;
|
||||
private String userName;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
package io.github.jwdeveloper.tiktok.models;
|
||||
|
||||
public enum GiftStrike
|
||||
{
|
||||
BEGIN, UPDATE, ENDED
|
||||
}
|
||||
@@ -3,14 +3,13 @@ package io.github.jwdeveloper.tiktok.models.gifts;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DefaultFormat
|
||||
{
|
||||
private boolean bold ;
|
||||
private String color ;
|
||||
private int font_size ;
|
||||
private boolean italic ;
|
||||
private int italic_angle ;
|
||||
private boolean use_highlight_color ;
|
||||
private boolean use_remote_color ;
|
||||
private int weight ;
|
||||
public class DefaultFormat {
|
||||
private boolean bold;
|
||||
private String color;
|
||||
private int font_size;
|
||||
private boolean italic;
|
||||
private int italic_angle;
|
||||
private boolean use_highlight_color;
|
||||
private boolean use_remote_color;
|
||||
private int weight;
|
||||
}
|
||||
@@ -5,10 +5,9 @@ import lombok.Data;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class DisplayText
|
||||
{
|
||||
private DefaultFormat default_format ;
|
||||
private String default_pattern ;
|
||||
private String key ;
|
||||
private List<Object> pieces ;
|
||||
public class DisplayText {
|
||||
private DefaultFormat default_format;
|
||||
private String default_pattern;
|
||||
private String key;
|
||||
private List<Object> pieces;
|
||||
}
|
||||
@@ -5,14 +5,13 @@ import lombok.Data;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class GiftLabelIcon
|
||||
{
|
||||
private String avg_color ;
|
||||
private int height ;
|
||||
private int image_type ;
|
||||
private boolean is_animated ;
|
||||
private String open_web_url ;
|
||||
private String uri ;
|
||||
private List<String> url_list ;
|
||||
private int width ;
|
||||
public class GiftLabelIcon {
|
||||
private String avg_color;
|
||||
private int height;
|
||||
private int image_type;
|
||||
private boolean is_animated;
|
||||
private String open_web_url;
|
||||
private String uri;
|
||||
private List<String> url_list;
|
||||
private int width;
|
||||
}
|
||||
@@ -6,10 +6,9 @@ import java.util.List;
|
||||
|
||||
|
||||
@Data
|
||||
public class GiftPanelBanner
|
||||
{
|
||||
private List<Object> bg_color_values ;
|
||||
private DisplayText display_text ;
|
||||
private LeftIcon left_icon ;
|
||||
private String schema_url ;
|
||||
public class GiftPanelBanner {
|
||||
private List<Object> bg_color_values;
|
||||
private DisplayText display_text;
|
||||
private LeftIcon left_icon;
|
||||
private String schema_url;
|
||||
}
|
||||
@@ -5,14 +5,13 @@ import lombok.Data;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class Image
|
||||
{
|
||||
private String avg_color ;
|
||||
private int height ;
|
||||
private int image_type ;
|
||||
private boolean is_animated ;
|
||||
private String open_web_url ;
|
||||
private String uri ;
|
||||
private List<String> url_list ;
|
||||
private int width ;
|
||||
public class Image {
|
||||
private String avg_color;
|
||||
private int height;
|
||||
private int image_type;
|
||||
private boolean is_animated;
|
||||
private String open_web_url;
|
||||
private String uri;
|
||||
private List<String> url_list;
|
||||
private int width;
|
||||
}
|
||||
|
||||
@@ -5,16 +5,15 @@ import lombok.Data;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class LeftIcon
|
||||
{
|
||||
private String avg_color ;
|
||||
private int height ;
|
||||
private int image_type ;
|
||||
private boolean is_animated ;
|
||||
private String open_web_url ;
|
||||
private String uri ;
|
||||
private List<String> url_list ;
|
||||
private int width ;
|
||||
public class LeftIcon {
|
||||
private String avg_color;
|
||||
private int height;
|
||||
private int image_type;
|
||||
private boolean is_animated;
|
||||
private String open_web_url;
|
||||
private String uri;
|
||||
private List<String> url_list;
|
||||
private int width;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package io.github.jwdeveloper.tiktok.models.gifts;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class LockInfo
|
||||
{
|
||||
public int lock_type;
|
||||
private int lock_type;
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import lombok.Data;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class TikTokGift
|
||||
public class TikTokGiftInfo
|
||||
{
|
||||
private int action_type;
|
||||
private int app_id;
|
||||
Reference in New Issue
Block a user