diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/ClientSettings.java b/API/src/main/java/io/github/jwdeveloper/tiktok/ClientSettings.java index 647fa80..dc8df49 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/ClientSettings.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/ClientSettings.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; import lombok.Data; @@ -13,7 +35,6 @@ public class ClientSettings { */ private Duration timeout; - // public RotatingProxy Proxy; /** * ISO-Language for Client */ @@ -27,18 +48,14 @@ public class ClientSettings { /** - * Wait to connect again for selected amount of time + * Before retrying connect, wait for select amount of time */ private Duration retryConnectionTimeout; /** - * Whether to handle Messages received from Room when Connecting + * Whether to handle Events received from Room when Connecting */ - private boolean handleExistingMessagesOnConnect; - /** - * Whether to download List of Gifts for Room when Connecting - */ - private boolean downloadGiftInfo; + private boolean handleExistingEvents; /** * Whether to print Logs to Console @@ -50,10 +67,6 @@ public class ClientSettings { */ private Level logLevel; - /** - * Whether to print Base64-Data for Messages to Console - */ - private boolean printMessageData; /** * Optional: Use it if you need to change tiktok live hostname in builder diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/Constants.java b/API/src/main/java/io/github/jwdeveloper/tiktok/Constants.java index dc1878e..0ab0efa 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/Constants.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/Constants.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; import java.time.Duration; @@ -40,13 +62,11 @@ public class Constants { var clientSettings = new ClientSettings(); clientSettings.setTimeout(Duration.ofSeconds(DEFAULT_TIMEOUT)); clientSettings.setClientLanguage("en-US"); - clientSettings.setHandleExistingMessagesOnConnect(true); - clientSettings.setDownloadGiftInfo(true); + clientSettings.setHandleExistingEvents(true); clientSettings.setRetryOnConnectionFailure(false); clientSettings.setRetryConnectionTimeout(Duration.ofSeconds(1)); clientSettings.setPrintToConsole(false); clientSettings.setLogLevel(Level.ALL); - clientSettings.setPrintMessageData(false); clientSettings.setClientParameters(Constants.DefaultClientParams()); return clientSettings; } diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/annotations/EventMeta.java b/API/src/main/java/io/github/jwdeveloper/tiktok/annotations/EventMeta.java index 71dc01a..ffe84d8 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/annotations/EventMeta.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/annotations/EventMeta.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.annotations; import java.lang.annotation.Retention; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/annotations/EventType.java b/API/src/main/java/io/github/jwdeveloper/tiktok/annotations/EventType.java index 27c79f1..92e037e 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/annotations/EventType.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/annotations/EventType.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.annotations; import java.lang.annotation.Retention; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/annotations/TikTokEventHandler.java b/API/src/main/java/io/github/jwdeveloper/tiktok/annotations/TikTokEventHandler.java index a7882c1..b404460 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/annotations/TikTokEventHandler.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/annotations/TikTokEventHandler.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.annotations; import java.lang.annotation.Retention; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEvent.java index 1ac8481..909ab26 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEvent.java @@ -1,6 +1,28 @@ +/* + * 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.events; -import io.github.jwdeveloper.tiktok.messages.*; + import lombok.Getter; /* diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEventBuilder.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEventBuilder.java index b851743..89b6bb1 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEventBuilder.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEventBuilder.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.events; import io.github.jwdeveloper.tiktok.events.messages.*; @@ -10,11 +32,11 @@ public interface TikTokEventBuilder { T onEnvelope(TikTokEventConsumer event); - T onShopMessage(TikTokEventConsumer event); + T onShop(TikTokEventConsumer event); - T onDetectMessage(TikTokEventConsumer event); + T onDetect(TikTokEventConsumer event); - T onLinkLayerMessage(TikTokEventConsumer event); + T onLinkLayer(TikTokEventConsumer event); T onConnected(TikTokEventConsumer event); @@ -22,19 +44,17 @@ public interface TikTokEventBuilder { T onQuestion(TikTokEventConsumer event); - T onRoomPinMessage(TikTokEventConsumer event); + T onRoomPin(TikTokEventConsumer event); - T onRoomMessage(TikTokEventConsumer event); + T onRoom(TikTokEventConsumer event); T onLivePaused(TikTokEventConsumer event); T onLike(TikTokEventConsumer event); - T onLinkMessage(TikTokEventConsumer event); + T onBarrage(TikTokEventConsumer event); - T onBarrageMessage(TikTokEventConsumer event); - - T onGiftMessage(TikTokEventConsumer event); + T onGift(TikTokEventConsumer event); T onLinkMicArmies(TikTokEventConsumer event); @@ -48,7 +68,7 @@ public interface TikTokEventBuilder { T onSubscribe(TikTokEventConsumer event); - T onPollMessage(TikTokEventConsumer event); + T onPoll(TikTokEventConsumer event); T onFollow(TikTokEventConsumer event); @@ -82,7 +102,7 @@ public interface TikTokEventBuilder { T onDisconnected(TikTokEventConsumer event); - T onGiftBroadcast(TikTokEventConsumer event); + T onGiftCombo(TikTokEventConsumer event); T onUnhandledControl(TikTokEventConsumer event); diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEventConsumer.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEventConsumer.java index 1156f4a..b96fffb 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEventConsumer.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEventConsumer.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.events; import io.github.jwdeveloper.tiktok.live.LiveClient; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/base/TikTokHeaderEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/base/TikTokHeaderEvent.java index c80e9d8..15c6d07 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/base/TikTokHeaderEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/base/TikTokHeaderEvent.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.events.base; import io.github.jwdeveloper.tiktok.events.TikTokEvent; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/base/TikTokLiveClientEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/base/TikTokLiveClientEvent.java index 415b380..957b457 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/base/TikTokLiveClientEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/base/TikTokLiveClientEvent.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.events.base; import io.github.jwdeveloper.tiktok.events.TikTokEvent; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/base/TikTokUnhandledEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/base/TikTokUnhandledEvent.java index 398d712..be2d419 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/base/TikTokUnhandledEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/base/TikTokUnhandledEvent.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.events.base; import io.github.jwdeveloper.tiktok.events.TikTokEvent; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokBarrageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokBarrageEvent.java new file mode 100644 index 0000000..b0f798b --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokBarrageEvent.java @@ -0,0 +1,57 @@ +/* + * 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.events.messages; + +import io.github.jwdeveloper.tiktok.annotations.EventMeta; +import io.github.jwdeveloper.tiktok.annotations.EventType; +import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; +import io.github.jwdeveloper.tiktok.events.objects.BarrageData; +import io.github.jwdeveloper.tiktok.events.objects.Picture; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.WebcastBarrageMessage; +import lombok.Value; + +@Value +@EventMeta(eventType = EventType.Message) +public class TikTokBarrageEvent extends TikTokHeaderEvent { + Picture picture; + Picture picture2; + Picture picture3; + User user; + BarrageData barrageData; + public TikTokBarrageEvent(WebcastBarrageMessage msg) { + super(msg.getHeader()); + picture = Picture.Map(msg.getImage()); + picture2 = Picture.Map(msg.getImage2()); + picture3 = Picture.Map(msg.getImage3()); + user = new User(msg.getUserData().getUser()); + barrageData = new BarrageData(msg.getMessage().getEventType(), + msg.getMessage().getLabel(), + msg.getMessage().getData1List().stream().map(e -> + { + var user = new User(e.getUser().getUser()); + return new BarrageData.BarrageUser(user, e.getData2()); + }).toList() + ); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokBarrageMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokBarrageMessageEvent.java deleted file mode 100644 index 0a27aba..0000000 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokBarrageMessageEvent.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.github.jwdeveloper.tiktok.events.messages; - -import io.github.jwdeveloper.tiktok.annotations.EventMeta; -import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.events.objects.BarrageData; -import io.github.jwdeveloper.tiktok.events.objects.Picture; -import io.github.jwdeveloper.tiktok.events.objects.User; -import io.github.jwdeveloper.tiktok.messages.WebcastBarrageMessage; -import lombok.Value; - -@Value -@EventMeta(eventType = EventType.Message) -public class TikTokBarrageMessageEvent extends TikTokHeaderEvent { - Picture picture; - Picture picture2; - Picture picture3; - User user; - BarrageData barrageData; - public TikTokBarrageMessageEvent(WebcastBarrageMessage msg) { - super(msg.getHeader()); - - picture = new Picture(msg.getImage()); - picture2 = new Picture(msg.getImage2()); - picture3 = new Picture(msg.getImage3()); - user = new User(msg.getUserData().getUser()); - barrageData = new BarrageData(msg.getMessage().getEventType(), - msg.getMessage().getLabel(), - msg.getMessage().getData1List().stream().map(e -> - { - var user = new User(e.getUser().getUser()); - return new BarrageData.BarrageUser(user, e.getData2()); - }).toList() - ); - } -} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokCaptionEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokCaptionEvent.java index c3a1746..2aae926 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokCaptionEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokCaptionEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokCommentEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokCommentEvent.java index 1a66ef6..d981b51 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokCommentEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokCommentEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; @@ -12,6 +34,9 @@ import lombok.Value; import java.util.ArrayList; import java.util.List; +/** + * Triggered every time a new chat comment arrives. + */ @Value @EventMeta(eventType = EventType.Message) public class TikTokCommentEvent extends TikTokHeaderEvent { @@ -36,6 +61,6 @@ public class TikTokCommentEvent extends TikTokHeaderEvent { text = msg.getContent(); language = msg.getContentLanguage(); mentionedUsers = List.of(User.MapOrEmpty(msg.getAtUser())); - pictures = msg.getEmotesListList().stream().map(e -> new Picture(e.getEmote().getImage())).toList(); + pictures = msg.getEmotesListList().stream().map(e ->Picture.Map(e.getEmote().getImage())).toList(); } } diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokConnectedEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokConnectedEvent.java index 0d5ac90..9f92b8e 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokConnectedEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokConnectedEvent.java @@ -1,7 +1,33 @@ +/* + * 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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.base.TikTokLiveClientEvent; + +/** + * Triggered when the connection is successfully established. + */ @EventMeta(eventType = EventType.Control) public class TikTokConnectedEvent extends TikTokLiveClientEvent { diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDetectEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDetectEvent.java new file mode 100644 index 0000000..fd9f41a --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDetectEvent.java @@ -0,0 +1,48 @@ +/* + * 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.events.messages; + +import io.github.jwdeveloper.tiktok.annotations.EventMeta; +import io.github.jwdeveloper.tiktok.annotations.EventType; +import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; +import io.github.jwdeveloper.tiktok.messages.WebcastMsgDetectMessage; +import lombok.Getter; + +import java.util.List; + +@Getter +@EventMeta(eventType = EventType.Message) +public class TikTokDetectEvent extends TikTokHeaderEvent { + String language; + + List data; + + List timings; + + public TikTokDetectEvent(WebcastMsgDetectMessage msg) { + super(msg.getHeader());; + language = msg.getLanguage(); + data = List.of(msg.getData2().getData1(), msg.getData2().getData2(), msg.getData2().getData3()); + timings= List.of(msg.getTimestamps().getTimestamp1(), msg.getTimestamps().getTimestamp2(), msg.getTimestamps().getTimestamp3()); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDetectMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDetectMessageEvent.java deleted file mode 100644 index 3384874..0000000 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDetectMessageEvent.java +++ /dev/null @@ -1,27 +0,0 @@ -package io.github.jwdeveloper.tiktok.events.messages; - -import io.github.jwdeveloper.tiktok.annotations.EventMeta; -import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; -import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.messages.WebcastMsgDetectMessage; -import lombok.Getter; - -import java.util.List; - -@Getter -@EventMeta(eventType = EventType.Message) -public class TikTokDetectMessageEvent extends TikTokHeaderEvent { - String language; - - List data; - - List timings; - - public TikTokDetectMessageEvent(WebcastMsgDetectMessage msg) { - super(msg.getHeader());; - language = msg.getLanguage(); - data = List.of(msg.getData2().getData1(), msg.getData2().getData2(), msg.getData2().getData3()); - timings= List.of(msg.getTimestamps().getTimestamp1(), msg.getTimestamps().getTimestamp2(), msg.getTimestamps().getTimestamp3()); - } -} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDisconnectedEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDisconnectedEvent.java index 3f65039..182139e 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDisconnectedEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDisconnectedEvent.java @@ -1,8 +1,35 @@ +/* + * 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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.base.TikTokLiveClientEvent; + +/** + * Triggered when the connection gets disconnected. In that case you can call connect() again to have a reconnect logic. + * Note that you should wait a little bit before attempting a reconnect to to avoid being rate-limited. + */ @EventMeta(eventType = EventType.Control) public class TikTokDisconnectedEvent extends TikTokLiveClientEvent { } diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEmoteEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEmoteEvent.java index 9738088..afb923b 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEmoteEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEmoteEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; @@ -8,6 +30,9 @@ import io.github.jwdeveloper.tiktok.events.objects.User; import io.github.jwdeveloper.tiktok.messages.WebcastEmoteChatMessage; import lombok.Value; +/** + * Triggered every time a subscriber sends an emote (sticker). + */ @Value @EventMeta(eventType = EventType.Message) public class TikTokEmoteEvent extends TikTokHeaderEvent { diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEnvelopeEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEnvelopeEvent.java index 8ad5b61..9ae7082 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEnvelopeEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEnvelopeEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; @@ -9,6 +31,10 @@ import io.github.jwdeveloper.tiktok.messages.WebcastEnvelopeMessage; import lombok.Getter; import lombok.Value; + +/** + * Triggered every time someone sends a treasure chest. + */ @Value @EventMeta(eventType = EventType.Message) public class TikTokEnvelopeEvent extends TikTokHeaderEvent { diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokErrorEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokErrorEvent.java index 57bd973..4dcd944 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokErrorEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokErrorEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; @@ -7,6 +29,9 @@ import io.github.jwdeveloper.tiktok.events.base.TikTokLiveClientEvent; import lombok.AllArgsConstructor; import lombok.Getter; +/** + * General error event. You should handle this. + */ @Getter @AllArgsConstructor @EventMeta(eventType = EventType.Control) diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokFollowEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokFollowEvent.java index 75e0533..6689175 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokFollowEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokFollowEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; @@ -7,6 +29,9 @@ import io.github.jwdeveloper.tiktok.events.objects.User; import io.github.jwdeveloper.tiktok.messages.WebcastSocialMessage; import lombok.Value; +/** + * Triggers when a user follows the streamer. Based on social event. + */ @Value @EventMeta(eventType = EventType.Custom) public class TikTokFollowEvent extends TikTokHeaderEvent diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftBroadcastEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftBroadcastEvent.java deleted file mode 100644 index 88873eb..0000000 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftBroadcastEvent.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.github.jwdeveloper.tiktok.events.messages; - -import io.github.jwdeveloper.tiktok.annotations.EventMeta; -import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; -import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.events.objects.Picture; -import io.github.jwdeveloper.tiktok.messages.WebcastGiftBroadcastMessage; -import lombok.Getter; -import lombok.Value; - -@Value -@EventMeta(eventType = EventType.Message) -public class TikTokGiftBroadcastEvent extends TikTokHeaderEvent -{ - Picture picture; - - String shortURL; - - String notifyEventType; - - String notifyLabel; - - String notifyType; - - public TikTokGiftBroadcastEvent(WebcastGiftBroadcastMessage msg) - { - super(msg.getHeader()); - picture = new Picture(msg.getImage()); - var data = msg.getData(); - shortURL = data.getUri(); - notifyEventType = data.getRoomNotifyMessage().getData().getType(); - notifyLabel = data.getRoomNotifyMessage().getData().getLabel(); - notifyType = data.getNotifyType(); - } -} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftComboFinishedEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftComboFinishedEvent.java new file mode 100644 index 0000000..99f7d52 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftComboFinishedEvent.java @@ -0,0 +1,39 @@ +/* + * 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.events.messages; + +import io.github.jwdeveloper.tiktok.annotations.EventMeta; +import io.github.jwdeveloper.tiktok.annotations.EventType; +import io.github.jwdeveloper.tiktok.events.objects.Gift; +import io.github.jwdeveloper.tiktok.messages.WebcastGiftMessage; +import lombok.Getter; + +@EventMeta(eventType = EventType.Custom) +@Getter +public class TikTokGiftComboFinishedEvent extends TikTokGiftEvent +{ + + public TikTokGiftComboFinishedEvent(Gift gift, WebcastGiftMessage msg) { + super(gift, msg); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftEvent.java new file mode 100644 index 0000000..bcf4207 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftEvent.java @@ -0,0 +1,59 @@ +/* + * 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.events.messages; + + +import io.github.jwdeveloper.tiktok.annotations.EventMeta; +import io.github.jwdeveloper.tiktok.annotations.EventType; +import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; +import io.github.jwdeveloper.tiktok.events.objects.Gift; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.WebcastGiftMessage; +import lombok.Getter; + + +/** + * Triggered every time a gift arrives. + */ +@EventMeta(eventType = EventType.Message) +@Getter +public class TikTokGiftEvent extends TikTokHeaderEvent { + private final Gift gift; + private final User sender; + private final String purchaseId; + private final String receipt; + private final Long comboCount; + private final Boolean comboFinished; + private final Long comboIndex; + + public TikTokGiftEvent(Gift gift, WebcastGiftMessage msg) { + super(msg.getCommon()); + this.gift = gift; + sender = User.MapOrEmpty(msg.getUser()); + purchaseId = msg.getLogId(); + receipt = msg.getMonitorExtra(); + comboCount = msg.getComboCount(); + comboFinished = msg.getRepeatEnd() > 0; + comboIndex = msg.getRepeatCount(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftMessageEvent.java deleted file mode 100644 index 505a475..0000000 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftMessageEvent.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.github.jwdeveloper.tiktok.events.messages; - -import io.github.jwdeveloper.tiktok.annotations.EventMeta; -import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.events.objects.Gift; -import io.github.jwdeveloper.tiktok.events.objects.User; -import io.github.jwdeveloper.tiktok.messages.WebcastGiftMessage; -import lombok.Value; - -@Value -@EventMeta(eventType = EventType.Message) -public class TikTokGiftMessageEvent extends TikTokHeaderEvent { - - Gift gift; - User sender; - String purchaseId; - String receipt; - Long comboCount; - Boolean streakFinished; - Long streakIndex; - - public TikTokGiftMessageEvent(WebcastGiftMessage msg) { - super(msg.getCommon()); - gift = new Gift(msg.getGift()); - sender = User.MapOrEmpty(msg.getUser()); - purchaseId = msg.getLogId(); - receipt = msg.getMonitorExtra(); - comboCount = msg.getComboCount(); - streakFinished = msg.getRepeatEnd() > 0; //todo check values - streakIndex = msg.getRepeatCount(); - } -} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGoalUpdateEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGoalUpdateEvent.java index 6794e7a..798fd91 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGoalUpdateEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGoalUpdateEvent.java @@ -1,11 +1,31 @@ +/* + * 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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.Picture; - import io.github.jwdeveloper.tiktok.events.objects.User; import io.github.jwdeveloper.tiktok.messages.WebcastGoalUpdateMessage; import lombok.Getter; @@ -14,20 +34,19 @@ import java.util.List; @Getter @EventMeta(eventType = EventType.Message) -public class TikTokGoalUpdateEvent extends TikTokHeaderEvent -{ - private final Long goalId; - private final Picture picture; - private final String eventType; - private final String label; - private final List users; +public class TikTokGoalUpdateEvent extends TikTokHeaderEvent { + private final Long goalId; + private final Picture picture; + private final String eventType; + private final String label; + private final List users; - public TikTokGoalUpdateEvent(WebcastGoalUpdateMessage msg) { - super(msg.getHeader()); - picture = new Picture(msg.getImage()); - goalId = msg.getId(); - eventType = msg.getData().getType(); - label = msg.getUpdateData().getLabel(); - users = msg.getUpdateData().getUsersList().stream().map(u ->new User(u.getId(),u.getNickname(),new Picture(u.getProfileImage()))).toList(); - } + public TikTokGoalUpdateEvent(WebcastGoalUpdateMessage msg) { + super(msg.getHeader()); + picture = Picture.Map(msg.getImage()); + goalId = msg.getId(); + eventType = msg.getData().getType(); + label = msg.getUpdateData().getLabel(); + users = msg.getUpdateData().getUsersList().stream().map(u -> new User(u.getId(), u.getNickname(), Picture.Map(u.getProfileImage()))).toList(); + } } diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokIMDeleteEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokIMDeleteEvent.java index e9cd408..b644044 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokIMDeleteEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokIMDeleteEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokInRoomBannerEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokInRoomBannerEvent.java index 4c2aec0..42b1f40 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokInRoomBannerEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokInRoomBannerEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokJoinEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokJoinEvent.java index e201ffd..3512095 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokJoinEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokJoinEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLikeEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLikeEvent.java index 5d1d34e..6cb584e 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLikeEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLikeEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; @@ -8,6 +30,10 @@ import io.github.jwdeveloper.tiktok.messages.WebcastLikeMessage; import io.github.jwdeveloper.tiktok.messages.WebcastSocialMessage; import lombok.Getter; + +/** + * Triggered when a viewer sends likes to the streamer. For streams with many viewers, this event is not always triggered by TikTok. + */ @Getter @EventMeta(eventType = EventType.Custom) public class TikTokLikeEvent extends TikTokHeaderEvent diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkEvent.java new file mode 100644 index 0000000..57cc057 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkEvent.java @@ -0,0 +1,51 @@ +/* + * 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.events.messages; + +import io.github.jwdeveloper.tiktok.annotations.EventMeta; +import io.github.jwdeveloper.tiktok.annotations.EventType; +import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.WebcastLinkMessage; +import lombok.Getter; + +import java.util.List; + +@Getter +@EventMeta(eventType = EventType.Message) +public class TikTokLinkEvent extends TikTokHeaderEvent { + private final String token; + + private User user; + + private final List otherUsers; + + public TikTokLinkEvent(WebcastLinkMessage msg) { + super(msg.getHeader()); + token = msg.getToken(); + if (msg.getUser().getUser().hasUser()) { + user = new User(msg.getUser().getUser().getUser()); + } + otherUsers = msg.getUser().getOtherUsersList().stream().map(e -> new User(e.getUser())).toList(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkLayerEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkLayerEvent.java new file mode 100644 index 0000000..1048812 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkLayerEvent.java @@ -0,0 +1,52 @@ +/* + * 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.events.messages; + +import io.github.jwdeveloper.tiktok.annotations.EventMeta; +import io.github.jwdeveloper.tiktok.annotations.EventType; +import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; +import io.github.jwdeveloper.tiktok.messages.WebcastLinkLayerMessage; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@EventMeta(eventType = EventType.Message) +public class TikTokLinkLayerEvent extends TikTokHeaderEvent { + private final Long linkId; + private final LinkData link1; + private final LinkData link2; + + public TikTokLinkLayerEvent(WebcastLinkLayerMessage msg) { + super(msg.getHeader()); + linkId = msg.getId(); + link1 = new LinkData(msg.getIdContainer1().getIds().getId1(), msg.getIdContainer1().getIds().getId2()); + link2 = new LinkData(msg.getIdContainer2().getIds().getId1(), msg.getIdContainer2().getIds().getId2()); + } + + @AllArgsConstructor + @Getter + private class LinkData { + private final Long id1; + private final Long id2; + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkLayerMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkLayerMessageEvent.java deleted file mode 100644 index eee5179..0000000 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkLayerMessageEvent.java +++ /dev/null @@ -1,31 +0,0 @@ -package io.github.jwdeveloper.tiktok.events.messages; - -import io.github.jwdeveloper.tiktok.annotations.EventMeta; -import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; -import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.messages.WebcastLinkLayerMessage; -import lombok.AllArgsConstructor; -import lombok.Getter; - -@Getter -@EventMeta(eventType = EventType.Message) -public class TikTokLinkLayerMessageEvent extends TikTokHeaderEvent { - private final Long linkId; - private final LinkData link1; - private final LinkData link2; - - public TikTokLinkLayerMessageEvent(WebcastLinkLayerMessage msg) { - super(msg.getHeader()); - linkId = msg.getId(); - link1 = new LinkData(msg.getIdContainer1().getIds().getId1(), msg.getIdContainer1().getIds().getId2()); - link2 = new LinkData(msg.getIdContainer2().getIds().getId1(), msg.getIdContainer2().getIds().getId2()); - } - - @AllArgsConstructor - @Getter - private class LinkData { - private final Long id1; - private final Long id2; - } -} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMessageEvent.java deleted file mode 100644 index 2373b10..0000000 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMessageEvent.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.github.jwdeveloper.tiktok.events.messages; - -import io.github.jwdeveloper.tiktok.annotations.EventMeta; -import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.events.objects.User; -import io.github.jwdeveloper.tiktok.messages.WebcastLinkMessage; -import lombok.Getter; - -import java.util.List; - -@Getter -@EventMeta(eventType = EventType.Message) -public class TikTokLinkMessageEvent extends TikTokHeaderEvent { - private final String token; - - private User user; - - private final List otherUsers; - - public TikTokLinkMessageEvent(WebcastLinkMessage msg) { - super(msg.getHeader()); - token = msg.getToken(); - if (msg.getUser().getUser().hasUser()) { - user = new User(msg.getUser().getUser().getUser()); - } - otherUsers = msg.getUser().getOtherUsersList().stream().map(e -> new User(e.getUser())).toList(); - } -} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicArmiesEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicArmiesEvent.java index 4dbf246..8a5df3a 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicArmiesEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicArmiesEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; @@ -11,6 +33,10 @@ import lombok.Getter; import java.util.List; + +/** + * Triggered every time a battle participant receives points. Contains the current status of the battle and the army that suported the group. + */ @Getter @EventMeta(eventType = EventType.Message) public class TikTokLinkMicArmiesEvent extends TikTokHeaderEvent { @@ -26,7 +52,7 @@ public class TikTokLinkMicArmiesEvent extends TikTokHeaderEvent { super(msg.getHeader()); battleId = msg.getId(); armies = msg.getBattleItemsList().stream().map(LinkMicArmy::new).toList(); - picture = new Picture(msg.getImage()); + picture = Picture.Map(msg.getImage()); battleStatus = msg.getBattleStatus(); } } diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicBattleEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicBattleEvent.java index 011bdef..445a59f 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicBattleEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicBattleEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; @@ -10,6 +32,9 @@ import lombok.Getter; import java.util.List; +/** + * Triggered every time a battle starts. + */ @Getter @EventMeta(eventType = EventType.Message) public class TikTokLinkMicBattleEvent extends TikTokHeaderEvent { diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicFanTicketEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicFanTicketEvent.java index f1273b8..d7e6d19 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicFanTicketEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicFanTicketEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicMethodEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicMethodEvent.java index 617d909..5840c85 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicMethodEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicMethodEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLiveEndedEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLiveEndedEvent.java index 665c0f8..e1672f7 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLiveEndedEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLiveEndedEvent.java @@ -1,8 +1,34 @@ +/* + * 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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.TikTokEvent; + +/** + * Triggered when the live stream gets terminated by the host. Will also trigger the TikTokDisconnectedEvent event. + */ @EventMeta(eventType = EventType.Custom) public class TikTokLiveEndedEvent extends TikTokEvent { } diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLivePausedEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLivePausedEvent.java index b96726c..5332b42 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLivePausedEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLivePausedEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokPollMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokPollEvent.java similarity index 50% rename from API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokPollMessageEvent.java rename to API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokPollEvent.java index 5f76f7b..6d2e8a1 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokPollMessageEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokPollEvent.java @@ -1,8 +1,29 @@ +/* + * 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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.PollOption; import io.github.jwdeveloper.tiktok.events.objects.User; @@ -13,7 +34,7 @@ import java.util.List; @Getter @EventMeta(eventType = EventType.Message) -public class TikTokPollMessageEvent extends TikTokHeaderEvent { +public class TikTokPollEvent extends TikTokHeaderEvent { private final Long id; private final PollOption option1; @@ -22,7 +43,7 @@ public class TikTokPollMessageEvent extends TikTokHeaderEvent { private final List options; - public TikTokPollMessageEvent(WebcastPollMessage msg) { + public TikTokPollEvent(WebcastPollMessage msg) { super(msg.getHeader()); id = msg.getId(); options = msg.getPollData().getOptionsList().stream().map(e -> new PollOption.Option(e.getLabel(), e.getCurrentTotal())).toList(); diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokQuestionEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokQuestionEvent.java index c3322b4..59fc1af 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokQuestionEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokQuestionEvent.java @@ -1,13 +1,37 @@ +/* + * 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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.User; import io.github.jwdeveloper.tiktok.messages.WebcastQuestionNewMessage; import lombok.Getter; +/* +Triggered every time someone asks a new question via the question feature. + */ @Getter @EventMeta(eventType = EventType.Message) public class TikTokQuestionEvent extends TikTokHeaderEvent { diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankTextEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankTextEvent.java index bc39336..cc8de40 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankTextEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankTextEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankUpdateEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankUpdateEvent.java index 7962cf5..e37f5f9 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankUpdateEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankUpdateEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokReconnectingEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokReconnectingEvent.java index ba7c348..ef274e0 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokReconnectingEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokReconnectingEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomEvent.java new file mode 100644 index 0000000..d1501ad --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomEvent.java @@ -0,0 +1,66 @@ +/* + * 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.events.messages; + +import io.github.jwdeveloper.tiktok.annotations.EventMeta; +import io.github.jwdeveloper.tiktok.annotations.EventType; +import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.RoomMessage; +import io.github.jwdeveloper.tiktok.messages.SystemMessage; +import io.github.jwdeveloper.tiktok.messages.WebcastLiveIntroMessage; +import io.github.jwdeveloper.tiktok.messages.WebcastRoomMessage; +import lombok.Getter; + +@Getter +@EventMeta(eventType = EventType.Message) +public class TikTokRoomEvent extends TikTokHeaderEvent { + private User host; + private String hostLanguage; + private final String message; + + public TikTokRoomEvent(WebcastRoomMessage msg) { + super(msg.getHeader()); + message = msg.getData(); + } + + public TikTokRoomEvent(SystemMessage msg) { + super(msg.getHeader()); + message = msg.getMessage(); + } + + public TikTokRoomEvent(RoomMessage msg) { + super(msg.getHeader()); + message = msg.getMessage(); + } + + public TikTokRoomEvent(WebcastLiveIntroMessage msg) { + super(msg.getHeader()); + if (msg.hasHost()) { + host = new User(msg.getHost()); + } + message = msg.getDescription(); + hostLanguage = msg.getLanguage(); + } + +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomMessageEvent.java deleted file mode 100644 index 3140cfd..0000000 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomMessageEvent.java +++ /dev/null @@ -1,44 +0,0 @@ -package io.github.jwdeveloper.tiktok.events.messages; - -import io.github.jwdeveloper.tiktok.annotations.EventMeta; -import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.events.objects.User; -import io.github.jwdeveloper.tiktok.messages.RoomMessage; -import io.github.jwdeveloper.tiktok.messages.SystemMessage; -import io.github.jwdeveloper.tiktok.messages.WebcastLiveIntroMessage; -import io.github.jwdeveloper.tiktok.messages.WebcastRoomMessage; -import lombok.Getter; - -@Getter -@EventMeta(eventType = EventType.Message) -public class TikTokRoomMessageEvent extends TikTokHeaderEvent { - private User host; - private String hostLanguage; - private final String message; - - public TikTokRoomMessageEvent(WebcastRoomMessage msg) { - super(msg.getHeader()); - message = msg.getData(); - } - - public TikTokRoomMessageEvent(SystemMessage msg) { - super(msg.getHeader()); - message = msg.getMessage(); - } - - public TikTokRoomMessageEvent(RoomMessage msg) { - super(msg.getHeader()); - message = msg.getMessage(); - } - - public TikTokRoomMessageEvent(WebcastLiveIntroMessage msg) { - super(msg.getHeader()); - if (msg.hasHost()) { - host = new User(msg.getHost()); - } - message = msg.getDescription(); - hostLanguage = msg.getLanguage(); - } - -} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomPinEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomPinEvent.java new file mode 100644 index 0000000..57a358a --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomPinEvent.java @@ -0,0 +1,43 @@ +/* + * 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.events.messages; + +import io.github.jwdeveloper.tiktok.annotations.EventMeta; +import io.github.jwdeveloper.tiktok.annotations.EventType; +import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; +import io.github.jwdeveloper.tiktok.messages.WebcastRoomPinMessage; +import lombok.Getter; + +@Getter +@EventMeta(eventType = EventType.Message) +public class TikTokRoomPinEvent extends TikTokHeaderEvent { + private final Long pinTimeStamp; + private final TikTokCommentEvent comment; + + public TikTokRoomPinEvent(WebcastRoomPinMessage msg) { + super(msg.getHeader()); + this.pinTimeStamp = msg.getTimestamp(); + this.comment = new TikTokCommentEvent(msg.getPinData1()); + } + +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomPinMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomPinMessageEvent.java deleted file mode 100644 index 659ab39..0000000 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomPinMessageEvent.java +++ /dev/null @@ -1,22 +0,0 @@ -package io.github.jwdeveloper.tiktok.events.messages; - -import io.github.jwdeveloper.tiktok.annotations.EventMeta; -import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; -import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.messages.WebcastRoomPinMessage; -import lombok.Getter; - -@Getter -@EventMeta(eventType = EventType.Message) -public class TikTokRoomPinMessageEvent extends TikTokHeaderEvent { - private final Long pinTimeStamp; - private final TikTokCommentEvent comment; - - public TikTokRoomPinMessageEvent(WebcastRoomPinMessage msg) { - super(msg.getHeader()); - this.pinTimeStamp = msg.getTimestamp(); - this.comment = new TikTokCommentEvent(msg.getPinData1()); - } - -} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomViewerDataEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomViewerDataEvent.java index 52dcb8b..50272a5 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomViewerDataEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomViewerDataEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShareEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShareEvent.java index c70192c..12681c2 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShareEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShareEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; @@ -8,6 +30,9 @@ import io.github.jwdeveloper.tiktok.events.objects.User; import io.github.jwdeveloper.tiktok.messages.WebcastSocialMessage; import lombok.Getter; +/** + * Triggers when a user shares the stream. Based on social event. + */ @Getter @EventMeta(eventType = EventType.Custom) public class TikTokShareEvent extends TikTokHeaderEvent { diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShopEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShopEvent.java new file mode 100644 index 0000000..a4fa884 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShopEvent.java @@ -0,0 +1,55 @@ +/* + * 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.events.messages; + +import io.github.jwdeveloper.tiktok.annotations.EventMeta; +import io.github.jwdeveloper.tiktok.annotations.EventType; +import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; +import io.github.jwdeveloper.tiktok.events.objects.Picture; +import io.github.jwdeveloper.tiktok.messages.WebcastOecLiveShoppingMessage; +import lombok.Getter; + +@Getter +@EventMeta(eventType = EventType.Message) +public class TikTokShopEvent extends TikTokHeaderEvent { + private final String title; + + private final String price; + + private final Picture picture; + + private final String shopUrl; + + private final String shopName; + + public TikTokShopEvent(WebcastOecLiveShoppingMessage msg) { + super(msg.getHeader()); + var data = msg.getShopData(); + title = data.getTitle(); + price = data.getPriceString(); + picture = new Picture(data.getImageUrl()); + shopUrl = data.getShopUrl(); + shopName = data.getShopName(); + } + +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShopMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShopMessageEvent.java deleted file mode 100644 index aa01872..0000000 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShopMessageEvent.java +++ /dev/null @@ -1,34 +0,0 @@ -package io.github.jwdeveloper.tiktok.events.messages; - -import io.github.jwdeveloper.tiktok.annotations.EventMeta; -import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; -import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.events.objects.Picture; -import io.github.jwdeveloper.tiktok.messages.WebcastOecLiveShoppingMessage; -import lombok.Getter; - -@Getter -@EventMeta(eventType = EventType.Message) -public class TikTokShopMessageEvent extends TikTokHeaderEvent { - private final String title; - - private final String price; - - private final Picture picture; - - private final String shopUrl; - - private final String shopName; - - public TikTokShopMessageEvent(WebcastOecLiveShoppingMessage msg) { - super(msg.getHeader()); - var data = msg.getShopData(); - title = data.getTitle(); - price = data.getPriceString(); - picture = new Picture(data.getImageUrl()); - shopUrl = data.getShopUrl(); - shopName = data.getShopName(); - } - -} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubNotifyEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubNotifyEvent.java index ede35a8..af289f4 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubNotifyEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubNotifyEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubscribeEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubscribeEvent.java index 0f5a924..c24051f 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubscribeEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubscribeEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; @@ -8,6 +30,9 @@ import io.github.jwdeveloper.tiktok.events.objects.User; import io.github.jwdeveloper.tiktok.messages.WebcastMemberMessage; import lombok.Getter; +/** + * Triggers when a user creates a subscription. + */ @Getter @EventMeta(eventType = EventType.Custom) public class TikTokSubscribeEvent extends TikTokHeaderEvent { diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnauthorizedMemberEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnauthorizedMemberEvent.java index 5a97696..8c847d7 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnauthorizedMemberEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnauthorizedMemberEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledControlEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledControlEvent.java index 390cdfd..20e1643 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledControlEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledControlEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledMemberEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledMemberEvent.java index ecdd893..7d7eb2e 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledMemberEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledMemberEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledSocialEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledSocialEvent.java index a400cad..ca967fd 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledSocialEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledSocialEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledWebsocketMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledWebsocketMessageEvent.java index bdd7e40..f24faf9 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledWebsocketMessageEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledWebsocketMessageEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokWebsocketMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokWebsocketMessageEvent.java index 5808ebc..aeb13cb 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokWebsocketMessageEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokWebsocketMessageEvent.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.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; @@ -10,7 +32,7 @@ import lombok.Getter; /** - * Happens when TikTok websocket receive message from server + * Triggered every time a protobuf encoded webcast message arrives. You can deserialize the binary object depending on the use case. */ @Getter @AllArgsConstructor diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Badge.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Badge.java index d0c03ec..4aed5b6 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Badge.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Badge.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.events.objects; import io.github.jwdeveloper.tiktok.messages.BadgeStruct; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/BarrageData.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/BarrageData.java index 449d2d0..72d8116 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/BarrageData.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/BarrageData.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.events.objects; import lombok.AllArgsConstructor; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/EnumValue.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/EnumValue.java index e9ce817..ff3d92f 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/EnumValue.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/EnumValue.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.events.objects; import lombok.Value; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Gift.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Gift.java deleted file mode 100644 index e550286..0000000 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Gift.java +++ /dev/null @@ -1,22 +0,0 @@ -package io.github.jwdeveloper.tiktok.events.objects; - -import lombok.Value; - -@Value -public class Gift { - Long id; - String name; - String description; - Integer diamondCost; - Integer type; - Picture picture; - - public Gift(io.github.jwdeveloper.tiktok.messages.GiftStruct gift) { - id = gift.getId(); - name = gift.getName(); - description = gift.getDescribe(); - diamondCost = gift.getDiamondCount(); - type = gift.getType(); - picture = new Picture(gift.getImage()); - } -} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/LinkMicArmy.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/LinkMicArmy.java index 28ce279..4c64e58 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/LinkMicArmy.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/LinkMicArmy.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.events.objects; import io.github.jwdeveloper.tiktok.messages.LinkMicArmiesItems; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/LinkMicBattleTeam.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/LinkMicBattleTeam.java index 6432a0f..421a30b 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/LinkMicBattleTeam.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/LinkMicBattleTeam.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.events.objects; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Picture.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Picture.java index 31adda8..7da3eec 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Picture.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Picture.java @@ -1,7 +1,28 @@ +/* + * 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.events.objects; import lombok.Getter; -import lombok.Value; import java.util.ArrayList; import java.util.Arrays; @@ -10,28 +31,25 @@ import java.util.List; @Getter public class Picture { - List urls; - public Picture(io.github.jwdeveloper.tiktok.messages.Image profilePicture) { - this.urls = profilePicture.getUrlListList(); - } - public Picture(List urls) { - this.urls = urls; - } + private final String link; + private boolean downloaded; + private boolean downloading; - public Picture(String ... urls) + + public Picture(String link) { - this.urls = Arrays.stream(urls).toList(); + this.link = link; + downloaded= false; + downloading =false; } - - public static Picture Map(io.github.jwdeveloper.tiktok.messages.Image profilePicture) { - return new Picture(profilePicture.getUrlListList()); + return new Picture(profilePicture.getUri()); } public static Picture Empty() { - return new Picture(); + return new Picture(""); } public static List EmptyList() diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/PollOption.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/PollOption.java index 326328b..16397a0 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/PollOption.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/PollOption.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.events.objects; import lombok.AllArgsConstructor; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/TikTokGift.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/TikTokGift.java index cc86625..ce9b227 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/TikTokGift.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/TikTokGift.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.events.objects; import io.github.jwdeveloper.tiktok.messages.WebcastGiftMessage; @@ -13,8 +35,8 @@ public class TikTokGift { @Setter private boolean streakFinished; - public TikTokGift(WebcastGiftMessage message) { - gift = new Gift(message.getGift()); + public TikTokGift(Gift gift, WebcastGiftMessage message) { + this.gift = gift; sender = User.MapOrEmpty(message.getUser()); amount = message.getComboCount(); streakFinished = message.getRepeatEnd() > 0; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/TopViewer.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/TopViewer.java index 486935e..e087e95 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/TopViewer.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/TopViewer.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.events.objects; import lombok.Value; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/User.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/User.java index 7342d5f..4594744 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/User.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/User.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.events.objects; import lombok.Getter; @@ -75,9 +97,9 @@ public class User { uniqueId = user.getSpecialId(); nickName = user.getNickname(); description = user.getBioDescription(); - profilePicture = new Picture(user.getAvatarThumb()); - picture720 = new Picture(user.getAvatarMedium()); - picture1080 = new Picture(user.getAvatarLarge()); + profilePicture = Picture.Map(user.getAvatarThumb()); + picture720 = Picture.Map(user.getAvatarMedium()); + picture1080 = Picture.Map(user.getAvatarLarge()); following = user.getFollowInfo().getFollowingCount(); followers = user.getFollowInfo().getFollowerCount(); followsHost = user.getFollowInfo().getFollowStatus(); @@ -86,10 +108,8 @@ public class User { } - public static User MapOrEmpty(io.github.jwdeveloper.tiktok.messages.User user) - { - if(user != null) - { + public static User MapOrEmpty(io.github.jwdeveloper.tiktok.messages.User user) { + if (user != null) { return new User(user); } return new User(0L, diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokEventListenerMethodException.java b/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokEventListenerMethodException.java index 1d3535c..303171b 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokEventListenerMethodException.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokEventListenerMethodException.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.exceptions; public class TikTokEventListenerMethodException extends TikTokLiveException diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokLiveException.java b/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokLiveException.java index 108a4be..a3b9d13 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokLiveException.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokLiveException.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.exceptions; public class TikTokLiveException extends RuntimeException diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokLiveMessageException.java b/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokLiveMessageException.java index 1402505..ed6b4e0 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokLiveMessageException.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokLiveMessageException.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.exceptions; import io.github.jwdeveloper.tiktok.messages.WebcastResponse; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokLiveOfflineHostException.java b/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokLiveOfflineHostException.java index b5090d4..01639d6 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokLiveOfflineHostException.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokLiveOfflineHostException.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.exceptions; public class TikTokLiveOfflineHostException extends TikTokLiveException diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokLiveRequestException.java b/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokLiveRequestException.java index e9debf4..55848cf 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokLiveRequestException.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokLiveRequestException.java @@ -1,5 +1,31 @@ +/* + * 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.exceptions; + +/* + * Happens while bad response from Http request to TikTok + */ public class TikTokLiveRequestException extends TikTokLiveException { public TikTokLiveRequestException() { diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokMessageMappingException.java b/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokMessageMappingException.java index c63c40d..e3671bd 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokMessageMappingException.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokMessageMappingException.java @@ -1,6 +1,31 @@ +/* + * 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.exceptions; +/** + * Happens when incoming data from TikTok can not be mapped to TikTokEvent's + */ public class TikTokMessageMappingException extends TikTokLiveException { public TikTokMessageMappingException(Class inputClazz, Class outputClass, Throwable throwable) diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokProtocolBufferException.java b/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokProtocolBufferException.java index 7b5e721..abd6380 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokProtocolBufferException.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokProtocolBufferException.java @@ -1,7 +1,33 @@ +/* + * 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.exceptions; import lombok.Getter; + +/** + * Happens when incoming data from TikTok is invalid + */ public class TikTokProtocolBufferException extends TikTokLiveException { @Getter diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/handler/TikTokMessageHandler.java b/API/src/main/java/io/github/jwdeveloper/tiktok/handler/TikTokMessageHandler.java index d102f3b..225db07 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/handler/TikTokMessageHandler.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/handler/TikTokMessageHandler.java @@ -1,9 +1,32 @@ +/* + * 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.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; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokHttpRequest.java b/API/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokHttpRequest.java index c454de2..448d6c8 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokHttpRequest.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokHttpRequest.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.http; import java.util.Map; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/listener/ListenersManager.java b/API/src/main/java/io/github/jwdeveloper/tiktok/listener/ListenersManager.java index 9a73e30..e8a3097 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/listener/ListenersManager.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/listener/ListenersManager.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.listener; import java.util.List; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/listener/TikTokEventListener.java b/API/src/main/java/io/github/jwdeveloper/tiktok/listener/TikTokEventListener.java index 6ed0838..617cc3e 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/listener/TikTokEventListener.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/listener/TikTokEventListener.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.listener; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/live/ConnectionState.java b/API/src/main/java/io/github/jwdeveloper/tiktok/live/ConnectionState.java index 6c7776e..d938e6d 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/live/ConnectionState.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/live/ConnectionState.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.live; public enum ConnectionState diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/live/GiftManager.java b/API/src/main/java/io/github/jwdeveloper/tiktok/live/GiftManager.java index de9c04c..52c087f 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/live/GiftManager.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/live/GiftManager.java @@ -1,30 +1,70 @@ +/* + * 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.live; +import io.github.jwdeveloper.tiktok.events.objects.Gift; 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.List; import java.util.Map; public interface GiftManager { - /** - * Meta information about all TikTok available gifts such as, name, id, description, cost, etc - * TikTokGiftInfos are downloaded only if `clientSettings.setDownloadGiftInfo(true);` - * - * @return map of metainformations about gitfts where Integer is Gift Id and TikTokGiftInfo is gift data - * @see TikTokGiftInfo - */ - Map getGiftsInfo(); - /** - * Active Gifts are updated after TikTokGiftMessageEvent. This map contains gifts that - * recently send to host and have active strike - * - * @return map of active gifts - * @see TikTokGift - * @see io.github.jwdeveloper.tiktok.events.messages.TikTokGiftMessageEvent - */ Map getActiveGifts(); + + + /** + * In case you can't find your gift in Gift enum. You can register gift + * manually here to make it detected while TikTokGiftEvent + * + * @param id gift's id + * @param name gift's name + * @param diamondCost diamond cost + * @return + */ + Gift registerGift(int id, String name, int diamondCost); + + + /** + * + * @param giftId + * @return + */ + Gift findById(int giftId); + + /** + * + * @param giftName + * @return + */ + Gift findByName(String giftName); + + /** + * + * @return all gifts + */ + List getGifts(); } diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveClient.java b/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveClient.java index 75f5465..5b65598 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveClient.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveClient.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.live; import io.github.jwdeveloper.tiktok.listener.ListenersManager; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveRoomInfo.java b/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveRoomInfo.java index 9d67dff..b87d5d5 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveRoomInfo.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveRoomInfo.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.live; public interface LiveRoomInfo diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveRoomMeta.java b/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveRoomMeta.java index ee62b13..91b002d 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveRoomMeta.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveRoomMeta.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.live; import lombok.Data; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/Mapper.java b/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/Mapper.java index 6603270..5fa5976 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/Mapper.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/Mapper.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; public interface Mapper diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/models/GiftId.java b/API/src/main/java/io/github/jwdeveloper/tiktok/models/GiftId.java index bce712d..5971323 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/models/GiftId.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/models/GiftId.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.models; import lombok.AllArgsConstructor; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/models/GiftStrike.java b/API/src/main/java/io/github/jwdeveloper/tiktok/models/GiftStrike.java index 4f984f3..bf4abeb 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/models/GiftStrike.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/models/GiftStrike.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.models; public enum GiftStrike diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/models/SocialTypes.java b/API/src/main/java/io/github/jwdeveloper/tiktok/models/SocialTypes.java index 2ade1bb..9130d08 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/models/SocialTypes.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/models/SocialTypes.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.models; public class SocialTypes diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/DefaultFormat.java b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/DefaultFormat.java index 6383180..7add611 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/DefaultFormat.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/DefaultFormat.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.models.gifts; import lombok.Data; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/DisplayText.java b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/DisplayText.java index aea8dec..0e9747a 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/DisplayText.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/DisplayText.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.models.gifts; import lombok.Data; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/GiftLabelIcon.java b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/GiftLabelIcon.java index 35cb25b..fd858d7 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/GiftLabelIcon.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/GiftLabelIcon.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.models.gifts; import lombok.Data; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/GiftPanelBanner.java b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/GiftPanelBanner.java index ac01b21..9f0fd22 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/GiftPanelBanner.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/GiftPanelBanner.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.models.gifts; import lombok.Data; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/Icon.java b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/Icon.java index 45e9c6b..046aef9 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/Icon.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/Icon.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.models.gifts; import lombok.Data; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/Image.java b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/Image.java index b600ec1..04e9597 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/Image.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/Image.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.models.gifts; import lombok.Data; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/LeftIcon.java b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/LeftIcon.java index 4744a9b..47eb454 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/LeftIcon.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/LeftIcon.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.models.gifts; import lombok.Data; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/LockInfo.java b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/LockInfo.java index 5f55557..28f58a4 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/LockInfo.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/LockInfo.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.models.gifts; import lombok.Data; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/SpecialEffects.java b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/SpecialEffects.java index bf3d8ad..219d0bd 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/SpecialEffects.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/SpecialEffects.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.models.gifts; public class SpecialEffects { diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/TikTokGiftInfo.java b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/TikTokGiftInfo.java index 9ab55c6..47c528d 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/TikTokGiftInfo.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/TikTokGiftInfo.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.models.gifts; import lombok.Data; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/TrackerParams.java b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/TrackerParams.java index 920ee20..0acbf8a 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/TrackerParams.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/TrackerParams.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.models.gifts; public class TrackerParams { diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/utils/CancelationToken.java b/API/src/main/java/io/github/jwdeveloper/tiktok/utils/CancelationToken.java index 977f736..8b76854 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/utils/CancelationToken.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/utils/CancelationToken.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; import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveException; diff --git a/Client/pom.xml b/Client/pom.xml index d826a68..a6a7e9a 100644 --- a/Client/pom.xml +++ b/Client/pom.xml @@ -46,8 +46,46 @@ 2.0.7 runtime + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.5.0 + + + package + + shade + + + true + all + false + true + + + *:* + + + + + *:* + + **/tiktokSchema.proto/** + + + + + + + + + + 16 diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokGiftManager.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokGiftManager.java deleted file mode 100644 index 1b5551a..0000000 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokGiftManager.java +++ /dev/null @@ -1,49 +0,0 @@ -package io.github.jwdeveloper.tiktok; - -import io.github.jwdeveloper.tiktok.events.objects.TikTokGift; -import io.github.jwdeveloper.tiktok.live.GiftManager; -import io.github.jwdeveloper.tiktok.messages.WebcastGiftMessage; -import io.github.jwdeveloper.tiktok.models.GiftId; -import io.github.jwdeveloper.tiktok.models.gifts.TikTokGiftInfo; -import lombok.Getter; - -import java.util.HashMap; -import java.util.Map; - -public class TikTokGiftManager implements GiftManager { - - @Getter - private final Map giftsInfo; - - @Getter - private final Map activeGifts; - - public TikTokGiftManager() { - giftsInfo = new HashMap<>(); - activeGifts = new HashMap<>(); - } - - public TikTokGift updateActiveGift(WebcastGiftMessage giftMessage) { - var giftId = new GiftId(giftMessage.getGiftId(), giftMessage.getUser().getIdStr()); - if (activeGifts.containsKey(giftId)) { - var gift = activeGifts.get(giftId); - gift.setAmount(giftMessage.getComboCount()); - } else { - var newGift = new TikTokGift(giftMessage); - activeGifts.put(giftId, newGift); - } - - var gift = activeGifts.get(giftId); - - if (giftMessage.getRepeatEnd() > 0) - { - gift.setStreakFinished(true); - activeGifts.remove(giftId); - } - return gift; - } - - public void loadGifsInfo(Map gifts) { - this.giftsInfo.putAll(gifts); - } -} 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 4272ed8..b8b28b4 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLive.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLive.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; diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClient.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClient.java index bb2516d..935a581 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClient.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClient.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; import io.github.jwdeveloper.tiktok.events.messages.TikTokDisconnectedEvent; @@ -5,6 +27,7 @@ import io.github.jwdeveloper.tiktok.events.messages.TikTokErrorEvent; import io.github.jwdeveloper.tiktok.events.messages.TikTokReconnectingEvent; import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveException; import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveOfflineHostException; +import io.github.jwdeveloper.tiktok.gifts.TikTokGiftManager; import io.github.jwdeveloper.tiktok.handlers.TikTokEventObserver; import io.github.jwdeveloper.tiktok.http.TikTokApiService; import io.github.jwdeveloper.tiktok.listener.ListenersManager; @@ -92,7 +115,6 @@ public class TikTokLiveClient implements LiveClient { if(clientSettings.getRoomId() != null) { - liveRoomInfo.setRoomId(clientSettings.getRoomId()); logger.info("Using roomID from settings: "+clientSettings.getRoomId()); } @@ -108,12 +130,6 @@ public class TikTokLiveClient implements LiveClient { throw new TikTokLiveOfflineHostException("LiveStream for HostID could not be found. Is the Host online?"); } - if (clientSettings.isDownloadGiftInfo()) - { - logger.info("Fetch Gift info"); - var gifts = apiService.fetchAvailableGifts(); - tikTokGiftManager.loadGifsInfo(gifts); - } var clientData = apiService.fetchClientData(); webSocketClient.start(clientData, this); setState(ConnectionState.CONNECTED); 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 19ca07c..a107e9a 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.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; import io.github.jwdeveloper.tiktok.events.TikTokEvent; @@ -5,6 +27,7 @@ import io.github.jwdeveloper.tiktok.events.TikTokEventBuilder; import io.github.jwdeveloper.tiktok.events.TikTokEventConsumer; import io.github.jwdeveloper.tiktok.events.messages.*; import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveException; +import io.github.jwdeveloper.tiktok.gifts.TikTokGiftManager; import io.github.jwdeveloper.tiktok.handlers.TikTokEventObserver; import io.github.jwdeveloper.tiktok.handlers.TikTokMessageHandlerRegistration; import io.github.jwdeveloper.tiktok.http.TikTokApiService; @@ -19,6 +42,8 @@ import io.github.jwdeveloper.tiktok.websocket.TikTokWebSocketClient; import java.time.Duration; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; import java.util.function.Consumer; import java.util.logging.Level; import java.util.logging.Logger; @@ -41,8 +66,8 @@ public class TikTokLiveClientBuilder implements TikTokEventBuilder buildAndRunAsync() { + var executor = Executors.newSingleThreadExecutor(); + var future = executor.submit(this::buildAndRun); + executor.shutdown(); + return future; + } public TikTokLiveClientBuilder onUnhandledSocial( TikTokEventConsumer event) { @@ -130,20 +161,20 @@ public class TikTokLiveClientBuilder implements TikTokEventBuilder event) { - tikTokEventHandler.subscribe(TikTokShopMessageEvent.class, event); + public TikTokLiveClientBuilder onShop(TikTokEventConsumer event) { + tikTokEventHandler.subscribe(TikTokShopEvent.class, event); return this; } - public TikTokLiveClientBuilder onDetectMessage( - TikTokEventConsumer event) { - tikTokEventHandler.subscribe(TikTokDetectMessageEvent.class, event); + public TikTokLiveClientBuilder onDetect( + TikTokEventConsumer event) { + tikTokEventHandler.subscribe(TikTokDetectEvent.class, event); return this; } - public TikTokLiveClientBuilder onLinkLayerMessage( - TikTokEventConsumer event) { - tikTokEventHandler.subscribe(TikTokLinkLayerMessageEvent.class, event); + public TikTokLiveClientBuilder onLinkLayer( + TikTokEventConsumer event) { + tikTokEventHandler.subscribe(TikTokLinkLayerEvent.class, event); return this; } @@ -162,14 +193,14 @@ public class TikTokLiveClientBuilder implements TikTokEventBuilder event) { - tikTokEventHandler.subscribe(TikTokRoomPinMessageEvent.class, event); + public TikTokLiveClientBuilder onRoomPin( + TikTokEventConsumer event) { + tikTokEventHandler.subscribe(TikTokRoomPinEvent.class, event); return this; } - public TikTokLiveClientBuilder onRoomMessage(TikTokEventConsumer event) { - tikTokEventHandler.subscribe(TikTokRoomMessageEvent.class, event); + public TikTokLiveClientBuilder onRoom(TikTokEventConsumer event) { + tikTokEventHandler.subscribe(TikTokRoomEvent.class, event); return this; } @@ -183,22 +214,29 @@ public class TikTokLiveClientBuilder implements TikTokEventBuilder event) { - tikTokEventHandler.subscribe(TikTokLinkMessageEvent.class, event); + public TikTokLiveClientBuilder onLink(TikTokEventConsumer event) { + tikTokEventHandler.subscribe(TikTokLinkEvent.class, event); return this; } - public TikTokLiveClientBuilder onBarrageMessage( - TikTokEventConsumer event) { - tikTokEventHandler.subscribe(TikTokBarrageMessageEvent.class, event); + public TikTokLiveClientBuilder onBarrage( + TikTokEventConsumer event) { + tikTokEventHandler.subscribe(TikTokBarrageEvent.class, event); return this; } - public TikTokLiveClientBuilder onGiftMessage(TikTokEventConsumer event) { - tikTokEventHandler.subscribe(TikTokGiftMessageEvent.class, event); + + public TikTokLiveClientBuilder onGift(TikTokEventConsumer event) { + tikTokEventHandler.subscribe(TikTokGiftEvent.class, event); return this; } + public TikTokLiveClientBuilder onGiftCombo(TikTokEventConsumer event) { + tikTokEventHandler.subscribe(TikTokGiftComboFinishedEvent.class, event); + return this; + } + + public TikTokLiveClientBuilder onLinkMicArmies( TikTokEventConsumer event) { tikTokEventHandler.subscribe(TikTokLinkMicArmiesEvent.class, event); @@ -233,8 +271,8 @@ public class TikTokLiveClientBuilder implements TikTokEventBuilder event) { - tikTokEventHandler.subscribe(TikTokPollMessageEvent.class, event); + public TikTokLiveClientBuilder onPoll(TikTokEventConsumer event) { + tikTokEventHandler.subscribe(TikTokPollEvent.class, event); return this; } @@ -322,12 +360,6 @@ public class TikTokLiveClientBuilder implements TikTokEventBuilder event) { - tikTokEventHandler.subscribe(TikTokGiftBroadcastEvent.class, event); - return this; - } - public TikTokLiveClientBuilder onUnhandledControl( TikTokEventConsumer event) { tikTokEventHandler.subscribe(TikTokUnhandledControlEvent.class, event); @@ -346,8 +378,7 @@ public class TikTokLiveClientBuilder implements TikTokEventBuilder event) - { + public TikTokLiveClientBuilder onReconnecting(TikTokEventConsumer event) { tikTokEventHandler.subscribe(TikTokReconnectingEvent.class, event); return this; } diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokRoomInfo.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokRoomInfo.java index 8d8aec6..72a79d7 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokRoomInfo.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokRoomInfo.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; import io.github.jwdeveloper.tiktok.live.ConnectionState; diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/gifts/TikTokGiftManager.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/gifts/TikTokGiftManager.java new file mode 100644 index 0000000..f522bd2 --- /dev/null +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/gifts/TikTokGiftManager.java @@ -0,0 +1,127 @@ +/* + * 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.gifts; + +import io.github.jwdeveloper.tiktok.events.objects.Gift; +import io.github.jwdeveloper.tiktok.events.objects.TikTokGift; +import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveException; +import io.github.jwdeveloper.tiktok.live.GiftManager; +import io.github.jwdeveloper.tiktok.messages.WebcastGiftMessage; +import io.github.jwdeveloper.tiktok.models.GiftId; +import lombok.Getter; +import sun.misc.Unsafe; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class TikTokGiftManager implements GiftManager { + + @Getter + private final Map activeGifts; + private final Map indexById; + private final Map indexByName; + + public TikTokGiftManager() { + activeGifts = new HashMap<>(); + indexById = new HashMap<>(); + indexByName = new HashMap<>(); + init(); + } + + protected void init() { + for (var gift : Gift.values()) { + indexById.put(gift.getId(), gift); + indexByName.put(gift.getName(), gift); + } + } + + public TikTokGift updateActiveGift(WebcastGiftMessage giftMessage) { + var giftId = new GiftId(giftMessage.getGiftId(), giftMessage.getUser().getIdStr()); + if (activeGifts.containsKey(giftId)) { + var gift = activeGifts.get(giftId); + gift.setAmount(giftMessage.getComboCount()); + } else { + var newGift = new TikTokGift(findById((int) giftMessage.getGiftId()), giftMessage); + activeGifts.put(giftId, newGift); + } + + var gift = activeGifts.get(giftId); + + if (giftMessage.getRepeatEnd() > 0) { + gift.setStreakFinished(true); + activeGifts.remove(giftId); + } + return gift; + } + + public Gift registerGift(int id, String name, int diamondCost) { + try { + var constructor = Unsafe.class.getDeclaredConstructors()[0]; + constructor.setAccessible(true); + var unsafe = (Unsafe) constructor.newInstance(); + Gift enumInstance = (Gift) unsafe.allocateInstance(Gift.class); + + var field = Gift.class.getDeclaredField("id"); + field.setAccessible(true); + field.set(enumInstance, id); + + field = Gift.class.getDeclaredField("name"); + field.setAccessible(true); + field.set(enumInstance, name); + + + field = Gift.class.getDeclaredField("diamondCost"); + field.setAccessible(true); + field.set(enumInstance, diamondCost); + + indexById.put(enumInstance.getId(), enumInstance); + indexByName.put(enumInstance.getName(), enumInstance); + + return enumInstance; + } catch (Exception e) { + throw new TikTokLiveException("Unable to register gift: " + name + ": " + id); + } + } + + public Gift findById(int giftId) { + if (!indexById.containsKey(giftId)) { + return Gift.UNDEFINED; + } + return indexById.get(giftId); + } + + public Gift findByName(String giftName) { + if (!indexByName.containsKey(giftName)) { + return Gift.UNDEFINED; + } + return indexByName.get(giftName); + } + + @Override + public List getGifts() + { + return indexById.values().stream().toList(); + } + +} diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/TikTokEventObserver.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/TikTokEventObserver.java index 058a832..61725f1 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/TikTokEventObserver.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/TikTokEventObserver.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; import io.github.jwdeveloper.tiktok.TikTokLiveClient; @@ -10,35 +32,32 @@ import java.util.Map; import java.util.Set; public class TikTokEventObserver { - private final Map> events; + private final Map, Set> events; public TikTokEventObserver() { events = new HashMap<>(); } public void publish(TikTokLiveClient tikTokLiveClient, TikTokEvent tikTokEvent) { - if (events.containsKey(TikTokEvent.class.getSimpleName())) { - var handlers = events.get(TikTokEvent.class.getSimpleName()); - for(var handle : handlers) - { + if (events.containsKey(TikTokEvent.class)) { + var handlers = events.get(TikTokEvent.class); + for (var handle : handlers) { handle.onEvent(tikTokLiveClient, tikTokEvent); } } - var name = tikTokEvent.getClass().getSimpleName(); - if (!events.containsKey(name)) { + + if (!events.containsKey(tikTokEvent.getClass())) { return; } - var handlers = events.get(name); - for(var handler : handlers) - { + var handlers = events.get(tikTokEvent.getClass()); + for (var handler : handlers) { handler.onEvent(tikTokLiveClient, tikTokEvent); } } - public void subscribe(Class clazz, TikTokEventConsumer event) - { - events.computeIfAbsent(clazz.getSimpleName(), e -> new HashSet<>()).add(event); + public void subscribe(Class clazz, TikTokEventConsumer event) { + events.computeIfAbsent(clazz, e -> new HashSet<>()).add(event); } public void unsubscribeAll(Class clazz) { @@ -46,9 +65,22 @@ public class TikTokEventObserver { } public void unsubscribe(TikTokEventConsumer consumer) { - for(var entry : events.entrySet()) - { + for (var entry : events.entrySet()) { entry.getValue().remove(consumer); } } + + public void unsubscribe(Class clazz, TikTokEventConsumer consumer) { + if (clazz == null) { + return; + } + + if (!events.containsKey(clazz)) { + return; + } + + var eventSet = events.get(clazz); + eventSet.remove(consumer); + + } } diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/TikTokMessageHandler.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/TikTokMessageHandler.java index 6ab3fb6..4209092 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/TikTokMessageHandler.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/TikTokMessageHandler.java @@ -1,8 +1,29 @@ +/* + * 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; import com.google.protobuf.ByteString; -import io.github.jwdeveloper.tiktok.ClientSettings; import io.github.jwdeveloper.tiktok.TikTokLiveClient; import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.messages.TikTokErrorEvent; @@ -13,57 +34,47 @@ import io.github.jwdeveloper.tiktok.exceptions.TikTokMessageMappingException; import io.github.jwdeveloper.tiktok.messages.WebcastResponse; import java.util.Arrays; -import java.util.Base64; import java.util.HashMap; import java.util.Map; import java.util.function.Function; -import java.util.logging.Logger; public abstract class TikTokMessageHandler { private final Map handlers; private final TikTokEventObserver tikTokEventHandler; - private final ClientSettings clientSettings; - protected final Logger logger; - public TikTokMessageHandler(TikTokEventObserver tikTokEventHandler, ClientSettings clientSettings, Logger logger) { + public TikTokMessageHandler(TikTokEventObserver tikTokEventHandler) { handlers = new HashMap<>(); this.tikTokEventHandler = tikTokEventHandler; - this.clientSettings = clientSettings; - this.logger = logger; init(); } public abstract void init(); - public void register(Class clazz, Function func) { + public void registerMapping(Class clazz, Function func) { handlers.put(clazz.getSimpleName(), func::apply); } - public void register(Class input, Class output) { - register(input, (e) -> mapMessageToEvent(input, output, e)); + public void registerMapping(Class input, Class output) { + registerMapping(input, (e) -> mapMessageToEvent(input, output, e)); } public void handle(TikTokLiveClient client, WebcastResponse webcastResponse) { for (var message : webcastResponse.getMessagesList()) { try { - if(clientSettings.isPrintMessageData()) - { - var type= message.getType(); - var base64 = Base64.getEncoder().encodeToString(message.getBinary().toByteArray()); - logger.info(type+": \n "+base64); - } handleSingleMessage(client, message); - } catch (Exception e) { + } catch (Exception e) + { var exception = new TikTokLiveMessageException(message, webcastResponse, e); tikTokEventHandler.publish(client, new TikTokErrorEvent(exception)); } } } - private void handleSingleMessage(TikTokLiveClient client, WebcastResponse.Message message) throws Exception { + + public void handleSingleMessage(TikTokLiveClient client, WebcastResponse.Message message) throws Exception { if (!handlers.containsKey(message.getType())) { tikTokEventHandler.publish(client, new TikTokUnhandledWebsocketMessageEvent(message)); return; diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/TikTokMessageHandlerRegistration.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/TikTokMessageHandlerRegistration.java index c7804b6..55e855b 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/TikTokMessageHandlerRegistration.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/TikTokMessageHandlerRegistration.java @@ -1,27 +1,48 @@ +/* + * 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; -import io.github.jwdeveloper.tiktok.ClientSettings; -import io.github.jwdeveloper.tiktok.TikTokGiftManager; import io.github.jwdeveloper.tiktok.TikTokRoomInfo; import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.messages.*; +import io.github.jwdeveloper.tiktok.events.objects.Gift; +import io.github.jwdeveloper.tiktok.gifts.TikTokGiftManager; import io.github.jwdeveloper.tiktok.messages.*; import io.github.jwdeveloper.tiktok.models.SocialTypes; import lombok.SneakyThrows; -import java.util.logging.Logger; import java.util.regex.Pattern; public class TikTokMessageHandlerRegistration extends TikTokMessageHandler { private final TikTokGiftManager giftManager; private final TikTokRoomInfo roomInfo; + private final Pattern socialMediaPattern = Pattern.compile("pm_mt_guidance_viewer_([0-9]+)_share"); + public TikTokMessageHandlerRegistration(TikTokEventObserver tikTokEventHandler, - ClientSettings clientSettings, - Logger logger, TikTokGiftManager giftManager, TikTokRoomInfo roomInfo) { - super(tikTokEventHandler, clientSettings, logger); + super(tikTokEventHandler); this.giftManager = giftManager; this.roomInfo = roomInfo; } @@ -30,57 +51,55 @@ public class TikTokMessageHandlerRegistration extends TikTokMessageHandler { public void init() { //ConnectionEvents events - register(WebcastControlMessage.class, this::handleWebcastControlMessage); - register(SystemMessage.class,TikTokRoomMessageEvent.class); + registerMapping(WebcastControlMessage.class, this::handleWebcastControlMessage); + registerMapping(SystemMessage.class, TikTokRoomEvent.class); //Room status events - register(WebcastLiveIntroMessage.class, TikTokRoomMessageEvent.class); - register(WebcastRoomUserSeqMessage.class, this::handleRoomUserSeqMessage); - register(RoomMessage.class, TikTokRoomMessageEvent.class); - register(WebcastRoomMessage.class, TikTokRoomMessageEvent.class); - register(WebcastCaptionMessage.class, TikTokCaptionEvent.class); + registerMapping(WebcastLiveIntroMessage.class, TikTokRoomEvent.class); + registerMapping(WebcastRoomUserSeqMessage.class, this::handleRoomUserSeqMessage); + registerMapping(RoomMessage.class, TikTokRoomEvent.class); + registerMapping(WebcastRoomMessage.class, TikTokRoomEvent.class); + registerMapping(WebcastCaptionMessage.class, TikTokCaptionEvent.class); //User Interactions events - register(WebcastChatMessage.class, TikTokCommentEvent.class); - register(WebcastLikeMessage.class, TikTokLikeEvent.class); - register(WebcastGiftMessage.class, this::handleGift); - register(WebcastSocialMessage.class, this::handleSocialMedia); - register(WebcastMemberMessage.class, this::handleMemberMessage); + registerMapping(WebcastChatMessage.class, TikTokCommentEvent.class); + registerMapping(WebcastLikeMessage.class, TikTokLikeEvent.class); + registerMapping(WebcastGiftMessage.class, this::handleGift); + registerMapping(WebcastSocialMessage.class, this::handleSocialMedia); + registerMapping(WebcastMemberMessage.class, this::handleMemberMessage); //Host Interaction events - register(WebcastPollMessage.class, TikTokPollMessageEvent.class); - register(WebcastRoomPinMessage.class, TikTokRoomPinMessageEvent.class); - register(WebcastGoalUpdateMessage.class, TikTokGoalUpdateEvent.class); + registerMapping(WebcastPollMessage.class, TikTokPollEvent.class); + registerMapping(WebcastRoomPinMessage.class, TikTokRoomPinEvent.class); + registerMapping(WebcastGoalUpdateMessage.class, TikTokGoalUpdateEvent.class); //LinkMic events - register(WebcastLinkMicBattle.class, TikTokLinkMicBattleEvent.class); - register(WebcastLinkMicArmies.class, TikTokLinkMicArmiesEvent.class); - register(LinkMicMethod.class, TikTokLinkMicMethodEvent.class); - register(WebcastLinkMicMethod.class, TikTokLinkMicMethodEvent.class); - register(WebcastLinkMicFanTicketMethod.class, TikTokLinkMicFanTicketEvent.class); + registerMapping(WebcastLinkMicBattle.class, TikTokLinkMicBattleEvent.class); + registerMapping(WebcastLinkMicArmies.class, TikTokLinkMicArmiesEvent.class); + registerMapping(LinkMicMethod.class, TikTokLinkMicMethodEvent.class); + registerMapping(WebcastLinkMicMethod.class, TikTokLinkMicMethodEvent.class); + registerMapping(WebcastLinkMicFanTicketMethod.class, TikTokLinkMicFanTicketEvent.class); //Rank events - register(WebcastRankTextMessage.class, TikTokRankTextEvent.class); - register(WebcastRankUpdateMessage.class, TikTokRankUpdateEvent.class); - register(WebcastHourlyRankMessage.class, TikTokRankUpdateEvent.class); + registerMapping(WebcastRankTextMessage.class, TikTokRankTextEvent.class); + registerMapping(WebcastRankUpdateMessage.class, TikTokRankUpdateEvent.class); + registerMapping(WebcastHourlyRankMessage.class, TikTokRankUpdateEvent.class); //Others events - register(WebcastInRoomBannerMessage.class, TikTokInRoomBannerEvent.class); - register(WebcastMsgDetectMessage.class, TikTokDetectMessageEvent.class); - register(WebcastBarrageMessage.class, TikTokBarrageMessageEvent.class); - register(WebcastUnauthorizedMemberMessage.class, TikTokUnauthorizedMemberEvent.class); - register(WebcastGiftBroadcastMessage.class, TikTokGiftBroadcastEvent.class); - register(WebcastOecLiveShoppingMessage.class, TikTokShopMessageEvent.class); - register(WebcastImDeleteMessage.class, TikTokIMDeleteEvent.class); - register(WebcastQuestionNewMessage.class, TikTokQuestionEvent.class); - register(WebcastEnvelopeMessage.class, TikTokEnvelopeEvent.class); - register(WebcastSubNotifyMessage.class, TikTokSubNotifyEvent.class); - register(WebcastEmoteChatMessage.class, TikTokEmoteEvent.class); + registerMapping(WebcastInRoomBannerMessage.class, TikTokInRoomBannerEvent.class); + registerMapping(WebcastMsgDetectMessage.class, TikTokDetectEvent.class); + registerMapping(WebcastBarrageMessage.class, TikTokBarrageEvent.class); + registerMapping(WebcastUnauthorizedMemberMessage.class, TikTokUnauthorizedMemberEvent.class); + registerMapping(WebcastOecLiveShoppingMessage.class, TikTokShopEvent.class); + registerMapping(WebcastImDeleteMessage.class, TikTokIMDeleteEvent.class); + registerMapping(WebcastQuestionNewMessage.class, TikTokQuestionEvent.class); + registerMapping(WebcastEnvelopeMessage.class, TikTokEnvelopeEvent.class); + registerMapping(WebcastSubNotifyMessage.class, TikTokSubNotifyEvent.class); + registerMapping(WebcastEmoteChatMessage.class, TikTokEmoteEvent.class); } - @SneakyThrows private TikTokEvent handleWebcastControlMessage(WebcastResponse.Message msg) { var message = WebcastControlMessage.parseFrom(msg.getBinary()); @@ -95,7 +114,23 @@ public class TikTokMessageHandlerRegistration extends TikTokMessageHandler { private TikTokEvent handleGift(WebcastResponse.Message msg) { var giftMessage = WebcastGiftMessage.parseFrom(msg.getBinary()); giftManager.updateActiveGift(giftMessage); - return new TikTokGiftMessageEvent(giftMessage); + + var gift = giftManager.findById((int) giftMessage.getGiftId()); + if (gift == Gift.UNDEFINED) { + gift = giftManager.findByName(giftMessage.getGift().getName()); + } + if (gift == Gift.UNDEFINED) { + gift = giftManager.registerGift( + (int) giftMessage.getGift().getId(), + giftMessage.getGift().getName(), + giftMessage.getGift().getDiamondCount()); + } + + if (giftMessage.getRepeatEnd() > 0) { + return new TikTokGiftComboFinishedEvent(gift, giftMessage); + } + + return new TikTokGiftEvent(gift, giftMessage); } @SneakyThrows @@ -103,11 +138,9 @@ public class TikTokMessageHandlerRegistration extends TikTokMessageHandler { var message = WebcastSocialMessage.parseFrom(msg.getBinary()); var socialType = message.getHeader().getSocialData().getType(); - var pattern = Pattern.compile("pm_mt_guidance_viewer_([0-9]+)_share"); - var matcher = pattern.matcher(socialType); + var matcher = socialMediaPattern.matcher(socialType); - if (matcher.find()) - { + if (matcher.find()) { var value = matcher.group(1); var number = Integer.parseInt(value); return new TikTokShareEvent(message, number); @@ -132,9 +165,8 @@ public class TikTokMessageHandlerRegistration extends TikTokMessageHandler { }; } - private TikTokEvent handleRoomUserSeqMessage(WebcastResponse.Message msg) - { - var event = (TikTokRoomViewerDataEvent)mapMessageToEvent(WebcastRoomUserSeqMessage.class, TikTokRoomViewerDataEvent.class, msg); + private TikTokEvent handleRoomUserSeqMessage(WebcastResponse.Message msg) { + var event = (TikTokRoomViewerDataEvent) mapMessageToEvent(WebcastRoomUserSeqMessage.class, TikTokRoomViewerDataEvent.class, msg); roomInfo.setViewersCount(event.getViewerCount()); return event; } diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/http/HttpUtils.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/http/HttpUtils.java index 8f1d002..10c441f 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/http/HttpUtils.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/http/HttpUtils.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.http; import lombok.SneakyThrows; 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 69a19bb..f050dd2 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 @@ -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.http; import com.google.gson.Gson; @@ -137,7 +159,7 @@ public class TikTokApiService { var gson = new Gson(); for (var jsonGift : giftsJsonList) { var gift = gson.fromJson(jsonGift, TikTokGiftInfo.class); - logger.info("Found Available Gift " + gift.getName() + " with ID " + gift.getId()); + logger.info("Found Gift " + gift.getName() + " with ID " + gift.getId()); gifts.put(gift.getId(), gift); } return gifts; diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokCookieJar.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokCookieJar.java index 203ae8e..951138a 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokCookieJar.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokCookieJar.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.http; import java.util.HashMap; diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokHttpClient.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokHttpClient.java index e3810aa..1a3dc06 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokHttpClient.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokHttpClient.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.http; import com.google.gson.JsonObject; diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokHttpRequestFactory.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokHttpRequestFactory.java index dc40f66..e075ef3 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokHttpRequestFactory.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokHttpRequestFactory.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.http; diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/listener/ListenerBindingModel.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/listener/ListenerBindingModel.java index 6147c43..5b4a6a4 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/listener/ListenerBindingModel.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/listener/ListenerBindingModel.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.listener; import io.github.jwdeveloper.tiktok.events.TikTokEventConsumer; @@ -5,6 +27,7 @@ import io.github.jwdeveloper.tiktok.events.TikTokEventConsumer; import lombok.Value; import java.util.List; +import java.util.Map; @Value @@ -13,5 +36,5 @@ public class ListenerBindingModel TikTokEventListener listener; - List> events; + Map, List>> events; } diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/listener/TikTokListenersManager.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/listener/TikTokListenersManager.java index 7054584..bb808c0 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/listener/TikTokListenersManager.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/listener/TikTokListenersManager.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.listener; @@ -11,6 +33,7 @@ import io.github.jwdeveloper.tiktok.live.LiveClient; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.List; public class TikTokListenersManager implements ListenersManager { @@ -34,6 +57,13 @@ public class TikTokListenersManager implements ListenersManager { throw new TikTokLiveException("Listener " + listener.getClass() + " has already been registered"); } var bindingModel = bindToEvents(listener); + + for (var eventEntrySet : bindingModel.getEvents().entrySet()) { + var eventType = eventEntrySet.getKey(); + for (var methods : eventEntrySet.getValue()) { + eventObserver.subscribe(eventType, methods); + } + } bindingModels.add(bindingModel); } @@ -44,11 +74,13 @@ public class TikTokListenersManager implements ListenersManager { return; } - var bindingModel =optional.get(); + var bindingModel = optional.get(); - for(var consumer : bindingModel.getEvents()) - { - eventObserver.unsubscribe(consumer); + for (var eventEntrySet : bindingModel.getEvents().entrySet()) { + var eventType = eventEntrySet.getKey(); + for (var methods : eventEntrySet.getValue()) { + eventObserver.unsubscribe(eventType, methods); + } } bindingModels.remove(optional.get()); } @@ -58,30 +90,31 @@ public class TikTokListenersManager implements ListenersManager { var clazz = listener.getClass(); var methods = Arrays.stream(clazz.getDeclaredMethods()).filter(m -> m.getParameterCount() == 2 && - m.isAnnotationPresent(TikTokEventHandler.class) && - m.getParameterTypes()[0].equals(LiveClient.class)).toList(); - var eventConsumer = new ArrayList>(); - - - for (var method : methods) - { + m.isAnnotationPresent(TikTokEventHandler.class)).toList(); + var eventsMap = new HashMap, List>>(); + for (var method : methods) { var eventClazz = method.getParameterTypes()[1]; - if(eventClazz.isAssignableFrom(TikTokEvent.class) && !eventClazz.equals(TikTokEvent.class)) - { - throw new TikTokEventListenerMethodException("Method "+method.getName()+"() 2nd parameter must instance of "+TikTokEvent.class.getName()); + + if (eventClazz.isAssignableFrom(LiveClient.class) && + !eventClazz.equals(LiveClient.class)) { + throw new TikTokEventListenerMethodException("Method " + method.getName() + "() 1nd parameter must instance of " + LiveClient.class.getName()); } - var tikTokEventConsumer = new TikTokEventConsumer() { - @Override - public void onEvent(LiveClient liveClient, TikTokEvent event) { - try { - method.invoke(listener, liveClient, event); - } catch (Exception e) { - throw new TikTokEventListenerMethodException(e); - } + + if (eventClazz.isAssignableFrom(TikTokEvent.class) && + !eventClazz.equals(TikTokEvent.class)) { + throw new TikTokEventListenerMethodException("Method " + method.getName() + "() 2nd parameter must instance of " + TikTokEvent.class.getName()); + } + + TikTokEventConsumer eventMethodRef = (liveClient, event) -> + { + try { + method.invoke(listener, liveClient, event); + } catch (Exception e) { + throw new TikTokEventListenerMethodException(e); } }; - eventObserver.subscribe(eventClazz, tikTokEventConsumer); + eventsMap.computeIfAbsent(eventClazz, (a) -> new ArrayList>()).add(eventMethodRef); } - return new ListenerBindingModel(listener, eventConsumer); + return new ListenerBindingModel(listener, eventsMap); } } diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/LiveRoomMetaMapper.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/LiveRoomMetaMapper.java index 8cc900a..f94386d 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/LiveRoomMetaMapper.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/LiveRoomMetaMapper.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 com.google.gson.JsonObject; diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketClient.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketClient.java index 8f256ae..8f17eda 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketClient.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketClient.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.websocket; @@ -24,7 +46,6 @@ public class TikTokWebSocketClient { private final TikTokMessageHandlerRegistration webResponseHandler; private final TikTokEventObserver tikTokEventHandler; private WebSocketClient webSocketClient; - private TikTokLiveClient tikTokLiveClient; private TikTokWebSocketPingingTask pingingTask; private boolean isConnected; @@ -42,32 +63,43 @@ public class TikTokWebSocketClient { } public void start(WebcastResponse webcastResponse, TikTokLiveClient tikTokLiveClient) { - this.tikTokLiveClient = tikTokLiveClient; if (isConnected) { stop(); } - if (webcastResponse.getSocketUrl().isEmpty() || webcastResponse.getSocketParamsList().isEmpty()) { + + if (webcastResponse.getSocketUrl().isEmpty() || + webcastResponse.getSocketParamsList().isEmpty()) { throw new TikTokLiveException("Could not find Room"); } try { var url = getWebSocketUrl(webcastResponse); - if (clientSettings.isHandleExistingMessagesOnConnect()) { + if (clientSettings.isHandleExistingEvents()) { logger.info("Handling existing messages"); webResponseHandler.handle(tikTokLiveClient, webcastResponse); } - webSocketClient = startWebSocket(url); + webSocketClient = startWebSocket(url, tikTokLiveClient); webSocketClient.connect(); pingingTask = new TikTokWebSocketPingingTask(); pingingTask.run(webSocketClient); isConnected = true; - } catch (Exception e) - { - isConnected =false; + } catch (Exception e) { + isConnected = false; throw new TikTokLiveException("Failed to connect to the websocket", e); } } + private WebSocketClient startWebSocket(String url, TikTokLiveClient liveClient) { + var cookie = tikTokCookieJar.parseCookies(); + var map = new HashMap(); + map.put("Cookie", cookie); + return new TikTokWebSocketListener(URI.create(url), + map, + 3000, + webResponseHandler, + tikTokEventHandler, + liveClient); + } private String getWebSocketUrl(WebcastResponse webcastResponse) { var params = webcastResponse.getSocketParamsList().get(0); @@ -83,23 +115,11 @@ public class TikTokWebSocketClient { return HttpUtils.parseParametersEncode(url, clone); } - private WebSocketClient startWebSocket(String url) { - var cookie = tikTokCookieJar.parseCookies(); - var map = new HashMap(); - map.put("Cookie", cookie); - return new TikTokWebSocketListener(URI.create(url), - map, - 3000, - webResponseHandler, - tikTokEventHandler, - tikTokLiveClient); - } - public void stop() { - if (isConnected && webSocketClient != null) - { - webSocketClient.closeConnection(0,""); + if (isConnected && webSocketClient != null) { + webSocketClient.closeConnection(0, ""); + pingingTask.stop(); } webSocketClient = null; pingingTask = null; diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketListener.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketListener.java index f5bd2d4..ab691b2 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketListener.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketListener.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.websocket; import com.google.protobuf.ByteString; diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketPingingTask.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketPingingTask.java index 1805124..d324b39 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketPingingTask.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketPingingTask.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.websocket; import org.java_websocket.WebSocket; diff --git a/Client/src/test/java/io/github/jwdeveloper/tiktok/ParseMessagesTests.java b/Client/src/test/java/io/github/jwdeveloper/tiktok/ParseMessagesTests.java deleted file mode 100644 index ab95de2..0000000 --- a/Client/src/test/java/io/github/jwdeveloper/tiktok/ParseMessagesTests.java +++ /dev/null @@ -1,49 +0,0 @@ -package io.github.jwdeveloper.tiktok; - -import com.google.protobuf.InvalidProtocolBufferException; -import io.github.jwdeveloper.tiktok.common.TikTokBaseTest; -import io.github.jwdeveloper.tiktok.messages.*; -import org.junit.Test; - -public class ParseMessagesTests extends TikTokBaseTest -{ - - - @Test - public void ShouldParseMessageWebcastLikeMessage() throws InvalidProtocolBufferException { - var bytes = getFileBytesUtf("LikeMessage.bin"); - var message = WebcastLikeMessage.parseFrom(bytes); - } - - @Test - public void ShouldParseMessageWebcastGiftMessage() throws InvalidProtocolBufferException { - var bytes = getFileBytesUtf("MessageWebcastGiftMessage.bin"); - var message = WebcastGiftMessage.parseFrom(bytes); - } - @Test - public void ShouldParseMessageWebcastChatMessage() throws InvalidProtocolBufferException { - var bytes = getFileBytesUtf("MessageWebcastChatMessage.bin"); - var message = WebcastChatMessage.parseFrom(bytes); - } - - @Test - public void ShouldParseMessageWebcastImDeleteMessage() throws InvalidProtocolBufferException { - var bytes = getFileBytesUtf("MessageWebcastImDeleteMessage.bin"); - var message = WebcastImDeleteMessage.parseFrom(bytes); - } - - - @Test - public void ShouldParseMessageWebcastSocialMessage() throws InvalidProtocolBufferException { - var bytes = getFileBytesUtf("MessageWebcastSocialMessage.bin"); - var message = WebcastSocialMessage.parseFrom(bytes); - } - - - @Test - public void ShouldParseMessageWebcastMemberMessage() throws InvalidProtocolBufferException { - var bytes = getFileBytesUtf("WebcastMemberMessage.bin"); - var message = WebcastMemberMessage.parseFrom(bytes); - } - -} diff --git a/Client/src/test/java/io/github/jwdeveloper/tiktok/WebResponseHandlerTests.java b/Client/src/test/java/io/github/jwdeveloper/tiktok/WebResponseHandlerTests.java deleted file mode 100644 index 16be962..0000000 --- a/Client/src/test/java/io/github/jwdeveloper/tiktok/WebResponseHandlerTests.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.github.jwdeveloper.tiktok; - -import io.github.jwdeveloper.tiktok.common.TikTokBaseTest; -import io.github.jwdeveloper.tiktok.handlers.TikTokEventObserver; -import io.github.jwdeveloper.tiktok.handlers.TikTokMessageHandlerRegistration; -import org.junit.Before; - -import java.util.logging.Logger; - -import static org.mockito.Mockito.mock; - -public class WebResponseHandlerTests extends TikTokBaseTest { - public static TikTokMessageHandlerRegistration sut; - - @Before - public void before() { - var mockEventHandler = mock(TikTokEventObserver.class); - var mockGiftManager = mock(TikTokGiftManager.class); - var mockRoomInfo = mock(TikTokRoomInfo.class); - var mockClientSettings = mock(ClientSettings.class); - var mockLogger = mock(Logger.class); - sut = new TikTokMessageHandlerRegistration(mockEventHandler,mockClientSettings,mockLogger, mockGiftManager, mockRoomInfo); - } - - -} diff --git a/Client/src/test/java/io/github/jwdeveloper/tiktok/common/TikTokBaseTest.java b/Client/src/test/java/io/github/jwdeveloper/tiktok/common/TikTokBaseTest.java index a4089e2..e6ccabc 100644 --- a/Client/src/test/java/io/github/jwdeveloper/tiktok/common/TikTokBaseTest.java +++ b/Client/src/test/java/io/github/jwdeveloper/tiktok/common/TikTokBaseTest.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.common; import com.google.protobuf.InvalidProtocolBufferException; diff --git a/Client/src/test/java/io/github/jwdeveloper/tiktok/gifts/TikTokGiftManagerTest.java b/Client/src/test/java/io/github/jwdeveloper/tiktok/gifts/TikTokGiftManagerTest.java new file mode 100644 index 0000000..5056636 --- /dev/null +++ b/Client/src/test/java/io/github/jwdeveloper/tiktok/gifts/TikTokGiftManagerTest.java @@ -0,0 +1,74 @@ +/* + * 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.gifts; + +import io.github.jwdeveloper.tiktok.events.objects.Gift; +import org.junit.Assert; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.junit.jupiter.MockitoExtension; + + +@ExtendWith(MockitoExtension.class) + +public class TikTokGiftManagerTest +{ + + @InjectMocks + TikTokGiftManager giftManager; + + @Test + void registerGift() + { + var fakeGift = giftManager.registerGift(123,"Fake gift",123123); + var gifts = giftManager.getGifts(); + var optional = gifts.stream().filter(r -> r == fakeGift).findFirst(); + Assertions.assertTrue(optional.isPresent()); + } + + @Test + void findById() + { + var target = giftManager.registerGift(123,"FAKE",123123); + var result = giftManager.findById(target.getId()); + Assertions.assertEquals(target,result); + } + + @Test + void findByName() + { + var target = giftManager.registerGift(123,"FAKE",123123); + var result = giftManager.findByName(target.getName()); + Assertions.assertEquals(target,result); + } + + @Test + void getGifts() + { + Assertions.assertEquals(Gift.values().length, giftManager.getGifts().size()); + } + + +} \ No newline at end of file diff --git a/Client/src/test/java/io/github/jwdeveloper/tiktok/http/TikTokApiServiceTest.java b/Client/src/test/java/io/github/jwdeveloper/tiktok/http/TikTokApiServiceTest.java index d7e7d51..ee5a237 100644 --- a/Client/src/test/java/io/github/jwdeveloper/tiktok/http/TikTokApiServiceTest.java +++ b/Client/src/test/java/io/github/jwdeveloper/tiktok/http/TikTokApiServiceTest.java @@ -1,45 +1,149 @@ +/* + * 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.http; -import com.google.gson.JsonParser; -import org.junit.Test; -import java.nio.charset.StandardCharsets; +import com.google.gson.JsonObject; +import io.github.jwdeveloper.tiktok.ClientSettings; +import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveException; +import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveRequestException; +import io.github.jwdeveloper.tiktok.live.LiveRoomMeta; +import io.github.jwdeveloper.tiktok.mappers.LiveRoomMetaMapper; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + import java.util.HashMap; -import java.util.Scanner; +import java.util.Map; import java.util.logging.Logger; -import static org.junit.Assert.assertNotNull; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.*; -public class TikTokApiServiceTest { + +@ExtendWith(MockitoExtension.class) +public class TikTokApiServiceTest +{ + @Mock + TikTokHttpClient tiktokHttpClient; + + @Mock + Logger logger; + + @Mock + ClientSettings clientSettings; + + @InjectMocks + TikTokApiService tikTokApiService; @Test - public void testFetchAvailableGifts() { - // Arrange - /* var mockApiClient = mock(TikTokHttpApiClient.class); - var mockLogger = mock(Logger.class); - var clientParams = new HashMap(); - var tikTokApiService = new TikTokApiService(mockApiClient, mockLogger, clientParams); + void updateSessionId_NullSessionId_DoesNotSetSessionId() { + when(clientSettings.getSessionId()).thenReturn(null); - var inputStream = getClass().getClassLoader().getResourceAsStream("gifts.json"); - String jsonContent; - try (var scanner = new Scanner(inputStream, StandardCharsets.UTF_8.name())) { - jsonContent = scanner.useDelimiter("\\A").next(); // Read entire content - } - var json = JsonParser.parseString(jsonContent); - var jsonObject = json.getAsJsonObject(); + tikTokApiService.updateSessionId(); - when(mockApiClient.GetJObjectFromWebcastAPI("gift/list/", clientParams)) - .thenReturn(jsonObject); - - var gifts = tikTokApiService.fetchAvailableGifts(); - - - assertNotNull(gifts);*/ + verify(tiktokHttpClient, times(0)).setSessionId(anyString()); } + @Test + void updateSessionId_EmptySessionId_DoesNotSetSessionId() { + when(clientSettings.getSessionId()).thenReturn(""); + tikTokApiService.updateSessionId(); + verify(tiktokHttpClient, times(0)).setSessionId(anyString()); + } + @Test + void updateSessionId_ValidSessionId_SetsSessionId() { + when(clientSettings.getSessionId()).thenReturn("validSessionId"); + + tikTokApiService.updateSessionId(); + + verify(tiktokHttpClient, times(1)).setSessionId("validSessionId"); + } + + @Test + void sendMessage_EmptySessionId_ThrowsException() { + assertThrows(TikTokLiveException.class, () -> { + tikTokApiService.sendMessage("some message", ""); + }); + } + + @Test + void sendMessage_NullRoomId_ThrowsException() { + when(clientSettings.getClientParameters()).thenReturn(new HashMap<>()); + + assertThrows(TikTokLiveException.class, () -> { + tikTokApiService.sendMessage("some message", "someSessionId"); + }); + } + + @Test + void fetchRoomId_ValidResponse_ReturnsRoomId() throws Exception { + String expectedRoomId = "123456"; + String htmlResponse = "room_id=" + expectedRoomId ; + when(tiktokHttpClient.getLivestreamPage(anyString())).thenReturn(htmlResponse); + + String roomId = tikTokApiService.fetchRoomId("username"); + + assertEquals(expectedRoomId, roomId); + verify(clientSettings.getClientParameters()).put("room_id", expectedRoomId); + } + + @Test + void fetchRoomId_ExceptionThrown_ThrowsTikTokLiveRequestException() throws Exception { + when(tiktokHttpClient.getLivestreamPage(anyString())).thenThrow(new Exception("some exception")); + + assertThrows(TikTokLiveRequestException.class, () -> { + tikTokApiService.fetchRoomId("username"); + }); + } + + @Test + void fetchRoomInfo_ValidResponse_ReturnsLiveRoomMeta() throws Exception { + HashMap clientParameters = new HashMap<>(); + var mockResponse = new JsonObject(); // Assume JsonObject is from the Gson library + var expectedLiveRoomMeta = new LiveRoomMeta(); // Assume LiveRoomMeta is a simple POJO + + when(clientSettings.getClientParameters()).thenReturn(clientParameters); + when(tiktokHttpClient.getJObjectFromWebcastAPI(anyString(), any())).thenReturn(mockResponse); + when(new LiveRoomMetaMapper().mapFrom(mockResponse)).thenReturn(expectedLiveRoomMeta); // Assuming LiveRoomMetaMapper is a simple mapper class + + LiveRoomMeta liveRoomMeta = tikTokApiService.fetchRoomInfo(); + + assertEquals(expectedLiveRoomMeta, liveRoomMeta); + } + + @Test + void fetchRoomInfo_ExceptionThrown_ThrowsTikTokLiveRequestException() throws Exception { + when(tiktokHttpClient.getJObjectFromWebcastAPI(anyString(), any())).thenThrow(new Exception("some exception")); + + assertThrows(TikTokLiveRequestException.class, () -> { + tikTokApiService.fetchRoomInfo(); + }); + } } \ No newline at end of file diff --git a/Client/src/test/java/io/github/jwdeveloper/tiktok/listener/TikTokListenersManagerTest.java b/Client/src/test/java/io/github/jwdeveloper/tiktok/listener/TikTokListenersManagerTest.java new file mode 100644 index 0000000..b7d83e2 --- /dev/null +++ b/Client/src/test/java/io/github/jwdeveloper/tiktok/listener/TikTokListenersManagerTest.java @@ -0,0 +1,114 @@ +/* + * 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.listener; + +import io.github.jwdeveloper.tiktok.annotations.TikTokEventHandler; +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.messages.TikTokGiftEvent; +import io.github.jwdeveloper.tiktok.events.messages.TikTokJoinEvent; +import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveException; +import io.github.jwdeveloper.tiktok.handlers.TikTokEventObserver; +import io.github.jwdeveloper.tiktok.live.LiveClient; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.verify; + +class TikTokListenersManagerTest { + + private TikTokEventObserver eventObserver; + private TikTokListenersManager tikTokListenersManager; + + @BeforeEach + void setUp() { + eventObserver = Mockito.mock(TikTokEventObserver.class); + List listeners = new ArrayList<>(); + tikTokListenersManager = new TikTokListenersManager(listeners, eventObserver); + } + + @Test + void addListener() { + TikTokEventListener listener =new TikTokEventListenerTest(); + tikTokListenersManager.addListener(listener); + + List listeners = tikTokListenersManager.getListeners(); + assertEquals(1, listeners.size()); + assertSame(listener, listeners.get(0)); + } + + @Test + void addListener_alreadyRegistered_throwsException() { + TikTokEventListener listener = new TikTokEventListenerTest(); + tikTokListenersManager.addListener(listener); + + Exception exception = assertThrows(TikTokLiveException.class, () -> { + tikTokListenersManager.addListener(listener); + }); + + assertEquals("Listener " + listener.getClass() + " has already been registered", exception.getMessage()); + } + + @Test + void removeListener() { + TikTokEventListener listener = new TikTokEventListenerTest(); + tikTokListenersManager.addListener(listener); + tikTokListenersManager.removeListener(listener); + + List listeners = tikTokListenersManager.getListeners(); + assertTrue(listeners.isEmpty()); + } + + @Test + void removeListener_notRegistered_doesNotThrow() { + TikTokEventListener listener = new TikTokEventListenerTest(); + assertDoesNotThrow(() -> tikTokListenersManager.removeListener(listener)); + } + + + public static class TikTokEventListenerTest implements TikTokEventListener + { + @TikTokEventHandler + public void onJoin(LiveClient client, TikTokJoinEvent joinEvent) + { + + } + + @TikTokEventHandler + public void onGift(LiveClient client, TikTokGiftEvent giftMessageEvent) + { + + } + + @TikTokEventHandler + public void onEvent(LiveClient client, TikTokEvent event) + { + + } + } +} \ No newline at end of file diff --git a/Client/src/test/resources/LikeMessage.bin b/Client/src/test/resources/LikeMessage.bin deleted file mode 100644 index 69ebc71..0000000 --- a/Client/src/test/resources/LikeMessage.bin +++ /dev/null @@ -1 +0,0 @@ -GKUBUAGSAYQPChVsaXZlX3Jvb21fZW50ZXJfdG9hc3QSD3swOnVzZXJ9IGpvaW5lZBoOCgkjYjhmZmZmZmYgkAMiyQ4ICxIMIJADCgcjOENFN0ZGqgG1DgqyDroBAPICTE1TNHdMakFCQUFBQURuX3JCNDhyQlJlZUhVOVdTYllOTm5sQU15YWVSQTJJd05JaWprRm5aQU9WUGdKZW5DNmFZNXV6RnU4cEYyVGoaB/Cfl6PvuI+yAQQIdhA9ggIAsgIHdHR4Lnp5boIE5QgQFBgIIAFS6QJzc2xvY2FsOi8vd2ViY2FzdF9seW54dmlld19wb3B1cD91c2Vfc3Bhcms9MSZ1cmw9aHR0cHMlM0ElMkYlMkZsZjE2LWdlY2tvLXNvdXJjZS50aWt0b2tjZG4uY29tJTJGb2JqJTJGYnl0ZS1ndXJkLXNvdXJjZS1zZyUyRnRpa3RvayUyRmZlJTJGbGl2ZSUyRnRpa3Rva19saXZlX3JldmVudWVfdXNlcl9sZXZlbF9tYWluJTJGc3JjJTJGcGFnZXMlMkZwcml2aWxlZ2UlMkZwYW5lbCUyRnRlbXBsYXRlLmpzJmhpZGVfc3RhdHVzX2Jhcj0wJmhpZGVfbmF2X2Jhcj0xJmNvbnRhaW5lcl9iZ19jb2xvcj0wMDAwMDAwMCZoZWlnaHQ9OTAlMjUmYmRobV9iaWQ9dGlrdG9rX2xpdmVfcmV2ZW51ZV91c2VyX2xldmVsX21haW4mdXNlX2ZvcmVzdD0xWAFiTgoBMhITNzEzODM4MTE3Njc4NzU1NjEzMhoBMCIubW9ja19maXhfd2lkdGhfdHJhbnNwYXJlbnRfNzEzODM4MTE3Njc4NzU1NjEzMioBOLoBmwV4DoABD6IBBggBEAMYIBLVBApcaHR0cHM6Ly9wMTYtd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvZ3JhZGVfYmFkZ2VfaWNvbl9saXRlX2x2NV92MS5wbmd+dHBsdi1vYmouaW1hZ2UKXGh0dHBzOi8vcDE5LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL2dyYWRlX2JhZGdlX2ljb25fbGl0ZV9sdjVfdjEucG5nfnRwbHYtb2JqLmltYWdlEit3ZWJjYXN0LXZhL2dyYWRlX2JhZGdlX2ljb25fbGl0ZV9sdjVfdjEucG5nOukCc3Nsb2NhbDovL3dlYmNhc3RfbHlueHZpZXdfcG9wdXA/dXNlX3NwYXJrPTEmdXJsPWh0dHBzJTNBJTJGJTJGbGYxNi1nZWNrby1zb3VyY2UudGlrdG9rY2RuLmNvbSUyRm9iaiUyRmJ5dGUtZ3VyZC1zb3VyY2Utc2clMkZ0aWt0b2slMkZmZSUyRmxpdmUlMkZ0aWt0b2tfbGl2ZV9yZXZlbnVlX3VzZXJfbGV2ZWxfbWFpbiUyRnNyYyUyRnBhZ2VzJTJGcHJpdmlsZWdlJTJGcGFuZWwlMkZ0ZW1wbGF0ZS5qcyZoaWRlX3N0YXR1c19iYXI9MCZoaWRlX25hdl9iYXI9MSZjb250YWluZXJfYmdfY29sb3I9MDAwMDAwMDAmaGVpZ2h0PTkwJTI1JmJkaG1fYmlkPXRpa3Rva19saXZlX3JldmVudWVfdXNlcl9sZXZlbF9tYWluJnVzZV9mb3Jlc3Q9MSIBOCoGCAEQAxggWg0KABIJIzk5NUY5MEVGYg0KABIJIzk5NUY5MEVGCAQyADoGGgISACIACAQIhYDcgoac26tcSs0ECrQBaHR0cHM6Ly9wMTYtc2lnbi12YS50aWt0b2tjZG4uY29tL3Rvcy1tYWxpdmEtYXZ0LTAwNjgvODZhN2JlYjk3MmY3YTQwYjIwYzVlZTI4MDY4NjU1MjN+dHBsdi10aWt0b2stc2hyaW5rOjcyOjcyLndlYnA/eC1leHBpcmVzPTE2OTI4OTY0MDAmeC1zaWduYXR1cmU9RUFIam1Ua1N1UVVKV1VBMzBkVGZDMUFMOVVvJTNECqgBaHR0cHM6Ly9wMTYtc2lnbi12YS50aWt0b2tjZG4uY29tL3Rvcy1tYWxpdmEtYXZ0LTAwNjgvODZhN2JlYjk3MmY3YTQwYjIwYzVlZTI4MDY4NjU1MjN+YzVfMTAweDEwMC53ZWJwP3gtZXhwaXJlcz0xNjkyODk2NDAwJngtc2lnbmF0dXJlPWFQTlF2ZmwlMkZvMUtxd2tvSjhJY1BWSHRGVUtZJTNECqoBaHR0cHM6Ly9wMTYtc2lnbi12YS50aWt0b2tjZG4uY29tL3Rvcy1tYWxpdmEtYXZ0LTAwNjgvODZhN2JlYjk3MmY3YTQwYjIwYzVlZTI4MDY4NjU1MjN+YzVfMTAweDEwMC5qcGVnP3gtZXhwaXJlcz0xNjkyODk2NDAwJngtc2lnbmF0dXJlPWYlMkZCVWY3QnU5U21GMm1uMm8xaWEzNDNhJTJGTFklM0QSPDEwMHgxMDAvdG9zLW1hbGl2YS1hdnQtMDA2OC84NmE3YmViOTcyZjdhNDBiMjBjNWVlMjgwNjg2NTUyM5oBB3Vua25vd26iAQVjbGljawrHDzABQoQPChVsaXZlX3Jvb21fZW50ZXJfdG9hc3QSD3swOnVzZXJ9IGpvaW5lZBoOCgkjYjhmZmZmZmYgkAMiyQ4ICxIMCgcjOENFN0ZGIJADqgG1DgqyDoICALICB3R0eC56eW6CBOUIEBQYCCABUukCc3Nsb2NhbDovL3dlYmNhc3RfbHlueHZpZXdfcG9wdXA/dXNlX3NwYXJrPTEmdXJsPWh0dHBzJTNBJTJGJTJGbGYxNi1nZWNrby1zb3VyY2UudGlrdG9rY2RuLmNvbSUyRm9iaiUyRmJ5dGUtZ3VyZC1zb3VyY2Utc2clMkZ0aWt0b2slMkZmZSUyRmxpdmUlMkZ0aWt0b2tfbGl2ZV9yZXZlbnVlX3VzZXJfbGV2ZWxfbWFpbiUyRnNyYyUyRnBhZ2VzJTJGcHJpdmlsZWdlJTJGcGFuZWwlMkZ0ZW1wbGF0ZS5qcyZoaWRlX3N0YXR1c19iYXI9MCZoaWRlX25hdl9iYXI9MSZjb250YWluZXJfYmdfY29sb3I9MDAwMDAwMDAmaGVpZ2h0PTkwJTI1JmJkaG1fYmlkPXRpa3Rva19saXZlX3JldmVudWVfdXNlcl9sZXZlbF9tYWluJnVzZV9mb3Jlc3Q9MVgBYk4iLm1vY2tfZml4X3dpZHRoX3RyYW5zcGFyZW50XzcxMzgzODExNzY3ODc1NTYxMzIqATgKATISEzcxMzgzODExNzY3ODc1NTYxMzIaATC6AZsFEtUEClxodHRwczovL3AxNi13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vd2ViY2FzdC12YS9ncmFkZV9iYWRnZV9pY29uX2xpdGVfbHY1X3YxLnBuZ350cGx2LW9iai5pbWFnZQpcaHR0cHM6Ly9wMTktd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvZ3JhZGVfYmFkZ2VfaWNvbl9saXRlX2x2NV92MS5wbmd+dHBsdi1vYmouaW1hZ2USK3dlYmNhc3QtdmEvZ3JhZGVfYmFkZ2VfaWNvbl9saXRlX2x2NV92MS5wbmc66QJzc2xvY2FsOi8vd2ViY2FzdF9seW54dmlld19wb3B1cD91c2Vfc3Bhcms9MSZ1cmw9aHR0cHMlM0ElMkYlMkZsZjE2LWdlY2tvLXNvdXJjZS50aWt0b2tjZG4uY29tJTJGb2JqJTJGYnl0ZS1ndXJkLXNvdXJjZS1zZyUyRnRpa3RvayUyRmZlJTJGbGl2ZSUyRnRpa3Rva19saXZlX3JldmVudWVfdXNlcl9sZXZlbF9tYWluJTJGc3JjJTJGcGFnZXMlMkZwcml2aWxlZ2UlMkZwYW5lbCUyRnRlbXBsYXRlLmpzJmhpZGVfc3RhdHVzX2Jhcj0wJmhpZGVfbmF2X2Jhcj0xJmNvbnRhaW5lcl9iZ19jb2xvcj0wMDAwMDAwMCZoZWlnaHQ9OTAlMjUmYmRobV9iaWQ9dGlrdG9rX2xpdmVfcmV2ZW51ZV91c2VyX2xldmVsX21haW4mdXNlX2ZvcmVzdD0xOgYaAhIAIgBiDQoAEgkjOTk1RjkwRUYIBCIBOCoGGCAIARADMgBaDRIJIzk5NUY5MEVGCgB4DoABD6IBBggBEAMYIAgESs0EEjwxMDB4MTAwL3Rvcy1tYWxpdmEtYXZ0LTAwNjgvODZhN2JlYjk3MmY3YTQwYjIwYzVlZTI4MDY4NjU1MjMKtAFodHRwczovL3AxNi1zaWduLXZhLnRpa3Rva2Nkbi5jb20vdG9zLW1hbGl2YS1hdnQtMDA2OC84NmE3YmViOTcyZjdhNDBiMjBjNWVlMjgwNjg2NTUyM350cGx2LXRpa3Rvay1zaHJpbms6NzI6NzIud2VicD94LWV4cGlyZXM9MTY5Mjg5NjQwMCZ4LXNpZ25hdHVyZT1FQUhqbVRrU3VRVUpXVUEzMGRUZkMxQUw5VW8lM0QKqAFodHRwczovL3AxNi1zaWduLXZhLnRpa3Rva2Nkbi5jb20vdG9zLW1hbGl2YS1hdnQtMDA2OC84NmE3YmViOTcyZjdhNDBiMjBjNWVlMjgwNjg2NTUyM35jNV8xMDB4MTAwLndlYnA/eC1leHBpcmVzPTE2OTI4OTY0MDAmeC1zaWduYXR1cmU9YVBOUXZmbCUyRm8xS3F3a29KOEljUFZIdEZVS1klM0QKqgFodHRwczovL3AxNi1zaWduLXZhLnRpa3Rva2Nkbi5jb20vdG9zLW1hbGl2YS1hdnQtMDA2OC84NmE3YmViOTcyZjdhNDBiMjBjNWVlMjgwNjg2NTUyM35jNV8xMDB4MTAwLmpwZWc/eC1leHBpcmVzPTE2OTI4OTY0MDAmeC1zaWduYXR1cmU9ZiUyRkJVZjdCdTlTbUYybW4ybzFpYTM0M2ElMkZMWSUzRBoH8J+Xo++4j7IBBAh2ED26AQDyAkxNUzR3TGpBQkFBQUFEbl9yQjQ4ckJSZWVIVTlXU2JZTk5ubEFNeWFlUkEySXdOSWlqa0ZuWkFPVlBnSmVuQzZhWTV1ekZ1OHBGMlRqCIWA3IKGnNurXEgBsAEDuAEBwAEBChRXZWJjYXN0TWVtYmVyTWVzc2FnZRCrlqKYuK+78mQYoJaG5sHJrvJkILTa/vGhMVABErIOSs0ECrQBaHR0cHM6Ly9wMTYtc2lnbi12YS50aWt0b2tjZG4uY29tL3Rvcy1tYWxpdmEtYXZ0LTAwNjgvODZhN2JlYjk3MmY3YTQwYjIwYzVlZTI4MDY4NjU1MjN+dHBsdi10aWt0b2stc2hyaW5rOjcyOjcyLndlYnA/eC1leHBpcmVzPTE2OTI4OTY0MDAmeC1zaWduYXR1cmU9RUFIam1Ua1N1UVVKV1VBMzBkVGZDMUFMOVVvJTNECqgBaHR0cHM6Ly9wMTYtc2lnbi12YS50aWt0b2tjZG4uY29tL3Rvcy1tYWxpdmEtYXZ0LTAwNjgvODZhN2JlYjk3MmY3YTQwYjIwYzVlZTI4MDY4NjU1MjN+YzVfMTAweDEwMC53ZWJwP3gtZXhwaXJlcz0xNjkyODk2NDAwJngtc2lnbmF0dXJlPWFQTlF2ZmwlMkZvMUtxd2tvSjhJY1BWSHRGVUtZJTNECqoBaHR0cHM6Ly9wMTYtc2lnbi12YS50aWt0b2tjZG4uY29tL3Rvcy1tYWxpdmEtYXZ0LTAwNjgvODZhN2JlYjk3MmY3YTQwYjIwYzVlZTI4MDY4NjU1MjN+YzVfMTAweDEwMC5qcGVnP3gtZXhwaXJlcz0xNjkyODk2NDAwJngtc2lnbmF0dXJlPWYlMkZCVWY3QnU5U21GMm1uMm8xaWEzNDNhJTJGTFklM0QSPDEwMHgxMDAvdG9zLW1hbGl2YS1hdnQtMDA2OC84NmE3YmViOTcyZjdhNDBiMjBjNWVlMjgwNjg2NTUyM7IBBAh2ED2CAgCyAgd0dHguenluGgfwn5ej77iPugEA8gJMTVM0d0xqQUJBQUFBRG5fckI0OHJCUmVlSFU5V1NiWU5ObmxBTXlhZVJBMkl3TklpamtGblpBT1ZQZ0plbkM2YVk1dXpGdThwRjJUaoIE5QhiTgoBMhITNzEzODM4MTE3Njc4NzU1NjEzMhoBMCIubW9ja19maXhfd2lkdGhfdHJhbnNwYXJlbnRfNzEzODM4MTE3Njc4NzU1NjEzMioBOLoBmwUiATgyAFoNCgASCSM5OTVGOTBFRoABD6IBBggBEAMYIAgEEtUEClxodHRwczovL3AxNi13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vd2ViY2FzdC12YS9ncmFkZV9iYWRnZV9pY29uX2xpdGVfbHY1X3YxLnBuZ350cGx2LW9iai5pbWFnZQpcaHR0cHM6Ly9wMTktd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvZ3JhZGVfYmFkZ2VfaWNvbl9saXRlX2x2NV92MS5wbmd+dHBsdi1vYmouaW1hZ2USK3dlYmNhc3QtdmEvZ3JhZGVfYmFkZ2VfaWNvbl9saXRlX2x2NV92MS5wbmc66QJzc2xvY2FsOi8vd2ViY2FzdF9seW54dmlld19wb3B1cD91c2Vfc3Bhcms9MSZ1cmw9aHR0cHMlM0ElMkYlMkZsZjE2LWdlY2tvLXNvdXJjZS50aWt0b2tjZG4uY29tJTJGb2JqJTJGYnl0ZS1ndXJkLXNvdXJjZS1zZyUyRnRpa3RvayUyRmZlJTJGbGl2ZSUyRnRpa3Rva19saXZlX3JldmVudWVfdXNlcl9sZXZlbF9tYWluJTJGc3JjJTJGcGFnZXMlMkZwcml2aWxlZ2UlMkZwYW5lbCUyRnRlbXBsYXRlLmpzJmhpZGVfc3RhdHVzX2Jhcj0wJmhpZGVfbmF2X2Jhcj0xJmNvbnRhaW5lcl9iZ19jb2xvcj0wMDAwMDAwMCZoZWlnaHQ9OTAlMjUmYmRobV9iaWQ9dGlrdG9rX2xpdmVfcmV2ZW51ZV91c2VyX2xldmVsX21haW4mdXNlX2ZvcmVzdD0xKgYYIAgBEAM6BhoCEgAiAGINCgASCSM5OTVGOTBFRngOCAQQFBgIIAFS6QJzc2xvY2FsOi8vd2ViY2FzdF9seW54dmlld19wb3B1cD91c2Vfc3Bhcms9MSZ1cmw9aHR0cHMlM0ElMkYlMkZsZjE2LWdlY2tvLXNvdXJjZS50aWt0b2tjZG4uY29tJTJGb2JqJTJGYnl0ZS1ndXJkLXNvdXJjZS1zZyUyRnRpa3RvayUyRmZlJTJGbGl2ZSUyRnRpa3Rva19saXZlX3JldmVudWVfdXNlcl9sZXZlbF9tYWluJTJGc3JjJTJGcGFnZXMlMkZwcml2aWxlZ2UlMkZwYW5lbCUyRnRlbXBsYXRlLmpzJmhpZGVfc3RhdHVzX2Jhcj0wJmhpZGVfbmF2X2Jhcj0xJmNvbnRhaW5lcl9iZ19jb2xvcj0wMDAwMDAwMCZoZWlnaHQ9OTAlMjUmYmRobV9iaWQ9dGlrdG9rX2xpdmVfcmV2ZW51ZV91c2VyX2xldmVsX21haW4mdXNlX2ZvcmVzdD0xWAEIhYDcgoac26tc \ No newline at end of file diff --git a/Client/src/test/resources/MessageWebcastChatMessage.bin b/Client/src/test/resources/MessageWebcastChatMessage.bin deleted file mode 100644 index 56ca920..0000000 --- a/Client/src/test/resources/MessageWebcastChatMessage.bin +++ /dev/null @@ -1 +0,0 @@ -kgEGEAEYASABmgEUCg51c2VyX3R5cGVfcnVsZRDgpxKaAR4KEWNvbW11bml0eS1mbGFnZ2VkEP///////////wGaARoKDmNvbW1lbnRhdG9yX2lkEIaIw5TSz92DYJoBEgoHZGVmYXVsdBDw+ICX6fCAA5oBEAoLZGVmYXVsdF9hcHAQkE6aAREKBnJhbmtWMxDjk7aZ6fCAA5oBGgoPdHRwX3J1bGVfcmVyYW5rENit45vp8IADmgEaEKj/ptWcvtCuAQoOdGltZXN0YW1wX2Rlc2OaATUKKnRpa2Nhc3RfY29tbXVuaXR5X2NvbW1lbnRfMTg4NjZfdjdfcjY1NTA2ORDb6LqZ6fCAA5oBOhCk6pOe6fCAAwovdGlrY2FzdF9jb21tdW5pdHlfY29tbWVudF8xODg2Nl92N19yNjU1MDY5X2Rlc2OaARoKD2lkY19ydWxlX3JlcmFuaxDY4eyu6fCAA5oBFhDY4eyu6fCAAwoLdjEzX3I3MTIwODiaARYKC3YxM19yNzEyMzU1ENjh7K7p8IADmgEWCgt2MTNfcjcxMjM1NhDY4eyu6fCAA5oBFgoLdjEyX3I3MDIwNzUQ2OHsrunwgAOaARoKD2lkY19ydWxlX3JlcmFuaxDY4eyu6fCAA5oBFgoLdjE0X3I3MjIxOTMQ2OHsrunwgAOaARYQ2OHsrunwgAMKC3YxNF9yNzIyMjAwmgEbChB2MTRfcjcyMjIwM191Z18xENjh7K7p8IADmgEbChB2MTRfcjcyMjIwM191Z18yENjh7K7p8IADmgEbChB2MTRfcjcyMjIwM191Z18zENjh7K7p8IADmgEbChB2MTRfcjcyMjIwM191Z180ENjh7K7p8IADmgEbChB2MTRfcjcyMjIwM191Z181ENjh7K7p8IADmgEbENjh7K7p8IADChB2MTRfcjcyMjIwM191Z182mgEbChB2MTRfcjcyMjIwNF91Z18xENjh7K7p8IADmgEbChB2MTRfcjcyMjIwNF91Z18yENjh7K7p8IADmgEbChB2MTRfcjcyMjIwNF91Z18zENjh7K7p8IADmgEbChB2MTRfcjcyMjIwNF91Z180ENjh7K7p8IADmgEbChB2MTRfcjcyMjIwNF91Z181ENjh7K7p8IADmgEbChB2MTRfcjcyMjIwNF91Z182ENjh7K7p8IADClAKEldlYmNhc3RDaGF0TWVzc2FnZSCEs+vyoTEwAbABBbgBAsABAhCglqOM8Ym98mQYoZabqPPRuvJkSAJQAnoIdXNlYXN0MmHIAc+t6/KhMRLSFAiGiMOU0s/dg2AaCWFsbWFuZG8yOboBAKoB7wEgEDAeClxodHRwczovL3AxNi13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vd2ViY2FzdC12YS85NDM3Zjc0N2NmMTY3NTZhNzYxYjUzYTQ1Y2JiYmM2ZH50cGx2LW9iai5pbWFnZQpcaHR0cHM6Ly9wMTktd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvOTQzN2Y3NDdjZjE2NzU2YTc2MWI1M2E0NWNiYmJjNmR+dHBsdi1vYmouaW1hZ2USK3dlYmNhc3QtdmEvOTQzN2Y3NDdjZjE2NzU2YTc2MWI1M2E0NWNiYmJjNmQYELICCWFsbWFuZG8yOUrpAwqbAWh0dHBzOi8vcDc3LXNpZ24tc2cudGlrdG9rY2RuLmNvbS90aWt0b2stb2JqLzE2ODkzNjI5MTc1NDcwMTB+dHBsdi10aWt0b2stc2hyaW5rOjcyOjcyLndlYnA/eC1leHBpcmVzPTE2OTI4OTY0MDAmeC1zaWduYXR1cmU9VFh2dGUzanlOb0dGWWRuUnh0QmViQjJSSTJvJTNECpABaHR0cHM6Ly9wNzctc2lnbi1zZy50aWt0b2tjZG4uY29tL2F3ZW1lLzEwMHgxMDAvdGlrdG9rLW9iai8xNjg5MzYyOTE3NTQ3MDEwLndlYnA/eC1leHBpcmVzPTE2OTI4OTY0MDAmeC1zaWduYXR1cmU9YTQzOEZ0VENKVjFYQVNSaGdCZnZDMUF3NUVBJTNECpABaHR0cHM6Ly9wNzctc2lnbi1zZy50aWt0b2tjZG4uY29tL2F3ZW1lLzEwMHgxMDAvdGlrdG9rLW9iai8xNjg5MzYyOTE3NTQ3MDEwLmpwZWc/eC1leHBpcmVzPTE2OTI4OTY0MDAmeC1zaWduYXR1cmU9cDFGdWE1RnVtb3pDYWY2emFQdDRjMlJKUHVJJTNEEiMxMDB4MTAwL3Rpa3Rvay1vYmovMTY4OTM2MjkxNzU0NzAxMLIBCAjVAxCUBRgCggIA8gJMTVM0d0xqQUJBQUFBTnVQSGNfRmlta1ZOaEtfV0RfdENWYldqZTVtTFBfN1ktUmlOdmFiaWltTU1DbGFzOTJIcVNHM3JFRGMxU1hTZoIEvgIIARAeGAQgAWI8KgEwCgEyEhM3MTE5ODA5MDk4NjYwNjk0Nzg5GgEwIhxtb2NrX3N1Yl83MTE5ODA5MDk4NjYwNjk0Nzg5ogH0AQgBEu8BClxodHRwczovL3AxNi13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vd2ViY2FzdC12YS85NDM3Zjc0N2NmMTY3NTZhNzYxYjUzYTQ1Y2JiYmM2ZH50cGx2LW9iai5pbWFnZQpcaHR0cHM6Ly9wMTktd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvOTQzN2Y3NDdjZjE2NzU2YTc2MWI1M2E0NWNiYmJjNmR+dHBsdi1vYmouaW1hZ2USK3dlYmNhc3QtdmEvOTQzN2Y3NDdjZjE2NzU2YTc2MWI1M2E0NWNiYmJjNmQYECAQMB6CBOoIYk8KATISEzcxMzgzODE3NDcyOTI1NTkxNDAaATAiLm1vY2tfZml4X3dpZHRoX3RyYW5zcGFyZW50XzcxMzgzODE3NDcyOTI1NTkxNDAqAjE2ugGfBToGGgISACIAWg0SCSNCMzQ3N0VGRgoAYg0SCSNCMzQ3N0VGRgoAeA4IBBLYBApdaHR0cHM6Ly9wMTYtd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvZ3JhZGVfYmFkZ2VfaWNvbl9saXRlX2x2MTVfdjIucG5nfnRwbHYtb2JqLmltYWdlCl1odHRwczovL3AxOS13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vd2ViY2FzdC12YS9ncmFkZV9iYWRnZV9pY29uX2xpdGVfbHYxNV92Mi5wbmd+dHBsdi1vYmouaW1hZ2USLHdlYmNhc3QtdmEvZ3JhZGVfYmFkZ2VfaWNvbl9saXRlX2x2MTVfdjIucG5nOukCc3Nsb2NhbDovL3dlYmNhc3RfbHlueHZpZXdfcG9wdXA/dXNlX3NwYXJrPTEmdXJsPWh0dHBzJTNBJTJGJTJGbGYxNi1nZWNrby1zb3VyY2UudGlrdG9rY2RuLmNvbSUyRm9iaiUyRmJ5dGUtZ3VyZC1zb3VyY2Utc2clMkZ0aWt0b2slMkZmZSUyRmxpdmUlMkZ0aWt0b2tfbGl2ZV9yZXZlbnVlX3VzZXJfbGV2ZWxfbWFpbiUyRnNyYyUyRnBhZ2VzJTJGcHJpdmlsZWdlJTJGcGFuZWwlMkZ0ZW1wbGF0ZS5qcyZoaWRlX3N0YXR1c19iYXI9MCZoaWRlX25hdl9iYXI9MSZjb250YWluZXJfYmdfY29sb3I9MDAwMDAwMDAmaGVpZ2h0PTkwJTI1JmJkaG1fYmlkPXRpa3Rva19saXZlX3JldmVudWVfdXNlcl9sZXZlbF9tYWluJnVzZV9mb3Jlc3Q9MSICMTYqBggBEAEYIIABDzIAogEGCAEQARggCAQQFBgIIAFS6QJzc2xvY2FsOi8vd2ViY2FzdF9seW54dmlld19wb3B1cD91c2Vfc3Bhcms9MSZ1cmw9aHR0cHMlM0ElMkYlMkZsZjE2LWdlY2tvLXNvdXJjZS50aWt0b2tjZG4uY29tJTJGb2JqJTJGYnl0ZS1ndXJkLXNvdXJjZS1zZyUyRnRpa3RvayUyRmZlJTJGbGl2ZSUyRnRpa3Rva19saXZlX3JldmVudWVfdXNlcl9sZXZlbF9tYWluJTJGc3JjJTJGcGFnZXMlMkZwcml2aWxlZ2UlMkZwYW5lbCUyRnRlbXBsYXRlLmpzJmhpZGVfc3RhdHVzX2Jhcj0wJmhpZGVfbmF2X2Jhcj0xJmNvbnRhaW5lcl9iZ19jb2xvcj0wMDAwMDAwMCZoZWlnaHQ9OTAlMjUmYmRobV9iaWQ9dGlrdG9rX2xpdmVfcmV2ZW51ZV91c2VyX2xldmVsX21haW4mdXNlX2ZvcmVzdD0xWAGCBL4CWAFiPAoBMhITNzExOTgwOTA5ODY2MDY5NDc4ORoBMCIcbW9ja19zdWJfNzExOTgwOTA5ODY2MDY5NDc4OSoBMLoB8gF4DoABDqIBCAgBKARAAUgBCAQSvwEKTmh0dHBzOi8vcDE2LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL3N1YnNfYmFkZ2VfTHYxLnBuZ350cGx2LW9iai5pbWFnZQpOaHR0cHM6Ly9wMTktd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvc3Vic19iYWRnZV9MdjEucG5nfnRwbHYtb2JqLmltYWdlEh13ZWJjYXN0LXZhL3N1YnNfYmFkZ2VfTHYxLnBuZyIDVklQKggIASgEQAFIAVoNEgkjOTlGRkJGMTUKAAgEEB4YBCABapEDEo4DChM3MjAyNTQ2ODY4NjEyNjgwNDUzEvYCCosBaHR0cHM6Ly9wMTYtd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGN+dHBsdi1meWp1eHV4YWc4LXdlYnAud2VicAqLAWh0dHBzOi8vcDE5LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjfnRwbHYtZnlqdXh1eGFnOC13ZWJwLndlYnAST3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGMqByNDQ0IxQTNqkwMIARKOAwoTNzIwMjU0Njg2ODYxMjY4MDQ1MxL2AioHI0U2RkFEQwqLAWh0dHBzOi8vcDE2LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjfnRwbHYtZnlqdXh1eGFnOC13ZWJwLndlYnAKiwFodHRwczovL3AxOS13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vd2ViY2FzdC12YS9zdWJfYWIxMzFhYzFlZGI2MDc2ODE2NTA5ZDIyOWQ5YzQwNjgxMWRlMmUyZjY1MDE0MDdmMDdlYTU2YzVkZDRmYjg4Y350cGx2LWZ5anV4dXhhZzgtd2VicC53ZWJwEk93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjapMDCAISjgMKEzcyMDI1NDY4Njg2MTI2ODA0NTMS9gIKiwFodHRwczovL3AxNi13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vd2ViY2FzdC12YS9zdWJfYWIxMzFhYzFlZGI2MDc2ODE2NTA5ZDIyOWQ5YzQwNjgxMWRlMmUyZjY1MDE0MDdmMDdlYTU2YzVkZDRmYjg4Y350cGx2LWZ5anV4dXhhZzgtd2VicC53ZWJwCosBaHR0cHM6Ly9wMTktd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGN+dHBsdi1meWp1eHV4YWc4LXdlYnAud2VicBJPd2ViY2FzdC12YS9zdWJfYWIxMzFhYzFlZGI2MDc2ODE2NTA5ZDIyOWQ5YzQwNjgxMWRlMmUyZjY1MDE0MDdmMDdlYTU2YzVkZDRmYjg4YyoHI0UwQkNCQ2qTAwgDEo4DChM3MjAyNTQ2ODY4NjEyNjgwNDUzEvYCCosBaHR0cHM6Ly9wMTYtd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGN+dHBsdi1meWp1eHV4YWc4LXdlYnAud2VicAqLAWh0dHBzOi8vcDE5LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjfnRwbHYtZnlqdXh1eGFnOC13ZWJwLndlYnAST3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGMqByM1MjQwMzdqkwMSjgMKEzcyMDI1NDY4Njg2MTI2ODA0NTMS9gIKiwFodHRwczovL3AxNi13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vd2ViY2FzdC12YS9zdWJfYWIxMzFhYzFlZGI2MDc2ODE2NTA5ZDIyOWQ5YzQwNjgxMWRlMmUyZjY1MDE0MDdmMDdlYTU2YzVkZDRmYjg4Y350cGx2LWZ5anV4dXhhZzgtd2VicC53ZWJwCosBaHR0cHM6Ly9wMTktd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGN+dHBsdi1meWp1eHV4YWc4LXdlYnAud2VicBJPd2ViY2FzdC12YS9zdWJfYWIxMzFhYzFlZGI2MDc2ODE2NTA5ZDIyOWQ5YzQwNjgxMWRlMmUyZjY1MDE0MDdmMDdlYTU2YzVkZDRmYjg4YyoHIzdDN0NBMwgEapMDCAUSjgMKEzcyMDI1NDY4Njg2MTI2ODA0NTMS9gIKiwFodHRwczovL3AxNi13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vd2ViY2FzdC12YS9zdWJfYWIxMzFhYzFlZGI2MDc2ODE2NTA5ZDIyOWQ5YzQwNjgxMWRlMmUyZjY1MDE0MDdmMDdlYTU2YzVkZDRmYjg4Y350cGx2LWZ5anV4dXhhZzgtd2VicC53ZWJwCosBaHR0cHM6Ly9wMTktd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGN+dHBsdi1meWp1eHV4YWc4LXdlYnAud2VicBJPd2ViY2FzdC12YS9zdWJfYWIxMzFhYzFlZGI2MDc2ODE2NTA5ZDIyOWQ5YzQwNjgxMWRlMmUyZjY1MDE0MDdmMDdlYTU2YzVkZDRmYjg4YyoHI0NFQ0VFQmqTAwgGEo4DChM3MjAyNTQ2ODY4NjEyNjgwNDUzEvYCCosBaHR0cHM6Ly9wMTYtd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGN+dHBsdi1meWp1eHV4YWc4LXdlYnAud2VicAqLAWh0dHBzOi8vcDE5LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjfnRwbHYtZnlqdXh1eGFnOC13ZWJwLndlYnAST3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGMqByNBMzdDOTZqkwMIBxKOAwoTNzIwMjU0Njg2ODYxMjY4MDQ1MxL2AhJPd2ViY2FzdC12YS9zdWJfYWIxMzFhYzFlZGI2MDc2ODE2NTA5ZDIyOWQ5YzQwNjgxMWRlMmUyZjY1MDE0MDdmMDdlYTU2YzVkZDRmYjg4YyoHI0ZBRkFGQQqLAWh0dHBzOi8vcDE2LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjfnRwbHYtZnlqdXh1eGFnOC13ZWJwLndlYnAKiwFodHRwczovL3AxOS13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vd2ViY2FzdC12YS9zdWJfYWIxMzFhYzFlZGI2MDc2ODE2NTA5ZDIyOWQ5YzQwNjgxMWRlMmUyZjY1MDE0MDdmMDdlYTU2YzVkZDRmYjg4Y350cGx2LWZ5anV4dXhhZzgtd2VicC53ZWJwapMDCAgSjgMKEzcyMDI1NDY4Njg2MTI2ODA0NTMS9gIKiwFodHRwczovL3AxNi13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vd2ViY2FzdC12YS9zdWJfYWIxMzFhYzFlZGI2MDc2ODE2NTA5ZDIyOWQ5YzQwNjgxMWRlMmUyZjY1MDE0MDdmMDdlYTU2YzVkZDRmYjg4Y350cGx2LWZ5anV4dXhhZzgtd2VicC53ZWJwCosBaHR0cHM6Ly9wMTktd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGN+dHBsdi1meWp1eHV4YWc4LXdlYnAud2VicBJPd2ViY2FzdC12YS9zdWJfYWIxMzFhYzFlZGI2MDc2ODE2NTA5ZDIyOWQ5YzQwNjgxMWRlMmUyZjY1MDE0MDdmMDdlYTU2YzVkZDRmYjg4YyoHI0ZGRUJGOGqTAwgJEo4DChM3MjAyNTQ2ODY4NjEyNjgwNDUzEvYCCosBaHR0cHM6Ly9wMTYtd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGN+dHBsdi1meWp1eHV4YWc4LXdlYnAud2VicAqLAWh0dHBzOi8vcDE5LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjfnRwbHYtZnlqdXh1eGFnOC13ZWJwLndlYnAST3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGMqByM4OUEzN0NqkwMIChKOAwoTNzIwMjU0Njg2ODYxMjY4MDQ1MxL2AgqLAWh0dHBzOi8vcDE2LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjfnRwbHYtZnlqdXh1eGFnOC13ZWJwLndlYnAKiwFodHRwczovL3AxOS13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vd2ViY2FzdC12YS9zdWJfYWIxMzFhYzFlZGI2MDc2ODE2NTA5ZDIyOWQ5YzQwNjgxMWRlMmUyZjY1MDE0MDdmMDdlYTU2YzVkZDRmYjg4Y350cGx2LWZ5anV4dXhhZzgtd2VicC53ZWJwEk93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjKgcjMzczNzUyapMDEo4DChM3MjAyNTQ2ODY4NjEyNjgwNDUzEvYCEk93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjKgcjNjY2NjY2CosBaHR0cHM6Ly9wMTYtd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGN+dHBsdi1meWp1eHV4YWc4LXdlYnAud2VicAqLAWh0dHBzOi8vcDE5LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjfnRwbHYtZnlqdXh1eGFnOC13ZWJwLndlYnAIC2qTAxKOAwoTNzIwMjU0Njg2ODYxMjY4MDQ1MxL2AhJPd2ViY2FzdC12YS9zdWJfYWIxMzFhYzFlZGI2MDc2ODE2NTA5ZDIyOWQ5YzQwNjgxMWRlMmUyZjY1MDE0MDdmMDdlYTU2YzVkZDRmYjg4YyoHI0VCQ0VFMQqLAWh0dHBzOi8vcDE2LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjfnRwbHYtZnlqdXh1eGFnOC13ZWJwLndlYnAKiwFodHRwczovL3AxOS13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vd2ViY2FzdC12YS9zdWJfYWIxMzFhYzFlZGI2MDc2ODE2NTA5ZDIyOWQ5YzQwNjgxMWRlMmUyZjY1MDE0MDdmMDdlYTU2YzVkZDRmYjg4Y350cGx2LWZ5anV4dXhhZzgtd2VicC53ZWJwCAxqkwMIDRKOAwoTNzIwMjU0Njg2ODYxMjY4MDQ1MxL2AgqLAWh0dHBzOi8vcDE2LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjfnRwbHYtZnlqdXh1eGFnOC13ZWJwLndlYnAKiwFodHRwczovL3AxOS13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vd2ViY2FzdC12YS9zdWJfYWIxMzFhYzFlZGI2MDc2ODE2NTA5ZDIyOWQ5YzQwNjgxMWRlMmUyZjY1MDE0MDdmMDdlYTU2YzVkZDRmYjg4Y350cGx2LWZ5anV4dXhhZzgtd2VicC53ZWJwEk93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjKgcjQjFDQ0EzapMDEo4DChM3MjAyNTQ2ODY4NjEyNjgwNDUzEvYCCosBaHR0cHM6Ly9wMTYtd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGN+dHBsdi1meWp1eHV4YWc4LXdlYnAud2VicAqLAWh0dHBzOi8vcDE5LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjfnRwbHYtZnlqdXh1eGFnOC13ZWJwLndlYnAST3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGMqByNGMEYwRjAIDmqTAwgPEo4DChM3MjAyNTQ2ODY4NjEyNjgwNDUzEvYCCosBaHR0cHM6Ly9wMTYtd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGN+dHBsdi1meWp1eHV4YWc4LXdlYnAud2VicAqLAWh0dHBzOi8vcDE5LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjfnRwbHYtZnlqdXh1eGFnOC13ZWJwLndlYnAST3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGMqByNDRUNFRUJqkwMIEBKOAwoTNzIwMjU0Njg2ODYxMjY4MDQ1MxL2AgqLAWh0dHBzOi8vcDE2LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjfnRwbHYtZnlqdXh1eGFnOC13ZWJwLndlYnAKiwFodHRwczovL3AxOS13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vd2ViY2FzdC12YS9zdWJfYWIxMzFhYzFlZGI2MDc2ODE2NTA5ZDIyOWQ5YzQwNjgxMWRlMmUyZjY1MDE0MDdmMDdlYTU2YzVkZDRmYjg4Y350cGx2LWZ5anV4dXhhZzgtd2VicC53ZWJwEk93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjKgcjRENGNEZBapMDEo4DChM3MjAyNTQ2ODY4NjEyNjgwNDUzEvYCCosBaHR0cHM6Ly9wMTYtd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGN+dHBsdi1meWp1eHV4YWc4LXdlYnAud2VicAqLAWh0dHBzOi8vcDE5LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjfnRwbHYtZnlqdXh1eGFnOC13ZWJwLndlYnAST3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGMqByNFNkZBREMIEWqTAwgSEo4DChM3MjAyNTQ2ODY4NjEyNjgwNDUzEvYCCosBaHR0cHM6Ly9wMTYtd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGN+dHBsdi1meWp1eHV4YWc4LXdlYnAud2VicAqLAWh0dHBzOi8vcDE5LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL3N1Yl9hYjEzMWFjMWVkYjYwNzY4MTY1MDlkMjI5ZDljNDA2ODExZGUyZTJmNjUwMTQwN2YwN2VhNTZjNWRkNGZiODhjfnRwbHYtZnlqdXh1eGFnOC13ZWJwLndlYnAST3dlYmNhc3QtdmEvc3ViX2FiMTMxYWMxZWRiNjA3NjgxNjUwOWQyMjlkOWM0MDY4MTFkZTJlMmY2NTAxNDA3ZjA3ZWE1NmM1ZGQ0ZmI4OGMqByNFMEJDQkM= \ No newline at end of file diff --git a/Client/src/test/resources/MessageWebcastGiftMessage.bin b/Client/src/test/resources/MessageWebcastGiftMessage.bin deleted file mode 100644 index a6283ba..0000000 --- a/Client/src/test/resources/MessageWebcastGiftMessage.bin +++ /dev/null @@ -1 +0,0 @@ -erUECoQCCmVodHRwczovL3AxNi13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vaW1nL21hbGl2YS93ZWJjYXN0LXZhL2ViYTNhOWJiODVjMzNlMDE3ZjM2NDhlYWY4OGQ3MTg5fnRwbHYtb2JqLnBuZwplaHR0cHM6Ly9wMTktd2ViY2FzdC50aWt0b2tjZG4uY29tL2ltZy9tYWxpdmEvd2ViY2FzdC12YS9lYmEzYTliYjg1YzMzZTAxN2YzNjQ4ZWFmODhkNzE4OX50cGx2LW9iai5wbmcSK3dlYmNhc3QtdmEvZWJhM2E5YmI4NWMzM2UwMTdmMzY0OGVhZjg4ZDcxODkqByM3QzlCQTMg6Ac4AWABggEEUm9zZaoBhAIKZWh0dHBzOi8vcDE2LXdlYmNhc3QudGlrdG9rY2RuLmNvbS9pbWcvbWFsaXZhL3dlYmNhc3QtdmEvZWJhM2E5YmI4NWMzM2UwMTdmMzY0OGVhZjg4ZDcxODl+dHBsdi1vYmoucG5nCmVodHRwczovL3AxOS13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vaW1nL21hbGl2YS93ZWJjYXN0LXZhL2ViYTNhOWJiODVjMzNlMDE3ZjM2NDhlYWY4OGQ3MTg5fnRwbHYtb2JqLnBuZxIrd2ViY2FzdC12YS9lYmEzYTliYjg1YzMzZTAxN2YzNjQ4ZWFmODhkNzE4OSoHI0EzQTNDQ9IGAQASCVNlbnQgUm9zZSiXLFABWAFoAYICAggBEJcsKAEwAVikjMbyoTFoAXIdEAEYAwoX////////////Af///////////wEylgGIAQEKwxEguIzG8qExMAFCxhAing8ICxIOCgkjZmY4Y2U3ZmYgkAOqAYgPCoMPsgIJbWFsb3dhbmFf8gJMTVM0d0xqQUJBQUFBTkR5S3pmZGNWTE9qVC1WdHQzQThaYmladnBiSmtCNmo5NjJQNU1MM3BDS2Z0Qkt4Wl9HS0xSc0lQSVZZdmFpTwiFiKqu0tmcwF4aIvCfp5rigI3imYDvuI9NYWxvd2FuYfCfp5zigI3imYDvuI9KgwUKyAFodHRwczovL3AxNi1zaWduLXVzZWFzdDJhLnRpa3Rva2Nkbi5jb20vdG9zLXVzZWFzdDJhLWF2dC0wMDY4LWV1dHRwLzZmNzg5YWQ4OGU5NmRjZThjMTljOWZkZGE1MTE0ZTk4fnRwbHYtdGlrdG9rLXNocmluazo3Mjo3Mi53ZWJwP3gtZXhwaXJlcz0xNjkyODk2NDAwJngtc2lnbmF0dXJlPXQzNG5PYlloRXJ3cFNaczIlMkZYMCUyRnE1TCUyRkwyWSUzRAq2AWh0dHBzOi8vcDE2LXNpZ24tdXNlYXN0MmEudGlrdG9rY2RuLmNvbS90b3MtdXNlYXN0MmEtYXZ0LTAwNjgtZXV0dHAvNmY3ODlhZDg4ZTk2ZGNlOGMxOWM5ZmRkYTUxMTRlOTh+YzVfMTAweDEwMC53ZWJwP3gtZXhwaXJlcz0xNjkyODk2NDAwJngtc2lnbmF0dXJlPTFFNzNWb3g0WjIxeiUyRmNnY29DSjg5U3VzSWZvJTNECrYBaHR0cHM6Ly9wMTYtc2lnbi11c2Vhc3QyYS50aWt0b2tjZG4uY29tL3Rvcy11c2Vhc3QyYS1hdnQtMDA2OC1ldXR0cC82Zjc4OWFkODhlOTZkY2U4YzE5YzlmZGRhNTExNGU5OH5jNV8xMDB4MTAwLmpwZWc/eC1leHBpcmVzPTE2OTI4OTY0MDAmeC1zaWduYXR1cmU9RyUyQk9hT2c5ZURGNFd0dkpUSVVndmxueHNZSmslM0QSRDEwMHgxMDAvdG9zLXVzZWFzdDJhLWF2dC0wMDY4LWV1dHRwLzZmNzg5YWQ4OGU5NmRjZThjMTljOWZkZGE1MTE0ZTk4ggThCCABUukCc3Nsb2NhbDovL3dlYmNhc3RfbHlueHZpZXdfcG9wdXA/dXNlX3NwYXJrPTEmdXJsPWh0dHBzJTNBJTJGJTJGbGYxNi1nZWNrby1zb3VyY2UudGlrdG9rY2RuLmNvbSUyRm9iaiUyRmJ5dGUtZ3VyZC1zb3VyY2Utc2clMkZ0aWt0b2slMkZmZSUyRmxpdmUlMkZ0aWt0b2tfbGl2ZV9yZXZlbnVlX3VzZXJfbGV2ZWxfbWFpbiUyRnNyYyUyRnBhZ2VzJTJGcHJpdmlsZWdlJTJGcGFuZWwlMkZ0ZW1wbGF0ZS5qcyZoaWRlX3N0YXR1c19iYXI9MCZoaWRlX25hdl9iYXI9MSZjb250YWluZXJfYmdfY29sb3I9MDAwMDAwMDAmaGVpZ2h0PTkwJTI1JmJkaG1fYmlkPXRpa3Rva19saXZlX3JldmVudWVfdXNlcl9sZXZlbF9tYWluJnVzZV9mb3Jlc3Q9MVgBYk8KATISEzcxMzgzODE3NDcyOTI1NzU1MjQaATAiLm1vY2tfZml4X3dpZHRoX3RyYW5zcGFyZW50XzcxMzgzODE3NDcyOTI1NzU1MjQqAjE3ugGWBSoGCAEQAhggMgA6BiIAGgISAFoNCgASCSNCMzQ3N0VGRmINCgASCSNCMzQ3N0VGRngOgAEPCAQiAjE3EtgEOukCc3Nsb2NhbDovL3dlYmNhc3RfbHlueHZpZXdfcG9wdXA/dXNlX3NwYXJrPTEmdXJsPWh0dHBzJTNBJTJGJTJGbGYxNi1nZWNrby1zb3VyY2UudGlrdG9rY2RuLmNvbSUyRm9iaiUyRmJ5dGUtZ3VyZC1zb3VyY2Utc2clMkZ0aWt0b2slMkZmZSUyRmxpdmUlMkZ0aWt0b2tfbGl2ZV9yZXZlbnVlX3VzZXJfbGV2ZWxfbWFpbiUyRnNyYyUyRnBhZ2VzJTJGcHJpdmlsZWdlJTJGcGFuZWwlMkZ0ZW1wbGF0ZS5qcyZoaWRlX3N0YXR1c19iYXI9MCZoaWRlX25hdl9iYXI9MSZjb250YWluZXJfYmdfY29sb3I9MDAwMDAwMDAmaGVpZ2h0PTkwJTI1JmJkaG1fYmlkPXRpa3Rva19saXZlX3JldmVudWVfdXNlcl9sZXZlbF9tYWluJnVzZV9mb3Jlc3Q9MQpdaHR0cHM6Ly9wMTYtd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvZ3JhZGVfYmFkZ2VfaWNvbl9saXRlX2x2MTVfdjIucG5nfnRwbHYtb2JqLmltYWdlCl1odHRwczovL3AxOS13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vd2ViY2FzdC12YS9ncmFkZV9iYWRnZV9pY29uX2xpdGVfbHYxNV92Mi5wbmd+dHBsdi1vYmouaW1hZ2USLHdlYmNhc3QtdmEvZ3JhZGVfYmFkZ2VfaWNvbl9saXRlX2x2MTVfdjIucG5nCAQQFBgIsgEGCLYHEM16ugEAggIAEAEiNwgMsgEyIP///////////wEIlywSIgoabGl2ZV9naWZ0X2NvcHl3cml0aW5nXzU2NTUSBFJvc2UiFggBEg4KCSNmZmZhY2UxNSCQA1oCeDEKH3dlYmNhc3RfYXdlbWVfZ2lmdF9zZW5kX21lc3NhZ2USIXswOnVzZXJ9IHNlbnQgezE6Z2lmdH0gezI6c3RyaW5nfRoOCgkjZmZmYWNlMTUgkANIAVACsAEFEKGWwcyLubzyZBihlpuo89G68mS4AQHAAQIKEldlYmNhc3RHaWZ0TWVzc2FnZTo68J+nmuKAjeKZgO+4j01hbG93YW5h8J+nnOKAjeKZgO+4jzogZ2lmdGVkIHRoZSBob3N0IDEgUm9zZTqZD7oBALICCW1hbG93YW5hX/ICTE1TNHdMakFCQUFBQU5EeUt6ZmRjVkxPalQtVnR0M0E4WmJpWnZwYkprQjZqOTYyUDVNTDNwQ0tmdEJLeFpfR0tMUnNJUElWWXZhaU+iQBM2ODA5NTY4ODYyMDEyMDgxMTU3GiLwn6ea4oCN4pmA77iPTWFsb3dhbmHwn6ec4oCN4pmA77iPsgEGCLYHEM16ggIAggThCGJPCgEyEhM3MTM4MzgxNzQ3MjkyNTc1NTI0GgEwIi5tb2NrX2ZpeF93aWR0aF90cmFuc3BhcmVudF83MTM4MzgxNzQ3MjkyNTc1NTI0KgIxN7oBlgUIBCICMTcqBggBEAIYIDIAOgYiABoCEgCAAQ8S2AQKXWh0dHBzOi8vcDE2LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL2dyYWRlX2JhZGdlX2ljb25fbGl0ZV9sdjE1X3YyLnBuZ350cGx2LW9iai5pbWFnZQpdaHR0cHM6Ly9wMTktd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvZ3JhZGVfYmFkZ2VfaWNvbl9saXRlX2x2MTVfdjIucG5nfnRwbHYtb2JqLmltYWdlEix3ZWJjYXN0LXZhL2dyYWRlX2JhZGdlX2ljb25fbGl0ZV9sdjE1X3YyLnBuZzrpAnNzbG9jYWw6Ly93ZWJjYXN0X2x5bnh2aWV3X3BvcHVwP3VzZV9zcGFyaz0xJnVybD1odHRwcyUzQSUyRiUyRmxmMTYtZ2Vja28tc291cmNlLnRpa3Rva2Nkbi5jb20lMkZvYmolMkZieXRlLWd1cmQtc291cmNlLXNnJTJGdGlrdG9rJTJGZmUlMkZsaXZlJTJGdGlrdG9rX2xpdmVfcmV2ZW51ZV91c2VyX2xldmVsX21haW4lMkZzcmMlMkZwYWdlcyUyRnByaXZpbGVnZSUyRnBhbmVsJTJGdGVtcGxhdGUuanMmaGlkZV9zdGF0dXNfYmFyPTAmaGlkZV9uYXZfYmFyPTEmY29udGFpbmVyX2JnX2NvbG9yPTAwMDAwMDAwJmhlaWdodD05MCUyNSZiZGhtX2JpZD10aWt0b2tfbGl2ZV9yZXZlbnVlX3VzZXJfbGV2ZWxfbWFpbiZ1c2VfZm9yZXN0PTFaDQoAEgkjQjM0NzdFRkZiDQoAEgkjQjM0NzdFRkZ4DggEEBQYCCABUukCc3Nsb2NhbDovL3dlYmNhc3RfbHlueHZpZXdfcG9wdXA/dXNlX3NwYXJrPTEmdXJsPWh0dHBzJTNBJTJGJTJGbGYxNi1nZWNrby1zb3VyY2UudGlrdG9rY2RuLmNvbSUyRm9iaiUyRmJ5dGUtZ3VyZC1zb3VyY2Utc2clMkZ0aWt0b2slMkZmZSUyRmxpdmUlMkZ0aWt0b2tfbGl2ZV9yZXZlbnVlX3VzZXJfbGV2ZWxfbWFpbiUyRnNyYyUyRnBhZ2VzJTJGcHJpdmlsZWdlJTJGcGFuZWwlMkZ0ZW1wbGF0ZS5qcyZoaWRlX3N0YXR1c19iYXI9MCZoaWRlX25hdl9iYXI9MSZjb250YWluZXJfYmdfY29sb3I9MDAwMDAwMDAmaGVpZ2h0PTkwJTI1JmJkaG1fYmlkPXRpa3Rva19saXZlX3JldmVudWVfdXNlcl9sZXZlbF9tYWluJnVzZV9mb3Jlc3Q9MVgBCIWIqq7S2ZzAXkqDBQrIAWh0dHBzOi8vcDE2LXNpZ24tdXNlYXN0MmEudGlrdG9rY2RuLmNvbS90b3MtdXNlYXN0MmEtYXZ0LTAwNjgtZXV0dHAvNmY3ODlhZDg4ZTk2ZGNlOGMxOWM5ZmRkYTUxMTRlOTh+dHBsdi10aWt0b2stc2hyaW5rOjcyOjcyLndlYnA/eC1leHBpcmVzPTE2OTI4OTY0MDAmeC1zaWduYXR1cmU9dDM0bk9iWWhFcndwU1pzMiUyRlgwJTJGcTVMJTJGTDJZJTNECrYBaHR0cHM6Ly9wMTYtc2lnbi11c2Vhc3QyYS50aWt0b2tjZG4uY29tL3Rvcy11c2Vhc3QyYS1hdnQtMDA2OC1ldXR0cC82Zjc4OWFkODhlOTZkY2U4YzE5YzlmZGRhNTExNGU5OH5jNV8xMDB4MTAwLndlYnA/eC1leHBpcmVzPTE2OTI4OTY0MDAmeC1zaWduYXR1cmU9MUU3M1ZveDRaMjF6JTJGY2djb0NKODlTdXNJZm8lM0QKtgFodHRwczovL3AxNi1zaWduLXVzZWFzdDJhLnRpa3Rva2Nkbi5jb20vdG9zLXVzZWFzdDJhLWF2dC0wMDY4LWV1dHRwLzZmNzg5YWQ4OGU5NmRjZThjMTljOWZkZGE1MTE0ZTk4fmM1XzEwMHgxMDAuanBlZz94LWV4cGlyZXM9MTY5Mjg5NjQwMCZ4LXNpZ25hdHVyZT1HJTJCT2FPZzllREY0V3R2SlRJVWd2bG54c1lKayUzRBJEMTAweDEwMC90b3MtdXNlYXN0MmEtYXZ0LTAwNjgtZXV0dHAvNmY3ODlhZDg4ZTk2ZGNlOGMxOWM5ZmRkYTUxMTRlOTi6AUoIhYCx8IeziMtcGIGJxvKhMVIHYW5kcm9pZFoGMzAwOTA0IJ6KxvKhMSiiiMbyoTEwuIzG8qExOF9AhYCx8IeziMtcSM2AxvKhMZACARgBIAGCASIyMDIzMDgyMjE3MzYxMjM1QTlFQjBEMDk4RUUwMjVFNTZFmgEAwAH///////////8B \ No newline at end of file diff --git a/Client/src/test/resources/MessageWebcastImDeleteMessage.bin b/Client/src/test/resources/MessageWebcastImDeleteMessage.bin deleted file mode 100644 index 12460eb..0000000 --- a/Client/src/test/resources/MessageWebcastImDeleteMessage.bin +++ /dev/null @@ -1 +0,0 @@ -CjUKFldlYmNhc3RJbURlbGV0ZU1lc3NhZ2UQhZab+vyKvvJkGJKWhYz+o7DxZCC0sajzoTEwARoJhojH2ojIjaBk \ No newline at end of file diff --git a/Client/src/test/resources/MessageWebcastSocialMessage.bin b/Client/src/test/resources/MessageWebcastSocialMessage.bin deleted file mode 100644 index 955c810..0000000 --- a/Client/src/test/resources/MessageWebcastSocialMessage.bin +++ /dev/null @@ -1 +0,0 @@ -CskHMAFChgcaDgoJI2ZmZmZmZmZmIJADIp8GCAsSDgoJI2ZmZmZmZmZmIJADqgGJBgqGBgiFiNKIpZnf0WIaCm1yIEEuTC5GLkFK/wQKxgFodHRwczovL3AxNi1zaWduLXVzZWFzdDJhLnRpa3Rva2Nkbi5jb20vdG9zLXVzZWFzdDJhLWF2dC0wMDY4LWV1dHRwLzkxODE3OWQ4MzQ0YWZiYjk3OTAzYjYyMGQwOTg1ZGEzfnRwbHYtdGlrdG9rLXNocmluazo3Mjo3Mi53ZWJwP3gtZXhwaXJlcz0xNjkyOTAwMDAwJngtc2lnbmF0dXJlPUE0RmtOWDMlMkIxNiUyRjlxeENvR1JReEczNFRnRUUlM0QKtAFodHRwczovL3AxNi1zaWduLXVzZWFzdDJhLnRpa3Rva2Nkbi5jb20vdG9zLXVzZWFzdDJhLWF2dC0wMDY4LWV1dHRwLzkxODE3OWQ4MzQ0YWZiYjk3OTAzYjYyMGQwOTg1ZGEzfmM1XzEwMHgxMDAud2VicD94LWV4cGlyZXM9MTY5MjkwMDAwMCZ4LXNpZ25hdHVyZT1EOHlYQUhNVGxGeUR5N3dqT3BXRllrUlBBWnclM0QKtgFodHRwczovL3AxNi1zaWduLXVzZWFzdDJhLnRpa3Rva2Nkbi5jb20vdG9zLXVzZWFzdDJhLWF2dC0wMDY4LWV1dHRwLzkxODE3OWQ4MzQ0YWZiYjk3OTAzYjYyMGQwOTg1ZGEzfmM1XzEwMHgxMDAuanBlZz94LWV4cGlyZXM9MTY5MjkwMDAwMCZ4LXNpZ25hdHVyZT1IYkIwNk00N2Y0JTJGT29jUWxla0gwREdDdkY3MCUzRBJEMTAweDEwMC90b3MtdXNlYXN0MmEtYXZ0LTAwNjgtZXV0dHAvOTE4MTc5ZDgzNDRhZmJiOTc5MDNiNjIwZDA5ODVkYTOyAQgI9h8Qmw0YAboBAIICALICCy56YXBpc3l3YW5l8gJMTVM0d0xqQUJBQUFBYXdVMzNGbnBIYllkMHdra1djeC1DTnBzeDdXT0lqOXdtOTBwQ2tRUmZPekJuZVdZczdXT0plSm5GVU5kdFh0MwoecG1fbXRfZ3VpZGFuY2Vfdmlld2VyXzEwX3NoYXJlEjJ7MDp1c2VyfSBzaGFyZWQgdGhlIExJVkUgd2l0aCBtb3JlIHRoYW4gMTAgZnJpZW5kc1ACsAEFwAECChRXZWJjYXN0U29jaWFsTWVzc2FnZRCglsC+2OG+8mQYoJaZxvrevPJkIOTf0vOhMUgBuAECEoYGSv8ECsYBaHR0cHM6Ly9wMTYtc2lnbi11c2Vhc3QyYS50aWt0b2tjZG4uY29tL3Rvcy11c2Vhc3QyYS1hdnQtMDA2OC1ldXR0cC85MTgxNzlkODM0NGFmYmI5NzkwM2I2MjBkMDk4NWRhM350cGx2LXRpa3Rvay1zaHJpbms6NzI6NzIud2VicD94LWV4cGlyZXM9MTY5MjkwMDAwMCZ4LXNpZ25hdHVyZT1BNEZrTlgzJTJCMTYlMkY5cXhDb0dSUXhHMzRUZ0VFJTNECrQBaHR0cHM6Ly9wMTYtc2lnbi11c2Vhc3QyYS50aWt0b2tjZG4uY29tL3Rvcy11c2Vhc3QyYS1hdnQtMDA2OC1ldXR0cC85MTgxNzlkODM0NGFmYmI5NzkwM2I2MjBkMDk4NWRhM35jNV8xMDB4MTAwLndlYnA/eC1leHBpcmVzPTE2OTI5MDAwMDAmeC1zaWduYXR1cmU9RDh5WEFITVRsRnlEeTd3ak9wV0ZZa1JQQVp3JTNECrYBaHR0cHM6Ly9wMTYtc2lnbi11c2Vhc3QyYS50aWt0b2tjZG4uY29tL3Rvcy11c2Vhc3QyYS1hdnQtMDA2OC1ldXR0cC85MTgxNzlkODM0NGFmYmI5NzkwM2I2MjBkMDk4NWRhM35jNV8xMDB4MTAwLmpwZWc/eC1leHBpcmVzPTE2OTI5MDAwMDAmeC1zaWduYXR1cmU9SGJCMDZNNDdmNCUyRk9vY1FsZWtIMERHQ3ZGNzAlM0QSRDEwMHgxMDAvdG9zLXVzZWFzdDJhLWF2dC0wMDY4LWV1dHRwLzkxODE3OWQ4MzQ0YWZiYjk3OTAzYjYyMGQwOTg1ZGEzsgEIEJsNGAEI9h+6AQCCAgCyAgsuemFwaXN5d2FuZfICTE1TNHdMakFCQUFBQWF3VTMzRm5wSGJZZDB3a2tXY3gtQ05wc3g3V09Jajl3bTkwcENrUVJmT3pCbmVXWXM3V09KZUpuRlVOZHRYdDMIhYjSiKWZ39FiGgptciBBLkwuRi5BGAEgAyoCLTFAGQ== \ No newline at end of file diff --git a/Client/src/test/resources/WebcastMemberMessage.bin b/Client/src/test/resources/WebcastMemberMessage.bin deleted file mode 100644 index 1101742..0000000 --- a/Client/src/test/resources/WebcastMemberMessage.bin +++ /dev/null @@ -1 +0,0 @@ -CqYQEKCW5YLs3I75ZCDkstiRpTFIAVABsAEEwAEBChRXZWJjYXN0TWVtYmVyTWVzc2FnZRiglpnA0ouJ+WQwAULjDwoVbGl2ZV9yb29tX2VudGVyX3RvYXN0Eg97MDp1c2VyfSBqb2luZWQaDgoJI2I4ZmZmZmZmIJADIqgPCAsSDAoHIzhDRTdGRiCQA6oBlA8KkQ8Ihois9IGKsqBfsgEHCNYBEEMYAYICDQgBIP///////////wGyAg1lbWlsa2Fmb3JjemVr8gJMTVM0d0xqQUJBQUFBSndwZW92RzRJblZ6TmVHNWRMaXRLQzVoeUFMQXBKa0xYZ2YzR0NNVm5oQ012Z3FIWWtFMTRUUTRBNm9kVlBndRoORW1pbGthIEZvcmN6ZWtKigUSIzEwMHgxMDAvdGlrdG9rLW9iai8xNjc5NjM0NDkwMzEzNzMwCp8BaHR0cHM6Ly9wMTYtc2lnbi1zZy50aWt0b2tjZG4uY29tL3Rpa3Rvay1vYmovMTY3OTYzNDQ5MDMxMzczMH50cGx2LXRpa3Rvay1zaHJpbms6NzI6NzIud2VicD94LWV4cGlyZXM9MTY5Mzc2NzYwMCZ4LXNpZ25hdHVyZT05NjNDR1JHMVJiRzljSVBkOE4lMkZ3YiUyQnU5bHQ0JTNECpIBaHR0cHM6Ly9wMTYtc2lnbi1zZy50aWt0b2tjZG4uY29tL2F3ZW1lLzEwMHgxMDAvdGlrdG9rLW9iai8xNjc5NjM0NDkwMzEzNzMwLndlYnA/eC1leHBpcmVzPTE2OTM3Njc2MDAmeC1zaWduYXR1cmU9Z3ZWT25kTTYxOEZid2VxR1klMkZzdGhzRGZvQmMlM0QKlAFodHRwczovL3A3Ny1zaWduLXNnLnRpa3Rva2Nkbi5jb20vYXdlbWUvMTAweDEwMC90aWt0b2stb2JqLzE2Nzk2MzQ0OTAzMTM3MzAud2VicD94LWV4cGlyZXM9MTY5Mzc2NzYwMCZ4LXNpZ25hdHVyZT1kYmRjSVgxUXd4S0dYajhXaTR2JTJGdEo2JTJCTEZzJTNECpQBaHR0cHM6Ly9wMTYtc2lnbi1zZy50aWt0b2tjZG4uY29tL2F3ZW1lLzEwMHgxMDAvdGlrdG9rLW9iai8xNjc5NjM0NDkwMzEzNzMwLmpwZWc/eC1leHBpcmVzPTE2OTM3Njc2MDAmeC1zaWduYXR1cmU9dWc4VENIZW0lMkZweGpuJTJCd2hwb2RZeU95MmtVUSUzRLoBAIIE6gggAVLpAnNzbG9jYWw6Ly93ZWJjYXN0X2x5bnh2aWV3X3BvcHVwP3VzZV9zcGFyaz0xJnVybD1odHRwcyUzQSUyRiUyRmxmMTYtZ2Vja28tc291cmNlLnRpa3Rva2Nkbi5jb20lMkZvYmolMkZieXRlLWd1cmQtc291cmNlLXNnJTJGdGlrdG9rJTJGZmUlMkZsaXZlJTJGdGlrdG9rX2xpdmVfcmV2ZW51ZV91c2VyX2xldmVsX21haW4lMkZzcmMlMkZwYWdlcyUyRnByaXZpbGVnZSUyRnBhbmVsJTJGdGVtcGxhdGUuanMmaGlkZV9zdGF0dXNfYmFyPTAmaGlkZV9uYXZfYmFyPTEmY29udGFpbmVyX2JnX2NvbG9yPTAwMDAwMDAwJmhlaWdodD05MCUyNSZiZGhtX2JpZD10aWt0b2tfbGl2ZV9yZXZlbnVlX3VzZXJfbGV2ZWxfbWFpbiZ1c2VfZm9yZXN0PTFYAWJPKgIxMQoBMhITNzEzODM4MTc0NzI5MjQ3NzIyMBoBMCIubW9ja19maXhfd2lkdGhfdHJhbnNwYXJlbnRfNzEzODM4MTc0NzI5MjQ3NzIyMLoBnwV4DoABD6IBBggBEAIYICoGCAEQAhggMgA6BhoCEgAiAFoNCgASCSM5OTNGN0RGNmINCgASCSM5OTNGN0RGNggEEtgECl1odHRwczovL3AxNi13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vd2ViY2FzdC12YS9ncmFkZV9iYWRnZV9pY29uX2xpdGVfbHYxMF92MS5wbmd+dHBsdi1vYmouaW1hZ2UKXWh0dHBzOi8vcDE5LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL2dyYWRlX2JhZGdlX2ljb25fbGl0ZV9sdjEwX3YxLnBuZ350cGx2LW9iai5pbWFnZRIsd2ViY2FzdC12YS9ncmFkZV9iYWRnZV9pY29uX2xpdGVfbHYxMF92MS5wbmc66QJzc2xvY2FsOi8vd2ViY2FzdF9seW54dmlld19wb3B1cD91c2Vfc3Bhcms9MSZ1cmw9aHR0cHMlM0ElMkYlMkZsZjE2LWdlY2tvLXNvdXJjZS50aWt0b2tjZG4uY29tJTJGb2JqJTJGYnl0ZS1ndXJkLXNvdXJjZS1zZyUyRnRpa3RvayUyRmZlJTJGbGl2ZSUyRnRpa3Rva19saXZlX3JldmVudWVfdXNlcl9sZXZlbF9tYWluJTJGc3JjJTJGcGFnZXMlMkZwcml2aWxlZ2UlMkZwYW5lbCUyRnRlbXBsYXRlLmpzJmhpZGVfc3RhdHVzX2Jhcj0wJmhpZGVfbmF2X2Jhcj0xJmNvbnRhaW5lcl9iZ19jb2xvcj0wMDAwMDAwMCZoZWlnaHQ9OTAlMjUmYmRobV9iaWQ9dGlrdG9rX2xpdmVfcmV2ZW51ZV91c2VyX2xldmVsX21haW4mdXNlX2ZvcmVzdD0xIgIxMQgEEBQYCLgBARKRDxoORW1pbGthIEZvcmN6ZWtKigUSIzEwMHgxMDAvdGlrdG9rLW9iai8xNjc5NjM0NDkwMzEzNzMwCp8BaHR0cHM6Ly9wMTYtc2lnbi1zZy50aWt0b2tjZG4uY29tL3Rpa3Rvay1vYmovMTY3OTYzNDQ5MDMxMzczMH50cGx2LXRpa3Rvay1zaHJpbms6NzI6NzIud2VicD94LWV4cGlyZXM9MTY5Mzc2NzYwMCZ4LXNpZ25hdHVyZT05NjNDR1JHMVJiRzljSVBkOE4lMkZ3YiUyQnU5bHQ0JTNECpIBaHR0cHM6Ly9wMTYtc2lnbi1zZy50aWt0b2tjZG4uY29tL2F3ZW1lLzEwMHgxMDAvdGlrdG9rLW9iai8xNjc5NjM0NDkwMzEzNzMwLndlYnA/eC1leHBpcmVzPTE2OTM3Njc2MDAmeC1zaWduYXR1cmU9Z3ZWT25kTTYxOEZid2VxR1klMkZzdGhzRGZvQmMlM0QKlAFodHRwczovL3A3Ny1zaWduLXNnLnRpa3Rva2Nkbi5jb20vYXdlbWUvMTAweDEwMC90aWt0b2stb2JqLzE2Nzk2MzQ0OTAzMTM3MzAud2VicD94LWV4cGlyZXM9MTY5Mzc2NzYwMCZ4LXNpZ25hdHVyZT1kYmRjSVgxUXd4S0dYajhXaTR2JTJGdEo2JTJCTEZzJTNECpQBaHR0cHM6Ly9wMTYtc2lnbi1zZy50aWt0b2tjZG4uY29tL2F3ZW1lLzEwMHgxMDAvdGlrdG9rLW9iai8xNjc5NjM0NDkwMzEzNzMwLmpwZWc/eC1leHBpcmVzPTE2OTM3Njc2MDAmeC1zaWduYXR1cmU9dWc4VENIZW0lMkZweGpuJTJCd2hwb2RZeU95MmtVUSUzRLIBBwjWARBDGAGCAg0IASD///////////8BsgINZW1pbGthZm9yY3pla/ICTE1TNHdMakFCQUFBQUp3cGVvdkc0SW5Wek5lRzVkTGl0S0M1aHlBTEFwSmtMWGdmM0dDTVZuaENNdmdxSFlrRTE0VFE0QTZvZFZQZ3UIhois9IGKsqBfggTqCCABUukCc3Nsb2NhbDovL3dlYmNhc3RfbHlueHZpZXdfcG9wdXA/dXNlX3NwYXJrPTEmdXJsPWh0dHBzJTNBJTJGJTJGbGYxNi1nZWNrby1zb3VyY2UudGlrdG9rY2RuLmNvbSUyRm9iaiUyRmJ5dGUtZ3VyZC1zb3VyY2Utc2clMkZ0aWt0b2slMkZmZSUyRmxpdmUlMkZ0aWt0b2tfbGl2ZV9yZXZlbnVlX3VzZXJfbGV2ZWxfbWFpbiUyRnNyYyUyRnBhZ2VzJTJGcHJpdmlsZWdlJTJGcGFuZWwlMkZ0ZW1wbGF0ZS5qcyZoaWRlX3N0YXR1c19iYXI9MCZoaWRlX25hdl9iYXI9MSZjb250YWluZXJfYmdfY29sb3I9MDAwMDAwMDAmaGVpZ2h0PTkwJTI1JmJkaG1fYmlkPXRpa3Rva19saXZlX3JldmVudWVfdXNlcl9sZXZlbF9tYWluJnVzZV9mb3Jlc3Q9MVgBYk8SEzcxMzgzODE3NDcyOTI0NzcyMjAaATAiLm1vY2tfZml4X3dpZHRoX3RyYW5zcGFyZW50XzcxMzgzODE3NDcyOTI0NzcyMjAqAjExCgEyugGfBQgEIgIxMTIAOgYaAhIAIgBiDQoAEgkjOTkzRjdERjaiAQYIARACGCAS2AQKXWh0dHBzOi8vcDE2LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL2dyYWRlX2JhZGdlX2ljb25fbGl0ZV9sdjEwX3YxLnBuZ350cGx2LW9iai5pbWFnZQpdaHR0cHM6Ly9wMTktd2ViY2FzdC50aWt0b2tjZG4uY29tL3dlYmNhc3QtdmEvZ3JhZGVfYmFkZ2VfaWNvbl9saXRlX2x2MTBfdjEucG5nfnRwbHYtb2JqLmltYWdlEix3ZWJjYXN0LXZhL2dyYWRlX2JhZGdlX2ljb25fbGl0ZV9sdjEwX3YxLnBuZzrpAnNzbG9jYWw6Ly93ZWJjYXN0X2x5bnh2aWV3X3BvcHVwP3VzZV9zcGFyaz0xJnVybD1odHRwcyUzQSUyRiUyRmxmMTYtZ2Vja28tc291cmNlLnRpa3Rva2Nkbi5jb20lMkZvYmolMkZieXRlLWd1cmQtc291cmNlLXNnJTJGdGlrdG9rJTJGZmUlMkZsaXZlJTJGdGlrdG9rX2xpdmVfcmV2ZW51ZV91c2VyX2xldmVsX21haW4lMkZzcmMlMkZwYWdlcyUyRnByaXZpbGVnZSUyRnBhbmVsJTJGdGVtcGxhdGUuanMmaGlkZV9zdGF0dXNfYmFyPTAmaGlkZV9uYXZfYmFyPTEmY29udGFpbmVyX2JnX2NvbG9yPTAwMDAwMDAwJmhlaWdodD05MCUyNSZiZGhtX2JpZD10aWt0b2tfbGl2ZV9yZXZlbnVlX3VzZXJfbGV2ZWxfbWFpbiZ1c2VfZm9yZXN0PTEqBggBEAIYIFoNCgASCSM5OTNGN0RGNngOgAEPCAQQFBgIugEAGIYGUAGSAeMPChVsaXZlX3Jvb21fZW50ZXJfdG9hc3QSD3swOnVzZXJ9IGpvaW5lZBoOCgkjYjhmZmZmZmYgkAMiqA8ICxIMCgcjOENFN0ZGIJADqgGUDwqRD0qKBQqfAWh0dHBzOi8vcDE2LXNpZ24tc2cudGlrdG9rY2RuLmNvbS90aWt0b2stb2JqLzE2Nzk2MzQ0OTAzMTM3MzB+dHBsdi10aWt0b2stc2hyaW5rOjcyOjcyLndlYnA/eC1leHBpcmVzPTE2OTM3Njc2MDAmeC1zaWduYXR1cmU9OTYzQ0dSRzFSYkc5Y0lQZDhOJTJGd2IlMkJ1OWx0NCUzRAqSAWh0dHBzOi8vcDE2LXNpZ24tc2cudGlrdG9rY2RuLmNvbS9hd2VtZS8xMDB4MTAwL3Rpa3Rvay1vYmovMTY3OTYzNDQ5MDMxMzczMC53ZWJwP3gtZXhwaXJlcz0xNjkzNzY3NjAwJngtc2lnbmF0dXJlPWd2Vk9uZE02MThGYndlcUdZJTJGc3Roc0Rmb0JjJTNECpQBaHR0cHM6Ly9wNzctc2lnbi1zZy50aWt0b2tjZG4uY29tL2F3ZW1lLzEwMHgxMDAvdGlrdG9rLW9iai8xNjc5NjM0NDkwMzEzNzMwLndlYnA/eC1leHBpcmVzPTE2OTM3Njc2MDAmeC1zaWduYXR1cmU9ZGJkY0lYMVF3eEtHWGo4V2k0diUyRnRKNiUyQkxGcyUzRAqUAWh0dHBzOi8vcDE2LXNpZ24tc2cudGlrdG9rY2RuLmNvbS9hd2VtZS8xMDB4MTAwL3Rpa3Rvay1vYmovMTY3OTYzNDQ5MDMxMzczMC5qcGVnP3gtZXhwaXJlcz0xNjkzNzY3NjAwJngtc2lnbmF0dXJlPXVnOFRDSGVtJTJGcHhqbiUyQndocG9kWXlPeTJrVVElM0QSIzEwMHgxMDAvdGlrdG9rLW9iai8xNjc5NjM0NDkwMzEzNzMwsgINZW1pbGthZm9yY3pla4ICDQgBIP///////////wHyAkxNUzR3TGpBQkFBQUFKd3Blb3ZHNEluVnpOZUc1ZExpdEtDNWh5QUxBcEprTFhnZjNHQ01WbmhDTXZncUhZa0UxNFRRNEE2b2RWUGd1ggTqCFgBYk8iLm1vY2tfZml4X3dpZHRoX3RyYW5zcGFyZW50XzcxMzgzODE3NDcyOTI0NzcyMjAqAjExCgEyEhM3MTM4MzgxNzQ3MjkyNDc3MjIwGgEwugGfBYABDyICMTEqBggBEAIYIDIAYg0KABIJIzk5M0Y3REY2eA4IBBLYBBIsd2ViY2FzdC12YS9ncmFkZV9iYWRnZV9pY29uX2xpdGVfbHYxMF92MS5wbmc66QJzc2xvY2FsOi8vd2ViY2FzdF9seW54dmlld19wb3B1cD91c2Vfc3Bhcms9MSZ1cmw9aHR0cHMlM0ElMkYlMkZsZjE2LWdlY2tvLXNvdXJjZS50aWt0b2tjZG4uY29tJTJGb2JqJTJGYnl0ZS1ndXJkLXNvdXJjZS1zZyUyRnRpa3RvayUyRmZlJTJGbGl2ZSUyRnRpa3Rva19saXZlX3JldmVudWVfdXNlcl9sZXZlbF9tYWluJTJGc3JjJTJGcGFnZXMlMkZwcml2aWxlZ2UlMkZwYW5lbCUyRnRlbXBsYXRlLmpzJmhpZGVfc3RhdHVzX2Jhcj0wJmhpZGVfbmF2X2Jhcj0xJmNvbnRhaW5lcl9iZ19jb2xvcj0wMDAwMDAwMCZoZWlnaHQ9OTAlMjUmYmRobV9iaWQ9dGlrdG9rX2xpdmVfcmV2ZW51ZV91c2VyX2xldmVsX21haW4mdXNlX2ZvcmVzdD0xCl1odHRwczovL3AxNi13ZWJjYXN0LnRpa3Rva2Nkbi5jb20vd2ViY2FzdC12YS9ncmFkZV9iYWRnZV9pY29uX2xpdGVfbHYxMF92MS5wbmd+dHBsdi1vYmouaW1hZ2UKXWh0dHBzOi8vcDE5LXdlYmNhc3QudGlrdG9rY2RuLmNvbS93ZWJjYXN0LXZhL2dyYWRlX2JhZGdlX2ljb25fbGl0ZV9sdjEwX3YxLnBuZ350cGx2LW9iai5pbWFnZToGGgISACIAWg0KABIJIzk5M0Y3REY2ogEGEAIYIAgBCAQQFBgIIAFS6QJzc2xvY2FsOi8vd2ViY2FzdF9seW54dmlld19wb3B1cD91c2Vfc3Bhcms9MSZ1cmw9aHR0cHMlM0ElMkYlMkZsZjE2LWdlY2tvLXNvdXJjZS50aWt0b2tjZG4uY29tJTJGb2JqJTJGYnl0ZS1ndXJkLXNvdXJjZS1zZyUyRnRpa3RvayUyRmZlJTJGbGl2ZSUyRnRpa3Rva19saXZlX3JldmVudWVfdXNlcl9sZXZlbF9tYWluJTJGc3JjJTJGcGFnZXMlMkZwcml2aWxlZ2UlMkZwYW5lbCUyRnRlbXBsYXRlLmpzJmhpZGVfc3RhdHVzX2Jhcj0wJmhpZGVfbmF2X2Jhcj0xJmNvbnRhaW5lcl9iZ19jb2xvcj0wMDAwMDAwMCZoZWlnaHQ9OTAlMjUmYmRobV9iaWQ9dGlrdG9rX2xpdmVfcmV2ZW51ZV91c2VyX2xldmVsX21haW4mdXNlX2ZvcmVzdD0xCIaIrPSBirKgXxoORW1pbGthIEZvcmN6ZWuyAQcI1gEQQxgBugEAmgEaaG9tZXBhZ2VfZm9sbG93LWxpdmVfY292ZXKiAQVjbGljaw== \ No newline at end of file diff --git a/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/ConfigurationExample.java b/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/ConfigurationExample.java index 6080ca3..488a002 100644 --- a/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/ConfigurationExample.java +++ b/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/ConfigurationExample.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; import java.io.IOException; @@ -14,10 +36,8 @@ public class ConfigurationExample { clientSettings.setClientLanguage("en"); // Language clientSettings.setTimeout(Duration.ofSeconds(2)); // Connection timeout clientSettings.setLogLevel(Level.ALL); // Log level - clientSettings.setDownloadGiftInfo(true); // Downloading meta information about gifts. You can access it by client.getGiftManager().getGiftsInfo(); - clientSettings.setPrintMessageData(true); // Printing TikTok Protocol buffer messages in Base64 format clientSettings.setPrintToConsole(true); // Printing all logs to console even if log level is Level.OFF - clientSettings.setHandleExistingMessagesOnConnect(true); // Invokes all TikTok events that had occurred before connection + clientSettings.setHandleExistingEventsAfterConnection(true); // Invokes all TikTok events that had occurred before connection clientSettings.setRetryOnConnectionFailure(true); // Reconnecting if TikTok user is offline clientSettings.setRetryConnectionTimeout(Duration.ofSeconds(1)); // Timeout before next reconnection diff --git a/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/ListenerExample.java b/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/ListenerExample.java index 5c99e42..1667c2e 100644 --- a/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/ListenerExample.java +++ b/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/ListenerExample.java @@ -1,18 +1,44 @@ +/* + * 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.annotations.TikTokEventHandler; import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.messages.TikTokCommentEvent; import io.github.jwdeveloper.tiktok.events.messages.TikTokErrorEvent; -import io.github.jwdeveloper.tiktok.events.messages.TikTokGiftMessageEvent; +import io.github.jwdeveloper.tiktok.events.messages.TikTokGiftEvent; import io.github.jwdeveloper.tiktok.events.messages.TikTokLikeEvent; import io.github.jwdeveloper.tiktok.listener.TikTokEventListener; import io.github.jwdeveloper.tiktok.live.LiveClient; import java.io.IOException; -public class ListenerExample -{ +public class ListenerExample { + /* + Listeners are an alternative way of handling events. + I would to suggest to use then when logic of handing event + is more complex + */ public static void main(String[] args) throws IOException { CustomListener customListener = new CustomListener(); @@ -32,36 +58,35 @@ public class ListenerExample - first parameter must be LiveClient - second must be class that extending TikTokEvent */ - public static class CustomListener implements TikTokEventListener - { + public static class CustomListener implements TikTokEventListener { @TikTokEventHandler - public void onLike(LiveClient liveClient, TikTokLikeEvent event) - { + public void onLike(LiveClient liveClient, TikTokLikeEvent event) { System.out.println(event.toString()); } @TikTokEventHandler - public void onError(LiveClient liveClient, TikTokErrorEvent event) - { + public void onError(LiveClient liveClient, TikTokErrorEvent event) { System.out.println(event.getException().getMessage()); } @TikTokEventHandler - public void onCommentMessage(LiveClient liveClient, TikTokCommentEvent event) - { + public void onComment(LiveClient liveClient, TikTokCommentEvent event) { System.out.println(event.getText()); } @TikTokEventHandler - public void onGiftMessage(LiveClient liveClient, TikTokGiftMessageEvent event) - { - System.out.println(event.getGift().getDescription()); + public void onGift(LiveClient liveClient, TikTokGiftEvent event) { + var message = switch (event.getGift()) { + case ROSE -> "Thanks :)"; + default -> "as"; + }; + + } @TikTokEventHandler - public void onAnyEvent(LiveClient liveClient, TikTokEvent event) - { + public void onAnyEvent(LiveClient liveClient, TikTokEvent event) { System.out.println(event.getClass().getSimpleName()); } diff --git a/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/Main.java b/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/Main.java index 40b6459..ff87757 100644 --- a/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/Main.java +++ b/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/Main.java @@ -1,7 +1,30 @@ +/* + * 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.events.messages.*; import io.github.jwdeveloper.tiktok.live.LiveClient; +import io.github.jwdeveloper.tiktok.util.ConsoleColors; import java.io.IOException; import java.time.Duration; @@ -10,14 +33,14 @@ public class Main { public static String TEST_TIKTOK_USER = "bangbetmenygy"; - public static void main(String[] args) throws IOException, InterruptedException + public static void main(String[] args) throws IOException { LiveClient client = TikTokLive.newClient(TEST_TIKTOK_USER) .configure(clientSettings -> { clientSettings.setRetryConnectionTimeout(Duration.ofSeconds(5)); clientSettings.setRetryOnConnectionFailure(true); - clientSettings.setDownloadGiftInfo(true); + clientSettings.setHandleExistingEvents(true); }) .onConnected(Main::onConnected) .onDisconnected(Main::onDisconnected) @@ -28,7 +51,7 @@ public class Main { .onShare(Main::onShare) .onSubscribe(Main::onSubscribe) .onLike(Main::onLike) - .onGiftMessage(Main::onGiftMessage) + .onGift(Main::onGift) .onEmote(Main::onEmote) .onError((_client, error) -> { @@ -39,23 +62,34 @@ public class Main { } private static void onConnected(LiveClient tikTokLive, TikTokConnectedEvent e) { - print("Connected"); + print(ConsoleColors.GREEN, "[Connected]"); } + private static void onGift(LiveClient tikTokLive, TikTokGiftEvent e) + { + switch (e.getGift()) { + case ROSE -> print( "\uD83D\uDC95",ConsoleColors.YELLOW,"x", e.getComboCount(), " roses!", "\uD83D\uDC95"); + default -> print(ConsoleColors.YELLOW,"Thanks for gift: ", e.getGift().getName(),"X",e.getComboCount()); + } + if(e.getGift().hasDiamondCostRange(1000,10000)) + { + print("Thank you for expensive Gift!"); + } + + } private static void onDisconnected(LiveClient tikTokLive, TikTokDisconnectedEvent e) { - print("Disconnected"); + print(ConsoleColors.GREEN, "[Disconnected]"); } - private static void onViewerData(LiveClient tikTokLive, TikTokRoomViewerDataEvent e) { print("Viewer count is:", e.getViewerCount()); } private static void onJoin(LiveClient tikTokLive, TikTokJoinEvent e) { - print(e.getUser().getUniqueId(), "joined!"); + print(ConsoleColors.GREEN, "Join -> ", ConsoleColors.WHITE_BRIGHT, e.getUser().getNickName()); } private static void onComment(LiveClient tikTokLive, TikTokCommentEvent e) { - print(e.getUser().getUniqueId(), e.getText()); + print(ConsoleColors.WHITE, e.getUser().getUniqueId(), ":", ConsoleColors.WHITE_BRIGHT, e.getText()); } private static void onFollow(LiveClient tikTokLive, TikTokFollowEvent e) { @@ -74,12 +108,6 @@ public class Main { print(e.getSender().getUniqueId(), "liked!"); } - - private static void onGiftMessage(LiveClient tikTokLive, TikTokGiftMessageEvent e) - { - print(e.getSender().getUniqueId(), "sent", e.getComboCount(), "x", e.getGift().getName()); - } - private static void onEmote(LiveClient tikTokLive, TikTokEmoteEvent e) { print(e.getUser().getUniqueId(), "sent", e.getEmoteId()); } diff --git a/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/SimpleExample.java b/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/SimpleExample.java index af1deaa..7dae689 100644 --- a/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/SimpleExample.java +++ b/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/SimpleExample.java @@ -1,4 +1,29 @@ +/* + * 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.util.ConsoleColors; + import java.io.IOException; public class SimpleExample { @@ -10,31 +35,49 @@ public class SimpleExample { { }) - .onFollow((liveClient, event) -> + .onGift((liveClient, event) -> { - System.out.println("Follow joined -> " + event.getNewFollower().getNickName()); + switch (event.getGift()) { + case ROSE -> + print("\uD83D\uDC95", ConsoleColors.YELLOW, "x", event.getComboCount(), " roses!", "\uD83D\uDC95"); + default -> + print(ConsoleColors.GREEN, "[Thanks for gift] ",ConsoleColors.YELLOW, event.getGift().getName(), "X", event.getComboCount()); + } }) .onConnected((client, event) -> { - System.out.println("Connected"); + print(ConsoleColors.GREEN, "[Connected]"); }) - .onJoin((client, event) -> + .onFollow((liveClient, event) -> { - System.out.println("User joined -> " + event.getUser().getNickName()); + print(ConsoleColors.BLUE, "Follow -> ", ConsoleColors.WHITE_BRIGHT, event.getNewFollower().getNickName()); }) - .onComment((client, event) -> + .onJoin((client, event) -> { - System.out.println(event.getUser().getUniqueId() + ": " + event.getText()); + print(ConsoleColors.GREEN, "Join -> ", ConsoleColors.WHITE_BRIGHT, event.getUser().getNickName()); + }) + .onComment((client, event) -> + { + print(ConsoleColors.WHITE, event.getUser().getUniqueId(), ":", ConsoleColors.WHITE_BRIGHT, event.getText()); }) .onEvent((client, event) -> { - System.out.println("Viewers count: "+client.getRoomInfo().getViewersCount()); + //System.out.println("Event: " +event.getClass().getSimpleName()); }) - .onError((client, event) -> + .onError((client, event) -> { event.getException().printStackTrace(); }) - .buildAndRun(); + .buildAndRunAsync(); + System.in.read(); } + + private static void print(Object... messages) { + var sb = new StringBuilder(); + for (var message : messages) { + sb.append(message).append(" "); + } + System.out.println(sb); + } } diff --git a/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/util/ConsoleColors.java b/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/util/ConsoleColors.java new file mode 100644 index 0000000..c4b64c8 --- /dev/null +++ b/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/util/ConsoleColors.java @@ -0,0 +1,98 @@ +/* + * 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.util; + +public class ConsoleColors +{ + public static final String RESET = "\033[0m"; // Text Reset + + // Regular Colors + public static final String BLACK = "\033[0;30m"; // BLACK + public static final String RED = "\033[0;31m"; // RED + public static final String GREEN = "\033[0;32m"; // GREEN + public static final String YELLOW = "\033[0;33m"; // YELLOW + public static final String BLUE = "\033[0;34m"; // BLUE + public static final String PURPLE = "\033[0;35m"; // PURPLE + public static final String CYAN = "\033[0;36m"; // CYAN + public static final String WHITE = "\033[0;37m"; // WHITE + + // Bold + public static final String BLACK_BOLD = "\033[1;30m"; // BLACK + public static final String RED_BOLD = "\033[1;31m"; // RED + public static final String GREEN_BOLD = "\033[1;32m"; // GREEN + public static final String YELLOW_BOLD = "\033[1;33m"; // YELLOW + public static final String BLUE_BOLD = "\033[1;34m"; // BLUE + public static final String PURPLE_BOLD = "\033[1;35m"; // PURPLE + public static final String CYAN_BOLD = "\033[1;36m"; // CYAN + public static final String WHITE_BOLD = "\033[1;37m"; // WHITE + + // Underline + public static final String BLACK_UNDERLINED = "\033[4;30m"; // BLACK + public static final String RED_UNDERLINED = "\033[4;31m"; // RED + public static final String GREEN_UNDERLINED = "\033[4;32m"; // GREEN + public static final String YELLOW_UNDERLINED = "\033[4;33m"; // YELLOW + public static final String BLUE_UNDERLINED = "\033[4;34m"; // BLUE + public static final String PURPLE_UNDERLINED = "\033[4;35m"; // PURPLE + public static final String CYAN_UNDERLINED = "\033[4;36m"; // CYAN + public static final String WHITE_UNDERLINED = "\033[4;37m"; // WHITE + + // Background + public static final String BLACK_BACKGROUND = "\033[40m"; // BLACK + public static final String RED_BACKGROUND = "\033[41m"; // RED + public static final String GREEN_BACKGROUND = "\033[42m"; // GREEN + public static final String YELLOW_BACKGROUND = "\033[43m"; // YELLOW + public static final String BLUE_BACKGROUND = "\033[44m"; // BLUE + public static final String PURPLE_BACKGROUND = "\033[45m"; // PURPLE + public static final String CYAN_BACKGROUND = "\033[46m"; // CYAN + public static final String WHITE_BACKGROUND = "\033[47m"; // WHITE + + // High Intensity + public static final String BLACK_BRIGHT = "\033[0;90m"; // BLACK + public static final String RED_BRIGHT = "\033[0;91m"; // RED + public static final String GREEN_BRIGHT = "\033[0;92m"; // GREEN + public static final String YELLOW_BRIGHT = "\033[0;93m"; // YELLOW + public static final String BLUE_BRIGHT = "\033[0;94m"; // BLUE + public static final String PURPLE_BRIGHT = "\033[0;95m"; // PURPLE + public static final String CYAN_BRIGHT = "\033[0;96m"; // CYAN + public static final String WHITE_BRIGHT = "\033[0;97m"; // WHITE + + // Bold High Intensity + public static final String BLACK_BOLD_BRIGHT = "\033[1;90m"; // BLACK + public static final String RED_BOLD_BRIGHT = "\033[1;91m"; // RED + public static final String GREEN_BOLD_BRIGHT = "\033[1;92m"; // GREEN + public static final String YELLOW_BOLD_BRIGHT = "\033[1;93m";// YELLOW + public static final String BLUE_BOLD_BRIGHT = "\033[1;94m"; // BLUE + public static final String PURPLE_BOLD_BRIGHT = "\033[1;95m";// PURPLE + public static final String CYAN_BOLD_BRIGHT = "\033[1;96m"; // CYAN + public static final String WHITE_BOLD_BRIGHT = "\033[1;97m"; // WHITE + + // High Intensity backgrounds + public static final String BLACK_BACKGROUND_BRIGHT = "\033[0;100m";// BLACK + public static final String RED_BACKGROUND_BRIGHT = "\033[0;101m";// RED + public static final String GREEN_BACKGROUND_BRIGHT = "\033[0;102m";// GREEN + public static final String YELLOW_BACKGROUND_BRIGHT = "\033[0;103m";// YELLOW + public static final String BLUE_BACKGROUND_BRIGHT = "\033[0;104m";// BLUE + public static final String PURPLE_BACKGROUND_BRIGHT = "\033[0;105m"; // PURPLE + public static final String CYAN_BACKGROUND_BRIGHT = "\033[0;106m"; // CYAN + public static final String WHITE_BACKGROUND_BRIGHT = "\033[0;107m"; // WHITE +} 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 2d3f55d..8ee5581 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 @@ -1,6 +1,30 @@ +/* + * 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.tools.collector; import io.github.jwdeveloper.tiktok.TikTokLive; +import io.github.jwdeveloper.tiktok.events.messages.TikTokGiftEvent; +import io.github.jwdeveloper.tiktok.events.messages.TikTokJoinEvent; import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveMessageException; import io.github.jwdeveloper.tiktok.tools.collector.db.TikTokDatabase; import io.github.jwdeveloper.tiktok.tools.collector.tables.ExceptionInfoModel; @@ -24,10 +48,14 @@ public class RunCollector { public static List ignoredEvents; + public static List> filter; + public static void main(String[] args) throws SQLException { ignoredEvents = new ArrayList<>(); //ignoredEvents = List.of("TikTokJoinEvent","TikTokLikeEvent"); + filter = new ArrayList<>(); + filter.add(TikTokGiftEvent.class); var db = new TikTokDatabase("test"); db.init(); @@ -35,33 +63,45 @@ public class RunCollector { var errors = db.selectErrors(); var users = new ArrayList(); - // users.add("mia_tattoo"); - // users.add("moniczkka"); - // users.add("besin1276"); - users.add("evequinte96"); - for (var user : users) { - runTikTokLiveInstance(user, db); + users.add("mia_tattoo"); + users.add("mr_wavecheck"); + users.add("bangbetmenygy"); + users.add("larasworld0202"); + for (var user : users) + { + try { + runTikTokLiveInstance(user, db); + } + catch (Exception e) + { + + } + } } private static void runTikTokLiveInstance(String tiktokUser, TikTokDatabase tikTokDatabase) { TikTokLive.newClient(tiktokUser) + .onConnected((liveClient, event) -> + { + System.out.println("CONNECTED TO "+liveClient.getRoomInfo().getUserName()); + }) .onWebsocketMessage((liveClient, event) -> { var eventName = event.getEvent().getClass().getSimpleName(); - if (ignoredEvents.contains(eventName)) { + if(filter.size() != 0 && !filter.contains(event.getEvent().getClass())) + { return; } - var binary = Base64.getEncoder().encodeToString(event.getMessage().getBinary().toByteArray()); - var model = TikTokMessageModel.builder() - .type("message") - .hostName(tiktokUser) - .eventName(eventName) - .eventContent(binary) - .build(); + var binary = Base64.getEncoder().encodeToString(event.getMessage().toByteArray()); + var model = new TikTokMessageModel(); + model.setType("messsage"); + model.setHostName(tiktokUser); + model.setEventName(eventName); + model.setEventContent(binary); tikTokDatabase.insertMessage(model); System.out.println("EVENT: [" + tiktokUser + "] " + eventName); @@ -93,7 +133,7 @@ public class RunCollector { exception.printStackTrace(); }) - .buildAndRun(); + .buildAndRunAsync(); } diff --git a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/db/SqlConsts.java b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/db/SqlConsts.java index 6bdbdd1..8760ee4 100644 --- a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/db/SqlConsts.java +++ b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/db/SqlConsts.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.tools.collector.db; public class SqlConsts diff --git a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/db/TikTokDatabase.java b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/db/TikTokDatabase.java index 1b881f9..2544f88 100644 --- a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/db/TikTokDatabase.java +++ b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/db/TikTokDatabase.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.tools.collector.db; import io.github.jwdeveloper.tiktok.tools.collector.tables.TikTokErrorModel; @@ -11,18 +33,17 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; -public class TikTokDatabase -{ +public class TikTokDatabase { private final String database; private TikTokMessageModelDAO messagesTable; private TikTokErrorModelDAO errorTable; - public TikTokDatabase(String database) { - this.database =database; + public TikTokDatabase(String database) { + this.database = database; } public void init() throws SQLException { - var jdbcUrl ="jdbc:sqlite:"+database+".db"; + var jdbcUrl = "jdbc:sqlite:" + database + ".db"; var connection = DriverManager.getConnection(jdbcUrl); var jdbi = Jdbi.create(jdbcUrl) .installPlugin(new SqlObjectPlugin()); @@ -30,27 +51,27 @@ public class TikTokDatabase handle.execute(SqlConsts.CREATE_MESSAGES_TABLE); handle.execute(SqlConsts.CREATE_ERROR_TABLE); }); - // jdbi.registerRowMapper(new TikTokErrorModelMapper()); messagesTable = jdbi.onDemand(TikTokMessageModelDAO.class); errorTable = jdbi.onDemand(TikTokErrorModelDAO.class); } - public void insertMessage(TikTokMessageModel message) - { + public void insertMessage(TikTokMessageModel message) { var dateFormat = new SimpleDateFormat("dd:MM:yyyy HH:mm:ss.SSS"); message.setCreatedAt(dateFormat.format(new Date())); messagesTable.insertTikTokMessage(message); } - public void insertError(TikTokErrorModel message) - { + public void insertError(TikTokErrorModel message) { var dateFormat = new SimpleDateFormat("dd:MM:yyyy HH:mm:ss.SSS"); message.setCreatedAt(dateFormat.format(new Date())); errorTable.insertTikTokMessage(message); } - public List selectErrors() - { - return errorTable.selectErrors(); + public List selectErrors() { + return errorTable.selectErrors(); + } + + public List selectMessages() { + return messagesTable.select(); } } diff --git a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/db/TikTokErrorModelDAO.java b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/db/TikTokErrorModelDAO.java index 3f803d8..24365e4 100644 --- a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/db/TikTokErrorModelDAO.java +++ b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/db/TikTokErrorModelDAO.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.tools.collector.db; import io.github.jwdeveloper.tiktok.tools.collector.tables.TikTokErrorModel; diff --git a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/db/TikTokMessageModelDAO.java b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/db/TikTokMessageModelDAO.java index 52b130c..7baaae4 100644 --- a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/db/TikTokMessageModelDAO.java +++ b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/db/TikTokMessageModelDAO.java @@ -1,12 +1,43 @@ +/* + * 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.tools.collector.db; +import io.github.jwdeveloper.tiktok.tools.collector.tables.TikTokErrorModel; import io.github.jwdeveloper.tiktok.tools.collector.tables.TikTokMessageModel; +import org.jdbi.v3.sqlobject.config.RegisterBeanMapper; import org.jdbi.v3.sqlobject.customizer.BindBean; +import org.jdbi.v3.sqlobject.statement.SqlQuery; import org.jdbi.v3.sqlobject.statement.SqlUpdate; +import java.util.List; + +@RegisterBeanMapper(TikTokMessageModel.class) public interface TikTokMessageModelDAO { @SqlUpdate("INSERT INTO TikTokMessageModel (hostName, eventName,type, eventContent, createdAt) " + "VALUES (:hostName, :eventName, :type, :eventContent, :createdAt)") void insertTikTokMessage(@BindBean TikTokMessageModel message); + + @SqlQuery("SELECT * FROM TikTokMessageModel") + List select(); } diff --git a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/tables/ExceptionInfoModel.java b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/tables/ExceptionInfoModel.java index 01a877a..2659ddf 100644 --- a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/tables/ExceptionInfoModel.java +++ b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/tables/ExceptionInfoModel.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.tools.collector.tables; import java.io.PrintWriter; diff --git a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/tables/TikTokErrorModel.java b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/tables/TikTokErrorModel.java index 2a391a9..2cf9a2f 100644 --- a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/tables/TikTokErrorModel.java +++ b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/tables/TikTokErrorModel.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.tools.collector.tables; import lombok.Data; diff --git a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/tables/TikTokMessageModel.java b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/tables/TikTokMessageModel.java index 0ee5809..5fe92cc 100644 --- a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/tables/TikTokMessageModel.java +++ b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/collector/tables/TikTokMessageModel.java @@ -1,11 +1,33 @@ +/* + * 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.tools.collector.tables; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @Data -@Builder public class TikTokMessageModel { private Integer id; diff --git a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/tester/RunTester.java b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/tester/RunTester.java index 1e00958..d21e412 100644 --- a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/tester/RunTester.java +++ b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/tester/RunTester.java @@ -1,51 +1,93 @@ +/* + * 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.tools.tester; -import com.google.protobuf.InvalidProtocolBufferException; -import io.github.jwdeveloper.tiktok.ClientSettings; -import io.github.jwdeveloper.tiktok.TikTokGiftManager; import io.github.jwdeveloper.tiktok.TikTokRoomInfo; import io.github.jwdeveloper.tiktok.events.messages.TikTokErrorEvent; +import io.github.jwdeveloper.tiktok.events.messages.TikTokGiftComboFinishedEvent; +import io.github.jwdeveloper.tiktok.events.messages.TikTokGiftEvent; +import io.github.jwdeveloper.tiktok.gifts.TikTokGiftManager; import io.github.jwdeveloper.tiktok.handlers.TikTokEventObserver; import io.github.jwdeveloper.tiktok.handlers.TikTokMessageHandlerRegistration; import io.github.jwdeveloper.tiktok.messages.WebcastResponse; import io.github.jwdeveloper.tiktok.tools.collector.db.TikTokDatabase; -import java.sql.SQLException; import java.util.Base64; -import java.util.logging.Logger; public class RunTester { - public static void main(String[] args) throws SQLException, InvalidProtocolBufferException { - var db = new TikTokDatabase("test"); - db.init(); - var errors = db.selectErrors(); + public static void main(String[] args) throws Exception { + var db = new TikTokDatabase("test"); + db.init(); + var errors = db.selectErrors(); - var handler = getMessageHandler(); - for (var error : errors) { - var bytes = Base64.getDecoder().decode(error.getResponse()); - var response = WebcastResponse.parseFrom(bytes); - handler.handle(null,response); + + var handler = getMessageHandler(); + for (var error : errors) { + + var bytes = Base64.getDecoder().decode(error.getResponse()); + var response = WebcastResponse.parseFrom(bytes); + handler.handle(null, response); + } + + var messags = db.selectMessages(); + for (var msg : messags) { + if (!msg.getEventName().contains("Gift")) { + continue; } + var bytes = Base64.getDecoder().decode(msg.getEventContent()); + var response = WebcastResponse.Message.parseFrom(bytes); + handler.handleSingleMessage(null, response); + } } - public static TikTokMessageHandlerRegistration getMessageHandler() - { + public static TikTokMessageHandlerRegistration getMessageHandler() { var observer = new TikTokEventObserver(); - observer.subscribe(TikTokErrorEvent.class,(liveClient, event) -> + observer.subscribe(TikTokGiftEvent.class, (liveClient, event) -> { - event.getException().printStackTrace(); + var sb = new StringBuilder(); + sb.append("Event: " + event.getGift()); + sb.append(" combo: " + event.getComboCount()); + sb.append(" index " + event.getComboIndex()); + sb.append(" sender " + event.getSender().getNickName()); + sb.append(" finished " + event.getComboFinished()); + System.out.println(sb.toString()); + }); + observer.subscribe(TikTokGiftComboFinishedEvent.class, (liveClient, event) -> + { + System.out.println("Combo finished event! " + event.getComboCount() + " " + event.getGift()); + }); + observer.subscribe(TikTokErrorEvent.class, (liveClient, event) -> + { + event.getException().printStackTrace(); }); - var settings = new ClientSettings(); - //settings.setPrintMessageData(true); - var logger = Logger.getGlobal(); var roomInfo = new TikTokRoomInfo(); var manager = new TikTokGiftManager(); - return new TikTokMessageHandlerRegistration(observer,settings,logger,manager,roomInfo); + return new TikTokMessageHandlerRegistration(observer, manager, roomInfo); } } diff --git a/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/EventsListGenerator.java b/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/EventsListGenerator.java index b13cc00..3b74efd 100644 --- a/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/EventsListGenerator.java +++ b/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/EventsListGenerator.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; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/LiveClientMethodsGenerator.java b/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/LiveClientMethodsGenerator.java index f1eca1b..c55cc03 100644 --- a/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/LiveClientMethodsGenerator.java +++ b/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/LiveClientMethodsGenerator.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; import io.github.jwdeveloper.tiktok.utils.FilesUtility; diff --git a/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/Main.java b/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/Main.java index f419a09..4565fbd 100644 --- a/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/Main.java +++ b/Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/Main.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; 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 3021d11..a0d090f 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 @@ -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; import io.github.jwdeveloper.tiktok.utils.FilesUtility; diff --git a/Tools/pom.xml b/Tools/pom.xml index 216ebaf..301e88c 100644 --- a/Tools/pom.xml +++ b/Tools/pom.xml @@ -44,6 +44,11 @@ ${project.version} compile + + org.jsoup + jsoup + 1.14.3 + diff --git a/Tools/src/main/java/io/github/jwdeveloper/tiktok/EventsGeneratorRun.java b/Tools/src/main/java/io/github/jwdeveloper/tiktok/EventsGeneratorRun.java index e1e3f26..94cfa29 100644 --- a/Tools/src/main/java/io/github/jwdeveloper/tiktok/EventsGeneratorRun.java +++ b/Tools/src/main/java/io/github/jwdeveloper/tiktok/EventsGeneratorRun.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; import io.github.jwdeveloper.tiktok.events_generator.EventGeneratorSettings; diff --git a/Tools/src/main/java/io/github/jwdeveloper/tiktok/EventsInterfaceGeneratorRun.java b/Tools/src/main/java/io/github/jwdeveloper/tiktok/EventsInterfaceGeneratorRun.java index a499df5..3426b34 100644 --- a/Tools/src/main/java/io/github/jwdeveloper/tiktok/EventsInterfaceGeneratorRun.java +++ b/Tools/src/main/java/io/github/jwdeveloper/tiktok/EventsInterfaceGeneratorRun.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; import io.github.jwdeveloper.tiktok.events_generator.EventGeneratorSettings; diff --git a/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/CSharpClassInfo.java b/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/CSharpClassInfo.java index d837731..1c1c888 100644 --- a/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/CSharpClassInfo.java +++ b/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/CSharpClassInfo.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.events_generator; import lombok.Data; diff --git a/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/CSharpClassParser.java b/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/CSharpClassParser.java index a206e2e..cae7a4e 100644 --- a/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/CSharpClassParser.java +++ b/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/CSharpClassParser.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.events_generator; import java.io.IOException; diff --git a/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/EventGeneratorSettings.java b/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/EventGeneratorSettings.java index ac2923f..96203cb 100644 --- a/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/EventGeneratorSettings.java +++ b/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/EventGeneratorSettings.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.events_generator; import lombok.Data; diff --git a/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/EventsGenerator.java b/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/EventsGenerator.java index 986b663..b117220 100644 --- a/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/EventsGenerator.java +++ b/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/EventsGenerator.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.events_generator; import io.github.jwdeveloper.tiktok.utils.FilesUtility; diff --git a/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/JavaClassGenerator.java b/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/JavaClassGenerator.java index c0283da..434bfc6 100644 --- a/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/JavaClassGenerator.java +++ b/Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/JavaClassGenerator.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.events_generator; import com.squareup.javapoet.*; diff --git a/Tools/src/main/java/io/github/jwdeveloper/tiktok/gifts/GenerateGiftsEnum.java b/Tools/src/main/java/io/github/jwdeveloper/tiktok/gifts/GenerateGiftsEnum.java new file mode 100644 index 0000000..2b591c1 --- /dev/null +++ b/Tools/src/main/java/io/github/jwdeveloper/tiktok/gifts/GenerateGiftsEnum.java @@ -0,0 +1,167 @@ +/* + * 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.gifts; + +import com.squareup.javapoet.JavaFile; +import com.squareup.javapoet.MethodSpec; +import com.squareup.javapoet.TypeSpec; +import io.github.jwdeveloper.tiktok.gifts.downloader.GiftDto; +import lombok.Getter; + +import javax.lang.model.element.Modifier; +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + + +public class GenerateGiftsEnum { + + public static void main(String args[]) throws IOException { + + + var downloader = new GiftsDownloader(); + var gifts = downloader.getGiftsFromFile(); + var groupedByName = gifts.stream().collect(Collectors.groupingBy(GiftDto::getName)); + for (var entry : groupedByName.entrySet()) { + if (entry.getValue().size() > 1) { + System.out.println("LOOK AT THIS SHIT: " + entry.getKey()); + for (var v : entry.getValue()) { + System.out.println(v.toString()); + } + + System.out.println("-------------------------"); + } + } + + System.out.println("Total gifts" + gifts.size()); + var result = generate(groupedByName); + result.writeTo(new File("C:\\Users\\ja\\IdeaProjects\\TikTokLiveJava\\API\\src\\main\\java")); + System.out.println("DONE"); + } + + + public static JavaFile generate(Map> giftInfoMap) { + var enumBuilder = TypeSpec.enumBuilder("Gift") + .addModifiers(Modifier.PUBLIC) + .addAnnotation(Getter.class) + .addField(int.class, "id", Modifier.PRIVATE, Modifier.FINAL) + .addField(String.class, "name", Modifier.PRIVATE, Modifier.FINAL) + .addField(int.class, "diamondCost", Modifier.PRIVATE, Modifier.FINAL); + + + var constructor = MethodSpec.constructorBuilder() + .addModifiers(Modifier.PRIVATE) + .addParameter(int.class, "id") + .addParameter(String.class, "name") + .addParameter(int.class, "diamondCost") + .addStatement("this.id = id") + .addStatement("this.name = name") + .addStatement("this.diamondCost = diamondCost") + .build(); + + var inRangeMethod = MethodSpec.methodBuilder("hasDiamondCostRange") + .addModifiers(Modifier.PUBLIC) + .addParameter(int.class, "minimalCost") + .addParameter(int.class, "maximalCost") + .addStatement(" return diamondCost >= minimalCost && diamondCost <= maximalCost") + .returns(boolean.class); + + var hasCostMethod = MethodSpec.methodBuilder("hasDiamondCost") + .addModifiers(Modifier.PUBLIC) + .addParameter(int.class, "cost") + .addStatement(" return diamondCost == cost") + .returns(boolean.class); + + enumBuilder.addMethod(inRangeMethod.build()); + enumBuilder.addMethod(hasCostMethod.build()); + enumBuilder.addMethod(constructor); + + + enumBuilder.addEnumConstant("UNDEFINED", addGift(-1, "undefined", -1)); + for (var giftInfo : giftInfoMap.entrySet()) { + + + var name = giftInfo.getKey().replace(" ", "_") + .replace("’", "_") + .replace("+", "_") + .replace("'", "_") + .replace(".", "_") + .replace("-", "_") + .replace("!","_") + .toUpperCase(); + + if (isNumeric(name)) { + name = "_" + name; + } + + if (name.equalsIgnoreCase("")) { + continue; + } + var contier = 1; + for (var value : giftInfo.getValue()) { + var enumName = name; + if (contier > 1) { + enumName += "_" + value.getId(); + } + enumBuilder.addEnumConstant(enumName, addGift(value.getId(), value.getName(), value.getDiamondCost())); + contier++; + } + + + } + onEnums(enumBuilder); + + + var output = JavaFile.builder("io.github.jwdeveloper.tiktok.events.objects", enumBuilder.build()); + output.addFileComment("This enum is generated"); + return output.build(); + } + + public static boolean isNumeric(String str) { + try { + Double.parseDouble(str); + return true; + } catch (NumberFormatException e) { + return false; + } + } + + public static void onEnums(TypeSpec.Builder builder) { + builder.addEnumConstant("RUGBY_BALL", addGift(6249, "Rugby Ball", 10)); + builder.addEnumConstant("I_LOVE_YOU", addGift(5779, "I Love you", 10)); + builder.addEnumConstant("BOUQUET_FLOWER", addGift(5780, "Bouquet Flower", 30)); + } + + + public static TypeSpec addGift(int id, String name, int diamont) { + return TypeSpec.anonymousClassBuilder( + "$L, $S, $L", + id, + name, + diamont) + .build(); + } + +} diff --git a/Tools/src/main/java/io/github/jwdeveloper/tiktok/gifts/GiftsDownloader.java b/Tools/src/main/java/io/github/jwdeveloper/tiktok/gifts/GiftsDownloader.java new file mode 100644 index 0000000..8bc3a49 --- /dev/null +++ b/Tools/src/main/java/io/github/jwdeveloper/tiktok/gifts/GiftsDownloader.java @@ -0,0 +1,82 @@ +/* + * 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.gifts; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; +import io.github.jwdeveloper.tiktok.gifts.downloader.GiftDto; +import io.github.jwdeveloper.tiktok.gifts.downloader.GiftOfficialJson; +import io.github.jwdeveloper.tiktok.gifts.downloader.GiftScraperJson; +import io.github.jwdeveloper.tiktok.utils.FilesUtility; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +public class GiftsDownloader { + + public static void main(String[] run) { + new GiftsDownloader().getGifts(); + } + + public List getGiftsFromFile() { + var content = FilesUtility.loadFileContent("C:\\Users\\ja\\IdeaProjects\\TikTokLiveJava\\Tools\\src\\main\\resources\\gifts\\output.json"); + Type mapType = new TypeToken>() { + }.getType(); + var mapper = new Gson().fromJson(content, mapType); + + var gifts = (Map) mapper; + return gifts.values().stream().toList(); + } + + public List getGifts() { + var scraper = new GiftScraperJson(); + System.out.println("Downlooading Scraped Gifts"); + var scraperGifts = scraper.run(); + System.out.println("Scraped Gifts: " + scraperGifts.size()); + + System.out.println("Downlooading Official Gifts"); + var officalGift = new GiftOfficialJson(); + var officialGifts = officalGift.run(); + System.out.println("Official Gifts: " + officialGifts.size()); + + + var outputHashMap = new TreeMap(); + for (var gift : scraperGifts) + { + outputHashMap.put(gift.getId(), gift); + } + for (var gift : officialGifts) + { + outputHashMap.put(gift.getId(), gift); + } + var gson = new GsonBuilder().setPrettyPrinting().create(); + var json = gson.toJson(outputHashMap); + FilesUtility.saveFile("C:\\Users\\ja\\IdeaProjects\\TikTokLiveJava\\Tools\\src\\main\\resources\\gifts\\output.json", json); + System.out.println("Gifts saved to file!"); + return outputHashMap.values().stream().toList(); + } +} diff --git a/Tools/src/main/java/io/github/jwdeveloper/tiktok/gifts/downloader/GiftDto.java b/Tools/src/main/java/io/github/jwdeveloper/tiktok/gifts/downloader/GiftDto.java new file mode 100644 index 0000000..04792bd --- /dev/null +++ b/Tools/src/main/java/io/github/jwdeveloper/tiktok/gifts/downloader/GiftDto.java @@ -0,0 +1,34 @@ +/* + * 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.gifts.downloader; + +import lombok.Data; + +@Data +public class GiftDto +{ + private int id; + private String name; + private int diamondCost; + private String image; +} diff --git a/Tools/src/main/java/io/github/jwdeveloper/tiktok/gifts/downloader/GiftOfficialJson.java b/Tools/src/main/java/io/github/jwdeveloper/tiktok/gifts/downloader/GiftOfficialJson.java new file mode 100644 index 0000000..586d7b1 --- /dev/null +++ b/Tools/src/main/java/io/github/jwdeveloper/tiktok/gifts/downloader/GiftOfficialJson.java @@ -0,0 +1,102 @@ +/* + * 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.gifts.downloader; + +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import io.github.jwdeveloper.tiktok.Constants; +import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveRequestException; +import io.github.jwdeveloper.tiktok.http.TikTokCookieJar; +import io.github.jwdeveloper.tiktok.http.TikTokHttpClient; +import io.github.jwdeveloper.tiktok.http.TikTokHttpRequestFactory; +import io.github.jwdeveloper.tiktok.utils.FilesUtility; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +public class GiftOfficialJson { + + public static void main(String[] args) { + new GiftOfficialJson().run(); + } + + public List run() { + + var output = new ArrayList(); + var jsonGifts = getJsonGifts(); + for (var jsonElement : jsonGifts) { + var gift = getGift(jsonElement); + output.add(gift); + } + return output; + } + + + private GiftDto getGift(JsonElement jsonElement) { + + var id = jsonElement.getAsJsonObject().get("id").getAsInt(); + var name = jsonElement.getAsJsonObject().get("name").getAsString(); + var diamondCost = jsonElement.getAsJsonObject().get("diamond_count").getAsInt(); + var image = jsonElement.getAsJsonObject() + .get("image").getAsJsonObject() + .get("url_list").getAsJsonArray().get(0).getAsString(); + + var gift = new GiftDto(); + gift.setId(id); + gift.setName(name); + gift.setDiamondCost(diamondCost); + gift.setImage(image); + return gift; + } + + public static JsonArray getJsonGifts() { + var jar = new TikTokCookieJar(); + var tiktokHttpClient = new TikTokHttpClient(jar, new TikTokHttpRequestFactory(jar)); + var settings = Constants.DefaultClientSettings(); + + + var dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy"); + var now = LocalDateTime.now(); + var date = now.format(dtf).replace("/", "_"); + var fileName = "official_" + date + ".json"; + + try { + var response = tiktokHttpClient.getJObjectFromWebcastAPI("gift/list/", settings.getClientParameters()); + var gson = new GsonBuilder().setPrettyPrinting().create(); + FilesUtility.saveFile("C:\\Users\\ja\\IdeaProjects\\TikTokLiveJava\\Tools\\src\\main\\resources\\gifts\\official\\" + fileName, gson.toJson(response)); + if (!response.has("data")) { + return new JsonArray(); + } + var dataJson = response.getAsJsonObject("data"); + if (!dataJson.has("gifts")) { + return new JsonArray(); + } + return dataJson.get("gifts").getAsJsonArray(); + } catch (Exception e) { + throw new TikTokLiveRequestException("Failed to fetch giftTokens from WebCast, see stacktrace for more info.", e); + } + } +} diff --git a/Tools/src/main/java/io/github/jwdeveloper/tiktok/gifts/downloader/GiftScraperJson.java b/Tools/src/main/java/io/github/jwdeveloper/tiktok/gifts/downloader/GiftScraperJson.java new file mode 100644 index 0000000..50d913a --- /dev/null +++ b/Tools/src/main/java/io/github/jwdeveloper/tiktok/gifts/downloader/GiftScraperJson.java @@ -0,0 +1,121 @@ +/* + * 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.gifts.downloader; + + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; + +import java.util.ArrayList; +import java.util.List; + +public class GiftScraperJson { + + private final String baseUrl = "https://streamdps.com/tiktok-widgets/gifts/"; + + + public static void main(String[] args) { + var instance = new GiftScraperJson(); + instance.run(); + } + + + public List run() { + var mainPage = getPageContent(baseUrl); + var countries = getCountriesLinks(mainPage); + + var allDocuments = getAllPagesDocuments(countries); + allDocuments.add(mainPage); + + var output = new ArrayList(); + for (var document : allDocuments) { + var gifts = getGifts(document); + output.addAll(gifts); + } + + + return output; + } + + public List getAllPagesDocuments(List pages) { + List content = new ArrayList<>(); + for (var page : pages) { + content.add(getPageContent(baseUrl + page)); + } + return content; + } + + public List getCountriesLinks(Document document) { + var output = new ArrayList(); + var countriesElements = document.getElementsByTag("a"); + for (var element : countriesElements) { + var value = element.attr("href"); + if (!value.contains("/tiktok-widgets/gifts/?")) { + continue; + } + value = value.replace("/tiktok-widgets/gifts/", ""); + output.add(value); + } + return output; + } + + public List getGifts(Document document) { + var container = document.getElementsByClass("section-block bkg-charcoal"); + var giftsContainers = container.get(0).getElementsByClass("column width-1 center"); + + var output = new ArrayList(); + for (var giftContainer : giftsContainers) { + var imageElement = giftContainer.getElementsByTag("img").get(0); + var link = imageElement.attr("src"); + + var coinsElement = giftContainer.getElementsByClass("color-white").get(0); + var coins = coinsElement.text(); + + var inputsElements = giftContainer.getElementsByTag("input"); + var idElement = inputsElements.get(0); + var nameElement = inputsElements.get(1); + + var id = idElement.attr("value"); + var name = nameElement.attr("value"); + + + var gift = new GiftDto(); + gift.setImage(link); + gift.setDiamondCost(Integer.parseInt(coins)); + gift.setId(Integer.parseInt(id)); + gift.setName(name); + output.add(gift); + } + return output; + } + + public Document getPageContent(String url) { + try { + var result = Jsoup.connect(url).get(); + System.out.println("Downloaded page: " + url); + return result; + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/Tools/src/main/java/io/github/jwdeveloper/tiktok/intefacee/EventsInterfaceGenerator.java b/Tools/src/main/java/io/github/jwdeveloper/tiktok/intefacee/EventsInterfaceGenerator.java index f0c713a..0c525a2 100644 --- a/Tools/src/main/java/io/github/jwdeveloper/tiktok/intefacee/EventsInterfaceGenerator.java +++ b/Tools/src/main/java/io/github/jwdeveloper/tiktok/intefacee/EventsInterfaceGenerator.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.intefacee; import com.squareup.javapoet.*; @@ -16,13 +38,8 @@ public class EventsInterfaceGenerator { // Get all types (i.e., classes) in the specified package var classes = reflections.getSubTypesOf(TikTokEvent.class); classes.add(TikTokEvent.class); - for (Class clazz : classes) { - // System.out.println(clazz.getName()); - } // var result = generateInterface("io.github.jwdeveloper.tiktok.events", classes);System.out.println(result); - - var result = getBuilderImplementation("x",classes); System.out.println(result); } diff --git a/Tools/src/main/java/io/github/jwdeveloper/tiktok/protocol/ProtocolGenerator.java b/Tools/src/main/java/io/github/jwdeveloper/tiktok/protocol/ProtocolGenerator.java index 1980101..516325c 100644 --- a/Tools/src/main/java/io/github/jwdeveloper/tiktok/protocol/ProtocolGenerator.java +++ b/Tools/src/main/java/io/github/jwdeveloper/tiktok/protocol/ProtocolGenerator.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.protocol; diff --git a/Tools/src/main/java/io/github/jwdeveloper/tiktok/utils/FilesUtility.java b/Tools/src/main/java/io/github/jwdeveloper/tiktok/utils/FilesUtility.java index e3228d9..f41c37a 100644 --- a/Tools/src/main/java/io/github/jwdeveloper/tiktok/utils/FilesUtility.java +++ b/Tools/src/main/java/io/github/jwdeveloper/tiktok/utils/FilesUtility.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; import java.io.File; diff --git a/Tools/src/main/java/io/github/jwdeveloper/tiktok/utils/TemplateUtility.java b/Tools/src/main/java/io/github/jwdeveloper/tiktok/utils/TemplateUtility.java index fb7ab0e..7481edf 100644 --- a/Tools/src/main/java/io/github/jwdeveloper/tiktok/utils/TemplateUtility.java +++ b/Tools/src/main/java/io/github/jwdeveloper/tiktok/utils/TemplateUtility.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; import java.util.Map; diff --git a/Tools/src/main/resources/gifts/index.html b/Tools/src/main/resources/gifts/index.html new file mode 100644 index 0000000..e69de29 diff --git a/Client/src/test/resources/gifts.json b/Tools/src/main/resources/gifts/official/official_02_09_2023.json similarity index 100% rename from Client/src/test/resources/gifts.json rename to Tools/src/main/resources/gifts/official/official_02_09_2023.json diff --git a/Tools/src/main/resources/gifts/official/official_02_10_2023.json b/Tools/src/main/resources/gifts/official/official_02_10_2023.json new file mode 100644 index 0000000..6d4278d --- /dev/null +++ b/Tools/src/main/resources/gifts/official/official_02_10_2023.json @@ -0,0 +1,15797 @@ +{ + "data": { + "cold_gift_hash": "49f88e6edffa6d8c2776abb4e1a3e5f5_19b61a0b6e75e02d9514858f9557313b_en_online_v1", + "doodle_templates": [], + "gifts": [ + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent GG", + "diamond_count": 1, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#F1FFEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3f02fa9594bd1495ff4e8aa5ae265eef", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3f02fa9594bd1495ff4e8aa5ae265eef~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3f02fa9594bd1495ff4e8aa5ae265eef~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6064, + "image": { + "avg_color": "#EBFBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3f02fa9594bd1495ff4e8aa5ae265eef", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3f02fa9594bd1495ff4e8aa5ae265eef~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3f02fa9594bd1495ff4e8aa5ae265eef~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": true, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "GG", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Ice Cream Cone", + "diamond_count": 1, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#A3897C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/968820bc85e274713c795a6aef3f7c67", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/968820bc85e274713c795a6aef3f7c67~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/968820bc85e274713c795a6aef3f7c67~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5827, + "image": { + "avg_color": "#CECEEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/968820bc85e274713c795a6aef3f7c67", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/968820bc85e274713c795a6aef3f7c67~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/968820bc85e274713c795a6aef3f7c67~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": true, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Ice Cream Cone", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Rose", + "diamond_count": 1, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBE1CE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/eba3a9bb85c33e017f3648eaf88d7189", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/eba3a9bb85c33e017f3648eaf88d7189~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/eba3a9bb85c33e017f3648eaf88d7189~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5655, + "image": { + "avg_color": "#EBCECE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/eba3a9bb85c33e017f3648eaf88d7189", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/eba3a9bb85c33e017f3648eaf88d7189~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/eba3a9bb85c33e017f3648eaf88d7189~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": true, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Rose", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent TikTok", + "diamond_count": 1, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#F0F0F0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/802a21ae29f9fae5abe3693de9f874bd", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/802a21ae29f9fae5abe3693de9f874bd~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/802a21ae29f9fae5abe3693de9f874bd~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5269, + "image": { + "avg_color": "#7A5353", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/802a21ae29f9fae5abe3693de9f874bd", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/802a21ae29f9fae5abe3693de9f874bd~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/802a21ae29f9fae5abe3693de9f874bd~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": true, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "TikTok", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Finger Heart", + "diamond_count": 5, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#CCA3BE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a4c4dc437fd3a6632aba149769491f49.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a4c4dc437fd3a6632aba149769491f49.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a4c4dc437fd3a6632aba149769491f49.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5487, + "image": { + "avg_color": "#523749", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a4c4dc437fd3a6632aba149769491f49.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a4c4dc437fd3a6632aba149769491f49.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a4c4dc437fd3a6632aba149769491f49.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": true, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Finger Heart", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Rosa", + "diamond_count": 10, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#A3967C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0ef66437249c64730e551cea6148fb28", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7C7CA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/eb77ead5c3abb6da6034d3cf6cfeb438", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/eb77ead5c3abb6da6034d3cf6cfeb438~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/eb77ead5c3abb6da6034d3cf6cfeb438~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8913, + "image": { + "avg_color": "#7A5353", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/eb77ead5c3abb6da6034d3cf6cfeb438", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/eb77ead5c3abb6da6034d3cf6cfeb438~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/eb77ead5c3abb6da6034d3cf6cfeb438~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": true, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Rosa", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Perfume", + "diamond_count": 20, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#F1FFEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/20b8f61246c7b6032777bb81bf4ee055", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/20b8f61246c7b6032777bb81bf4ee055~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/20b8f61246c7b6032777bb81bf4ee055~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5658, + "image": { + "avg_color": "#CCA3A3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/20b8f61246c7b6032777bb81bf4ee055", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/20b8f61246c7b6032777bb81bf4ee055~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/20b8f61246c7b6032777bb81bf4ee055~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": true, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Perfume", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Doughnut", + "diamond_count": 30, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#B1CCA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/4e7ad6bdf0a1d860c538f38026d4e812", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4e7ad6bdf0a1d860c538f38026d4e812~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/4e7ad6bdf0a1d860c538f38026d4e812~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5879, + "image": { + "avg_color": "#EBCECE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/4e7ad6bdf0a1d860c538f38026d4e812", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4e7ad6bdf0a1d860c538f38026d4e812~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/4e7ad6bdf0a1d860c538f38026d4e812~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": true, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Doughnut", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent TikTok Universe", + "diamond_count": 44999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#E0D4BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/97d467285aab5e94a077f3cd796ba260", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/97d467285aab5e94a077f3cd796ba260~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/97d467285aab5e94a077f3cd796ba260~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 9, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "A celebratory message will be displayed with the host\u0027s and your username as well as the gift name in all LIVE videos in your region.", + "key": "pm_mt_live_gift_panel_note_platform_announcement", + "pieces": [] + }, + "left_icon": { + "avg_color": "#CCB1A3", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_broadcast_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_broadcast_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_broadcast_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7, + 6 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FAFAFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/8f471afbcebfda3841a6cc515e381f58", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8f471afbcebfda3841a6cc515e381f58~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/8f471afbcebfda3841a6cc515e381f58~tplv-obj.webp" + ], + "width": 0 + }, + "id": 9072, + "image": { + "avg_color": "#F0F0F0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/8f471afbcebfda3841a6cc515e381f58", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8f471afbcebfda3841a6cc515e381f58~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/8f471afbcebfda3841a6cc515e381f58~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": true, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "TikTok Universe", + "preview_image": { + "avg_color": "#FFEBEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/7ab2436172876ff1824dd619b4875fa7", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/7ab2436172876ff1824dd619b4875fa7~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/7ab2436172876ff1824dd619b4875fa7~tplv-obj.image" + ], + "width": 0 + }, + "primary_effect_id": 3448, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent TikTok Stars", + "diamond_count": 39999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#DCDCFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fc4d2b99910ce9bea92c8a8b503519f9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#E0D4BC", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#CEE5EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/b1667c891ed39fd68ba7252fff7a1e7c", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/b1667c891ed39fd68ba7252fff7a1e7c~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/b1667c891ed39fd68ba7252fff7a1e7c~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8582, + "image": { + "avg_color": "#C8E0BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/b1667c891ed39fd68ba7252fff7a1e7c", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/b1667c891ed39fd68ba7252fff7a1e7c~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/b1667c891ed39fd68ba7252fff7a1e7c~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "TikTok Stars", + "primary_effect_id": 2899, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Seal and Whale", + "diamond_count": 34500, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#DCF4FA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3781e9159ff09272826d3f2216ba36ef.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3781e9159ff09272826d3f2216ba36ef.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3781e9159ff09272826d3f2216ba36ef.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8381, + "image": { + "avg_color": "#E0BCBC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3781e9159ff09272826d3f2216ba36ef.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3781e9159ff09272826d3f2216ba36ef.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3781e9159ff09272826d3f2216ba36ef.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Seal and Whale", + "primary_effect_id": 2550, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Leon and Lion", + "diamond_count": 34000, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#EBE1CE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fc4d2b99910ce9bea92c8a8b503519f9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#CCA3A3", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#D8EBCE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a291aedacf27d22c3fd2d83575d2bee9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a291aedacf27d22c3fd2d83575d2bee9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a291aedacf27d22c3fd2d83575d2bee9~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7823, + "image": { + "avg_color": "#A37C96", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a291aedacf27d22c3fd2d83575d2bee9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a291aedacf27d22c3fd2d83575d2bee9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a291aedacf27d22c3fd2d83575d2bee9~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Leon and Lion", + "primary_effect_id": 2858, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Sam the Whale", + "diamond_count": 30000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FADCDC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/f48a1887eb88238738996bb997b31c0f.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f48a1887eb88238738996bb997b31c0f.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/f48a1887eb88238738996bb997b31c0f.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8391, + "image": { + "avg_color": "#EBD8CE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/f48a1887eb88238738996bb997b31c0f.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f48a1887eb88238738996bb997b31c0f.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/f48a1887eb88238738996bb997b31c0f.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Sam the Whale", + "primary_effect_id": 3256, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Lion", + "diamond_count": 29999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#E0BCD4", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fc4d2b99910ce9bea92c8a8b503519f9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#EBCECE", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#B8B8B8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/4fb89af2082a290b37d704e20f4fe729", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4fb89af2082a290b37d704e20f4fe729~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/4fb89af2082a290b37d704e20f4fe729~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6369, + "image": { + "avg_color": "#A3C4CC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/4fb89af2082a290b37d704e20f4fe729", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4fb89af2082a290b37d704e20f4fe729~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/4fb89af2082a290b37d704e20f4fe729~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Lion", + "primary_effect_id": 2855, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Dragon Flame", + "diamond_count": 26999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#7A5353", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fc4d2b99910ce9bea92c8a8b503519f9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#EBE1CE", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7A5353", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/89b4d1d93c1cc614e3a0903ac7a94e0c", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/89b4d1d93c1cc614e3a0903ac7a94e0c~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/89b4d1d93c1cc614e3a0903ac7a94e0c~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7610, + "image": { + "avg_color": "#E6FADC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/89b4d1d93c1cc614e3a0903ac7a94e0c", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/89b4d1d93c1cc614e3a0903ac7a94e0c~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/89b4d1d93c1cc614e3a0903ac7a94e0c~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Dragon Flame", + "primary_effect_id": 2865, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Phoenix", + "diamond_count": 25999, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#BCBCE0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/ef248375c4167d70c1642731c732c982", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ef248375c4167d70c1642731c732c982~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/ef248375c4167d70c1642731c732c982~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7319, + "image": { + "avg_color": "#FAFAFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/ef248375c4167d70c1642731c732c982", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ef248375c4167d70c1642731c732c982~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/ef248375c4167d70c1642731c732c982~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Phoenix", + "primary_effect_id": 1511, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Adam’s Dream", + "diamond_count": 25999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#A3967C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fc4d2b99910ce9bea92c8a8b503519f9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#FFEBF8", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#E0C8BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9a586391fbb1e21621c4203e5563a9e0", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9a586391fbb1e21621c4203e5563a9e0~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9a586391fbb1e21621c4203e5563a9e0~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7400, + "image": { + "avg_color": "#7C7CA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9a586391fbb1e21621c4203e5563a9e0", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9a586391fbb1e21621c4203e5563a9e0~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9a586391fbb1e21621c4203e5563a9e0~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Adam’s Dream", + "primary_effect_id": 2870, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent TikTok Shuttle", + "diamond_count": 20000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#CCBEA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/8ef48feba8dd293a75ae9d4376fb17c9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8ef48feba8dd293a75ae9d4376fb17c9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/8ef48feba8dd293a75ae9d4376fb17c9~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6751, + "image": { + "avg_color": "#F1FFEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/8ef48feba8dd293a75ae9d4376fb17c9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8ef48feba8dd293a75ae9d4376fb17c9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/8ef48feba8dd293a75ae9d4376fb17c9~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "TikTok Shuttle", + "primary_effect_id": 1073, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Red Lightning", + "diamond_count": 12000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#DCDCFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/5f48599c8d2a7bbc6e6fcf11ba2c809f", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/5f48599c8d2a7bbc6e6fcf11ba2c809f~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/5f48599c8d2a7bbc6e6fcf11ba2c809f~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8419, + "image": { + "avg_color": "#EBCECE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/5f48599c8d2a7bbc6e6fcf11ba2c809f", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/5f48599c8d2a7bbc6e6fcf11ba2c809f~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/5f48599c8d2a7bbc6e6fcf11ba2c809f~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Red Lightning", + "primary_effect_id": 2583, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Interstellar", + "diamond_count": 10000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#E0BCD4", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/8520d47b59c202a4534c1560a355ae06", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8520d47b59c202a4534c1560a355ae06~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/8520d47b59c202a4534c1560a355ae06~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6149, + "image": { + "avg_color": "#374C52", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/8520d47b59c202a4534c1560a355ae06", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8520d47b59c202a4534c1560a355ae06~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/8520d47b59c202a4534c1560a355ae06~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Interstellar", + "primary_effect_id": 519, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Sunset Speedway", + "diamond_count": 10000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBFBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/df63eee488dc0994f6f5cb2e65f2ae49", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/df63eee488dc0994f6f5cb2e65f2ae49~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/df63eee488dc0994f6f5cb2e65f2ae49~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6203, + "image": { + "avg_color": "#CCBEA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/df63eee488dc0994f6f5cb2e65f2ae49", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/df63eee488dc0994f6f5cb2e65f2ae49~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/df63eee488dc0994f6f5cb2e65f2ae49~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Sunset Speedway", + "primary_effect_id": 705, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Star Throne", + "diamond_count": 7999, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FFF1EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/30063f6bc45aecc575c49ff3dbc33831", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8420, + "image": { + "avg_color": "#CECEEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/30063f6bc45aecc575c49ff3dbc33831", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Star Throne", + "primary_effect_id": 2584, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [ + { + "color_effect_id": 365, + "color_id": 1, + "color_image": { + "avg_color": "#A3897C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/6db5c098-08d6-4c65-98d2-b5e3a9a44fc5.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/6db5c098-08d6-4c65-98d2-b5e3a9a44fc5.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/6db5c098-08d6-4c65-98d2-b5e3a9a44fc5.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Ruby Red", + "color_values": [ + "#FF5E7A", + "#FF5E7A" + ], + "gift_image": { + "avg_color": "#523737", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e7ce188da898772f18aaffe49a7bd7db", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e7ce188da898772f18aaffe49a7bd7db~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e7ce188da898772f18aaffe49a7bd7db~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": true + }, + { + "color_effect_id": 450, + "color_id": 2, + "color_image": { + "avg_color": "#B8B8B8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/883d6320-72b3-44c6-86b7-7174eef4a9e7.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/883d6320-72b3-44c6-86b7-7174eef4a9e7.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/883d6320-72b3-44c6-86b7-7174eef4a9e7.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Lime Green", + "color_values": [ + "#60E5AE", + "#60E5AE" + ], + "gift_image": { + "avg_color": "#E0BCBC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/car_icon_green.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_green.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_green.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 451, + "color_id": 3, + "color_image": { + "avg_color": "#CECEEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/920447aa-78d7-45d9-a967-61cf9945a4fe.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/920447aa-78d7-45d9-a967-61cf9945a4fe.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/920447aa-78d7-45d9-a967-61cf9945a4fe.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Electric Blue", + "color_values": [ + "#6699FF", + "#6699FF" + ], + "gift_image": { + "avg_color": "#A37C96", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/car_icon_blue.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_blue.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_blue.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 452, + "color_id": 4, + "color_image": { + "avg_color": "#FADCDC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/a6b08927-99c1-46a9-89ba-e8963d4b6360.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/a6b08927-99c1-46a9-89ba-e8963d4b6360.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/a6b08927-99c1-46a9-89ba-e8963d4b6360.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Bumblebee Yellow", + "color_values": [ + "#FFE15E", + "#FFE15E" + ], + "gift_image": { + "avg_color": "#BCBCE0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/car_icon_yellow.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_yellow.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_yellow.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 466, + "color_id": 5, + "color_image": { + "avg_color": "#CCBEA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/0ffb22c4-cf29-4f2a-9666-a910588d448d.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/0ffb22c4-cf29-4f2a-9666-a910588d448d.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/0ffb22c4-cf29-4f2a-9666-a910588d448d.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Bubblegum Pink", + "color_values": [ + "#FFA5C1", + "#FFA5C1" + ], + "gift_image": { + "avg_color": "#E6FADC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/car_icon_pink.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_pink.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_pink.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 465, + "color_id": 6, + "color_image": { + "avg_color": "#53737A", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/ae58efb4-850f-49c4-aca4-9c77d0caf14d.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/ae58efb4-850f-49c4-aca4-9c77d0caf14d.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/ae58efb4-850f-49c4-aca4-9c77d0caf14d.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Lightning Purple", + "color_values": [ + "#8A8AFF", + "#8A8AFF" + ], + "gift_image": { + "avg_color": "#373752", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/car_icon_purple.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_purple.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_purple.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + } + ], + "combo": false, + "describe": "sent Sports Car", + "diamond_count": 7000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 5, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7C9BA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e7ce188da898772f18aaffe49a7bd7db", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e7ce188da898772f18aaffe49a7bd7db~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e7ce188da898772f18aaffe49a7bd7db~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6089, + "image": { + "avg_color": "#FFFFFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e7ce188da898772f18aaffe49a7bd7db", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e7ce188da898772f18aaffe49a7bd7db~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e7ce188da898772f18aaffe49a7bd7db~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Sports Car", + "primary_effect_id": 365, + "tracker_params": { + "gift_property": "color_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Celebration Time", + "diamond_count": 6999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#7A6D53", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9e0db516157f7d14e5b79184b197a8d3", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#E0C8BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e73e786041d8218d8e9dbbc150855f1b", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e73e786041d8218d8e9dbbc150855f1b~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e73e786041d8218d8e9dbbc150855f1b~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6790, + "image": { + "avg_color": "#FADCF0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e73e786041d8218d8e9dbbc150855f1b", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e73e786041d8218d8e9dbbc150855f1b~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e73e786041d8218d8e9dbbc150855f1b~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Celebration Time", + "primary_effect_id": 1237, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Unicorn Fantasy", + "diamond_count": 5000, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#F0F0F0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/483c644e67e9bb1dd5970f2df00b7576.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/483c644e67e9bb1dd5970f2df00b7576.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/483c644e67e9bb1dd5970f2df00b7576.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5483, + "image": { + "avg_color": "#F0F0F0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/483c644e67e9bb1dd5970f2df00b7576.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/483c644e67e9bb1dd5970f2df00b7576.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/483c644e67e9bb1dd5970f2df00b7576.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Unicorn Fantasy", + "preview_image": { + "avg_color": "#EBCEE1", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0d1f70d51d9e4b06f336f4aaf5936244", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0d1f70d51d9e4b06f336f4aaf5936244~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0d1f70d51d9e4b06f336f4aaf5936244~tplv-obj.image" + ], + "width": 0 + }, + "primary_effect_id": 741, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Pool Party", + "diamond_count": 4999, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7A6053", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/4147c5bcfad9623c693f83d5d6cba1f7", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4147c5bcfad9623c693f83d5d6cba1f7~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/4147c5bcfad9623c693f83d5d6cba1f7~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5938, + "image": { + "avg_color": "#7A5353", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/4147c5bcfad9623c693f83d5d6cba1f7", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4147c5bcfad9623c693f83d5d6cba1f7~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/4147c5bcfad9623c693f83d5d6cba1f7~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Pool Party", + "primary_effect_id": 357, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [ + { + "color_effect_id": 474, + "color_id": 1, + "color_image": { + "avg_color": "#FFF1EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/a6b23da3-2461-4168-bb3b-426a6435cabf.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/a6b23da3-2461-4168-bb3b-426a6435cabf.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/a6b23da3-2461-4168-bb3b-426a6435cabf.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Champagne Gold", + "color_values": [ + "#FCCD89", + "#FCCD89" + ], + "gift_image": { + "avg_color": "#DCF4FA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/airplane_icon_gold.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/airplane_icon_gold.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/airplane_icon_gold.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": true + }, + { + "color_effect_id": 475, + "color_id": 2, + "color_image": { + "avg_color": "#374C52", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/dd27b357-6411-4eb4-95e0-d8a0e1e4c252.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/dd27b357-6411-4eb4-95e0-d8a0e1e4c252.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/dd27b357-6411-4eb4-95e0-d8a0e1e4c252.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Romantic Pink", + "color_values": [ + "#FFA5C1", + "#FFA5C1" + ], + "gift_image": { + "avg_color": "#CCA3A3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/airplane_icon_pink.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/airplane_icon_pink.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/airplane_icon_pink.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 476, + "color_id": 3, + "color_image": { + "avg_color": "#A3897C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/fafec75e-b2e0-4a3f-bc29-f73242cdf2b5.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/fafec75e-b2e0-4a3f-bc29-f73242cdf2b5.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/fafec75e-b2e0-4a3f-bc29-f73242cdf2b5.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Sky Blue", + "color_values": [ + "#80C4FF", + "#80C4FF" + ], + "gift_image": { + "avg_color": "#EBCECE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/airplane_icon_blue.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/airplane_icon_blue.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/airplane_icon_blue.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 477, + "color_id": 4, + "color_image": { + "avg_color": "#D6D6D6", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/d0b4b198-69f3-4c22-a27e-7f1acd2745c6.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/d0b4b198-69f3-4c22-a27e-7f1acd2745c6.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/d0b4b198-69f3-4c22-a27e-7f1acd2745c6.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Mystery Purple", + "color_values": [ + "#B689FF", + "#B689FF" + ], + "gift_image": { + "avg_color": "#CECEEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/airplane_icon_purple.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/airplane_icon_purple.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/airplane_icon_purple.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + } + ], + "combo": false, + "describe": "sent Private Jet", + "diamond_count": 4888, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 5, + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#A3897C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/921c6084acaa2339792052058cbd3fd3", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/921c6084acaa2339792052058cbd3fd3~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/921c6084acaa2339792052058cbd3fd3~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5767, + "image": { + "avg_color": "#EBE1CE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/921c6084acaa2339792052058cbd3fd3", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/921c6084acaa2339792052058cbd3fd3~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/921c6084acaa2339792052058cbd3fd3~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Private Jet", + "primary_effect_id": 263, + "tracker_params": { + "gift_property": "color_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Leon the Kitten", + "diamond_count": 4888, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#EBE1CE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fc4d2b99910ce9bea92c8a8b503519f9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#E0BCD4", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBCECE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a7748baba012c9e2d98a30dce7cc5a27", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a7748baba012c9e2d98a30dce7cc5a27~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a7748baba012c9e2d98a30dce7cc5a27~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6646, + "image": { + "avg_color": "#CCA3BE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a7748baba012c9e2d98a30dce7cc5a27", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a7748baba012c9e2d98a30dce7cc5a27~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a7748baba012c9e2d98a30dce7cc5a27~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Leon the Kitten", + "primary_effect_id": 2860, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Flower Overflow", + "diamond_count": 4000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#DCF4FA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/743c4bb44e7e0bf251a7f2f5ada231ee", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/743c4bb44e7e0bf251a7f2f5ada231ee~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/743c4bb44e7e0bf251a7f2f5ada231ee~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6148, + "image": { + "avg_color": "#EBFBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/743c4bb44e7e0bf251a7f2f5ada231ee", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/743c4bb44e7e0bf251a7f2f5ada231ee~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/743c4bb44e7e0bf251a7f2f5ada231ee~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Flower Overflow", + "primary_effect_id": 518, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Ferris Wheel", + "diamond_count": 3000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7A5353", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3c7291ad4c2a6d4f70505c3e296ecebe", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3c7291ad4c2a6d4f70505c3e296ecebe~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3c7291ad4c2a6d4f70505c3e296ecebe~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5652, + "image": { + "avg_color": "#DCDCFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3c7291ad4c2a6d4f70505c3e296ecebe", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3c7291ad4c2a6d4f70505c3e296ecebe~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3c7291ad4c2a6d4f70505c3e296ecebe~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Ferris Wheel", + "primary_effect_id": 212, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Meteor Shower", + "diamond_count": 3000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#BCBCE0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/71883933511237f7eaa1bf8cd12ed575", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/71883933511237f7eaa1bf8cd12ed575~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/71883933511237f7eaa1bf8cd12ed575~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6563, + "image": { + "avg_color": "#D8EBCE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/71883933511237f7eaa1bf8cd12ed575", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/71883933511237f7eaa1bf8cd12ed575~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/71883933511237f7eaa1bf8cd12ed575~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Meteor Shower", + "primary_effect_id": 932, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [ + { + "color_effect_id": 486, + "color_id": 1, + "color_image": { + "avg_color": "#374C52", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/6cc71705-b286-4e55-a94c-bf50c65ac095.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/6cc71705-b286-4e55-a94c-bf50c65ac095.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/6cc71705-b286-4e55-a94c-bf50c65ac095.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Lime Green", + "color_values": [ + "#60E5AE", + "#60E5AE" + ], + "gift_image": { + "avg_color": "#7A6053", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/motor_icon_green.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_green.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_green.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": true + }, + { + "color_effect_id": 487, + "color_id": 2, + "color_image": { + "avg_color": "#FFFFFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/d3f61fde-66f1-43a1-b8da-a7c845b3d3e0.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/d3f61fde-66f1-43a1-b8da-a7c845b3d3e0.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/d3f61fde-66f1-43a1-b8da-a7c845b3d3e0.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Hot Pink", + "color_values": [ + "#FF7ACA", + "#FF7ACA" + ], + "gift_image": { + "avg_color": "#523749", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/motor_icon_pink.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_pink.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_pink.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 488, + "color_id": 3, + "color_image": { + "avg_color": "#CEE5EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/6a7d9f31-e9fc-4936-81b8-4eb57d5e544a.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/6a7d9f31-e9fc-4936-81b8-4eb57d5e544a.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/6a7d9f31-e9fc-4936-81b8-4eb57d5e544a.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Electric Blue", + "color_values": [ + "#6699FF", + "#6699FF" + ], + "gift_image": { + "avg_color": "#FFF8EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/motor_icon_blue.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_blue.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_blue.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 489, + "color_id": 4, + "color_image": { + "avg_color": "#FAE6DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/f2a84010-3391-49cf-90f8-d1c1f19bbbce.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/f2a84010-3391-49cf-90f8-d1c1f19bbbce.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/f2a84010-3391-49cf-90f8-d1c1f19bbbce.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Lightning Purple", + "color_values": [ + "#8A8AFF", + "#8A8AFF" + ], + "gift_image": { + "avg_color": "#373752", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/motor_icon_purple.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_purple.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_purple.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 490, + "color_id": 5, + "color_image": { + "avg_color": "#53537A", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/9598d54b-04db-4653-90a6-e243a064af8f.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/9598d54b-04db-4653-90a6-e243a064af8f.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/9598d54b-04db-4653-90a6-e243a064af8f.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Flash Silver", + "color_values": [ + "#C0D2DF", + "#C0D2DF" + ], + "gift_image": { + "avg_color": "#89A37C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/motor_icon_silver.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_silver.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_silver.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 491, + "color_id": 6, + "color_image": { + "avg_color": "#7A6D53", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/ae5da295-a186-4d4e-a569-bf9a14069103.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/ae5da295-a186-4d4e-a569-bf9a14069103.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/ae5da295-a186-4d4e-a569-bf9a14069103.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Ruby Red", + "color_values": [ + "#FF5E7A", + "#FF5E7A" + ], + "gift_image": { + "avg_color": "#89A37C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/motor_icon_red.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_red.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_red.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + } + ], + "combo": false, + "describe": "sent Motorcycle", + "diamond_count": 2988, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 5, + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#B1CCA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/6517b8f2f76dc75ff0f4f73107f8780e", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6517b8f2f76dc75ff0f4f73107f8780e~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/6517b8f2f76dc75ff0f4f73107f8780e~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5765, + "image": { + "avg_color": "#373752", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/6517b8f2f76dc75ff0f4f73107f8780e", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6517b8f2f76dc75ff0f4f73107f8780e~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/6517b8f2f76dc75ff0f4f73107f8780e~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Motorcycle", + "primary_effect_id": 261, + "tracker_params": { + "gift_property": "color_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Whale diving", + "diamond_count": 2150, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#666666", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fc4d2b99910ce9bea92c8a8b503519f9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#607A53", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FAF0DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/46fa70966d8e931497f5289060f9a794", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/46fa70966d8e931497f5289060f9a794~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/46fa70966d8e931497f5289060f9a794~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6820, + "image": { + "avg_color": "#524037", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/46fa70966d8e931497f5289060f9a794", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/46fa70966d8e931497f5289060f9a794~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/46fa70966d8e931497f5289060f9a794~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Whale diving", + "primary_effect_id": 2628, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Make-up Box", + "diamond_count": 1999, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#523749", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a29aa87203ec09c699e3dafa1944b23e", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a29aa87203ec09c699e3dafa1944b23e~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a29aa87203ec09c699e3dafa1944b23e~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6033, + "image": { + "avg_color": "#666666", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a29aa87203ec09c699e3dafa1944b23e", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a29aa87203ec09c699e3dafa1944b23e~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a29aa87203ec09c699e3dafa1944b23e~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Make-up Box", + "primary_effect_id": 399, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Rabbit", + "diamond_count": 1999, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FAFAFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/61b42d630091b661e82fc8ed400b1de2", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/61b42d630091b661e82fc8ed400b1de2~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/61b42d630091b661e82fc8ed400b1de2~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6348, + "image": { + "avg_color": "#7A5353", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/61b42d630091b661e82fc8ed400b1de2", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/61b42d630091b661e82fc8ed400b1de2~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/61b42d630091b661e82fc8ed400b1de2~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Rabbit", + "primary_effect_id": 731, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Red Carpet", + "diamond_count": 1999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#8F8F8F", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9e0db516157f7d14e5b79184b197a8d3", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBFBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/5b9bf90278f87b9ca0c286d3c8a12936", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/5b9bf90278f87b9ca0c286d3c8a12936~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/5b9bf90278f87b9ca0c286d3c8a12936~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6789, + "image": { + "avg_color": "#666666", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/5b9bf90278f87b9ca0c286d3c8a12936", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/5b9bf90278f87b9ca0c286d3c8a12936~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/5b9bf90278f87b9ca0c286d3c8a12936~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Red Carpet", + "primary_effect_id": 1232, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Gift Box", + "diamond_count": 1999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#FFF8EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0ef66437249c64730e551cea6148fb28", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 3 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FAFAFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9cc22f7c8ac233e129dec7b981b91b76", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9cc22f7c8ac233e129dec7b981b91b76~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9cc22f7c8ac233e129dec7b981b91b76~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6834, + "image": { + "avg_color": "#CCBEA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9cc22f7c8ac233e129dec7b981b91b76", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9cc22f7c8ac233e129dec7b981b91b76~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9cc22f7c8ac233e129dec7b981b91b76~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Gift Box", + "primary_effect_id": 1147, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Cooper Flies Home", + "diamond_count": 1999, + "duration": 1000, + "for_linkmic": true, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 15, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Fly Cooper, Fly!", + "key": "gift_description_6862", + "pieces": [] + }, + "left_icon": { + "avg_color": "#7A5353", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e3ea82178688e17212581c90d621ae31", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e3ea82178688e17212581c90d621ae31~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e3ea82178688e17212581c90d621ae31~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBCEE1", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3f1945b0d96e665a759f747e5e0cf7a9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3f1945b0d96e665a759f747e5e0cf7a9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3f1945b0d96e665a759f747e5e0cf7a9~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6862, + "image": { + "avg_color": "#E6FADC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3f1945b0d96e665a759f747e5e0cf7a9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3f1945b0d96e665a759f747e5e0cf7a9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3f1945b0d96e665a759f747e5e0cf7a9~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Cooper Flies Home", + "primary_effect_id": 1194, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Mystery Firework", + "diamond_count": 1999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#CECEEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/ea70ae4b6ddb5d69fb52faadd4a6b1c8", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ea70ae4b6ddb5d69fb52faadd4a6b1c8~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/ea70ae4b6ddb5d69fb52faadd4a6b1c8~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 2 + ], + "gold_effect": "", + "icon": { + "avg_color": "#3D3D3D", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/c110230c5db903db5f060a432f5a86cd", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/c110230c5db903db5f060a432f5a86cd~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/c110230c5db903db5f060a432f5a86cd~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7529, + "image": { + "avg_color": "#523749", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/c110230c5db903db5f060a432f5a86cd", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/c110230c5db903db5f060a432f5a86cd~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/c110230c5db903db5f060a432f5a86cd~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Mystery Firework", + "preview_image": { + "avg_color": "#FAF0DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/4e85c9fa113131615d4be57419e9b4f7", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4e85c9fa113131615d4be57419e9b4f7~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/4e85c9fa113131615d4be57419e9b4f7~tplv-obj.image" + ], + "width": 0 + }, + "primary_effect_id": 1709, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Love Drop", + "diamond_count": 1800, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#CCA3A3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/42958ef42904682210b15f62ce824e5b", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/42958ef42904682210b15f62ce824e5b~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/42958ef42904682210b15f62ce824e5b~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 15, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Fly the Gift to the creator/guest to support", + "key": "pm_mt_gift_banner_flyingGift", + "pieces": [] + }, + "left_icon": { + "avg_color": "#CCBEA3", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/d0857daaa739c634e07ced7a309c3d8e", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/d0857daaa739c634e07ced7a309c3d8e~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/d0857daaa739c634e07ced7a309c3d8e~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 4, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#405237", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/1ea684b3104abb725491a509022f7c02", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea684b3104abb725491a509022f7c02~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea684b3104abb725491a509022f7c02~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8277, + "image": { + "avg_color": "#A3897C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/1ea684b3104abb725491a509022f7c02", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea684b3104abb725491a509022f7c02~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea684b3104abb725491a509022f7c02~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Love Drop", + "primary_effect_id": 2419, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Garland", + "diamond_count": 1500, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7C9BA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/69d7dadcd93942bad49d0b9874f69c1b", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/69d7dadcd93942bad49d0b9874f69c1b~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/69d7dadcd93942bad49d0b9874f69c1b~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5651, + "image": { + "avg_color": "#A3A3CC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/69d7dadcd93942bad49d0b9874f69c1b", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/69d7dadcd93942bad49d0b9874f69c1b~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/69d7dadcd93942bad49d0b9874f69c1b~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Garland ", + "preview_image": { + "avg_color": "#E0BCBC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/484f474784770636acca4568c1294cb6", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/484f474784770636acca4568c1294cb6~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/484f474784770636acca4568c1294cb6~tplv-obj.image" + ], + "width": 0 + }, + "primary_effect_id": 211, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Champion", + "diamond_count": 1500, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7A6D53", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/58ce827091411e667dd6ba8a93215f86", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/58ce827091411e667dd6ba8a93215f86~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/58ce827091411e667dd6ba8a93215f86~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5955, + "image": { + "avg_color": "#E0BCBC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/58ce827091411e667dd6ba8a93215f86", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/58ce827091411e667dd6ba8a93215f86~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/58ce827091411e667dd6ba8a93215f86~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Champion", + "primary_effect_id": 307, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Chasing the Dream", + "diamond_count": 1500, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#3D3D3D", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/1ea8dbb805466c4ced19f29e9590040f", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea8dbb805466c4ced19f29e9590040f~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea8dbb805466c4ced19f29e9590040f~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7467, + "image": { + "avg_color": "#DCDCFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/1ea8dbb805466c4ced19f29e9590040f", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea8dbb805466c4ced19f29e9590040f~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea8dbb805466c4ced19f29e9590040f~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Chasing the Dream", + "primary_effect_id": 1874, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [ + { + "color_effect_id": 478, + "color_id": 1, + "color_image": { + "avg_color": "#374C52", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/0d53e7c5-7993-4035-9f4c-ca544d477367.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/0d53e7c5-7993-4035-9f4c-ca544d477367.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/0d53e7c5-7993-4035-9f4c-ca544d477367.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Starry Blue", + "color_values": [ + "#80C4FF", + "#80C4FF" + ], + "gift_image": { + "avg_color": "#F1FFEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/fireworks_icon_blue.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/fireworks_icon_blue.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/fireworks_icon_blue.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": true + }, + { + "color_effect_id": 483, + "color_id": 2, + "color_image": { + "avg_color": "#EBFBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/623bb4bd-1bcc-46f9-9abd-59c34e709ab4.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/623bb4bd-1bcc-46f9-9abd-59c34e709ab4.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/623bb4bd-1bcc-46f9-9abd-59c34e709ab4.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Romantic Pink", + "color_values": [ + "#FFA5C1", + "#FFA5C1" + ], + "gift_image": { + "avg_color": "#7C9BA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/fireworks_icon_pink.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/fireworks_icon_pink.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/fireworks_icon_pink.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 484, + "color_id": 3, + "color_image": { + "avg_color": "#373752", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/1fe6fd9b-90b2-425c-99d7-cc9389308f63.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/1fe6fd9b-90b2-425c-99d7-cc9389308f63.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/1fe6fd9b-90b2-425c-99d7-cc9389308f63.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Mint Green", + "color_values": [ + "#80E0D5", + "#80E0D5" + ], + "gift_image": { + "avg_color": "#FFEBEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/fireworks_icon_green.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/fireworks_icon_green.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/fireworks_icon_green.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 485, + "color_id": 4, + "color_image": { + "avg_color": "#524937", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/aec39d71-e6e3-49fa-a09d-55efeb6859b3.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/aec39d71-e6e3-49fa-a09d-55efeb6859b3.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/aec39d71-e6e3-49fa-a09d-55efeb6859b3.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Dreamy Purple", + "color_values": [ + "#B689FF", + "#B689FF" + ], + "gift_image": { + "avg_color": "#EBFBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/fireworks_icon_purple.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/fireworks_icon_purple.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/fireworks_icon_purple.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + } + ], + "combo": false, + "describe": "sent Fireworks", + "diamond_count": 1088, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 5, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#E0BCD4", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9494c8a0bc5c03521ef65368e59cc2b8", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9494c8a0bc5c03521ef65368e59cc2b8~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9494c8a0bc5c03521ef65368e59cc2b8~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6090, + "image": { + "avg_color": "#7A6053", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9494c8a0bc5c03521ef65368e59cc2b8", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9494c8a0bc5c03521ef65368e59cc2b8~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9494c8a0bc5c03521ef65368e59cc2b8~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Fireworks", + "primary_effect_id": 164, + "tracker_params": { + "gift_property": "color_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Gold Mine", + "diamond_count": 1000, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FFFFFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/58cbff1bd592ae4365a450c4bf767f3a.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/58cbff1bd592ae4365a450c4bf767f3a.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/58cbff1bd592ae4365a450c4bf767f3a.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5587, + "image": { + "avg_color": "#CECEEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/58cbff1bd592ae4365a450c4bf767f3a.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/58cbff1bd592ae4365a450c4bf767f3a.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/58cbff1bd592ae4365a450c4bf767f3a.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Gold Mine", + "primary_effect_id": 189, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Email Message", + "diamond_count": 1000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#523749", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/c959df6dbffd6f07849d22d2c3c07861", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/c959df6dbffd6f07849d22d2c3c07861~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/c959df6dbffd6f07849d22d2c3c07861~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6199, + "image": { + "avg_color": "#373752", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/c959df6dbffd6f07849d22d2c3c07861", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/c959df6dbffd6f07849d22d2c3c07861~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/c959df6dbffd6f07849d22d2c3c07861~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Email Message", + "primary_effect_id": 673, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Mirror Bloom", + "diamond_count": 1000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#405237", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a9d0e9406230fa9a901d992a90574e39", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a9d0e9406230fa9a901d992a90574e39~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a9d0e9406230fa9a901d992a90574e39~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6200, + "image": { + "avg_color": "#405237", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a9d0e9406230fa9a901d992a90574e39", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a9d0e9406230fa9a901d992a90574e39~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a9d0e9406230fa9a901d992a90574e39~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Mirror Bloom", + "primary_effect_id": 674, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Watermelon Love", + "diamond_count": 1000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#53537A", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/1d1650cd9bb0e39d72a6e759525ffe59", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1d1650cd9bb0e39d72a6e759525ffe59~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/1d1650cd9bb0e39d72a6e759525ffe59~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6781, + "image": { + "avg_color": "#7A536D", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/1d1650cd9bb0e39d72a6e759525ffe59", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1d1650cd9bb0e39d72a6e759525ffe59~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/1d1650cd9bb0e39d72a6e759525ffe59~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Watermelon Love", + "primary_effect_id": 1180, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Travel with You", + "diamond_count": 999, + "duration": 1000, + "for_linkmic": false, + "gift_label_icon": { + "avg_color": "#D8EBCE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0043ba52e0198a90138ceca023773d39", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0043ba52e0198a90138ceca023773d39~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0043ba52e0198a90138ceca023773d39~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 4, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FADCF0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/753098e5a8f45afa965b73616c04cf89", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/753098e5a8f45afa965b73616c04cf89~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/753098e5a8f45afa965b73616c04cf89~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6233, + "image": { + "avg_color": "#607A53", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/753098e5a8f45afa965b73616c04cf89", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/753098e5a8f45afa965b73616c04cf89~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/753098e5a8f45afa965b73616c04cf89~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": true, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Travel with You", + "preview_image": { + "avg_color": "#3D3D3D", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e930f3944ae299c9e816dc9bf20be44f", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e930f3944ae299c9e816dc9bf20be44f~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e930f3944ae299c9e816dc9bf20be44f~tplv-obj.image" + ], + "width": 0 + }, + "primary_effect_id": 1066, + "random_effect_info": { + "audience_key": "mask2", + "effect_ids": [], + "host_key": "mask1", + "random_gift_bubble": { + "display_text": "" + }, + "random_gift_panel_banner": { + "banner_priority": 0, + "bg_color_values": [], + "collect_num": 0, + "display_text": "", + "round": 0, + "schema_url": "", + "target_num": 0 + } + }, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Train", + "diamond_count": 899, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBCEE1", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/4227ed71f2c494b554f9cbe2147d4899", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4227ed71f2c494b554f9cbe2147d4899~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/4227ed71f2c494b554f9cbe2147d4899~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5978, + "image": { + "avg_color": "#A37C96", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/4227ed71f2c494b554f9cbe2147d4899", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4227ed71f2c494b554f9cbe2147d4899~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/4227ed71f2c494b554f9cbe2147d4899~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Train", + "primary_effect_id": 375, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Swan", + "diamond_count": 699, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#CECEEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/97a26919dbf6afe262c97e22a83f4bf1", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/97a26919dbf6afe262c97e22a83f4bf1~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/97a26919dbf6afe262c97e22a83f4bf1~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5897, + "image": { + "avg_color": "#B8B8B8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/97a26919dbf6afe262c97e22a83f4bf1", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/97a26919dbf6afe262c97e22a83f4bf1~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/97a26919dbf6afe262c97e22a83f4bf1~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Swan", + "primary_effect_id": 336, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Money Gun", + "diamond_count": 500, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FFEBEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e0589e95a2b41970f0f30f6202f5fce6", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e0589e95a2b41970f0f30f6202f5fce6~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e0589e95a2b41970f0f30f6202f5fce6~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7168, + "image": { + "avg_color": "#B8B8B8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e0589e95a2b41970f0f30f6202f5fce6", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e0589e95a2b41970f0f30f6202f5fce6~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e0589e95a2b41970f0f30f6202f5fce6~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Money Gun", + "primary_effect_id": 1404, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Coral", + "diamond_count": 499, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#CECEEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/d4faa402c32bf4f92bee654b2663d9f1", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/d4faa402c32bf4f92bee654b2663d9f1~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/d4faa402c32bf4f92bee654b2663d9f1~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5731, + "image": { + "avg_color": "#E0D4BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/d4faa402c32bf4f92bee654b2663d9f1", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/d4faa402c32bf4f92bee654b2663d9f1~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/d4faa402c32bf4f92bee654b2663d9f1~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Coral", + "primary_effect_id": 244, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Boxing Gloves", + "diamond_count": 299, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#A3967C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9f8bd92363c400c284179f6719b6ba9c", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9f8bd92363c400c284179f6719b6ba9c~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9f8bd92363c400c284179f6719b6ba9c~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6007, + "image": { + "avg_color": "#CCBEA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9f8bd92363c400c284179f6719b6ba9c", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9f8bd92363c400c284179f6719b6ba9c~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9f8bd92363c400c284179f6719b6ba9c~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Boxing Gloves", + "primary_effect_id": 388, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Duck", + "diamond_count": 299, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#A37C96", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e172f660a1d4f95813a3ace0fde42323", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e172f660a1d4f95813a3ace0fde42323~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e172f660a1d4f95813a3ace0fde42323~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6265, + "image": { + "avg_color": "#F0F0F0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e172f660a1d4f95813a3ace0fde42323", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e172f660a1d4f95813a3ace0fde42323~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e172f660a1d4f95813a3ace0fde42323~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Duck", + "primary_effect_id": 638, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Corgi", + "diamond_count": 299, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#DCF4FA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/148eef0884fdb12058d1c6897d1e02b9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/148eef0884fdb12058d1c6897d1e02b9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/148eef0884fdb12058d1c6897d1e02b9~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6267, + "image": { + "avg_color": "#A3897C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/148eef0884fdb12058d1c6897d1e02b9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/148eef0884fdb12058d1c6897d1e02b9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/148eef0884fdb12058d1c6897d1e02b9~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Corgi", + "primary_effect_id": 640, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Shiba Inu", + "diamond_count": 222, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#A3A3CC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/ddbcee02f5b86b803b0ec34357cd82ec.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ddbcee02f5b86b803b0ec34357cd82ec.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/ddbcee02f5b86b803b0ec34357cd82ec.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5482, + "image": { + "avg_color": "#CECEEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/ddbcee02f5b86b803b0ec34357cd82ec.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ddbcee02f5b86b803b0ec34357cd82ec.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/ddbcee02f5b86b803b0ec34357cd82ec.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Shiba Inu", + "primary_effect_id": 8, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [ + { + "color_effect_id": 167, + "color_id": 1, + "color_image": { + "avg_color": "#F1FFEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/9a8cca7c-386c-4662-b588-72d10c6caf6c.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/9a8cca7c-386c-4662-b588-72d10c6caf6c.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/9a8cca7c-386c-4662-b588-72d10c6caf6c.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Lightning Purple", + "color_values": [ + "#8A8AFF", + "#8A8AFF" + ], + "gift_image": { + "avg_color": "#A37C7C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/08af67ab13a8053269bf539fd27f3873.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/08af67ab13a8053269bf539fd27f3873.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/08af67ab13a8053269bf539fd27f3873.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": true + }, + { + "color_effect_id": 492, + "color_id": 2, + "color_image": { + "avg_color": "#D8EBCE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/854a3fcd-bdf4-4a13-a3bf-29d6f36e07a9.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/854a3fcd-bdf4-4a13-a3bf-29d6f36e07a9.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/854a3fcd-bdf4-4a13-a3bf-29d6f36e07a9.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Sakura Pink", + "color_values": [ + "#FFA5C1", + "#FFA5C1" + ], + "gift_image": { + "avg_color": "#A3C4CC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/glasses_pink_icon.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/glasses_pink_icon.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/glasses_pink_icon.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 493, + "color_id": 3, + "color_image": { + "avg_color": "#F1FFEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/a34cc268-1118-4cf1-9efd-295543d32726.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/a34cc268-1118-4cf1-9efd-295543d32726.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/a34cc268-1118-4cf1-9efd-295543d32726.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Rock Blue", + "color_values": [ + "#6699FF", + "#6699FF" + ], + "gift_image": { + "avg_color": "#B8B8B8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/glasses_blue_icon.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/glasses_blue_icon.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/glasses_blue_icon.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 494, + "color_id": 4, + "color_image": { + "avg_color": "#524937", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/169b5125-6441-4c5a-974e-5f4afcdb468a.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/169b5125-6441-4c5a-974e-5f4afcdb468a.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/169b5125-6441-4c5a-974e-5f4afcdb468a.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Sunny Orange", + "color_values": [ + "#FFA15E", + "#FFA15E" + ], + "gift_image": { + "avg_color": "#FADCF0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/glasses_orange_icon.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/glasses_orange_icon.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/glasses_orange_icon.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + } + ], + "combo": false, + "describe": "sent Sunglasses", + "diamond_count": 199, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 5 + ], + "gold_effect": "", + "icon": { + "avg_color": "#DCF4FA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/08af67ab13a8053269bf539fd27f3873.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/08af67ab13a8053269bf539fd27f3873.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/08af67ab13a8053269bf539fd27f3873.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5509, + "image": { + "avg_color": "#F0F0F0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/08af67ab13a8053269bf539fd27f3873.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/08af67ab13a8053269bf539fd27f3873.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/08af67ab13a8053269bf539fd27f3873.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Sunglasses", + "primary_effect_id": 167, + "tracker_params": { + "gift_property": "color_gift" + }, + "type": 4 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Hearts", + "diamond_count": 199, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#B8B8B8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/934b5a10dee8376df5870a61d2ea5cb6.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/934b5a10dee8376df5870a61d2ea5cb6.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/934b5a10dee8376df5870a61d2ea5cb6.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5586, + "image": { + "avg_color": "#BCBCE0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/934b5a10dee8376df5870a61d2ea5cb6.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/934b5a10dee8376df5870a61d2ea5cb6.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/934b5a10dee8376df5870a61d2ea5cb6.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Hearts", + "primary_effect_id": 3306, + "tracker_params": {}, + "type": 4 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Lock and Key", + "diamond_count": 199, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#405237", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/2c9cec686b98281f7319b1a02ba2864a", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/2c9cec686b98281f7319b1a02ba2864a~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/2c9cec686b98281f7319b1a02ba2864a~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5880, + "image": { + "avg_color": "#524037", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/2c9cec686b98281f7319b1a02ba2864a", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/2c9cec686b98281f7319b1a02ba2864a~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/2c9cec686b98281f7319b1a02ba2864a~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Lock and Key", + "primary_effect_id": 326, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Garland Headpiece", + "diamond_count": 199, + "duration": 3000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#A3A3CC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/bdbdd8aeb2b69c173a3ef666e63310f3", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/bdbdd8aeb2b69c173a3ef666e63310f3~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/bdbdd8aeb2b69c173a3ef666e63310f3~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6437, + "image": { + "avg_color": "#BCBCE0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/bdbdd8aeb2b69c173a3ef666e63310f3", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/bdbdd8aeb2b69c173a3ef666e63310f3~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/bdbdd8aeb2b69c173a3ef666e63310f3~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Garland Headpiece", + "primary_effect_id": 2277, + "tracker_params": {}, + "type": 4 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Love You", + "diamond_count": 199, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#C8E0BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/d7722d5348f4289db80fe7a29f4a6f74", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/d7722d5348f4289db80fe7a29f4a6f74~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/d7722d5348f4289db80fe7a29f4a6f74~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 15, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Say I love you in your own language", + "key": "gift_description_6671", + "pieces": [] + }, + "left_icon": { + "avg_color": "#374C52", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/effdf81513685c4b1c579fa90b84d299", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/effdf81513685c4b1c579fa90b84d299~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/effdf81513685c4b1c579fa90b84d299~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 2, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#666666", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/134e51c00f46e01976399883ca4e4798", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/134e51c00f46e01976399883ca4e4798~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/134e51c00f46e01976399883ca4e4798~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6671, + "image": { + "avg_color": "#E0BCD4", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/134e51c00f46e01976399883ca4e4798", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/134e51c00f46e01976399883ca4e4798~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/134e51c00f46e01976399883ca4e4798~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Love You", + "primary_effect_id": 1023, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Cheer For You", + "diamond_count": 199, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#EBD8CE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9e0db516157f7d14e5b79184b197a8d3", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#CEE5EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/1059dfa76c78dc17d7cf0a1fc2ece185", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1059dfa76c78dc17d7cf0a1fc2ece185~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/1059dfa76c78dc17d7cf0a1fc2ece185~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6713, + "image": { + "avg_color": "#CCBEA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/1059dfa76c78dc17d7cf0a1fc2ece185", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1059dfa76c78dc17d7cf0a1fc2ece185~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/1059dfa76c78dc17d7cf0a1fc2ece185~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Cheer For You", + "primary_effect_id": 1210, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Confetti", + "diamond_count": 100, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#524937", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/cb4e11b3834e149f08e1cdcc93870b26", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/cb4e11b3834e149f08e1cdcc93870b26~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/cb4e11b3834e149f08e1cdcc93870b26~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5585, + "image": { + "avg_color": "#89A37C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/cb4e11b3834e149f08e1cdcc93870b26", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/cb4e11b3834e149f08e1cdcc93870b26~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/cb4e11b3834e149f08e1cdcc93870b26~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Confetti", + "primary_effect_id": 210, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Hand Hearts", + "diamond_count": 100, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#E0BCD4", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/6cd022271dc4669d182cad856384870f", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6cd022271dc4669d182cad856384870f~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/6cd022271dc4669d182cad856384870f~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5660, + "image": { + "avg_color": "#BCD9E0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/6cd022271dc4669d182cad856384870f", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6cd022271dc4669d182cad856384870f~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/6cd022271dc4669d182cad856384870f~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Hand Hearts", + "primary_effect_id": 214, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Star Throne", + "diamond_count": 7999, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#F1FFEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/30063f6bc45aecc575c49ff3dbc33831", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7764, + "image": { + "avg_color": "#EBEBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/30063f6bc45aecc575c49ff3dbc33831", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Star Throne", + "primary_effect_id": 1911, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [ + { + "color_effect_id": 217, + "color_id": 1, + "color_image": { + "avg_color": "#FFFFFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/a254cce3-3662-4c0e-84d7-d06bf3af3e2e.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/a254cce3-3662-4c0e-84d7-d06bf3af3e2e.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/a254cce3-3662-4c0e-84d7-d06bf3af3e2e.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Sky Blue", + "color_values": [ + "#80C4FF", + "#80C4FF" + ], + "gift_image": { + "avg_color": "#CECEEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0f158a08f7886189cdabf496e8a07c21", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0f158a08f7886189cdabf496e8a07c21~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0f158a08f7886189cdabf496e8a07c21~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": true + }, + { + "color_effect_id": 453, + "color_id": 2, + "color_image": { + "avg_color": "#CCB1A3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/f05eccc4-12ec-488e-8424-1da90271d9f8.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/f05eccc4-12ec-488e-8424-1da90271d9f8.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/f05eccc4-12ec-488e-8424-1da90271d9f8.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Dreamy Pink", + "color_values": [ + "#FFA5C1", + "#FFA5C1" + ], + "gift_image": { + "avg_color": "#CCA3A3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/crane_pink_icon.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/crane_pink_icon.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/crane_pink_icon.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 454, + "color_id": 3, + "color_image": { + "avg_color": "#CCA3A3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/c251d561-de3a-4127-b873-aa952c7bc4c5.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/c251d561-de3a-4127-b873-aa952c7bc4c5.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/c251d561-de3a-4127-b873-aa952c7bc4c5.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Hopeful Orange", + "color_values": [ + "#FFA15E", + "#FFA15E" + ], + "gift_image": { + "avg_color": "#CCB1A3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/crane_orange_icon.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/crane_orange_icon.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/crane_orange_icon.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 455, + "color_id": 4, + "color_image": { + "avg_color": "#523737", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/6571e34e-b7ff-4d99-8965-e51cefbe4123.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/6571e34e-b7ff-4d99-8965-e51cefbe4123.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/6571e34e-b7ff-4d99-8965-e51cefbe4123.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Mystery Purple", + "color_values": [ + "#B689FF", + "#B689FF" + ], + "gift_image": { + "avg_color": "#EBCECE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/crane_purple_icon.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/crane_purple_icon.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/crane_purple_icon.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + } + ], + "combo": false, + "describe": "sent Paper Crane", + "diamond_count": 99, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 5, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#405237", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0f158a08f7886189cdabf496e8a07c21", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0f158a08f7886189cdabf496e8a07c21~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0f158a08f7886189cdabf496e8a07c21~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5659, + "image": { + "avg_color": "#523749", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0f158a08f7886189cdabf496e8a07c21", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0f158a08f7886189cdabf496e8a07c21~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0f158a08f7886189cdabf496e8a07c21~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Paper Crane", + "primary_effect_id": 217, + "tracker_params": { + "gift_property": "color_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Little Crown", + "diamond_count": 99, + "duration": 3000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#CCB1A3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/cf3db11b94a975417043b53401d0afe1", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/cf3db11b94a975417043b53401d0afe1~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/cf3db11b94a975417043b53401d0afe1~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6097, + "image": { + "avg_color": "#666666", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/cf3db11b94a975417043b53401d0afe1", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/cf3db11b94a975417043b53401d0afe1~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/cf3db11b94a975417043b53401d0afe1~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Little Crown", + "primary_effect_id": 3304, + "tracker_params": {}, + "type": 4 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Cap", + "diamond_count": 99, + "duration": 3000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBCECE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/6c2ab2da19249ea570a2ece5e3377f04", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6c2ab2da19249ea570a2ece5e3377f04~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/6c2ab2da19249ea570a2ece5e3377f04~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6104, + "image": { + "avg_color": "#FAF0DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/6c2ab2da19249ea570a2ece5e3377f04", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6c2ab2da19249ea570a2ece5e3377f04~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/6c2ab2da19249ea570a2ece5e3377f04~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Cap", + "primary_effect_id": 2342, + "tracker_params": {}, + "type": 4 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Hat and Mustache", + "diamond_count": 99, + "duration": 3000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7C7CA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/2f1e4f3f5c728ffbfa35705b480fdc92", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/2f1e4f3f5c728ffbfa35705b480fdc92~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/2f1e4f3f5c728ffbfa35705b480fdc92~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6427, + "image": { + "avg_color": "#E0BCD4", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/2f1e4f3f5c728ffbfa35705b480fdc92", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/2f1e4f3f5c728ffbfa35705b480fdc92~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/2f1e4f3f5c728ffbfa35705b480fdc92~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Hat and Mustache", + "primary_effect_id": 3499, + "tracker_params": {}, + "type": 4 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Like-Pop", + "diamond_count": 99, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#FADCDC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/42958ef42904682210b15f62ce824e5b", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/42958ef42904682210b15f62ce824e5b~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/42958ef42904682210b15f62ce824e5b~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 15, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Fly the Gift to the creator/guest to support", + "key": "pm_mt_gift_banner_flyingGift", + "pieces": [] + }, + "left_icon": { + "avg_color": "#DCDCFA", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/d0857daaa739c634e07ced7a309c3d8e", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/d0857daaa739c634e07ced7a309c3d8e~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/d0857daaa739c634e07ced7a309c3d8e~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 3, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#B1CCA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/75eb7b4aca24eaa6e566b566c7d21e2f", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/75eb7b4aca24eaa6e566b566c7d21e2f~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/75eb7b4aca24eaa6e566b566c7d21e2f~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8130, + "image": { + "avg_color": "#DCF4FA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/75eb7b4aca24eaa6e566b566c7d21e2f", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/75eb7b4aca24eaa6e566b566c7d21e2f~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/75eb7b4aca24eaa6e566b566c7d21e2f~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Like-Pop", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Gift Box", + "diamond_count": 3999, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 3 + ], + "gold_effect": "", + "icon": { + "avg_color": "#CCB1A3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3646c259f8ce6f79c762ad00ce51dda0", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3646c259f8ce6f79c762ad00ce51dda0~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3646c259f8ce6f79c762ad00ce51dda0~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6835, + "image": { + "avg_color": "#FAE6DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3646c259f8ce6f79c762ad00ce51dda0", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3646c259f8ce6f79c762ad00ce51dda0~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3646c259f8ce6f79c762ad00ce51dda0~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Gift Box", + "primary_effect_id": 1151, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Rosa Nebula", + "diamond_count": 15000, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#523737", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0ef66437249c64730e551cea6148fb28", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#E6FADC", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#F0F0F0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/resource/f722088231103b66875dae33f13f8719.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/f722088231103b66875dae33f13f8719.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/f722088231103b66875dae33f13f8719.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8912, + "image": { + "avg_color": "#E0C8BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/resource/f722088231103b66875dae33f13f8719.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/f722088231103b66875dae33f13f8719.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/f722088231103b66875dae33f13f8719.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Rosa Nebula", + "primary_effect_id": 3310, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Heart", + "diamond_count": 10, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FAF0DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/98bea1b189fba75bf0ca766b4dc1976e.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/98bea1b189fba75bf0ca766b4dc1976e.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/98bea1b189fba75bf0ca766b4dc1976e.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5480, + "image": { + "avg_color": "#A3967C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/98bea1b189fba75bf0ca766b4dc1976e.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/98bea1b189fba75bf0ca766b4dc1976e.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/98bea1b189fba75bf0ca766b4dc1976e.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Heart", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Leon and Lili", + "diamond_count": 9699, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#CECEEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0ef66437249c64730e551cea6148fb28", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#CECEEB", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBE1CE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/resource/6958244f3eeb69ce754f735b5833a4aa.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/6958244f3eeb69ce754f735b5833a4aa.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/6958244f3eeb69ce754f735b5833a4aa.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8916, + "image": { + "avg_color": "#D6D6D6", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/resource/6958244f3eeb69ce754f735b5833a4aa.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/6958244f3eeb69ce754f735b5833a4aa.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/6958244f3eeb69ce754f735b5833a4aa.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Leon and Lili", + "primary_effect_id": 3315, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Forever Rosa", + "diamond_count": 399, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#F1FFEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0ef66437249c64730e551cea6148fb28", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#CEE5EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/resource/863e7947bc793f694acbe970d70440a1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/863e7947bc793f694acbe970d70440a1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/863e7947bc793f694acbe970d70440a1.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8914, + "image": { + "avg_color": "#7A5353", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/resource/863e7947bc793f694acbe970d70440a1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/863e7947bc793f694acbe970d70440a1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/863e7947bc793f694acbe970d70440a1.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Forever Rosa", + "primary_effect_id": 3311, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Coffee", + "diamond_count": 1, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#CECEEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/02492214b9bd50fee2d69fd0d089c025.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/02492214b9bd50fee2d69fd0d089c025.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/02492214b9bd50fee2d69fd0d089c025.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5479, + "image": { + "avg_color": "#53737A", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/02492214b9bd50fee2d69fd0d089c025.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/02492214b9bd50fee2d69fd0d089c025.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/02492214b9bd50fee2d69fd0d089c025.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Coffee", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Thumbs Up", + "diamond_count": 1, + "duration": 1000, + "for_linkmic": true, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 11, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Send a {0:string} to vote and support the host.", + "key": "pm_mt_gift_poll_gift_panel_hint", + "pieces": [ + { + "string_value": "Thumbs Up", + "type": 1 + } + ] + }, + "left_icon": { + "avg_color": "#CCA3BE", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_poll_banner_icon.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_poll_banner_icon.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_poll_banner_icon.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7A536D", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/570a663e27bdc460e05556fd1596771a", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/570a663e27bdc460e05556fd1596771a~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/570a663e27bdc460e05556fd1596771a~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6246, + "image": { + "avg_color": "#D8EBCE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/570a663e27bdc460e05556fd1596771a", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/570a663e27bdc460e05556fd1596771a~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/570a663e27bdc460e05556fd1596771a~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Thumbs Up", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Heart", + "diamond_count": 1, + "duration": 1000, + "for_linkmic": true, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 11, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Send a {0:string} to vote and support the host.", + "key": "pm_mt_gift_poll_gift_panel_hint", + "pieces": [ + { + "string_value": "Heart", + "type": 1 + } + ] + }, + "left_icon": { + "avg_color": "#EBD8CE", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_poll_banner_icon.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_poll_banner_icon.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_poll_banner_icon.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#A37C7C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/dd300fd35a757d751301fba862a258f1", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/dd300fd35a757d751301fba862a258f1~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/dd300fd35a757d751301fba862a258f1~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6247, + "image": { + "avg_color": "#FADCDC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/dd300fd35a757d751301fba862a258f1", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/dd300fd35a757d751301fba862a258f1~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/dd300fd35a757d751301fba862a258f1~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Heart", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Cake Slice", + "diamond_count": 1, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#7A6053", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9e0db516157f7d14e5b79184b197a8d3", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FFFFFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/f681afb4be36d8a321eac741d387f1e2", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f681afb4be36d8a321eac741d387f1e2~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/f681afb4be36d8a321eac741d387f1e2~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6784, + "image": { + "avg_color": "#7A6053", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/f681afb4be36d8a321eac741d387f1e2", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f681afb4be36d8a321eac741d387f1e2~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/f681afb4be36d8a321eac741d387f1e2~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Cake Slice", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Glow Stick", + "diamond_count": 1, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#B8B8B8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9e0db516157f7d14e5b79184b197a8d3", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBCEE1", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/8e1a5d66370c5586545e358e37c10d25", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8e1a5d66370c5586545e358e37c10d25~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/8e1a5d66370c5586545e358e37c10d25~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6788, + "image": { + "avg_color": "#FFF8EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/8e1a5d66370c5586545e358e37c10d25", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8e1a5d66370c5586545e358e37c10d25~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/8e1a5d66370c5586545e358e37c10d25~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Glow Stick", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Love you", + "diamond_count": 1, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBFBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/ab0a7b44bfc140923bb74164f6f880ab", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ab0a7b44bfc140923bb74164f6f880ab~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/ab0a7b44bfc140923bb74164f6f880ab~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6890, + "image": { + "avg_color": "#607A53", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/ab0a7b44bfc140923bb74164f6f880ab", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ab0a7b44bfc140923bb74164f6f880ab~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/ab0a7b44bfc140923bb74164f6f880ab~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Love you", + "primary_effect_id": 1204, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Fire Phoenix", + "diamond_count": 41999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#C8E0BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/37e0bc3291d0902976d5ef2f16beecf0", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/37e0bc3291d0902976d5ef2f16beecf0~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/37e0bc3291d0902976d5ef2f16beecf0~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#CCA3BE", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#523737", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/resource/bfb8425a7e8fa03f9fec05a973a4a506.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/bfb8425a7e8fa03f9fec05a973a4a506.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/bfb8425a7e8fa03f9fec05a973a4a506.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 9092, + "image": { + "avg_color": "#607A53", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/resource/bfb8425a7e8fa03f9fec05a973a4a506.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/bfb8425a7e8fa03f9fec05a973a4a506.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/bfb8425a7e8fa03f9fec05a973a4a506.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 46, + "lock": true, + "lock_type": 3 + }, + "name": "Fire Phoenix", + "preview_image": { + "avg_color": "#EBEBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/resource/be14408645b15c45d8ac815beb02797d.webp", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/be14408645b15c45d8ac815beb02797d.webp~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/be14408645b15c45d8ac815beb02797d.webp~tplv-obj.image" + ], + "width": 0 + }, + "primary_effect_id": 3496, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Thunder Falcon", + "diamond_count": 39999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#F1FFEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/2e218842824b3feb82078d6a2d7e48a4", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/2e218842824b3feb82078d6a2d7e48a4~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/2e218842824b3feb82078d6a2d7e48a4~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#53737A", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/26f3fbcda383e6093a19b8e7351a164c", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/26f3fbcda383e6093a19b8e7351a164c~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/26f3fbcda383e6093a19b8e7351a164c~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8651, + "image": { + "avg_color": "#7A5353", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/26f3fbcda383e6093a19b8e7351a164c", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/26f3fbcda383e6093a19b8e7351a164c~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/26f3fbcda383e6093a19b8e7351a164c~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 43, + "lock": true, + "lock_type": 3 + }, + "name": "Thunder Falcon", + "preview_image": { + "avg_color": "#A3897C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/1bb7bac8a871a584cf4d3a3a89bc5dc6", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1bb7bac8a871a584cf4d3a3a89bc5dc6~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/1bb7bac8a871a584cf4d3a3a89bc5dc6~tplv-obj.image" + ], + "width": 0 + }, + "primary_effect_id": 3321, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent TikTok Universe+", + "diamond_count": 34999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#D8EBCE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a38cb64298d536086fef4d278efacd87", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a38cb64298d536086fef4d278efacd87~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a38cb64298d536086fef4d278efacd87~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 9, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "A celebratory message will be displayed with the host\u0027s and your username as well as the gift name in all LIVE videos in your region.", + "key": "pm_mt_live_gift_panel_note_platform_announcement", + "pieces": [] + }, + "left_icon": { + "avg_color": "#7A6D53", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_broadcast_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_broadcast_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_broadcast_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#666666", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/b13105782e8bf8fbefaa83b7af413cee", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/b13105782e8bf8fbefaa83b7af413cee~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/b13105782e8bf8fbefaa83b7af413cee~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7312, + "image": { + "avg_color": "#7A6053", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/b13105782e8bf8fbefaa83b7af413cee", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/b13105782e8bf8fbefaa83b7af413cee~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/b13105782e8bf8fbefaa83b7af413cee~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": true, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 40, + "lock": true, + "lock_type": 3 + }, + "name": "TikTok Universe+", + "preview_image": { + "avg_color": "#EBE1CE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/14fea2f1fb315a2474b594a44f9d1eef", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/14fea2f1fb315a2474b594a44f9d1eef~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/14fea2f1fb315a2474b594a44f9d1eef~tplv-obj.image" + ], + "width": 0 + }, + "primary_effect_id": 1503, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Premium Shuttle", + "diamond_count": 20000, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#E0C8BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/56c23f635641e9269c5e412a7af46779", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/56c23f635641e9269c5e412a7af46779~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/56c23f635641e9269c5e412a7af46779~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#3D3D3D", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/c2b287adee5151b7889d6e3d45b72e44", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/c2b287adee5151b7889d6e3d45b72e44~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/c2b287adee5151b7889d6e3d45b72e44~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7125, + "image": { + "avg_color": "#CCA3A3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/c2b287adee5151b7889d6e3d45b72e44", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/c2b287adee5151b7889d6e3d45b72e44~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/c2b287adee5151b7889d6e3d45b72e44~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 30, + "lock": true, + "lock_type": 3 + }, + "name": "Premium Shuttle", + "primary_effect_id": 1363, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Fly Love", + "diamond_count": 19999, + "duration": 1000, + "for_linkmic": false, + "gift_label_icon": { + "avg_color": "#FAE6DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/65e93d2177beaf3f78d817cf180b3c04", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/65e93d2177beaf3f78d817cf180b3c04~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/65e93d2177beaf3f78d817cf180b3c04~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#523737", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a598ba4c7024f4d46c1268be4d82f901", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a598ba4c7024f4d46c1268be4d82f901~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a598ba4c7024f4d46c1268be4d82f901~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8248, + "image": { + "avg_color": "#7C9BA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a598ba4c7024f4d46c1268be4d82f901", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a598ba4c7024f4d46c1268be4d82f901~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a598ba4c7024f4d46c1268be4d82f901~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 50, + "lock": true, + "lock_type": 4 + }, + "name": "Fly Love", + "primary_effect_id": 3146, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Happy Party", + "diamond_count": 6999, + "duration": 1000, + "for_linkmic": false, + "gift_label_icon": { + "avg_color": "#FFF8EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/b4661f3e6096ff7a8e73bccb805af5b8", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/b4661f3e6096ff7a8e73bccb805af5b8~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/b4661f3e6096ff7a8e73bccb805af5b8~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#C8E0BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/41774a8ba83c59055e5f2946d51215b4", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/41774a8ba83c59055e5f2946d51215b4~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/41774a8ba83c59055e5f2946d51215b4~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8247, + "image": { + "avg_color": "#F0F0F0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/41774a8ba83c59055e5f2946d51215b4", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/41774a8ba83c59055e5f2946d51215b4~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/41774a8ba83c59055e5f2946d51215b4~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 40, + "lock": true, + "lock_type": 4 + }, + "name": "Happy Party", + "primary_effect_id": 2388, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Signature Jet", + "diamond_count": 4888, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#F0F0F0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/73dbcd6713411839f66373fdd3d17864", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/73dbcd6713411839f66373fdd3d17864~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/73dbcd6713411839f66373fdd3d17864~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7A6053", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fe27eba54a50c0a687e3dc0f2c02067d", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fe27eba54a50c0a687e3dc0f2c02067d~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fe27eba54a50c0a687e3dc0f2c02067d~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7124, + "image": { + "avg_color": "#405237", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fe27eba54a50c0a687e3dc0f2c02067d", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fe27eba54a50c0a687e3dc0f2c02067d~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fe27eba54a50c0a687e3dc0f2c02067d~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 25, + "lock": true, + "lock_type": 3 + }, + "name": "Signature Jet", + "primary_effect_id": 1364, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Here We Go", + "diamond_count": 1799, + "duration": 1000, + "for_linkmic": false, + "gift_label_icon": { + "avg_color": "#7C9BA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/34ecdc4bc2758742e6f595dd7e25a00a", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/34ecdc4bc2758742e6f595dd7e25a00a~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/34ecdc4bc2758742e6f595dd7e25a00a~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#E0BCBC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/61b76a51a3757f0ff1cdc33b16c4d8ae", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/61b76a51a3757f0ff1cdc33b16c4d8ae~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/61b76a51a3757f0ff1cdc33b16c4d8ae~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8245, + "image": { + "avg_color": "#C8E0BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/61b76a51a3757f0ff1cdc33b16c4d8ae", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/61b76a51a3757f0ff1cdc33b16c4d8ae~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/61b76a51a3757f0ff1cdc33b16c4d8ae~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 30, + "lock": true, + "lock_type": 4 + }, + "name": "Here We Go", + "primary_effect_id": 2387, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Shiny air balloon", + "diamond_count": 1000, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#E0BCBC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/ec6bc830cd3097553ab35a3f40510947", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ec6bc830cd3097553ab35a3f40510947~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/ec6bc830cd3097553ab35a3f40510947~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#F0F0F0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9e7ebdca64b8f90fcc284bb04ab92d24", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9e7ebdca64b8f90fcc284bb04ab92d24~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9e7ebdca64b8f90fcc284bb04ab92d24~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7123, + "image": { + "avg_color": "#A3C4CC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9e7ebdca64b8f90fcc284bb04ab92d24", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9e7ebdca64b8f90fcc284bb04ab92d24~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9e7ebdca64b8f90fcc284bb04ab92d24~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 20, + "lock": true, + "lock_type": 3 + }, + "name": "Shiny air balloon", + "primary_effect_id": 1365, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Gem Gun", + "diamond_count": 500, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#DCDCFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e70ed557a0aebd6799312a98d7c56bc4", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e70ed557a0aebd6799312a98d7c56bc4~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e70ed557a0aebd6799312a98d7c56bc4~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBE1CE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/dd06007ade737f1001977590b11d3f61", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/dd06007ade737f1001977590b11d3f61~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/dd06007ade737f1001977590b11d3f61~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7122, + "image": { + "avg_color": "#EBFBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/dd06007ade737f1001977590b11d3f61", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/dd06007ade737f1001977590b11d3f61~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/dd06007ade737f1001977590b11d3f61~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 15, + "lock": true, + "lock_type": 3 + }, + "name": "Gem Gun", + "primary_effect_id": 1366, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Hands Up", + "diamond_count": 499, + "duration": 1000, + "for_linkmic": false, + "gift_label_icon": { + "avg_color": "#CECEEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/f210b086c4710de3432d368c7d4dd458", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f210b086c4710de3432d368c7d4dd458~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/f210b086c4710de3432d368c7d4dd458~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#374C52", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/f4d906542408e6c87cf0a42f7426f0c6", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f4d906542408e6c87cf0a42f7426f0c6~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/f4d906542408e6c87cf0a42f7426f0c6~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8244, + "image": { + "avg_color": "#A3C4CC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/f4d906542408e6c87cf0a42f7426f0c6", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f4d906542408e6c87cf0a42f7426f0c6~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/f4d906542408e6c87cf0a42f7426f0c6~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 20, + "lock": true, + "lock_type": 4 + }, + "name": "Hands Up", + "primary_effect_id": 2386, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Marvelous Confetti", + "diamond_count": 100, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#FAFAFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/30be17f62f84d78346634d1a08524cb6", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/30be17f62f84d78346634d1a08524cb6~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/30be17f62f84d78346634d1a08524cb6~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FFEBF8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fccc851d351716bc8b34ec65786c727d", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fccc851d351716bc8b34ec65786c727d~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fccc851d351716bc8b34ec65786c727d~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7121, + "image": { + "avg_color": "#FFFFFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fccc851d351716bc8b34ec65786c727d", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fccc851d351716bc8b34ec65786c727d~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fccc851d351716bc8b34ec65786c727d~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 10, + "lock": true, + "lock_type": 3 + }, + "name": "Marvelous Confetti", + "primary_effect_id": 1367, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Star", + "diamond_count": 99, + "duration": 3000, + "for_linkmic": false, + "gift_label_icon": { + "avg_color": "#B8B8B8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/712f2703c388c70dd8ce492961708304", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/712f2703c388c70dd8ce492961708304~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/712f2703c388c70dd8ce492961708304~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#A37C7C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/485175fda92f4d2f862e915cbcf8f5c4", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/485175fda92f4d2f862e915cbcf8f5c4~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/485175fda92f4d2f862e915cbcf8f5c4~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6432, + "image": { + "avg_color": "#D6D6D6", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/485175fda92f4d2f862e915cbcf8f5c4", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/485175fda92f4d2f862e915cbcf8f5c4~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/485175fda92f4d2f862e915cbcf8f5c4~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 1 + }, + "name": "Star", + "primary_effect_id": 3309, + "tracker_params": {}, + "type": 4 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Cheer You Up", + "diamond_count": 9, + "duration": 1000, + "for_linkmic": false, + "gift_label_icon": { + "avg_color": "#FFF1EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/697be30d50be77d7e088955422c42837", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/697be30d50be77d7e088955422c42837~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/697be30d50be77d7e088955422c42837~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#E0BCBC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/97e0529ab9e5cbb60d95fc9ff1133ea6", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/97e0529ab9e5cbb60d95fc9ff1133ea6~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/97e0529ab9e5cbb60d95fc9ff1133ea6~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8243, + "image": { + "avg_color": "#EBCEE1", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/97e0529ab9e5cbb60d95fc9ff1133ea6", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/97e0529ab9e5cbb60d95fc9ff1133ea6~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/97e0529ab9e5cbb60d95fc9ff1133ea6~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 10, + "lock": true, + "lock_type": 4 + }, + "name": "Cheer You Up", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Heart Me", + "diamond_count": 1, + "duration": 3000, + "for_linkmic": false, + "gift_label_icon": { + "avg_color": "#DCDCFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/6415678665a355a01e2765ea159c2426", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6415678665a355a01e2765ea159c2426~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/6415678665a355a01e2765ea159c2426~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBFBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/d56945782445b0b8c8658ed44f894c7b", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/d56945782445b0b8c8658ed44f894c7b~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/d56945782445b0b8c8658ed44f894c7b~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7934, + "image": { + "avg_color": "#E0D4BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/d56945782445b0b8c8658ed44f894c7b", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/d56945782445b0b8c8658ed44f894c7b~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/d56945782445b0b8c8658ed44f894c7b~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 5 + }, + "name": "Heart Me", + "primary_effect_id": 2996, + "tracker_params": {}, + "type": 4 + } + ], + "gifts_info": { + "color_gift_icon_animation": { + "avg_color": "#7C9BA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/MotorcycleV2.webp", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/MotorcycleV2.webp~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/MotorcycleV2.webp~tplv-obj.image" + ], + "width": 0 + }, + "default_loc_color_gift_id": 5765, + "deprecated1": [], + "deprecated2": [], + "deprecated3": [], + "deprecated4": [], + "deprecated5": [], + "deprecated6": [], + "enable_first_recharge_dynamic_effect": false, + "first_recharge_gift_info": { + "discount_percentage": 0, + "expire_at": 0, + "gift_id": 0, + "original_diamond_count": 0, + "remain_times": 0 + }, + "freq_limit_gift_info": { + "freq_limit_gift_options": [ + { + "close_gift_panel": true, + "frequency_limit": 1, + "gift_id": 6466, + "refresh_timestamp": 1696204800, + "work_single_anchor": true + }, + { + "close_gift_panel": true, + "frequency_limit": 1, + "gift_id": 7934, + "refresh_timestamp": 1696204800, + "work_single_anchor": true + } + ] + }, + "gift_box_scheme_url": "", + "gift_combo_infos": [], + "gift_group_infos": [ + { + "group_count": 10, + "group_text": "" + }, + { + "group_count": 99, + "group_text": "" + }, + { + "group_count": 365, + "group_text": "" + }, + { + "group_count": 999, + "group_text": "" + } + ], + "gift_icon_info": { + "effect_uri": "", + "icon": { + "avg_color": "#CEE5EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "", + "url_list": [], + "width": 0 + }, + "icon_id": 0, + "icon_uri": "", + "name": "", + "valid_end_at": 0, + "valid_start_at": 0, + "with_effect": false + }, + "gift_poll_info": { + "gift_poll_options": [ + { + "gift_id": 6246, + "poll_result_icon": { + "avg_color": "#524037", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/poll_gift_star.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/poll_gift_star.png~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/poll_gift_star.png~tplv-obj.image" + ], + "width": 0 + } + }, + { + "gift_id": 6247, + "poll_result_icon": { + "avg_color": "#7A6D53", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/poll_gift_heart.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/poll_gift_heart.png~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/poll_gift_heart.png~tplv-obj.image" + ], + "width": 0 + } + } + ] + }, + "gift_words": "", + "hide_recharge_entry": false, + "is_display_gift_box_icon": false, + "is_universal": false, + "new_gift_id": 0, + "panel_gift_box_icon": { + "avg_color": "#53737A", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "", + "url_list": [], + "width": 0 + }, + "recently_sent_color_gift_id": 0, + "recommended_random_gift_id": 6233, + "risk_ctl_strategies": { + "disable_send_gift": true, + "reason": "disable_self_gifting", + "risk_ctl_error_msg": "Action not available in your country or region" + }, + "show_first_recharge_entrance": false, + "speedy_gift_id": 0 + }, + "hash": "", + "hot_fields": [ + "id", + "for_linkmic", + "is_displayed_on_panel", + "gift_panel_banner", + "can_put_in_gift_box", + "gift_box_info", + "tracker_params", + "lock_info", + "gift_rank_recommend_info", + "random_effect_info", + "is_effect_befview", + "gift_sub_type" + ], + "is_full_gift_data": true, + "pages": [ + { + "display": true, + "event_name": "livesdk_gift_tab_click", + "force_insert_metrics": { + "6835": { + "force_index_config": 17, + "force_insert_type": 4 + }, + "7764": { + "force_index_config": 25, + "force_insert_type": 4 + }, + "8912": { + "force_index_config": 15, + "force_insert_type": 4 + }, + "8913": { + "force_index_config": 16, + "force_insert_type": 4 + }, + "8914": { + "force_index_config": 11, + "force_insert_type": 4 + }, + "8916": { + "force_index_config": 12, + "force_insert_type": 4 + } + }, + "force_insert_priority_map": { + "0": -1, + "1": 5, + "2": 15, + "3": 25, + "4": 20, + "5": 10, + "6": 40, + "7": 35, + "8": 30, + "9": 28 + }, + "frequently_used_gifts": [], + "gifts": [ + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent GG", + "diamond_count": 1, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "{\"key\":1834058817}", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#E0D4BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3f02fa9594bd1495ff4e8aa5ae265eef", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3f02fa9594bd1495ff4e8aa5ae265eef~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3f02fa9594bd1495ff4e8aa5ae265eef~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6064, + "image": { + "avg_color": "#666666", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3f02fa9594bd1495ff4e8aa5ae265eef", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3f02fa9594bd1495ff4e8aa5ae265eef~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3f02fa9594bd1495ff4e8aa5ae265eef~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": true, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "GG", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Ice Cream Cone", + "diamond_count": 1, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "{\"key\":1699140178}", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#3D3D3D", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/968820bc85e274713c795a6aef3f7c67", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/968820bc85e274713c795a6aef3f7c67~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/968820bc85e274713c795a6aef3f7c67~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5827, + "image": { + "avg_color": "#FAF0DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/968820bc85e274713c795a6aef3f7c67", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/968820bc85e274713c795a6aef3f7c67~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/968820bc85e274713c795a6aef3f7c67~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": true, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Ice Cream Cone", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Rose", + "diamond_count": 1, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "{\"key\":922090254}", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#373752", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/eba3a9bb85c33e017f3648eaf88d7189", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/eba3a9bb85c33e017f3648eaf88d7189~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/eba3a9bb85c33e017f3648eaf88d7189~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5655, + "image": { + "avg_color": "#DCF4FA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/eba3a9bb85c33e017f3648eaf88d7189", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/eba3a9bb85c33e017f3648eaf88d7189~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/eba3a9bb85c33e017f3648eaf88d7189~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": true, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Rose", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent TikTok", + "diamond_count": 1, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "{\"key\":755133092}", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#C8E0BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/802a21ae29f9fae5abe3693de9f874bd", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/802a21ae29f9fae5abe3693de9f874bd~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/802a21ae29f9fae5abe3693de9f874bd~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5269, + "image": { + "avg_color": "#374C52", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/802a21ae29f9fae5abe3693de9f874bd", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/802a21ae29f9fae5abe3693de9f874bd~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/802a21ae29f9fae5abe3693de9f874bd~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": true, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "TikTok", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Finger Heart", + "diamond_count": 5, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "{\"key\":1350186813}", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#373752", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a4c4dc437fd3a6632aba149769491f49.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a4c4dc437fd3a6632aba149769491f49.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a4c4dc437fd3a6632aba149769491f49.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5487, + "image": { + "avg_color": "#EBE1CE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a4c4dc437fd3a6632aba149769491f49.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a4c4dc437fd3a6632aba149769491f49.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a4c4dc437fd3a6632aba149769491f49.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": true, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Finger Heart", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Perfume", + "diamond_count": 20, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "{\"key\":411851210}", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7A5353", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/20b8f61246c7b6032777bb81bf4ee055", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/20b8f61246c7b6032777bb81bf4ee055~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/20b8f61246c7b6032777bb81bf4ee055~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5658, + "image": { + "avg_color": "#666666", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/20b8f61246c7b6032777bb81bf4ee055", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/20b8f61246c7b6032777bb81bf4ee055~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/20b8f61246c7b6032777bb81bf4ee055~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": true, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Perfume", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Doughnut", + "diamond_count": 30, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "{\"key\":2141251825}", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#B1CCA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/4e7ad6bdf0a1d860c538f38026d4e812", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4e7ad6bdf0a1d860c538f38026d4e812~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/4e7ad6bdf0a1d860c538f38026d4e812~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5879, + "image": { + "avg_color": "#E0C8BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/4e7ad6bdf0a1d860c538f38026d4e812", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4e7ad6bdf0a1d860c538f38026d4e812~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/4e7ad6bdf0a1d860c538f38026d4e812~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": true, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Doughnut", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Rosa", + "diamond_count": 10, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#EBFBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0ef66437249c64730e551cea6148fb28", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "{\"key\":1951302549}", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#CCBEA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/eb77ead5c3abb6da6034d3cf6cfeb438", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/eb77ead5c3abb6da6034d3cf6cfeb438~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/eb77ead5c3abb6da6034d3cf6cfeb438~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8913, + "image": { + "avg_color": "#A3897C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/eb77ead5c3abb6da6034d3cf6cfeb438", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/eb77ead5c3abb6da6034d3cf6cfeb438~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/eb77ead5c3abb6da6034d3cf6cfeb438~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": true, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Rosa", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent TikTok Universe", + "diamond_count": 44999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#FADCDC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/97d467285aab5e94a077f3cd796ba260", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/97d467285aab5e94a077f3cd796ba260~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/97d467285aab5e94a077f3cd796ba260~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 9, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "A celebratory message will be displayed with the host\u0027s and your username as well as the gift name in all LIVE videos in your region.", + "key": "pm_mt_live_gift_panel_note_platform_announcement", + "pieces": [] + }, + "left_icon": { + "avg_color": "#89A37C", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_broadcast_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_broadcast_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_broadcast_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7, + 6 + ], + "gold_effect": "", + "icon": { + "avg_color": "#CCBEA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/8f471afbcebfda3841a6cc515e381f58", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8f471afbcebfda3841a6cc515e381f58~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/8f471afbcebfda3841a6cc515e381f58~tplv-obj.webp" + ], + "width": 0 + }, + "id": 9072, + "image": { + "avg_color": "#CCA3A3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/8f471afbcebfda3841a6cc515e381f58", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8f471afbcebfda3841a6cc515e381f58~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/8f471afbcebfda3841a6cc515e381f58~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": true, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "TikTok Universe", + "preview_image": { + "avg_color": "#A3967C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/7ab2436172876ff1824dd619b4875fa7", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/7ab2436172876ff1824dd619b4875fa7~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/7ab2436172876ff1824dd619b4875fa7~tplv-obj.image" + ], + "width": 0 + }, + "primary_effect_id": 3448, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent TikTok Stars", + "diamond_count": 39999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#EBCECE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fc4d2b99910ce9bea92c8a8b503519f9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#FAE6DC", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBEBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/b1667c891ed39fd68ba7252fff7a1e7c", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/b1667c891ed39fd68ba7252fff7a1e7c~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/b1667c891ed39fd68ba7252fff7a1e7c~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8582, + "image": { + "avg_color": "#523737", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/b1667c891ed39fd68ba7252fff7a1e7c", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/b1667c891ed39fd68ba7252fff7a1e7c~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/b1667c891ed39fd68ba7252fff7a1e7c~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "TikTok Stars", + "primary_effect_id": 2899, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Seal and Whale", + "diamond_count": 34500, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBE1CE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3781e9159ff09272826d3f2216ba36ef.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3781e9159ff09272826d3f2216ba36ef.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3781e9159ff09272826d3f2216ba36ef.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8381, + "image": { + "avg_color": "#EBD8CE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3781e9159ff09272826d3f2216ba36ef.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3781e9159ff09272826d3f2216ba36ef.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3781e9159ff09272826d3f2216ba36ef.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Seal and Whale", + "primary_effect_id": 2550, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Leon and Lion", + "diamond_count": 34000, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#FFFFFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fc4d2b99910ce9bea92c8a8b503519f9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#53537A", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#53737A", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a291aedacf27d22c3fd2d83575d2bee9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a291aedacf27d22c3fd2d83575d2bee9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a291aedacf27d22c3fd2d83575d2bee9~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7823, + "image": { + "avg_color": "#607A53", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a291aedacf27d22c3fd2d83575d2bee9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a291aedacf27d22c3fd2d83575d2bee9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a291aedacf27d22c3fd2d83575d2bee9~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Leon and Lion", + "primary_effect_id": 2858, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Sam the Whale", + "diamond_count": 30000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#BCBCE0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/f48a1887eb88238738996bb997b31c0f.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f48a1887eb88238738996bb997b31c0f.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/f48a1887eb88238738996bb997b31c0f.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8391, + "image": { + "avg_color": "#7A6D53", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/f48a1887eb88238738996bb997b31c0f.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f48a1887eb88238738996bb997b31c0f.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/f48a1887eb88238738996bb997b31c0f.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Sam the Whale", + "primary_effect_id": 3256, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Lion", + "diamond_count": 29999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#EBFBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fc4d2b99910ce9bea92c8a8b503519f9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#7A6053", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FAF0DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/4fb89af2082a290b37d704e20f4fe729", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4fb89af2082a290b37d704e20f4fe729~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/4fb89af2082a290b37d704e20f4fe729~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6369, + "image": { + "avg_color": "#EBFBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/4fb89af2082a290b37d704e20f4fe729", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4fb89af2082a290b37d704e20f4fe729~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/4fb89af2082a290b37d704e20f4fe729~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Lion", + "primary_effect_id": 2855, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Dragon Flame", + "diamond_count": 26999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#7A6053", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fc4d2b99910ce9bea92c8a8b503519f9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#FFFFFF", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#524037", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/89b4d1d93c1cc614e3a0903ac7a94e0c", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/89b4d1d93c1cc614e3a0903ac7a94e0c~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/89b4d1d93c1cc614e3a0903ac7a94e0c~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7610, + "image": { + "avg_color": "#89A37C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/89b4d1d93c1cc614e3a0903ac7a94e0c", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/89b4d1d93c1cc614e3a0903ac7a94e0c~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/89b4d1d93c1cc614e3a0903ac7a94e0c~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Dragon Flame", + "primary_effect_id": 2865, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Phoenix", + "diamond_count": 25999, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7C7CA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/ef248375c4167d70c1642731c732c982", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ef248375c4167d70c1642731c732c982~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/ef248375c4167d70c1642731c732c982~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7319, + "image": { + "avg_color": "#EBD8CE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/ef248375c4167d70c1642731c732c982", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ef248375c4167d70c1642731c732c982~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/ef248375c4167d70c1642731c732c982~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Phoenix", + "primary_effect_id": 1511, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Adam’s Dream", + "diamond_count": 25999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#D8EBCE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fc4d2b99910ce9bea92c8a8b503519f9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#CEE5EB", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#B8B8B8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9a586391fbb1e21621c4203e5563a9e0", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9a586391fbb1e21621c4203e5563a9e0~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9a586391fbb1e21621c4203e5563a9e0~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7400, + "image": { + "avg_color": "#EBCECE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9a586391fbb1e21621c4203e5563a9e0", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9a586391fbb1e21621c4203e5563a9e0~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9a586391fbb1e21621c4203e5563a9e0~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Adam’s Dream", + "primary_effect_id": 2870, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent TikTok Shuttle", + "diamond_count": 20000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#BCBCE0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/8ef48feba8dd293a75ae9d4376fb17c9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8ef48feba8dd293a75ae9d4376fb17c9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/8ef48feba8dd293a75ae9d4376fb17c9~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6751, + "image": { + "avg_color": "#BCBCE0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/8ef48feba8dd293a75ae9d4376fb17c9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8ef48feba8dd293a75ae9d4376fb17c9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/8ef48feba8dd293a75ae9d4376fb17c9~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "TikTok Shuttle", + "primary_effect_id": 1073, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Red Lightning", + "diamond_count": 12000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FFFFFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/5f48599c8d2a7bbc6e6fcf11ba2c809f", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/5f48599c8d2a7bbc6e6fcf11ba2c809f~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/5f48599c8d2a7bbc6e6fcf11ba2c809f~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8419, + "image": { + "avg_color": "#EBCEE1", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/5f48599c8d2a7bbc6e6fcf11ba2c809f", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/5f48599c8d2a7bbc6e6fcf11ba2c809f~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/5f48599c8d2a7bbc6e6fcf11ba2c809f~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Red Lightning", + "primary_effect_id": 2583, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Interstellar", + "diamond_count": 10000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#D8EBCE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/8520d47b59c202a4534c1560a355ae06", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8520d47b59c202a4534c1560a355ae06~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/8520d47b59c202a4534c1560a355ae06~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6149, + "image": { + "avg_color": "#FFF1EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/8520d47b59c202a4534c1560a355ae06", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8520d47b59c202a4534c1560a355ae06~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/8520d47b59c202a4534c1560a355ae06~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Interstellar", + "primary_effect_id": 519, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Sunset Speedway", + "diamond_count": 10000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FAFAFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/df63eee488dc0994f6f5cb2e65f2ae49", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/df63eee488dc0994f6f5cb2e65f2ae49~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/df63eee488dc0994f6f5cb2e65f2ae49~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6203, + "image": { + "avg_color": "#CCB1A3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/df63eee488dc0994f6f5cb2e65f2ae49", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/df63eee488dc0994f6f5cb2e65f2ae49~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/df63eee488dc0994f6f5cb2e65f2ae49~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Sunset Speedway", + "primary_effect_id": 705, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Star Throne", + "diamond_count": 7999, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#CECEEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/30063f6bc45aecc575c49ff3dbc33831", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8420, + "image": { + "avg_color": "#FFEBF8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/30063f6bc45aecc575c49ff3dbc33831", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Star Throne", + "primary_effect_id": 2584, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [ + { + "color_effect_id": 365, + "color_id": 1, + "color_image": { + "avg_color": "#523749", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/6db5c098-08d6-4c65-98d2-b5e3a9a44fc5.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/6db5c098-08d6-4c65-98d2-b5e3a9a44fc5.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/6db5c098-08d6-4c65-98d2-b5e3a9a44fc5.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Ruby Red", + "color_values": [ + "#FF5E7A", + "#FF5E7A" + ], + "gift_image": { + "avg_color": "#CCBEA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e7ce188da898772f18aaffe49a7bd7db", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e7ce188da898772f18aaffe49a7bd7db~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e7ce188da898772f18aaffe49a7bd7db~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": true + }, + { + "color_effect_id": 450, + "color_id": 2, + "color_image": { + "avg_color": "#FAE6DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/883d6320-72b3-44c6-86b7-7174eef4a9e7.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/883d6320-72b3-44c6-86b7-7174eef4a9e7.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/883d6320-72b3-44c6-86b7-7174eef4a9e7.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Lime Green", + "color_values": [ + "#60E5AE", + "#60E5AE" + ], + "gift_image": { + "avg_color": "#EBCEE1", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/car_icon_green.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_green.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_green.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 451, + "color_id": 3, + "color_image": { + "avg_color": "#A3C4CC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/920447aa-78d7-45d9-a967-61cf9945a4fe.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/920447aa-78d7-45d9-a967-61cf9945a4fe.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/920447aa-78d7-45d9-a967-61cf9945a4fe.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Electric Blue", + "color_values": [ + "#6699FF", + "#6699FF" + ], + "gift_image": { + "avg_color": "#CEE5EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/car_icon_blue.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_blue.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_blue.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 452, + "color_id": 4, + "color_image": { + "avg_color": "#607A53", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/a6b08927-99c1-46a9-89ba-e8963d4b6360.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/a6b08927-99c1-46a9-89ba-e8963d4b6360.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/a6b08927-99c1-46a9-89ba-e8963d4b6360.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Bumblebee Yellow", + "color_values": [ + "#FFE15E", + "#FFE15E" + ], + "gift_image": { + "avg_color": "#BCBCE0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/car_icon_yellow.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_yellow.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_yellow.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 466, + "color_id": 5, + "color_image": { + "avg_color": "#A37C96", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/0ffb22c4-cf29-4f2a-9666-a910588d448d.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/0ffb22c4-cf29-4f2a-9666-a910588d448d.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/0ffb22c4-cf29-4f2a-9666-a910588d448d.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Bubblegum Pink", + "color_values": [ + "#FFA5C1", + "#FFA5C1" + ], + "gift_image": { + "avg_color": "#FAF0DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/car_icon_pink.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_pink.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_pink.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 465, + "color_id": 6, + "color_image": { + "avg_color": "#FFEBEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/ae58efb4-850f-49c4-aca4-9c77d0caf14d.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/ae58efb4-850f-49c4-aca4-9c77d0caf14d.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/ae58efb4-850f-49c4-aca4-9c77d0caf14d.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Lightning Purple", + "color_values": [ + "#8A8AFF", + "#8A8AFF" + ], + "gift_image": { + "avg_color": "#D8EBCE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/car_icon_purple.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_purple.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/car_icon_purple.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + } + ], + "combo": false, + "describe": "sent Sports Car", + "diamond_count": 7000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 5, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7A5353", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e7ce188da898772f18aaffe49a7bd7db", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e7ce188da898772f18aaffe49a7bd7db~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e7ce188da898772f18aaffe49a7bd7db~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6089, + "image": { + "avg_color": "#DCDCFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e7ce188da898772f18aaffe49a7bd7db", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e7ce188da898772f18aaffe49a7bd7db~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e7ce188da898772f18aaffe49a7bd7db~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Sports Car", + "primary_effect_id": 365, + "tracker_params": { + "gift_property": "color_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Celebration Time", + "diamond_count": 6999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#E0BCBC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9e0db516157f7d14e5b79184b197a8d3", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FAE6DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e73e786041d8218d8e9dbbc150855f1b", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e73e786041d8218d8e9dbbc150855f1b~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e73e786041d8218d8e9dbbc150855f1b~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6790, + "image": { + "avg_color": "#CECEEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e73e786041d8218d8e9dbbc150855f1b", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e73e786041d8218d8e9dbbc150855f1b~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e73e786041d8218d8e9dbbc150855f1b~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Celebration Time", + "primary_effect_id": 1237, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Unicorn Fantasy", + "diamond_count": 5000, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#CEE5EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/483c644e67e9bb1dd5970f2df00b7576.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/483c644e67e9bb1dd5970f2df00b7576.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/483c644e67e9bb1dd5970f2df00b7576.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5483, + "image": { + "avg_color": "#FFEBEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/483c644e67e9bb1dd5970f2df00b7576.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/483c644e67e9bb1dd5970f2df00b7576.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/483c644e67e9bb1dd5970f2df00b7576.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Unicorn Fantasy", + "preview_image": { + "avg_color": "#7A6053", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0d1f70d51d9e4b06f336f4aaf5936244", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0d1f70d51d9e4b06f336f4aaf5936244~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0d1f70d51d9e4b06f336f4aaf5936244~tplv-obj.image" + ], + "width": 0 + }, + "primary_effect_id": 741, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Pool Party", + "diamond_count": 4999, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#E0C8BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/4147c5bcfad9623c693f83d5d6cba1f7", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4147c5bcfad9623c693f83d5d6cba1f7~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/4147c5bcfad9623c693f83d5d6cba1f7~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5938, + "image": { + "avg_color": "#373752", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/4147c5bcfad9623c693f83d5d6cba1f7", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4147c5bcfad9623c693f83d5d6cba1f7~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/4147c5bcfad9623c693f83d5d6cba1f7~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Pool Party", + "primary_effect_id": 357, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [ + { + "color_effect_id": 474, + "color_id": 1, + "color_image": { + "avg_color": "#374C52", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/a6b23da3-2461-4168-bb3b-426a6435cabf.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/a6b23da3-2461-4168-bb3b-426a6435cabf.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/a6b23da3-2461-4168-bb3b-426a6435cabf.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Champagne Gold", + "color_values": [ + "#FCCD89", + "#FCCD89" + ], + "gift_image": { + "avg_color": "#A3897C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/airplane_icon_gold.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/airplane_icon_gold.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/airplane_icon_gold.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": true + }, + { + "color_effect_id": 475, + "color_id": 2, + "color_image": { + "avg_color": "#D8EBCE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/dd27b357-6411-4eb4-95e0-d8a0e1e4c252.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/dd27b357-6411-4eb4-95e0-d8a0e1e4c252.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/dd27b357-6411-4eb4-95e0-d8a0e1e4c252.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Romantic Pink", + "color_values": [ + "#FFA5C1", + "#FFA5C1" + ], + "gift_image": { + "avg_color": "#BCD9E0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/airplane_icon_pink.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/airplane_icon_pink.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/airplane_icon_pink.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 476, + "color_id": 3, + "color_image": { + "avg_color": "#A3967C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/fafec75e-b2e0-4a3f-bc29-f73242cdf2b5.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/fafec75e-b2e0-4a3f-bc29-f73242cdf2b5.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/fafec75e-b2e0-4a3f-bc29-f73242cdf2b5.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Sky Blue", + "color_values": [ + "#80C4FF", + "#80C4FF" + ], + "gift_image": { + "avg_color": "#7C9BA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/airplane_icon_blue.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/airplane_icon_blue.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/airplane_icon_blue.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 477, + "color_id": 4, + "color_image": { + "avg_color": "#A3C4CC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/d0b4b198-69f3-4c22-a27e-7f1acd2745c6.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/d0b4b198-69f3-4c22-a27e-7f1acd2745c6.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/d0b4b198-69f3-4c22-a27e-7f1acd2745c6.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Mystery Purple", + "color_values": [ + "#B689FF", + "#B689FF" + ], + "gift_image": { + "avg_color": "#FFFFFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/airplane_icon_purple.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/airplane_icon_purple.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/airplane_icon_purple.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + } + ], + "combo": false, + "describe": "sent Private Jet", + "diamond_count": 4888, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 5, + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#CEE5EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/921c6084acaa2339792052058cbd3fd3", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/921c6084acaa2339792052058cbd3fd3~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/921c6084acaa2339792052058cbd3fd3~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5767, + "image": { + "avg_color": "#FFEBEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/921c6084acaa2339792052058cbd3fd3", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/921c6084acaa2339792052058cbd3fd3~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/921c6084acaa2339792052058cbd3fd3~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Private Jet", + "primary_effect_id": 263, + "tracker_params": { + "gift_property": "color_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Leon the Kitten", + "diamond_count": 4888, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#7C9BA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fc4d2b99910ce9bea92c8a8b503519f9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#CCA3BE", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FAE6DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a7748baba012c9e2d98a30dce7cc5a27", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a7748baba012c9e2d98a30dce7cc5a27~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a7748baba012c9e2d98a30dce7cc5a27~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6646, + "image": { + "avg_color": "#405237", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a7748baba012c9e2d98a30dce7cc5a27", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a7748baba012c9e2d98a30dce7cc5a27~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a7748baba012c9e2d98a30dce7cc5a27~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Leon the Kitten", + "primary_effect_id": 2860, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Flower Overflow", + "diamond_count": 4000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#F1FFEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/743c4bb44e7e0bf251a7f2f5ada231ee", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/743c4bb44e7e0bf251a7f2f5ada231ee~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/743c4bb44e7e0bf251a7f2f5ada231ee~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6148, + "image": { + "avg_color": "#BCBCE0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/743c4bb44e7e0bf251a7f2f5ada231ee", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/743c4bb44e7e0bf251a7f2f5ada231ee~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/743c4bb44e7e0bf251a7f2f5ada231ee~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Flower Overflow", + "primary_effect_id": 518, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Ferris Wheel", + "diamond_count": 3000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#53537A", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3c7291ad4c2a6d4f70505c3e296ecebe", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3c7291ad4c2a6d4f70505c3e296ecebe~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3c7291ad4c2a6d4f70505c3e296ecebe~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5652, + "image": { + "avg_color": "#D6D6D6", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3c7291ad4c2a6d4f70505c3e296ecebe", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3c7291ad4c2a6d4f70505c3e296ecebe~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3c7291ad4c2a6d4f70505c3e296ecebe~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Ferris Wheel", + "primary_effect_id": 212, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Meteor Shower", + "diamond_count": 3000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#D8EBCE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/71883933511237f7eaa1bf8cd12ed575", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/71883933511237f7eaa1bf8cd12ed575~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/71883933511237f7eaa1bf8cd12ed575~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6563, + "image": { + "avg_color": "#7A6D53", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/71883933511237f7eaa1bf8cd12ed575", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/71883933511237f7eaa1bf8cd12ed575~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/71883933511237f7eaa1bf8cd12ed575~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Meteor Shower", + "primary_effect_id": 932, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [ + { + "color_effect_id": 486, + "color_id": 1, + "color_image": { + "avg_color": "#523737", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/6cc71705-b286-4e55-a94c-bf50c65ac095.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/6cc71705-b286-4e55-a94c-bf50c65ac095.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/6cc71705-b286-4e55-a94c-bf50c65ac095.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Lime Green", + "color_values": [ + "#60E5AE", + "#60E5AE" + ], + "gift_image": { + "avg_color": "#53737A", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/motor_icon_green.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_green.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_green.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": true + }, + { + "color_effect_id": 487, + "color_id": 2, + "color_image": { + "avg_color": "#CECEEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/d3f61fde-66f1-43a1-b8da-a7c845b3d3e0.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/d3f61fde-66f1-43a1-b8da-a7c845b3d3e0.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/d3f61fde-66f1-43a1-b8da-a7c845b3d3e0.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Hot Pink", + "color_values": [ + "#FF7ACA", + "#FF7ACA" + ], + "gift_image": { + "avg_color": "#CCB1A3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/motor_icon_pink.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_pink.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_pink.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 488, + "color_id": 3, + "color_image": { + "avg_color": "#FAE6DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/6a7d9f31-e9fc-4936-81b8-4eb57d5e544a.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/6a7d9f31-e9fc-4936-81b8-4eb57d5e544a.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/6a7d9f31-e9fc-4936-81b8-4eb57d5e544a.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Electric Blue", + "color_values": [ + "#6699FF", + "#6699FF" + ], + "gift_image": { + "avg_color": "#EBEBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/motor_icon_blue.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_blue.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_blue.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 489, + "color_id": 4, + "color_image": { + "avg_color": "#DCDCFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/f2a84010-3391-49cf-90f8-d1c1f19bbbce.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/f2a84010-3391-49cf-90f8-d1c1f19bbbce.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/f2a84010-3391-49cf-90f8-d1c1f19bbbce.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Lightning Purple", + "color_values": [ + "#8A8AFF", + "#8A8AFF" + ], + "gift_image": { + "avg_color": "#FAE6DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/motor_icon_purple.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_purple.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_purple.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 490, + "color_id": 5, + "color_image": { + "avg_color": "#CECEEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/9598d54b-04db-4653-90a6-e243a064af8f.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/9598d54b-04db-4653-90a6-e243a064af8f.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/9598d54b-04db-4653-90a6-e243a064af8f.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Flash Silver", + "color_values": [ + "#C0D2DF", + "#C0D2DF" + ], + "gift_image": { + "avg_color": "#B8B8B8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/motor_icon_silver.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_silver.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_silver.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 491, + "color_id": 6, + "color_image": { + "avg_color": "#53537A", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/ae5da295-a186-4d4e-a569-bf9a14069103.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/ae5da295-a186-4d4e-a569-bf9a14069103.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/ae5da295-a186-4d4e-a569-bf9a14069103.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Ruby Red", + "color_values": [ + "#FF5E7A", + "#FF5E7A" + ], + "gift_image": { + "avg_color": "#C8E0BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/motor_icon_red.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_red.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/motor_icon_red.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + } + ], + "combo": false, + "describe": "sent Motorcycle", + "diamond_count": 2988, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 5, + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#405237", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/6517b8f2f76dc75ff0f4f73107f8780e", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6517b8f2f76dc75ff0f4f73107f8780e~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/6517b8f2f76dc75ff0f4f73107f8780e~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5765, + "image": { + "avg_color": "#D6D6D6", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/6517b8f2f76dc75ff0f4f73107f8780e", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6517b8f2f76dc75ff0f4f73107f8780e~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/6517b8f2f76dc75ff0f4f73107f8780e~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Motorcycle", + "primary_effect_id": 261, + "tracker_params": { + "gift_property": "color_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Whale diving", + "diamond_count": 2150, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#E0BCD4", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fc4d2b99910ce9bea92c8a8b503519f9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fc4d2b99910ce9bea92c8a8b503519f9~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#607A53", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#A37C96", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/46fa70966d8e931497f5289060f9a794", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/46fa70966d8e931497f5289060f9a794~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/46fa70966d8e931497f5289060f9a794~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6820, + "image": { + "avg_color": "#89A37C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/46fa70966d8e931497f5289060f9a794", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/46fa70966d8e931497f5289060f9a794~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/46fa70966d8e931497f5289060f9a794~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Whale diving", + "primary_effect_id": 2628, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Make-up Box", + "diamond_count": 1999, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#E0BCD4", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a29aa87203ec09c699e3dafa1944b23e", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a29aa87203ec09c699e3dafa1944b23e~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a29aa87203ec09c699e3dafa1944b23e~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6033, + "image": { + "avg_color": "#BCBCE0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a29aa87203ec09c699e3dafa1944b23e", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a29aa87203ec09c699e3dafa1944b23e~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a29aa87203ec09c699e3dafa1944b23e~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Make-up Box", + "primary_effect_id": 399, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Rabbit", + "diamond_count": 1999, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#374C52", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/61b42d630091b661e82fc8ed400b1de2", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/61b42d630091b661e82fc8ed400b1de2~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/61b42d630091b661e82fc8ed400b1de2~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6348, + "image": { + "avg_color": "#B8B8B8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/61b42d630091b661e82fc8ed400b1de2", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/61b42d630091b661e82fc8ed400b1de2~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/61b42d630091b661e82fc8ed400b1de2~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Rabbit", + "primary_effect_id": 731, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Red Carpet", + "diamond_count": 1999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#374C52", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9e0db516157f7d14e5b79184b197a8d3", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#D8EBCE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/5b9bf90278f87b9ca0c286d3c8a12936", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/5b9bf90278f87b9ca0c286d3c8a12936~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/5b9bf90278f87b9ca0c286d3c8a12936~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6789, + "image": { + "avg_color": "#524037", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/5b9bf90278f87b9ca0c286d3c8a12936", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/5b9bf90278f87b9ca0c286d3c8a12936~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/5b9bf90278f87b9ca0c286d3c8a12936~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Red Carpet", + "primary_effect_id": 1232, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Gift Box", + "diamond_count": 1999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#7A6D53", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0ef66437249c64730e551cea6148fb28", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 3 + ], + "gold_effect": "", + "icon": { + "avg_color": "#CCBEA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9cc22f7c8ac233e129dec7b981b91b76", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9cc22f7c8ac233e129dec7b981b91b76~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9cc22f7c8ac233e129dec7b981b91b76~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6834, + "image": { + "avg_color": "#A37C96", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9cc22f7c8ac233e129dec7b981b91b76", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9cc22f7c8ac233e129dec7b981b91b76~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9cc22f7c8ac233e129dec7b981b91b76~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Gift Box", + "primary_effect_id": 1147, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Cooper Flies Home", + "diamond_count": 1999, + "duration": 1000, + "for_linkmic": true, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 15, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Fly Cooper, Fly!", + "key": "gift_description_6862", + "pieces": [] + }, + "left_icon": { + "avg_color": "#EBD8CE", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e3ea82178688e17212581c90d621ae31", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e3ea82178688e17212581c90d621ae31~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e3ea82178688e17212581c90d621ae31~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FFF1EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3f1945b0d96e665a759f747e5e0cf7a9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3f1945b0d96e665a759f747e5e0cf7a9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3f1945b0d96e665a759f747e5e0cf7a9~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6862, + "image": { + "avg_color": "#CEE5EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3f1945b0d96e665a759f747e5e0cf7a9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3f1945b0d96e665a759f747e5e0cf7a9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3f1945b0d96e665a759f747e5e0cf7a9~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Cooper Flies Home", + "primary_effect_id": 1194, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Mystery Firework", + "diamond_count": 1999, + "duration": 1000, + "for_linkmic": false, + "gift_label_icon": { + "avg_color": "#BCD9E0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/ea70ae4b6ddb5d69fb52faadd4a6b1c8", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ea70ae4b6ddb5d69fb52faadd4a6b1c8~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/ea70ae4b6ddb5d69fb52faadd4a6b1c8~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 2 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FFF8EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/c110230c5db903db5f060a432f5a86cd", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/c110230c5db903db5f060a432f5a86cd~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/c110230c5db903db5f060a432f5a86cd~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7529, + "image": { + "avg_color": "#7A6053", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/c110230c5db903db5f060a432f5a86cd", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/c110230c5db903db5f060a432f5a86cd~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/c110230c5db903db5f060a432f5a86cd~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Mystery Firework", + "preview_image": { + "avg_color": "#FFF1EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/4e85c9fa113131615d4be57419e9b4f7", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4e85c9fa113131615d4be57419e9b4f7~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/4e85c9fa113131615d4be57419e9b4f7~tplv-obj.image" + ], + "width": 0 + }, + "primary_effect_id": 1709, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Love Drop", + "diamond_count": 1800, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#8F8F8F", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/42958ef42904682210b15f62ce824e5b", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/42958ef42904682210b15f62ce824e5b~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/42958ef42904682210b15f62ce824e5b~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 15, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Fly the Gift to the creator/guest to support", + "key": "pm_mt_gift_banner_flyingGift", + "pieces": [] + }, + "left_icon": { + "avg_color": "#B8B8B8", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/d0857daaa739c634e07ced7a309c3d8e", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/d0857daaa739c634e07ced7a309c3d8e~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/d0857daaa739c634e07ced7a309c3d8e~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 4, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#B8B8B8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/1ea684b3104abb725491a509022f7c02", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea684b3104abb725491a509022f7c02~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea684b3104abb725491a509022f7c02~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8277, + "image": { + "avg_color": "#FFEBEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/1ea684b3104abb725491a509022f7c02", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea684b3104abb725491a509022f7c02~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea684b3104abb725491a509022f7c02~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Love Drop", + "primary_effect_id": 2419, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Garland", + "diamond_count": 1500, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7A6D53", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/69d7dadcd93942bad49d0b9874f69c1b", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/69d7dadcd93942bad49d0b9874f69c1b~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/69d7dadcd93942bad49d0b9874f69c1b~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5651, + "image": { + "avg_color": "#7C7CA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/69d7dadcd93942bad49d0b9874f69c1b", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/69d7dadcd93942bad49d0b9874f69c1b~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/69d7dadcd93942bad49d0b9874f69c1b~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Garland ", + "preview_image": { + "avg_color": "#EBCEE1", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/484f474784770636acca4568c1294cb6", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/484f474784770636acca4568c1294cb6~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/484f474784770636acca4568c1294cb6~tplv-obj.image" + ], + "width": 0 + }, + "primary_effect_id": 211, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Champion", + "diamond_count": 1500, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#A37C7C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/58ce827091411e667dd6ba8a93215f86", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/58ce827091411e667dd6ba8a93215f86~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/58ce827091411e667dd6ba8a93215f86~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5955, + "image": { + "avg_color": "#CCA3BE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/58ce827091411e667dd6ba8a93215f86", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/58ce827091411e667dd6ba8a93215f86~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/58ce827091411e667dd6ba8a93215f86~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Champion", + "primary_effect_id": 307, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Chasing the Dream", + "diamond_count": 1500, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FFF8EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/1ea8dbb805466c4ced19f29e9590040f", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea8dbb805466c4ced19f29e9590040f~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea8dbb805466c4ced19f29e9590040f~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7467, + "image": { + "avg_color": "#53537A", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/1ea8dbb805466c4ced19f29e9590040f", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea8dbb805466c4ced19f29e9590040f~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea8dbb805466c4ced19f29e9590040f~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Chasing the Dream", + "primary_effect_id": 1874, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [ + { + "color_effect_id": 478, + "color_id": 1, + "color_image": { + "avg_color": "#CEE5EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/0d53e7c5-7993-4035-9f4c-ca544d477367.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/0d53e7c5-7993-4035-9f4c-ca544d477367.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/0d53e7c5-7993-4035-9f4c-ca544d477367.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Starry Blue", + "color_values": [ + "#80C4FF", + "#80C4FF" + ], + "gift_image": { + "avg_color": "#A3967C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/fireworks_icon_blue.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/fireworks_icon_blue.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/fireworks_icon_blue.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": true + }, + { + "color_effect_id": 483, + "color_id": 2, + "color_image": { + "avg_color": "#FADCF0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/623bb4bd-1bcc-46f9-9abd-59c34e709ab4.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/623bb4bd-1bcc-46f9-9abd-59c34e709ab4.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/623bb4bd-1bcc-46f9-9abd-59c34e709ab4.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Romantic Pink", + "color_values": [ + "#FFA5C1", + "#FFA5C1" + ], + "gift_image": { + "avg_color": "#F1FFEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/fireworks_icon_pink.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/fireworks_icon_pink.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/fireworks_icon_pink.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 484, + "color_id": 3, + "color_image": { + "avg_color": "#B1CCA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/1fe6fd9b-90b2-425c-99d7-cc9389308f63.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/1fe6fd9b-90b2-425c-99d7-cc9389308f63.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/1fe6fd9b-90b2-425c-99d7-cc9389308f63.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Mint Green", + "color_values": [ + "#80E0D5", + "#80E0D5" + ], + "gift_image": { + "avg_color": "#CCB1A3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/fireworks_icon_green.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/fireworks_icon_green.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/fireworks_icon_green.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 485, + "color_id": 4, + "color_image": { + "avg_color": "#EBCECE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/aec39d71-e6e3-49fa-a09d-55efeb6859b3.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/aec39d71-e6e3-49fa-a09d-55efeb6859b3.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/aec39d71-e6e3-49fa-a09d-55efeb6859b3.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Dreamy Purple", + "color_values": [ + "#B689FF", + "#B689FF" + ], + "gift_image": { + "avg_color": "#BCBCE0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/fireworks_icon_purple.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/fireworks_icon_purple.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/fireworks_icon_purple.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + } + ], + "combo": false, + "describe": "sent Fireworks", + "diamond_count": 1088, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 5, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBEBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9494c8a0bc5c03521ef65368e59cc2b8", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9494c8a0bc5c03521ef65368e59cc2b8~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9494c8a0bc5c03521ef65368e59cc2b8~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6090, + "image": { + "avg_color": "#A3897C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9494c8a0bc5c03521ef65368e59cc2b8", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9494c8a0bc5c03521ef65368e59cc2b8~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9494c8a0bc5c03521ef65368e59cc2b8~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Fireworks", + "primary_effect_id": 164, + "tracker_params": { + "gift_property": "color_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Gold Mine", + "diamond_count": 1000, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6 + ], + "gold_effect": "", + "icon": { + "avg_color": "#373752", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/58cbff1bd592ae4365a450c4bf767f3a.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/58cbff1bd592ae4365a450c4bf767f3a.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/58cbff1bd592ae4365a450c4bf767f3a.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5587, + "image": { + "avg_color": "#CCBEA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/58cbff1bd592ae4365a450c4bf767f3a.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/58cbff1bd592ae4365a450c4bf767f3a.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/58cbff1bd592ae4365a450c4bf767f3a.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Gold Mine", + "primary_effect_id": 189, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Email Message", + "diamond_count": 1000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#E0D4BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/c959df6dbffd6f07849d22d2c3c07861", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/c959df6dbffd6f07849d22d2c3c07861~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/c959df6dbffd6f07849d22d2c3c07861~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6199, + "image": { + "avg_color": "#E0C8BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/c959df6dbffd6f07849d22d2c3c07861", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/c959df6dbffd6f07849d22d2c3c07861~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/c959df6dbffd6f07849d22d2c3c07861~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Email Message", + "primary_effect_id": 673, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Mirror Bloom", + "diamond_count": 1000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7C7CA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a9d0e9406230fa9a901d992a90574e39", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a9d0e9406230fa9a901d992a90574e39~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a9d0e9406230fa9a901d992a90574e39~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6200, + "image": { + "avg_color": "#523749", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a9d0e9406230fa9a901d992a90574e39", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a9d0e9406230fa9a901d992a90574e39~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a9d0e9406230fa9a901d992a90574e39~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Mirror Bloom", + "primary_effect_id": 674, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Watermelon Love", + "diamond_count": 1000, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#666666", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/1d1650cd9bb0e39d72a6e759525ffe59", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1d1650cd9bb0e39d72a6e759525ffe59~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/1d1650cd9bb0e39d72a6e759525ffe59~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6781, + "image": { + "avg_color": "#E0C8BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/1d1650cd9bb0e39d72a6e759525ffe59", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1d1650cd9bb0e39d72a6e759525ffe59~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/1d1650cd9bb0e39d72a6e759525ffe59~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Watermelon Love", + "primary_effect_id": 1180, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Travel with You", + "diamond_count": 999, + "duration": 1000, + "for_linkmic": false, + "gift_label_icon": { + "avg_color": "#523737", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0043ba52e0198a90138ceca023773d39", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0043ba52e0198a90138ceca023773d39~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0043ba52e0198a90138ceca023773d39~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 4, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#A3A3CC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/753098e5a8f45afa965b73616c04cf89", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/753098e5a8f45afa965b73616c04cf89~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/753098e5a8f45afa965b73616c04cf89~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6233, + "image": { + "avg_color": "#A37C7C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/753098e5a8f45afa965b73616c04cf89", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/753098e5a8f45afa965b73616c04cf89~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/753098e5a8f45afa965b73616c04cf89~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": true, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Travel with You", + "preview_image": { + "avg_color": "#A37C7C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e930f3944ae299c9e816dc9bf20be44f", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e930f3944ae299c9e816dc9bf20be44f~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e930f3944ae299c9e816dc9bf20be44f~tplv-obj.image" + ], + "width": 0 + }, + "primary_effect_id": 1066, + "random_effect_info": { + "audience_key": "mask2", + "effect_ids": [], + "host_key": "mask1", + "random_gift_bubble": { + "display_text": "" + }, + "random_gift_panel_banner": { + "banner_priority": 0, + "bg_color_values": [], + "collect_num": 0, + "display_text": "", + "round": 0, + "schema_url": "", + "target_num": 0 + } + }, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Train", + "diamond_count": 899, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#3D3D3D", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/4227ed71f2c494b554f9cbe2147d4899", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4227ed71f2c494b554f9cbe2147d4899~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/4227ed71f2c494b554f9cbe2147d4899~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5978, + "image": { + "avg_color": "#53537A", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/4227ed71f2c494b554f9cbe2147d4899", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4227ed71f2c494b554f9cbe2147d4899~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/4227ed71f2c494b554f9cbe2147d4899~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Train", + "primary_effect_id": 375, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Swan", + "diamond_count": 699, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#666666", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/97a26919dbf6afe262c97e22a83f4bf1", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/97a26919dbf6afe262c97e22a83f4bf1~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/97a26919dbf6afe262c97e22a83f4bf1~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5897, + "image": { + "avg_color": "#CEE5EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/97a26919dbf6afe262c97e22a83f4bf1", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/97a26919dbf6afe262c97e22a83f4bf1~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/97a26919dbf6afe262c97e22a83f4bf1~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Swan", + "primary_effect_id": 336, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Money Gun", + "diamond_count": 500, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBFBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e0589e95a2b41970f0f30f6202f5fce6", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e0589e95a2b41970f0f30f6202f5fce6~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e0589e95a2b41970f0f30f6202f5fce6~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7168, + "image": { + "avg_color": "#DCDCFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e0589e95a2b41970f0f30f6202f5fce6", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e0589e95a2b41970f0f30f6202f5fce6~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e0589e95a2b41970f0f30f6202f5fce6~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Money Gun", + "primary_effect_id": 1404, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Coral", + "diamond_count": 499, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7A5353", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/d4faa402c32bf4f92bee654b2663d9f1", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/d4faa402c32bf4f92bee654b2663d9f1~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/d4faa402c32bf4f92bee654b2663d9f1~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5731, + "image": { + "avg_color": "#FADCF0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/d4faa402c32bf4f92bee654b2663d9f1", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/d4faa402c32bf4f92bee654b2663d9f1~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/d4faa402c32bf4f92bee654b2663d9f1~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Coral", + "primary_effect_id": 244, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Boxing Gloves", + "diamond_count": 299, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#89A37C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9f8bd92363c400c284179f6719b6ba9c", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9f8bd92363c400c284179f6719b6ba9c~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9f8bd92363c400c284179f6719b6ba9c~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6007, + "image": { + "avg_color": "#EBFBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9f8bd92363c400c284179f6719b6ba9c", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9f8bd92363c400c284179f6719b6ba9c~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9f8bd92363c400c284179f6719b6ba9c~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Boxing Gloves", + "primary_effect_id": 388, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Duck", + "diamond_count": 299, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7A5353", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e172f660a1d4f95813a3ace0fde42323", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e172f660a1d4f95813a3ace0fde42323~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e172f660a1d4f95813a3ace0fde42323~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6265, + "image": { + "avg_color": "#FAFAFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e172f660a1d4f95813a3ace0fde42323", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e172f660a1d4f95813a3ace0fde42323~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e172f660a1d4f95813a3ace0fde42323~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Duck", + "primary_effect_id": 638, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Corgi", + "diamond_count": 299, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#373752", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/148eef0884fdb12058d1c6897d1e02b9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/148eef0884fdb12058d1c6897d1e02b9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/148eef0884fdb12058d1c6897d1e02b9~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6267, + "image": { + "avg_color": "#CCBEA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/148eef0884fdb12058d1c6897d1e02b9", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/148eef0884fdb12058d1c6897d1e02b9~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/148eef0884fdb12058d1c6897d1e02b9~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Corgi", + "primary_effect_id": 640, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Shiba Inu", + "diamond_count": 222, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#E0C8BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/ddbcee02f5b86b803b0ec34357cd82ec.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ddbcee02f5b86b803b0ec34357cd82ec.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/ddbcee02f5b86b803b0ec34357cd82ec.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5482, + "image": { + "avg_color": "#FADCF0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/ddbcee02f5b86b803b0ec34357cd82ec.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ddbcee02f5b86b803b0ec34357cd82ec.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/ddbcee02f5b86b803b0ec34357cd82ec.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Shiba Inu", + "primary_effect_id": 8, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [ + { + "color_effect_id": 167, + "color_id": 1, + "color_image": { + "avg_color": "#EBEBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/9a8cca7c-386c-4662-b588-72d10c6caf6c.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/9a8cca7c-386c-4662-b588-72d10c6caf6c.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/9a8cca7c-386c-4662-b588-72d10c6caf6c.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Lightning Purple", + "color_values": [ + "#8A8AFF", + "#8A8AFF" + ], + "gift_image": { + "avg_color": "#7C7CA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/08af67ab13a8053269bf539fd27f3873.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/08af67ab13a8053269bf539fd27f3873.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/08af67ab13a8053269bf539fd27f3873.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": true + }, + { + "color_effect_id": 492, + "color_id": 2, + "color_image": { + "avg_color": "#EBEBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/854a3fcd-bdf4-4a13-a3bf-29d6f36e07a9.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/854a3fcd-bdf4-4a13-a3bf-29d6f36e07a9.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/854a3fcd-bdf4-4a13-a3bf-29d6f36e07a9.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Sakura Pink", + "color_values": [ + "#FFA5C1", + "#FFA5C1" + ], + "gift_image": { + "avg_color": "#7C9BA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/glasses_pink_icon.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/glasses_pink_icon.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/glasses_pink_icon.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 493, + "color_id": 3, + "color_image": { + "avg_color": "#89A37C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/a34cc268-1118-4cf1-9efd-295543d32726.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/a34cc268-1118-4cf1-9efd-295543d32726.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/a34cc268-1118-4cf1-9efd-295543d32726.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Rock Blue", + "color_values": [ + "#6699FF", + "#6699FF" + ], + "gift_image": { + "avg_color": "#CCA3A3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/glasses_blue_icon.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/glasses_blue_icon.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/glasses_blue_icon.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 494, + "color_id": 4, + "color_image": { + "avg_color": "#EBCECE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/169b5125-6441-4c5a-974e-5f4afcdb468a.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/169b5125-6441-4c5a-974e-5f4afcdb468a.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/169b5125-6441-4c5a-974e-5f4afcdb468a.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Sunny Orange", + "color_values": [ + "#FFA15E", + "#FFA15E" + ], + "gift_image": { + "avg_color": "#E0BCBC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/glasses_orange_icon.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/glasses_orange_icon.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/glasses_orange_icon.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + } + ], + "combo": false, + "describe": "sent Sunglasses", + "diamond_count": 199, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 5 + ], + "gold_effect": "", + "icon": { + "avg_color": "#53537A", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/08af67ab13a8053269bf539fd27f3873.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/08af67ab13a8053269bf539fd27f3873.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/08af67ab13a8053269bf539fd27f3873.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5509, + "image": { + "avg_color": "#DCF4FA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/08af67ab13a8053269bf539fd27f3873.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/08af67ab13a8053269bf539fd27f3873.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/08af67ab13a8053269bf539fd27f3873.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Sunglasses", + "primary_effect_id": 167, + "tracker_params": { + "gift_property": "color_gift" + }, + "type": 4 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Hearts", + "diamond_count": 199, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#B1CCA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/934b5a10dee8376df5870a61d2ea5cb6.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/934b5a10dee8376df5870a61d2ea5cb6.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/934b5a10dee8376df5870a61d2ea5cb6.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5586, + "image": { + "avg_color": "#FADCF0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/934b5a10dee8376df5870a61d2ea5cb6.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/934b5a10dee8376df5870a61d2ea5cb6.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/934b5a10dee8376df5870a61d2ea5cb6.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Hearts", + "primary_effect_id": 3306, + "tracker_params": {}, + "type": 4 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Lock and Key", + "diamond_count": 199, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#E6FADC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/2c9cec686b98281f7319b1a02ba2864a", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/2c9cec686b98281f7319b1a02ba2864a~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/2c9cec686b98281f7319b1a02ba2864a~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5880, + "image": { + "avg_color": "#B8B8B8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/2c9cec686b98281f7319b1a02ba2864a", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/2c9cec686b98281f7319b1a02ba2864a~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/2c9cec686b98281f7319b1a02ba2864a~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Lock and Key", + "primary_effect_id": 326, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Garland Headpiece", + "diamond_count": 199, + "duration": 3000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#F1FFEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/bdbdd8aeb2b69c173a3ef666e63310f3", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/bdbdd8aeb2b69c173a3ef666e63310f3~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/bdbdd8aeb2b69c173a3ef666e63310f3~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6437, + "image": { + "avg_color": "#607A53", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/bdbdd8aeb2b69c173a3ef666e63310f3", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/bdbdd8aeb2b69c173a3ef666e63310f3~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/bdbdd8aeb2b69c173a3ef666e63310f3~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Garland Headpiece", + "primary_effect_id": 2277, + "tracker_params": {}, + "type": 4 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Love You", + "diamond_count": 199, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#7A6053", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/d7722d5348f4289db80fe7a29f4a6f74", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/d7722d5348f4289db80fe7a29f4a6f74~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/d7722d5348f4289db80fe7a29f4a6f74~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 15, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Say I love you in your own language", + "key": "gift_description_6671", + "pieces": [] + }, + "left_icon": { + "avg_color": "#FAE6DC", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/effdf81513685c4b1c579fa90b84d299", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/effdf81513685c4b1c579fa90b84d299~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/effdf81513685c4b1c579fa90b84d299~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 2, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#373752", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/134e51c00f46e01976399883ca4e4798", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/134e51c00f46e01976399883ca4e4798~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/134e51c00f46e01976399883ca4e4798~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6671, + "image": { + "avg_color": "#524937", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/134e51c00f46e01976399883ca4e4798", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/134e51c00f46e01976399883ca4e4798~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/134e51c00f46e01976399883ca4e4798~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Love You", + "primary_effect_id": 1023, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Cheer For You", + "diamond_count": 199, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#7A5353", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9e0db516157f7d14e5b79184b197a8d3", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7C9BA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/1059dfa76c78dc17d7cf0a1fc2ece185", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1059dfa76c78dc17d7cf0a1fc2ece185~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/1059dfa76c78dc17d7cf0a1fc2ece185~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6713, + "image": { + "avg_color": "#53737A", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/1059dfa76c78dc17d7cf0a1fc2ece185", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1059dfa76c78dc17d7cf0a1fc2ece185~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/1059dfa76c78dc17d7cf0a1fc2ece185~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Cheer For You", + "primary_effect_id": 1210, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Confetti", + "diamond_count": 100, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#524937", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/cb4e11b3834e149f08e1cdcc93870b26", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/cb4e11b3834e149f08e1cdcc93870b26~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/cb4e11b3834e149f08e1cdcc93870b26~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5585, + "image": { + "avg_color": "#FAE6DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/cb4e11b3834e149f08e1cdcc93870b26", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/cb4e11b3834e149f08e1cdcc93870b26~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/cb4e11b3834e149f08e1cdcc93870b26~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Confetti", + "primary_effect_id": 210, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Hand Hearts", + "diamond_count": 100, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#523737", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/6cd022271dc4669d182cad856384870f", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6cd022271dc4669d182cad856384870f~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/6cd022271dc4669d182cad856384870f~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5660, + "image": { + "avg_color": "#E0D4BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/6cd022271dc4669d182cad856384870f", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6cd022271dc4669d182cad856384870f~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/6cd022271dc4669d182cad856384870f~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Hand Hearts", + "primary_effect_id": 214, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Star Throne", + "diamond_count": 7999, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#A37C7C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/30063f6bc45aecc575c49ff3dbc33831", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7764, + "image": { + "avg_color": "#CEE5EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/30063f6bc45aecc575c49ff3dbc33831", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Star Throne", + "primary_effect_id": 1911, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [ + { + "color_effect_id": 217, + "color_id": 1, + "color_image": { + "avg_color": "#A3967C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/a254cce3-3662-4c0e-84d7-d06bf3af3e2e.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/a254cce3-3662-4c0e-84d7-d06bf3af3e2e.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/a254cce3-3662-4c0e-84d7-d06bf3af3e2e.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Sky Blue", + "color_values": [ + "#80C4FF", + "#80C4FF" + ], + "gift_image": { + "avg_color": "#A3967C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0f158a08f7886189cdabf496e8a07c21", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0f158a08f7886189cdabf496e8a07c21~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0f158a08f7886189cdabf496e8a07c21~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": true + }, + { + "color_effect_id": 453, + "color_id": 2, + "color_image": { + "avg_color": "#A3A3CC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/f05eccc4-12ec-488e-8424-1da90271d9f8.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/f05eccc4-12ec-488e-8424-1da90271d9f8.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/f05eccc4-12ec-488e-8424-1da90271d9f8.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Dreamy Pink", + "color_values": [ + "#FFA5C1", + "#FFA5C1" + ], + "gift_image": { + "avg_color": "#FAFAFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/crane_pink_icon.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/crane_pink_icon.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/crane_pink_icon.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 454, + "color_id": 3, + "color_image": { + "avg_color": "#A3967C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/c251d561-de3a-4127-b873-aa952c7bc4c5.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/c251d561-de3a-4127-b873-aa952c7bc4c5.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/c251d561-de3a-4127-b873-aa952c7bc4c5.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Hopeful Orange", + "color_values": [ + "#FFA15E", + "#FFA15E" + ], + "gift_image": { + "avg_color": "#EBEBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/crane_orange_icon.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/crane_orange_icon.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/crane_orange_icon.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + }, + { + "color_effect_id": 455, + "color_id": 4, + "color_image": { + "avg_color": "#A3967C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/6571e34e-b7ff-4d99-8965-e51cefbe4123.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/6571e34e-b7ff-4d99-8965-e51cefbe4123.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/6571e34e-b7ff-4d99-8965-e51cefbe4123.png~tplv-obj.webp" + ], + "width": 0 + }, + "color_name": "Mystery Purple", + "color_values": [ + "#B689FF", + "#B689FF" + ], + "gift_image": { + "avg_color": "#523749", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/crane_purple_icon.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/crane_purple_icon.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/crane_purple_icon.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_default": false + } + ], + "combo": false, + "describe": "sent Paper Crane", + "diamond_count": 99, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 5, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#8F8F8F", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0f158a08f7886189cdabf496e8a07c21", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0f158a08f7886189cdabf496e8a07c21~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0f158a08f7886189cdabf496e8a07c21~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5659, + "image": { + "avg_color": "#EBFBFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0f158a08f7886189cdabf496e8a07c21", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0f158a08f7886189cdabf496e8a07c21~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0f158a08f7886189cdabf496e8a07c21~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Paper Crane", + "primary_effect_id": 217, + "tracker_params": { + "gift_property": "color_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Little Crown", + "diamond_count": 99, + "duration": 3000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#A3C4CC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/cf3db11b94a975417043b53401d0afe1", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/cf3db11b94a975417043b53401d0afe1~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/cf3db11b94a975417043b53401d0afe1~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6097, + "image": { + "avg_color": "#523737", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/cf3db11b94a975417043b53401d0afe1", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/cf3db11b94a975417043b53401d0afe1~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/cf3db11b94a975417043b53401d0afe1~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Little Crown", + "primary_effect_id": 3304, + "tracker_params": {}, + "type": 4 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Cap", + "diamond_count": 99, + "duration": 3000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#3D3D3D", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/6c2ab2da19249ea570a2ece5e3377f04", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6c2ab2da19249ea570a2ece5e3377f04~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/6c2ab2da19249ea570a2ece5e3377f04~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6104, + "image": { + "avg_color": "#523737", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/6c2ab2da19249ea570a2ece5e3377f04", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6c2ab2da19249ea570a2ece5e3377f04~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/6c2ab2da19249ea570a2ece5e3377f04~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Cap", + "primary_effect_id": 2342, + "tracker_params": {}, + "type": 4 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Hat and Mustache", + "diamond_count": 99, + "duration": 3000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#607A53", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/2f1e4f3f5c728ffbfa35705b480fdc92", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/2f1e4f3f5c728ffbfa35705b480fdc92~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/2f1e4f3f5c728ffbfa35705b480fdc92~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6427, + "image": { + "avg_color": "#EBD8CE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/2f1e4f3f5c728ffbfa35705b480fdc92", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/2f1e4f3f5c728ffbfa35705b480fdc92~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/2f1e4f3f5c728ffbfa35705b480fdc92~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Hat and Mustache", + "primary_effect_id": 3499, + "tracker_params": {}, + "type": 4 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Like-Pop", + "diamond_count": 99, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#405237", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/42958ef42904682210b15f62ce824e5b", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/42958ef42904682210b15f62ce824e5b~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/42958ef42904682210b15f62ce824e5b~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 15, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Fly the Gift to the creator/guest to support", + "key": "pm_mt_gift_banner_flyingGift", + "pieces": [] + }, + "left_icon": { + "avg_color": "#D8EBCE", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/d0857daaa739c634e07ced7a309c3d8e", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/d0857daaa739c634e07ced7a309c3d8e~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/d0857daaa739c634e07ced7a309c3d8e~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 3, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FFFFFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/75eb7b4aca24eaa6e566b566c7d21e2f", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/75eb7b4aca24eaa6e566b566c7d21e2f~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/75eb7b4aca24eaa6e566b566c7d21e2f~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8130, + "image": { + "avg_color": "#FFEBF8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/75eb7b4aca24eaa6e566b566c7d21e2f", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/75eb7b4aca24eaa6e566b566c7d21e2f~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/75eb7b4aca24eaa6e566b566c7d21e2f~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Like-Pop", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Gift Box", + "diamond_count": 3999, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 3 + ], + "gold_effect": "", + "icon": { + "avg_color": "#BCD9E0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3646c259f8ce6f79c762ad00ce51dda0", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3646c259f8ce6f79c762ad00ce51dda0~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3646c259f8ce6f79c762ad00ce51dda0~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6835, + "image": { + "avg_color": "#FAFAFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/3646c259f8ce6f79c762ad00ce51dda0", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3646c259f8ce6f79c762ad00ce51dda0~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/3646c259f8ce6f79c762ad00ce51dda0~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Gift Box", + "primary_effect_id": 1151, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Rosa Nebula", + "diamond_count": 15000, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#FAF0DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0ef66437249c64730e551cea6148fb28", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#607A53", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#A3A3CC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/resource/f722088231103b66875dae33f13f8719.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/f722088231103b66875dae33f13f8719.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/f722088231103b66875dae33f13f8719.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8912, + "image": { + "avg_color": "#E0D4BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/resource/f722088231103b66875dae33f13f8719.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/f722088231103b66875dae33f13f8719.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/f722088231103b66875dae33f13f8719.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Rosa Nebula", + "primary_effect_id": 3310, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Heart", + "diamond_count": 10, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBCEE1", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/98bea1b189fba75bf0ca766b4dc1976e.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/98bea1b189fba75bf0ca766b4dc1976e.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/98bea1b189fba75bf0ca766b4dc1976e.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5480, + "image": { + "avg_color": "#A37C7C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/98bea1b189fba75bf0ca766b4dc1976e.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/98bea1b189fba75bf0ca766b4dc1976e.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/98bea1b189fba75bf0ca766b4dc1976e.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Heart", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Leon and Lili", + "diamond_count": 9699, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#FFF8EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0ef66437249c64730e551cea6148fb28", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#FFFFFF", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBE1CE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/resource/6958244f3eeb69ce754f735b5833a4aa.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/6958244f3eeb69ce754f735b5833a4aa.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/6958244f3eeb69ce754f735b5833a4aa.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8916, + "image": { + "avg_color": "#53537A", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/resource/6958244f3eeb69ce754f735b5833a4aa.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/6958244f3eeb69ce754f735b5833a4aa.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/6958244f3eeb69ce754f735b5833a4aa.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Leon and Lili", + "primary_effect_id": 3315, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Forever Rosa", + "diamond_count": 399, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#FAF0DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/0ef66437249c64730e551cea6148fb28", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/0ef66437249c64730e551cea6148fb28~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#A3897C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/resource/863e7947bc793f694acbe970d70440a1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/863e7947bc793f694acbe970d70440a1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/863e7947bc793f694acbe970d70440a1.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8914, + "image": { + "avg_color": "#CCB1A3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/resource/863e7947bc793f694acbe970d70440a1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/863e7947bc793f694acbe970d70440a1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/863e7947bc793f694acbe970d70440a1.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Forever Rosa", + "primary_effect_id": 3311, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Coffee", + "diamond_count": 1, + "duration": 0, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#D6D6D6", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/02492214b9bd50fee2d69fd0d089c025.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/02492214b9bd50fee2d69fd0d089c025.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/02492214b9bd50fee2d69fd0d089c025.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 5479, + "image": { + "avg_color": "#523737", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/02492214b9bd50fee2d69fd0d089c025.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/02492214b9bd50fee2d69fd0d089c025.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/02492214b9bd50fee2d69fd0d089c025.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Coffee", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Thumbs Up", + "diamond_count": 1, + "duration": 1000, + "for_linkmic": true, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 11, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Send a {0:string} to vote and support the host.", + "key": "pm_mt_gift_poll_gift_panel_hint", + "pieces": [ + { + "string_value": "Thumbs Up", + "type": 1 + } + ] + }, + "left_icon": { + "avg_color": "#89A37C", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_poll_banner_icon.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_poll_banner_icon.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_poll_banner_icon.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#7A5353", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/570a663e27bdc460e05556fd1596771a", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/570a663e27bdc460e05556fd1596771a~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/570a663e27bdc460e05556fd1596771a~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6246, + "image": { + "avg_color": "#89A37C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/570a663e27bdc460e05556fd1596771a", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/570a663e27bdc460e05556fd1596771a~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/570a663e27bdc460e05556fd1596771a~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Thumbs Up", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Heart", + "diamond_count": 1, + "duration": 1000, + "for_linkmic": true, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 11, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Send a {0:string} to vote and support the host.", + "key": "pm_mt_gift_poll_gift_panel_hint", + "pieces": [ + { + "string_value": "Heart", + "type": 1 + } + ] + }, + "left_icon": { + "avg_color": "#FADCDC", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_poll_banner_icon.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_poll_banner_icon.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_poll_banner_icon.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#E0BCD4", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/dd300fd35a757d751301fba862a258f1", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/dd300fd35a757d751301fba862a258f1~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/dd300fd35a757d751301fba862a258f1~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6247, + "image": { + "avg_color": "#607A53", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/dd300fd35a757d751301fba862a258f1", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/dd300fd35a757d751301fba862a258f1~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/dd300fd35a757d751301fba862a258f1~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Heart", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Cake Slice", + "diamond_count": 1, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#B8B8B8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9e0db516157f7d14e5b79184b197a8d3", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FFF1EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/f681afb4be36d8a321eac741d387f1e2", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f681afb4be36d8a321eac741d387f1e2~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/f681afb4be36d8a321eac741d387f1e2~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6784, + "image": { + "avg_color": "#7A6D53", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/f681afb4be36d8a321eac741d387f1e2", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f681afb4be36d8a321eac741d387f1e2~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/f681afb4be36d8a321eac741d387f1e2~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Cake Slice", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Glow Stick", + "diamond_count": 1, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#8F8F8F", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9e0db516157f7d14e5b79184b197a8d3", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9e0db516157f7d14e5b79184b197a8d3~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#B8B8B8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/8e1a5d66370c5586545e358e37c10d25", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8e1a5d66370c5586545e358e37c10d25~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/8e1a5d66370c5586545e358e37c10d25~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6788, + "image": { + "avg_color": "#A37C96", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/8e1a5d66370c5586545e358e37c10d25", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8e1a5d66370c5586545e358e37c10d25~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/8e1a5d66370c5586545e358e37c10d25~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Glow Stick", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Love you", + "diamond_count": 1, + "duration": 1000, + "for_linkmic": true, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#C8E0BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/ab0a7b44bfc140923bb74164f6f880ab", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ab0a7b44bfc140923bb74164f6f880ab~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/ab0a7b44bfc140923bb74164f6f880ab~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6890, + "image": { + "avg_color": "#7C9BA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/ab0a7b44bfc140923bb74164f6f880ab", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ab0a7b44bfc140923bb74164f6f880ab~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/ab0a7b44bfc140923bb74164f6f880ab~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 0 + }, + "name": "Love you", + "primary_effect_id": 1204, + "tracker_params": {}, + "type": 2 + } + ], + "page_name": "Gifts", + "page_type": 1, + "region": "PL" + }, + { + "display": false, + "event_name": "livesdk_gift_tab_click", + "force_insert_metrics": {}, + "force_insert_priority_map": {}, + "frequently_used_gifts": [], + "gifts": [ + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Heart Me", + "diamond_count": 1, + "duration": 3000, + "for_linkmic": false, + "gift_label_icon": { + "avg_color": "#CCBEA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/6415678665a355a01e2765ea159c2426", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6415678665a355a01e2765ea159c2426~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/6415678665a355a01e2765ea159c2426~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#524037", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/d56945782445b0b8c8658ed44f894c7b", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/d56945782445b0b8c8658ed44f894c7b~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/d56945782445b0b8c8658ed44f894c7b~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7934, + "image": { + "avg_color": "#666666", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/d56945782445b0b8c8658ed44f894c7b", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/d56945782445b0b8c8658ed44f894c7b~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/d56945782445b0b8c8658ed44f894c7b~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 5 + }, + "name": "Heart Me", + "primary_effect_id": 2996, + "tracker_params": {}, + "type": 4 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Star", + "diamond_count": 99, + "duration": 3000, + "for_linkmic": false, + "gift_label_icon": { + "avg_color": "#CEE5EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/712f2703c388c70dd8ce492961708304", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/712f2703c388c70dd8ce492961708304~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/712f2703c388c70dd8ce492961708304~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#A3897C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/485175fda92f4d2f862e915cbcf8f5c4", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/485175fda92f4d2f862e915cbcf8f5c4~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/485175fda92f4d2f862e915cbcf8f5c4~tplv-obj.webp" + ], + "width": 0 + }, + "id": 6432, + "image": { + "avg_color": "#DCDCFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/485175fda92f4d2f862e915cbcf8f5c4", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/485175fda92f4d2f862e915cbcf8f5c4~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/485175fda92f4d2f862e915cbcf8f5c4~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 0, + "lock": false, + "lock_type": 1 + }, + "name": "Star", + "primary_effect_id": 3309, + "tracker_params": {}, + "type": 4 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": true, + "describe": "sent Cheer You Up", + "diamond_count": 9, + "duration": 1000, + "for_linkmic": false, + "gift_label_icon": { + "avg_color": "#7A6D53", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/697be30d50be77d7e088955422c42837", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/697be30d50be77d7e088955422c42837~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/697be30d50be77d7e088955422c42837~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBCEE1", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/97e0529ab9e5cbb60d95fc9ff1133ea6", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/97e0529ab9e5cbb60d95fc9ff1133ea6~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/97e0529ab9e5cbb60d95fc9ff1133ea6~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8243, + "image": { + "avg_color": "#7A5353", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/97e0529ab9e5cbb60d95fc9ff1133ea6", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/97e0529ab9e5cbb60d95fc9ff1133ea6~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/97e0529ab9e5cbb60d95fc9ff1133ea6~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 10, + "lock": true, + "lock_type": 4 + }, + "name": "Cheer You Up", + "primary_effect_id": 0, + "tracker_params": {}, + "type": 1 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Marvelous Confetti", + "diamond_count": 100, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#524937", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/30be17f62f84d78346634d1a08524cb6", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/30be17f62f84d78346634d1a08524cb6~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/30be17f62f84d78346634d1a08524cb6~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FAF0DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fccc851d351716bc8b34ec65786c727d", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fccc851d351716bc8b34ec65786c727d~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fccc851d351716bc8b34ec65786c727d~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7121, + "image": { + "avg_color": "#FADCDC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fccc851d351716bc8b34ec65786c727d", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fccc851d351716bc8b34ec65786c727d~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fccc851d351716bc8b34ec65786c727d~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 10, + "lock": true, + "lock_type": 3 + }, + "name": "Marvelous Confetti", + "primary_effect_id": 1367, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Hands Up", + "diamond_count": 499, + "duration": 1000, + "for_linkmic": false, + "gift_label_icon": { + "avg_color": "#7A536D", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/f210b086c4710de3432d368c7d4dd458", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f210b086c4710de3432d368c7d4dd458~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/f210b086c4710de3432d368c7d4dd458~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#D6D6D6", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/f4d906542408e6c87cf0a42f7426f0c6", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f4d906542408e6c87cf0a42f7426f0c6~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/f4d906542408e6c87cf0a42f7426f0c6~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8244, + "image": { + "avg_color": "#FFFFFF", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/f4d906542408e6c87cf0a42f7426f0c6", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f4d906542408e6c87cf0a42f7426f0c6~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/f4d906542408e6c87cf0a42f7426f0c6~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 20, + "lock": true, + "lock_type": 4 + }, + "name": "Hands Up", + "primary_effect_id": 2386, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Gem Gun", + "diamond_count": 500, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#FFF1EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/e70ed557a0aebd6799312a98d7c56bc4", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e70ed557a0aebd6799312a98d7c56bc4~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/e70ed557a0aebd6799312a98d7c56bc4~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#E0BCBC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/dd06007ade737f1001977590b11d3f61", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/dd06007ade737f1001977590b11d3f61~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/dd06007ade737f1001977590b11d3f61~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7122, + "image": { + "avg_color": "#CECEEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/dd06007ade737f1001977590b11d3f61", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/dd06007ade737f1001977590b11d3f61~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/dd06007ade737f1001977590b11d3f61~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 15, + "lock": true, + "lock_type": 3 + }, + "name": "Gem Gun", + "primary_effect_id": 1366, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Shiny air balloon", + "diamond_count": 1000, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#666666", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/ec6bc830cd3097553ab35a3f40510947", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ec6bc830cd3097553ab35a3f40510947~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/ec6bc830cd3097553ab35a3f40510947~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FFEBEB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9e7ebdca64b8f90fcc284bb04ab92d24", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9e7ebdca64b8f90fcc284bb04ab92d24~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9e7ebdca64b8f90fcc284bb04ab92d24~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7123, + "image": { + "avg_color": "#A3C4CC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/9e7ebdca64b8f90fcc284bb04ab92d24", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9e7ebdca64b8f90fcc284bb04ab92d24~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/9e7ebdca64b8f90fcc284bb04ab92d24~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 20, + "lock": true, + "lock_type": 3 + }, + "name": "Shiny air balloon", + "primary_effect_id": 1365, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Here We Go", + "diamond_count": 1799, + "duration": 1000, + "for_linkmic": false, + "gift_label_icon": { + "avg_color": "#53737A", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/34ecdc4bc2758742e6f595dd7e25a00a", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/34ecdc4bc2758742e6f595dd7e25a00a~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/34ecdc4bc2758742e6f595dd7e25a00a~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#666666", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/61b76a51a3757f0ff1cdc33b16c4d8ae", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/61b76a51a3757f0ff1cdc33b16c4d8ae~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/61b76a51a3757f0ff1cdc33b16c4d8ae~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8245, + "image": { + "avg_color": "#A3C4CC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/61b76a51a3757f0ff1cdc33b16c4d8ae", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/61b76a51a3757f0ff1cdc33b16c4d8ae~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/61b76a51a3757f0ff1cdc33b16c4d8ae~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 30, + "lock": true, + "lock_type": 4 + }, + "name": "Here We Go", + "primary_effect_id": 2387, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Signature Jet", + "diamond_count": 4888, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#B1CCA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/73dbcd6713411839f66373fdd3d17864", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/73dbcd6713411839f66373fdd3d17864~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/73dbcd6713411839f66373fdd3d17864~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBD8CE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fe27eba54a50c0a687e3dc0f2c02067d", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fe27eba54a50c0a687e3dc0f2c02067d~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fe27eba54a50c0a687e3dc0f2c02067d~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7124, + "image": { + "avg_color": "#B8B8B8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/fe27eba54a50c0a687e3dc0f2c02067d", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fe27eba54a50c0a687e3dc0f2c02067d~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/fe27eba54a50c0a687e3dc0f2c02067d~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 25, + "lock": true, + "lock_type": 3 + }, + "name": "Signature Jet", + "primary_effect_id": 1364, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Happy Party", + "diamond_count": 6999, + "duration": 1000, + "for_linkmic": false, + "gift_label_icon": { + "avg_color": "#666666", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/b4661f3e6096ff7a8e73bccb805af5b8", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/b4661f3e6096ff7a8e73bccb805af5b8~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/b4661f3e6096ff7a8e73bccb805af5b8~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FAF0DC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/41774a8ba83c59055e5f2946d51215b4", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/41774a8ba83c59055e5f2946d51215b4~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/41774a8ba83c59055e5f2946d51215b4~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8247, + "image": { + "avg_color": "#E0C8BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/41774a8ba83c59055e5f2946d51215b4", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/41774a8ba83c59055e5f2946d51215b4~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/41774a8ba83c59055e5f2946d51215b4~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 40, + "lock": true, + "lock_type": 4 + }, + "name": "Happy Party", + "primary_effect_id": 2388, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Fly Love", + "diamond_count": 19999, + "duration": 1000, + "for_linkmic": false, + "gift_label_icon": { + "avg_color": "#A37C96", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/65e93d2177beaf3f78d817cf180b3c04", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/65e93d2177beaf3f78d817cf180b3c04~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/65e93d2177beaf3f78d817cf180b3c04~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 6, + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#EBCEE1", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a598ba4c7024f4d46c1268be4d82f901", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a598ba4c7024f4d46c1268be4d82f901~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a598ba4c7024f4d46c1268be4d82f901~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8248, + "image": { + "avg_color": "#E6FADC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a598ba4c7024f4d46c1268be4d82f901", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a598ba4c7024f4d46c1268be4d82f901~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a598ba4c7024f4d46c1268be4d82f901~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 50, + "lock": true, + "lock_type": 4 + }, + "name": "Fly Love", + "primary_effect_id": 3146, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Premium Shuttle", + "diamond_count": 20000, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#FFF8EB", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/56c23f635641e9269c5e412a7af46779", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/56c23f635641e9269c5e412a7af46779~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/56c23f635641e9269c5e412a7af46779~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#CCBEA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/c2b287adee5151b7889d6e3d45b72e44", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/c2b287adee5151b7889d6e3d45b72e44~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/c2b287adee5151b7889d6e3d45b72e44~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7125, + "image": { + "avg_color": "#E0C8BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/c2b287adee5151b7889d6e3d45b72e44", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/c2b287adee5151b7889d6e3d45b72e44~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/c2b287adee5151b7889d6e3d45b72e44~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 30, + "lock": true, + "lock_type": 3 + }, + "name": "Premium Shuttle", + "primary_effect_id": 1363, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent TikTok Universe+", + "diamond_count": 34999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#7C9BA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/a38cb64298d536086fef4d278efacd87", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a38cb64298d536086fef4d278efacd87~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/a38cb64298d536086fef4d278efacd87~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 9, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "A celebratory message will be displayed with the host\u0027s and your username as well as the gift name in all LIVE videos in your region.", + "key": "pm_mt_live_gift_panel_note_platform_announcement", + "pieces": [] + }, + "left_icon": { + "avg_color": "#A37C96", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_broadcast_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_broadcast_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_broadcast_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#A3967C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/b13105782e8bf8fbefaa83b7af413cee", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/b13105782e8bf8fbefaa83b7af413cee~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/b13105782e8bf8fbefaa83b7af413cee~tplv-obj.webp" + ], + "width": 0 + }, + "id": 7312, + "image": { + "avg_color": "#CCB1A3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/b13105782e8bf8fbefaa83b7af413cee", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/b13105782e8bf8fbefaa83b7af413cee~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/b13105782e8bf8fbefaa83b7af413cee~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": true, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 40, + "lock": true, + "lock_type": 3 + }, + "name": "TikTok Universe+", + "preview_image": { + "avg_color": "#C8E0BC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/14fea2f1fb315a2474b594a44f9d1eef", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/14fea2f1fb315a2474b594a44f9d1eef~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/14fea2f1fb315a2474b594a44f9d1eef~tplv-obj.image" + ], + "width": 0 + }, + "primary_effect_id": 1503, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Thunder Falcon", + "diamond_count": 39999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#CCBEA3", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/2e218842824b3feb82078d6a2d7e48a4", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/2e218842824b3feb82078d6a2d7e48a4~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/2e218842824b3feb82078d6a2d7e48a4~tplv-obj.webp" + ], + "width": 0 + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 0, + "gift_vertical_scenarios": [ + 7 + ], + "gold_effect": "", + "icon": { + "avg_color": "#FFEBF8", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/26f3fbcda383e6093a19b8e7351a164c", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/26f3fbcda383e6093a19b8e7351a164c~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/26f3fbcda383e6093a19b8e7351a164c~tplv-obj.webp" + ], + "width": 0 + }, + "id": 8651, + "image": { + "avg_color": "#A3A3CC", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/26f3fbcda383e6093a19b8e7351a164c", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/26f3fbcda383e6093a19b8e7351a164c~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/26f3fbcda383e6093a19b8e7351a164c~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 43, + "lock": true, + "lock_type": 3 + }, + "name": "Thunder Falcon", + "preview_image": { + "avg_color": "#FAFAFA", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/1bb7bac8a871a584cf4d3a3a89bc5dc6", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1bb7bac8a871a584cf4d3a3a89bc5dc6~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/1bb7bac8a871a584cf4d3a3a89bc5dc6~tplv-obj.image" + ], + "width": 0 + }, + "primary_effect_id": 3321, + "tracker_params": {}, + "type": 2 + }, + { + "can_put_in_gift_box": false, + "color_infos": [], + "combo": false, + "describe": "sent Fire Phoenix", + "diamond_count": 41999, + "duration": 1000, + "for_linkmic": true, + "gift_label_icon": { + "avg_color": "#A37C7C", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/37e0bc3291d0902976d5ef2f16beecf0", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/37e0bc3291d0902976d5ef2f16beecf0~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/37e0bc3291d0902976d5ef2f16beecf0~tplv-obj.webp" + ], + "width": 0 + }, + "gift_panel_banner": { + "banner_lynx_url": "", + "banner_priority": 8, + "bg_color_values": [], + "deprecated": "", + "display_text": { + "default_format": { + "bold": false, + "color": "C0FFFFFF", + "font_size": 14, + "italic": false, + "italic_angle": 0, + "use_heigh_light_color": false, + "use_remote_clor": false, + "weight": 0 + }, + "default_pattern": "Gift includes audio.", + "key": "pm_mt_audio_gift_desc", + "pieces": [] + }, + "left_icon": { + "avg_color": "#524037", + "height": 24, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-sg/gift_audio_icon_v1.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/alisg/webcast-sg/gift_audio_icon_v1.png~tplv-obj.webp" + ], + "width": 24 + }, + "schema_url": "" + }, + "gift_rank_recommend_info": "", + "gift_sub_type": 2, + "gift_vertical_scenarios": [ + 0 + ], + "gold_effect": "", + "icon": { + "avg_color": "#D8EBCE", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/resource/bfb8425a7e8fa03f9fec05a973a4a506.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/bfb8425a7e8fa03f9fec05a973a4a506.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/bfb8425a7e8fa03f9fec05a973a4a506.png~tplv-obj.webp" + ], + "width": 0 + }, + "id": 9092, + "image": { + "avg_color": "#BCBCE0", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/resource/bfb8425a7e8fa03f9fec05a973a4a506.png", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/bfb8425a7e8fa03f9fec05a973a4a506.png~tplv-obj.webp", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/bfb8425a7e8fa03f9fec05a973a4a506.png~tplv-obj.webp" + ], + "width": 0 + }, + "is_box_gift": false, + "is_broadcast_gift": false, + "is_displayed_on_panel": false, + "is_effect_befview": false, + "is_random_gift": false, + "lock_info": { + "gift_level": 46, + "lock": true, + "lock_type": 3 + }, + "name": "Fire Phoenix", + "preview_image": { + "avg_color": "#524937", + "height": 0, + "image_type": 0, + "is_animated": false, + "open_web_url": "", + "uri": "webcast-va/resource/be14408645b15c45d8ac815beb02797d.webp", + "url_list": [ + "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/be14408645b15c45d8ac815beb02797d.webp~tplv-obj.image", + "https://p19-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/be14408645b15c45d8ac815beb02797d.webp~tplv-obj.image" + ], + "width": 0 + }, + "primary_effect_id": 3496, + "tracker_params": { + "gift_property": "audio_gift" + }, + "type": 2 + } + ], + "page_name": "Exclusive", + "page_type": 15, + "region": "" + } + ], + "pannel_refresh": 0 + }, + "extra": { + "log_id": "20231002133528E87C2C2F6956875CCD6A", + "now": 1696253729850 + }, + "status_code": 0 +} \ No newline at end of file diff --git a/Tools/src/main/resources/gifts/output.json b/Tools/src/main/resources/gifts/output.json new file mode 100644 index 0000000..5e2ab21 --- /dev/null +++ b/Tools/src/main/resources/gifts/output.json @@ -0,0 +1,4712 @@ +{ + "37": { + "id": 37, + "name": "Panda", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/833/833aadcba552a8a2cc779dd8d4c537c7/f952c72ee1f40e4fcd07d713b3da6565.png" + }, + "5236": { + "id": 5236, + "name": "Cupid", + "diamondCost": 2888, + "image": "https://storage.streamdps.com/iblock/94f/94f6f0d4bfb3294395007ba45db34a54/e141809d2278e1ca80a5107bce4a16f6.png" + }, + "5237": { + "id": 5237, + "name": "", + "diamondCost": 222, + "image": "https://storage.streamdps.com/iblock/9d2/9d23c31ae150baaa5991ac9a619e6d5e/9dfe7e404a90dadf6d75e91a9a5b6610.png" + }, + "5269": { + "id": 5269, + "name": "TikTok", + "diamondCost": 1, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/802a21ae29f9fae5abe3693de9f874bd~tplv-obj.webp" + }, + "5283": { + "id": 5283, + "name": "Diamond ring of love", + "diamondCost": 300, + "image": "https://storage.streamdps.com/iblock/433/4334f4d32ccb792976b1097ae605d1d0/890c718960ebebdd65f1843ec944f483.png" + }, + "5284": { + "id": 5284, + "name": "Kiss", + "diamondCost": 150, + "image": "https://storage.streamdps.com/iblock/d3d/d3df4a0ecebd25c21e7ce5a6f910f8f1/d9ce143ac4707f74d8b1fe4708a92ab3.png" + }, + "5285": { + "id": 5285, + "name": "", + "diamondCost": 7499, + "image": "https://storage.streamdps.com/iblock/c0a/c0a355126ad400bfc7d7518f84a95370/baf599ef91beee33ee213a3523102b27.png" + }, + "5287": { + "id": 5287, + "name": "Golden sports car", + "diamondCost": 29999, + "image": "https://storage.streamdps.com/iblock/4c1/4c1fa9bee06971f242e06b4578492c3a/2460543c6afe7d35854e3147811fcc1f.png" + }, + "5298": { + "id": 5298, + "name": "", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/4cd/4cd79f6932b880c93c81361473415892/3595f710fa4ee63e38a33880db1fa8bb.png" + }, + "5300": { + "id": 5300, + "name": "Sceptre", + "diamondCost": 150, + "image": "https://storage.streamdps.com/iblock/080/080d7e9dc934f98dd8cf5dce3b5075b2/a62a3963f6d2822177763b51d4328d37.png" + }, + "5301": { + "id": 5301, + "name": "Oud", + "diamondCost": 300, + "image": "https://storage.streamdps.com/iblock/6ba/6ba340c152f9154c8d7c45d18bcb5914/6be86ee5d8a8ebaa17d93b766589b151.png" + }, + "5303": { + "id": 5303, + "name": "Tea", + "diamondCost": 50, + "image": "https://storage.streamdps.com/iblock/240/24051d7263606ed2b02f24f8455cb0a5/4f1cc7de604a1369c5770cc02cbee920.png" + }, + "5319": { + "id": 5319, + "name": "Blue Bead", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/afe/afe8100602b9b735b74ab34365032ec7/d778bfcb66bff177989590909b969ef2.png" + }, + "5324": { + "id": 5324, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/530/5306d2d9c55bedd34a7eeb3be245c500/1e68df6ca0452af948e06cdf1f26ec72.webp" + }, + "5325": { + "id": 5325, + "name": "Tulip Box", + "diamondCost": 200, + "image": "https://storage.streamdps.com/iblock/d44/d4471e5deb9cb5831f846ca4c9df9c5d/7d1236ecd67b3e655c3dfd72673a423d.png" + }, + "5326": { + "id": 5326, + "name": "", + "diamondCost": 222, + "image": "https://storage.streamdps.com/iblock/fcc/fcc4019bcd234d96bad3b89f623eece2/c85ff54bbf43a8a8ddf73956ead1fc74.png" + }, + "5327": { + "id": 5327, + "name": "", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/180/18081ae194738831501ba0d61f6d8b8b/39ee2349baab7a17a225a6d0f01f0482.png" + }, + "5328": { + "id": 5328, + "name": "", + "diamondCost": 150, + "image": "https://storage.streamdps.com/iblock/144/1447a9e248e6c9e7c735c9de51280d4f/73d3f9e7e0f4c1e27fabba537aeee417.png" + }, + "5329": { + "id": 5329, + "name": "", + "diamondCost": 300, + "image": "https://storage.streamdps.com/iblock/d66/d665daa36cf3169396b292e3460bab18/340bf3d573472b1f46de086f91a2a82e.png" + }, + "5333": { + "id": 5333, + "name": "Coffee", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/920/920b64634d946a2238950c353c16df81/0fe22d9bdee1bd6d9d77f66bcd8cf45a.png" + }, + "5335": { + "id": 5335, + "name": "", + "diamondCost": 250, + "image": "https://storage.streamdps.com/iblock/9ca/9ca4b478e5a5960c277650fe37c751d8/641921f92e6512e0f8c1b8965e64a251.png" + }, + "5336": { + "id": 5336, + "name": "Make it rain", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/770/770e03c64144e6d7830e884cd7140a8a/47af803e978121e760d649d47e67de50.png" + }, + "5337": { + "id": 5337, + "name": "Diamond King", + "diamondCost": 1500, + "image": "https://storage.streamdps.com/iblock/d7a/d7a7a3a0933ddead34a48a03d965f77a/bb50ca99cdfbdc705cacff9af43a1b20.png" + }, + "5338": { + "id": 5338, + "name": "Unicorn Fantasy", + "diamondCost": 5000, + "image": "https://storage.streamdps.com/iblock/f1e/f1ef72264d52ca4a27797a7e0dc07679/cd6ceadfd461b15be27e15986029f96b.png" + }, + "5340": { + "id": 5340, + "name": "Castle Fantasy", + "diamondCost": 20000, + "image": "https://storage.streamdps.com/iblock/627/6274dd0d88e316ff29400fba7f909b65/804bfbbd710eb8eea87fc7ebd5c07edc.png" + }, + "5343": { + "id": 5343, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/499/499a6a5c5bcb64b2f1dc9cfa480e7ba6/689ff388f6d753a20c87f3db08aa4165.png" + }, + "5348": { + "id": 5348, + "name": "Unicorn Fantasy", + "diamondCost": 5000, + "image": "https://storage.streamdps.com/iblock/b48/b48d26ae9b05bcaa4d1cd8336df1bcfd/5e1712d8a9e08ee68603a509e2841719.png" + }, + "5351": { + "id": 5351, + "name": "", + "diamondCost": 250, + "image": "https://storage.streamdps.com/iblock/ede/ede8ac459d54cbe48365dee09c8995e0/a58bd31e3fcf548d6a3709a4bbd76867.png" + }, + "5460": { + "id": 5460, + "name": "", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/514/51463d40eff1f315adbe2ecfb7335e41/8306352deadc8b93c841d268c3404ca3.png" + }, + "5461": { + "id": 5461, + "name": "Batik Clothes", + "diamondCost": 1000, + "image": "https://storage.streamdps.com/iblock/46d/46d0f497391a934d27d9b993f444d8b2/121af719b172eed61d8a75c1b1341c9d.png" + }, + "5462": { + "id": 5462, + "name": "Tempe Tofu", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/c93/c9341080d8efd5849e32f1e394a7a96a/c2992a332ca93e9114a6ab0e8b31effd.png" + }, + "5464": { + "id": 5464, + "name": "Ice Tea", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/531/5313a4ca89a7c7588a88898c8f1e9053/dab85392562772099474a050c251d340.png" + }, + "5468": { + "id": 5468, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/4a8/4a8c398ff998abac9ccafdef3e034f1b/a2d91e93c9a2688272b41f36bf8b2fdf.webp" + }, + "5470": { + "id": 5470, + "name": "", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/310/31015c39a9f75ce204ef2ec7b1627354/0b883eea25a6f8584b461b42cc7aed3e.webp" + }, + "5471": { + "id": 5471, + "name": "", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/7b1/7b103692548a8422b431625b1c0727a5/6021e36ce099766e2070216bb2543cbb.webp" + }, + "5472": { + "id": 5472, + "name": "", + "diamondCost": 250, + "image": "https://storage.streamdps.com/iblock/33e/33eef27aa3074abe29509ccd3a54c860/96294b77f19a1e1ab2de24869e211555.webp" + }, + "5474": { + "id": 5474, + "name": "", + "diamondCost": 1500, + "image": "https://storage.streamdps.com/iblock/107/1078946f0fdb220c9742f7d50cf11b63/f1a43887d259d4348b51188303cdb43a.webp" + }, + "5475": { + "id": 5475, + "name": "Unicorn Fantasy", + "diamondCost": 5000, + "image": "https://storage.streamdps.com/iblock/b12/b129b116380a326df64aedb5a269b670/b1409c04e4d7490645dd39e76a078ae3.webp" + }, + "5478": { + "id": 5478, + "name": "Castle Fantasy", + "diamondCost": 20000, + "image": "https://storage.streamdps.com/iblock/270/270a87b201ff12b668ee876e167f0711/d49702e94f92d4583a928aac7f3741b0.png" + }, + "5479": { + "id": 5479, + "name": "Coffee", + "diamondCost": 1, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/02492214b9bd50fee2d69fd0d089c025.png~tplv-obj.webp" + }, + "5480": { + "id": 5480, + "name": "Heart", + "diamondCost": 10, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/98bea1b189fba75bf0ca766b4dc1976e.png~tplv-obj.webp" + }, + "5481": { + "id": 5481, + "name": "Kiss", + "diamondCost": 150, + "image": "https://storage.streamdps.com/iblock/5cc/5cca201687ef878daf36dfe39fd26807/b2171e9cc191783679794f42246c4ceb.webp" + }, + "5482": { + "id": 5482, + "name": "Shiba Inu", + "diamondCost": 222, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ddbcee02f5b86b803b0ec34357cd82ec.png~tplv-obj.webp" + }, + "5483": { + "id": 5483, + "name": "Unicorn Fantasy", + "diamondCost": 5000, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/483c644e67e9bb1dd5970f2df00b7576.png~tplv-obj.webp" + }, + "5485": { + "id": 5485, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/9f8/9f8791f80f9a89c17e6b0a12267e4aad/7b7960c34dac92f9287e5c8628819245.png" + }, + "5486": { + "id": 5486, + "name": "Mishka Bear", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/880/8809f52dbf40e0d670067f8c223d7c04/c603798bc6cd2bdc5a032ddbeb55e258.png" + }, + "5487": { + "id": 5487, + "name": "Finger Heart", + "diamondCost": 5, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a4c4dc437fd3a6632aba149769491f49.png~tplv-obj.webp" + }, + "5488": { + "id": 5488, + "name": "LOVE Balloon", + "diamondCost": 699, + "image": "https://storage.streamdps.com/iblock/02e/02e14e15a34e20b9bc12631b89855609/40e6ba49ff1e8b344199e44b63adcb6f.png" + }, + "5489": { + "id": 5489, + "name": "", + "diamondCost": 2020, + "image": "https://storage.streamdps.com/iblock/7ea/7eabd6c3891f21d15c74aada473eca8e/0662590bc51bf0acb636537d6be01875.png" + }, + "5492": { + "id": 5492, + "name": "", + "diamondCost": 30, + "image": "https://storage.streamdps.com/iblock/f7a/f7aeefc11ee48c6aa32361e56f876564/5850e5d3d17c4b94b1504a99923755ac.webp" + }, + "5494": { + "id": 5494, + "name": "", + "diamondCost": 600, + "image": "https://storage.streamdps.com/iblock/333/3333b417c8b69edffa791f726974034b/163ab7889d62347d5f4b7c932d318847.png" + }, + "5495": { + "id": 5495, + "name": "", + "diamondCost": 800, + "image": "https://storage.streamdps.com/iblock/614/6147e5af09ef205ab8b1c0aa5f65558c/60eb8b563883c39b5924eb2c4e4e2e4c.png" + }, + "5497": { + "id": 5497, + "name": "", + "diamondCost": 30, + "image": "https://storage.streamdps.com/iblock/09d/09d34469b102beb89ecce34bf933a91c/e69f96cb161f4c6d77389817f66111ee.webp" + }, + "5502": { + "id": 5502, + "name": "Crown", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/758/7584af00e82831bcfd9993a0809a2cbd/c2ce45eb539543ef4cd60e9db8cc23e0.png" + }, + "5505": { + "id": 5505, + "name": "", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/7b0/7b07ba10ff1058c961580ba92ee31668/61562eb45de6679426d90a051c7f2140.png" + }, + "5509": { + "id": 5509, + "name": "Sunglasses", + "diamondCost": 199, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/08af67ab13a8053269bf539fd27f3873.png~tplv-obj.webp" + }, + "5511": { + "id": 5511, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/492/4927c56c68336d60842ac7c88795f604/9619fb4518879ee6845fe6cb07d7e1c8.png" + }, + "5513": { + "id": 5513, + "name": "Treasure Chest", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/ef8/ef8e2b32aa2e81e7c7efa1e6913dcbc6/0282de629a9d41f4862150bec2e4f35b.png" + }, + "5514": { + "id": 5514, + "name": "", + "diamondCost": 600, + "image": "https://storage.streamdps.com/iblock/77b/77b29c9978438cbed17bfa7fcfd82a7c/805806ca07c5ed0b4315652ce3952c53.png" + }, + "5518": { + "id": 5518, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/7df/7df9c52ea51c59c0ae174a8d82030d83/63d6b3bee2287cf18316d9a54053b691.png" + }, + "5523": { + "id": 5523, + "name": "Fire", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/0f1/0f100548d20594a29c36938ceaea1a62/9e8ba4ba863ec74182826cd0ec1204f9.webp" + }, + "5525": { + "id": 5525, + "name": "", + "diamondCost": 2, + "image": "https://storage.streamdps.com/iblock/7ee/7ee2691dce9abe77b8b240df29bcccdd/a49bc393af63cd1ffadf7880b98c2af5.webp" + }, + "5530": { + "id": 5530, + "name": "", + "diamondCost": 70, + "image": "https://storage.streamdps.com/iblock/6bf/6bfa9298d04a011cbfb9b12923e6366d/546ec0aefaca6b96a3da4d79a41899b6.png" + }, + "5532": { + "id": 5532, + "name": "", + "diamondCost": 250, + "image": "https://storage.streamdps.com/iblock/f29/f293d2830f4b6b084fb37e3a8c36a078/574ca3e6aa0ee6bb2ab90652b6e6ff50.png" + }, + "5540": { + "id": 5540, + "name": "Disco Ball", + "diamondCost": 1000, + "image": "https://storage.streamdps.com/iblock/3e5/3e5e6d701c936bef5b85a0315b841184/e46e6c47d88c9bb81d27eb700456137a.webp" + }, + "5547": { + "id": 5547, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/2ad/2ad28ef5a49c72186a45999319ff8caf/185c4643c32c2f28e4c6d06fc268c386.png" + }, + "5556": { + "id": 5556, + "name": "", + "diamondCost": 1499, + "image": "https://storage.streamdps.com/iblock/6a9/6a9f61f1ff61286f94b3151c7f43e25c/91a8b3b71217e2f00cc6716717e9cd08.png" + }, + "5557": { + "id": 5557, + "name": "", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/e59/e59e57e18fd130eab199252fc43c3336/d71b054504b6a7e0102b7b12e73b0641.png" + }, + "5559": { + "id": 5559, + "name": "", + "diamondCost": 499, + "image": "https://storage.streamdps.com/iblock/7ee/7eed736538e3381d1060959a4a6265cc/a0688e0e9dbbf0a18129a01a5787eb05.png" + }, + "5560": { + "id": 5560, + "name": "", + "diamondCost": 499, + "image": "https://storage.streamdps.com/iblock/2ce/2ce9387b6c33d43c1d9049b5bd556d8f/e7a3955c02694bfec3ddca17559b0f9b.png" + }, + "5561": { + "id": 5561, + "name": "Diamond Crown", + "diamondCost": 1499, + "image": "https://storage.streamdps.com/iblock/831/8311ff6e37c5a79099e87466a1c3b736/c7aceb6a224a7b11c3360fd88680bd00.png" + }, + "5563": { + "id": 5563, + "name": "", + "diamondCost": 499, + "image": "https://storage.streamdps.com/iblock/2aa/2aa7ab76e1681d5aeb9e153fa6f162ef/5799b00d69ac485d99c2a22c4650f575.png" + }, + "5564": { + "id": 5564, + "name": "Applause", + "diamondCost": 600, + "image": "https://storage.streamdps.com/iblock/a09/a0915afcb04a11f902197349b04ba4a0/61917c0c7d2f180a53b66bfd811cf867.png" + }, + "5566": { + "id": 5566, + "name": "Mishka Bear", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/010/010ccc7a5d5e21231b46cea3223d5b1f/aa9c15ca87e4df8dad9be22164978fc2.png" + }, + "5569": { + "id": 5569, + "name": "Diamond ring of love", + "diamondCost": 300, + "image": "https://storage.streamdps.com/iblock/b51/b51040db9cad0b42963a3e92cdb6a0f5/227066eeb54fadcb19440fbf2a0b5be0.png" + }, + "5576": { + "id": 5576, + "name": "", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/d4e/d4e9ed03b1959256d9696e12fdf2e1cc/49103bb4dec267709f04d79fe8f9d6d7.png" + }, + "5577": { + "id": 5577, + "name": "Kiss", + "diamondCost": 150, + "image": "https://storage.streamdps.com/iblock/c0e/c0e0930ab93f9187cebe2e6a7c4af8d4/7f2d4edfac34eeb6e4d6fcbee47ba8d0.png" + }, + "5582": { + "id": 5582, + "name": "", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/bc4/bc4c562dda32ceefbca63de4f58887e0/8ff34bf3c31b507dd99b177eb6e26429.png" + }, + "5583": { + "id": 5583, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/adc/adcecedc0017b6f36d0c9f00fdbe5afb/46e0eb6c92721024930132b7b258c62f.webp" + }, + "5584": { + "id": 5584, + "name": "", + "diamondCost": 70, + "image": "https://storage.streamdps.com/iblock/765/76592d2de78827cf6b4b559f34b09a73/a0c13d57281d61241449544dd9da4d68.png" + }, + "5585": { + "id": 5585, + "name": "Confetti", + "diamondCost": 100, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/cb4e11b3834e149f08e1cdcc93870b26~tplv-obj.webp" + }, + "5586": { + "id": 5586, + "name": "Hearts", + "diamondCost": 199, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/934b5a10dee8376df5870a61d2ea5cb6.png~tplv-obj.webp" + }, + "5587": { + "id": 5587, + "name": "Gold Mine", + "diamondCost": 1000, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/58cbff1bd592ae4365a450c4bf767f3a.png~tplv-obj.webp" + }, + "5588": { + "id": 5588, + "name": "Nasi Lemak", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/565/56533f45e52bfd5f73f31ddf75812f46/f9aadd4e8227fa94828795c763b22fff.png" + }, + "5590": { + "id": 5590, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/53d/53d7e10ab79743f5d99c699066024f16/a1ca9dc40aba1658b349af42e00a5ca5.webp" + }, + "5592": { + "id": 5592, + "name": "", + "diamondCost": 50, + "image": "https://storage.streamdps.com/iblock/875/875b3ff07bc9db8f71350e5a1d71aeb6/ce96a169ff9ec9b1870eba392ca15d00.png" + }, + "5596": { + "id": 5596, + "name": "Silver Sports Car", + "diamondCost": 1000, + "image": "https://storage.streamdps.com/iblock/8b5/8b5f5642bfb977428531a332da5e4f3c/f1924ed9a683b476bfec562456f2a1fb.png" + }, + "5598": { + "id": 5598, + "name": "Diamond Heart necklace", + "diamondCost": 200, + "image": "https://storage.streamdps.com/iblock/d77/d77639893a76f2f8bf4c2c4d789e00cb/2740d5941e1512225daeecb8f841eb96.png" + }, + "5599": { + "id": 5599, + "name": "Gold necklace", + "diamondCost": 200, + "image": "https://storage.streamdps.com/iblock/aa2/aa26035cd47797211a9ce1b5e51fd7ac/85e66a118c564c318e369974510f371d.png" + }, + "5604": { + "id": 5604, + "name": "Diamond Crown", + "diamondCost": 1499, + "image": "https://storage.streamdps.com/iblock/3b5/3b56c2352a02829ac4445094a3f76b51/738ad17c91919a940ee2001f9f262a95.png" + }, + "5627": { + "id": 5627, + "name": "Romantic Carriage", + "diamondCost": 6000, + "image": "https://storage.streamdps.com/iblock/681/68132980826d9ddb208928c54a798f7f/e4f143cb38a0687729539972b2132ac1.png" + }, + "5630": { + "id": 5630, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/373/373d694c2e79238938bd9ee42f0d8a7b/8ecb8b77a28b047ecfb2d658cd436f18.png" + }, + "5631": { + "id": 5631, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/ecf/ecf0b721b1b346a31fba8b0a17fe6287/5412c67a1cacdfbfc4c01407b8b4263c.png" + }, + "5632": { + "id": 5632, + "name": "", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/b09/b094d9760f3ffb146642573de16f2862/ff1caa5b29a22875b3f11a76238d7761.png" + }, + "5633": { + "id": 5633, + "name": "", + "diamondCost": 70, + "image": "https://storage.streamdps.com/iblock/6c1/6c10a4f5fee70d12db702f29c79a8b41/8696a9346100f9edef4ef374033d8efc.png" + }, + "5634": { + "id": 5634, + "name": "", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/092/09275cdc3aa7bebc06af5244747a52fc/faa81509057b64872d97a5067440c77a.png" + }, + "5644": { + "id": 5644, + "name": "Bungeo-ppang", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/7af/7afe4a4d67c1343a2df4703537b897eb/cd51c9bbb8291363ea4189bd2370eb8c.png" + }, + "5645": { + "id": 5645, + "name": "Tteokbokki", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/81c/81ca5954462f21f506095fe410dd2aaf/c07e9b0bb8d0559874b780495cc0e451.png" + }, + "5650": { + "id": 5650, + "name": "Mic", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/1db/1dbec91a90cdeca9f7fb1ea7280ad5cd/cae0a287f4d2e8d0e1558dcbb4aa3b2f.png" + }, + "5651": { + "id": 5651, + "name": "Garland ", + "diamondCost": 1500, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/69d7dadcd93942bad49d0b9874f69c1b~tplv-obj.webp" + }, + "5652": { + "id": 5652, + "name": "Ferris Wheel", + "diamondCost": 3000, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3c7291ad4c2a6d4f70505c3e296ecebe~tplv-obj.webp" + }, + "5655": { + "id": 5655, + "name": "Rose", + "diamondCost": 1, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/eba3a9bb85c33e017f3648eaf88d7189~tplv-obj.webp" + }, + "5657": { + "id": 5657, + "name": "Lollipop", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/857/85755cf3d5e2e5349efff7eeedbfff46/b5e02fcff0a73b906d530028d460e59d.png" + }, + "5658": { + "id": 5658, + "name": "Perfume", + "diamondCost": 20, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/20b8f61246c7b6032777bb81bf4ee055~tplv-obj.webp" + }, + "5659": { + "id": 5659, + "name": "Paper Crane", + "diamondCost": 99, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0f158a08f7886189cdabf496e8a07c21~tplv-obj.webp" + }, + "5660": { + "id": 5660, + "name": "Hand Hearts", + "diamondCost": 100, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6cd022271dc4669d182cad856384870f~tplv-obj.webp" + }, + "5661": { + "id": 5661, + "name": "Air Dancer", + "diamondCost": 300, + "image": "https://storage.streamdps.com/iblock/8ab/8abe051a8ba9b99026dc3c0a12b59b9e/914def28d5bd9a77be433f35a51d3bc2.png" + }, + "5662": { + "id": 5662, + "name": "Necklace", + "diamondCost": 400, + "image": "https://storage.streamdps.com/iblock/a40/a40013bbd1e38e11c0772f8b605c6c25/567d58bd02385de4af1523980cb03a85.png" + }, + "5663": { + "id": 5663, + "name": "", + "diamondCost": 700, + "image": "https://storage.streamdps.com/iblock/f8f/f8fcfd6ac85963257c471cac08aa24b6/95d6684f1a16cc4d117d744b6024dba1.png" + }, + "5664": { + "id": 5664, + "name": "Pearl", + "diamondCost": 800, + "image": "https://storage.streamdps.com/iblock/d42/d4241b9de546fb190964c12adeecabca/d03fe09dd3400422c55953555066487e.png" + }, + "5665": { + "id": 5665, + "name": "", + "diamondCost": 6000, + "image": "https://storage.streamdps.com/iblock/25a/25a140f196b879bea732044e34590094/a537cc04f612475022893f48962110ac.png" + }, + "5680": { + "id": 5680, + "name": "Disco ball", + "diamondCost": 1000, + "image": "https://storage.streamdps.com/iblock/cdd/cdd759a0d8715e70c1d888c785259620/864a0df77a777eb522157c4d8eb393a3.png" + }, + "5685": { + "id": 5685, + "name": "Enjoy Music", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/82b/82b1fc25e1aab4c5502c31bfd1c001d7/ce0e2cc4cecb12e0fc2938eb4871008c.webp" + }, + "5707": { + "id": 5707, + "name": "Love you", + "diamondCost": 49, + "image": "https://storage.streamdps.com/iblock/ebc/ebc8250bba491bb31de4d4f157069f24/2a1810e910efdec008095096b137f356.png" + }, + "5712": { + "id": 5712, + "name": "Trophy", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/26f/26f17d2bc63c5e3f218ea2f25b245fa2/95d88e55486d8188f4b73c75def4354c.png" + }, + "5713": { + "id": 5713, + "name": "Crown", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/e5f/e5f3fb8fd23314b0d5c77f4cc1e8371f/23b5573f5f080382a0be8a8013dbab2b.png" + }, + "5714": { + "id": 5714, + "name": "", + "diamondCost": 499, + "image": "https://storage.streamdps.com/iblock/ebe/ebe1183d4210e5b0126465270c2fd882/5da3078446b905fd928a1dc5993f1f71.png" + }, + "5718": { + "id": 5718, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/114/114756a7afab8b84efae1062e9acf91b/be4e1bf3190bdd2017d314a796e5d99d.png" + }, + "5719": { + "id": 5719, + "name": "Fire", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/441/4412d8bb2050dfd3780ac56f887c961a/240ad3fc994753581879bb4ab90afb88.png" + }, + "5720": { + "id": 5720, + "name": "Cake", + "diamondCost": 20, + "image": "https://storage.streamdps.com/iblock/edb/edbe349c5a4be01ec1fbf2225d0f48dc/4169ef7f0263177384205df6663451c8.png" + }, + "5729": { + "id": 5729, + "name": "Butterfly", + "diamondCost": 169, + "image": "https://storage.streamdps.com/iblock/452/452ae452eb33dfc55a52248b13c1672c/82022fd917229b464490c1a59c87feb4.png" + }, + "5730": { + "id": 5730, + "name": "", + "diamondCost": 1799, + "image": "https://storage.streamdps.com/iblock/657/657fe8266699f302c2a615b2c456af62/099821d029f7e09306055004a7cf189b.png" + }, + "5731": { + "id": 5731, + "name": "Coral", + "diamondCost": 499, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/d4faa402c32bf4f92bee654b2663d9f1~tplv-obj.webp" + }, + "5732": { + "id": 5732, + "name": "", + "diamondCost": 5199, + "image": "https://storage.streamdps.com/iblock/354/3543f0037ad20fa51dfc28426b0d4a95/20ba46f9ae6b2f3dd8eeea31c1ba4df9.png" + }, + "5734": { + "id": 5734, + "name": "Goggles", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/d72/d72b0ed3743ac09f6593ff529caba3f7/a51257da433617b620e76dcfa2b1da0c.png" + }, + "5737": { + "id": 5737, + "name": "Flowers", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/d88/d88747be57256cd119fcd494a9f7f2df/3bfd01905c5b0b4de3ffeb0d3e698c00.png" + }, + "5738": { + "id": 5738, + "name": "Heart", + "diamondCost": 200, + "image": "https://storage.streamdps.com/iblock/046/046417f5f825f44235c2ae98c56703a2/925cc55f3650d03ad58de6fa0edec143.png" + }, + "5739": { + "id": 5739, + "name": "Money Gun", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/9a4/9a43836ba2f5741d32533f55cabd70ce/b1c519d50bfd7dad777b1112b4f11618.png" + }, + "5740": { + "id": 5740, + "name": "Headphones", + "diamondCost": 20, + "image": "https://storage.streamdps.com/iblock/c85/c855c7003790c37323c0454fb8d88da2/3ae51d5df6848ac6871061d536a23f6f.png" + }, + "5745": { + "id": 5745, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/169/169d0af8d12d420362bd50e15dd85876/e284189393491c50df14974f272ef53c.png" + }, + "5746": { + "id": 5746, + "name": "", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/fb8/fb85f2f24a5361710d230a6fdca97d21/0bf5cf2b14ec820951eaac65b649aef3.png" + }, + "5748": { + "id": 5748, + "name": "", + "diamondCost": 20, + "image": "https://storage.streamdps.com/iblock/874/87462af5f0cb390712032236f06535c8/761e6f552b038fb5fcd0b0b060b53f0c.png" + }, + "5749": { + "id": 5749, + "name": "", + "diamondCost": 20, + "image": "https://storage.streamdps.com/iblock/d8f/d8f7b4fc2b1da203226d2436108cfed0/77f08e3052d6ed5b799603557a9cb3d0.png" + }, + "5750": { + "id": 5750, + "name": "", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/184/184ff2d07bde0b4b4cd7a2d85f1ff78a/bcbd9763b0bea71aee6cae37576fef8f.png" + }, + "5751": { + "id": 5751, + "name": "", + "diamondCost": 20, + "image": "https://storage.streamdps.com/iblock/ce5/ce582324e1645bfe6564def75c4773c6/4e78c467ae2804d2dc856f5fa37f3679.png" + }, + "5753": { + "id": 5753, + "name": "Shooting Stars", + "diamondCost": 1580, + "image": "https://storage.streamdps.com/iblock/b36/b36bb8c332ade25b2e591cd3ed164a99/a06c10f4dc562c24f4f5b6812b9fa01f.png" + }, + "5754": { + "id": 5754, + "name": "", + "diamondCost": 1599, + "image": "https://storage.streamdps.com/iblock/062/062abbecef700a859ea9381e052cb7eb/159d8d991f79381ee4cac1bb98979f6a.png" + }, + "5756": { + "id": 5756, + "name": "Balloons", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/462/462490a4e0da5abad033f4a57564041c/fe0831b660748b851ffd0e5a74847105.png" + }, + "5757": { + "id": 5757, + "name": "Ice cream", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/24a/24af6068b37268c45133d1055eef924c/0fd9ac15921b932e81c18789af22263b.png" + }, + "5759": { + "id": 5759, + "name": "", + "diamondCost": 999, + "image": "https://storage.streamdps.com/iblock/755/7550a71f03a9fde409d617a67d63ce71/5ae110ad74fcde2f20697abbf18cd4c0.png" + }, + "5760": { + "id": 5760, + "name": "Weights", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/d6f/d6f46242fd4f0396f5c5070ff960e83c/87884fe9998fea43e8aa56ecce15a541.png" + }, + "5763": { + "id": 5763, + "name": "Speedboat", + "diamondCost": 1888, + "image": "https://storage.streamdps.com/iblock/55f/55f832ac0d4e25f2527b2cf87ae8af08/ec99908e1787ae32c1387a20db7ca5ac.png" + }, + "5764": { + "id": 5764, + "name": "", + "diamondCost": 538, + "image": "https://storage.streamdps.com/iblock/b01/b01dbb9876619579fc727b7c2bfd4042/ec9caedd673f0fd971cde145d11218c3.png" + }, + "5765": { + "id": 5765, + "name": "Motorcycle", + "diamondCost": 2988, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6517b8f2f76dc75ff0f4f73107f8780e~tplv-obj.webp" + }, + "5767": { + "id": 5767, + "name": "Private Jet", + "diamondCost": 4888, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/921c6084acaa2339792052058cbd3fd3~tplv-obj.webp" + }, + "5774": { + "id": 5774, + "name": "Jetski", + "diamondCost": 2199, + "image": "https://storage.streamdps.com/iblock/b38/b38473c5d43c224d986556d4134342c2/db8aa2a8f093a3475ff18116e54dd5c7.png" + }, + "5776": { + "id": 5776, + "name": "Birthday Cake", + "diamondCost": 300, + "image": "https://storage.streamdps.com/iblock/15b/15b90a8410ae99caf0c2bb06b3efac4b/95b0e8efca45f197166d926310d532a4.png" + }, + "5778": { + "id": 5778, + "name": "Orange Juice", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/3d6/3d635024d8744f8648306d56a5c4f62f/be0f5f006bd2350e904b23b607e4f06b.png" + }, + "5779": { + "id": 5779, + "name": "I love you", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/98a/98aec966c166c73997ef2acda553682d/13c611a6fa3e8a8e00e7e6d4989bf56c.png" + }, + "5780": { + "id": 5780, + "name": "Bouquet Flower", + "diamondCost": 30, + "image": "https://storage.streamdps.com/iblock/ceb/cebb5d5f7004d6ccf9336ae20281be88/5061b1767c2325fe6704eb08d97c5cb8.png" + }, + "5781": { + "id": 5781, + "name": "Diamond", + "diamondCost": 1099, + "image": "https://storage.streamdps.com/iblock/a5d/a5d03d9eab0e85027a77224ef5d3613b/9fda88bace88c7c690b19eaaabc2c64b.png" + }, + "5788": { + "id": 5788, + "name": "Floral Bloom", + "diamondCost": 1500, + "image": "https://storage.streamdps.com/iblock/858/85827a8e5266c8d4c697d9aa930fead6/149392b39b041febde90bc4ea80ce1a5.png" + }, + "5791": { + "id": 5791, + "name": "", + "diamondCost": 29, + "image": "https://storage.streamdps.com/iblock/cdd/cdd5ed6e0c9f19826aae07d9d33eec42/cc11b2f0e54f7c4b523eda30dd5f5377.png" + }, + "5792": { + "id": 5792, + "name": "", + "diamondCost": 69, + "image": "https://storage.streamdps.com/iblock/78b/78bdbbfa3666d05189c455c5f59e7cea/bc86ab09ffa4463dc7d003c71f44d773.png" + }, + "5793": { + "id": 5793, + "name": "", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/864/864f362bf1d66abf1acbb64bf0de43c8/0c5fad0d89d2b2a92ed30829059a59c3.png" + }, + "5794": { + "id": 5794, + "name": "", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/369/369b52ad98206ce414bf59b4fde0560f/12854f04151c6e0e76c172fb97c5514a.png" + }, + "5797": { + "id": 5797, + "name": "", + "diamondCost": 1280, + "image": "https://storage.streamdps.com/iblock/29d/29d5ff73d9a2377c19de724423a7c889/3ceea196db8fa0e7e13cde5e85032d5c.png" + }, + "5798": { + "id": 5798, + "name": "Dancing beaver in sunglasses", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/f0d/f0d0ca698fdf0d0610afd1033d79f4c2/8989843eb6c8f1de3bb6d72260a5d208.png" + }, + "5803": { + "id": 5803, + "name": "Beach House", + "diamondCost": 9999, + "image": "https://storage.streamdps.com/iblock/a92/a927384b7cd171837b82f9deed97395e/d6b06bfc5ee124544576120b8234b1a0.png" + }, + "5804": { + "id": 5804, + "name": "", + "diamondCost": 9, + "image": "https://storage.streamdps.com/iblock/334/33498fa1eb832a3e75a628089e12dd05/cde8931742a5a3d7a5ac5ddba53b9590.png" + }, + "5806": { + "id": 5806, + "name": "", + "diamondCost": 9, + "image": "https://storage.streamdps.com/iblock/3ef/3eff8dbb74fb070c9420de2d836f226e/10f4a6701e4a47754042320d30bd9c3f.png" + }, + "5817": { + "id": 5817, + "name": "", + "diamondCost": 8, + "image": "https://storage.streamdps.com/iblock/351/351c1ad80b9949e78d96b7eecbf9a6b7/c83f054bd7dcf6e7a8747be37e5e4c2c.png" + }, + "5820": { + "id": 5820, + "name": "", + "diamondCost": 488, + "image": "https://storage.streamdps.com/iblock/d59/d5988223ca20aff19a75e12114e936f7/d7ca638449747de9d63099a1dea2abe5.png" + }, + "5822": { + "id": 5822, + "name": "", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/29f/29f5ecab64a8a49be1a22330ccfd7235/1026d754a1c4337bf1dd008f396a4e4d.png" + }, + "5823": { + "id": 5823, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/101/1017a2225a5dad4a7d607fb22ed31eb9/c694724d0be38e01ed4c922050302e13.png" + }, + "5826": { + "id": 5826, + "name": "Cloud Bread", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/116/1166fd0ea70e5a7b7a51d718f2cbd06c/6ebf49c51e627d917d96291316c3f812.png" + }, + "5827": { + "id": 5827, + "name": "Ice Cream Cone", + "diamondCost": 1, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/968820bc85e274713c795a6aef3f7c67~tplv-obj.webp" + }, + "5830": { + "id": 5830, + "name": "", + "diamondCost": 45, + "image": "https://storage.streamdps.com/iblock/a26/a26ded3eb37ca43b0cdba1cf62b4f1c7/b5d4b7798873151113408281c2884b19.png" + }, + "5831": { + "id": 5831, + "name": "", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/ae4/ae4751eec1418b80b5fc49b296ef7df1/71f974c7842b768c05236b3a12530c3f.png" + }, + "5832": { + "id": 5832, + "name": "Cool Cat", + "diamondCost": 499, + "image": "https://storage.streamdps.com/iblock/8d4/8d46ea77e77b6381f77b5867422c5f25/4d31f74591b77f27603315eb1f44488f.png" + }, + "5834": { + "id": 5834, + "name": "", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/96a/96a109176982547a44880c8eacab87d9/026f2f2284c6de98b878589ed44f571b.png" + }, + "5835": { + "id": 5835, + "name": "Sunset in Bali", + "diamondCost": 799, + "image": "https://storage.streamdps.com/iblock/970/97081f479a0fa7bfbd37eab0ce7109c1/9e17c532a2f217b1cd2f01e21783a3db.png" + }, + "5837": { + "id": 5837, + "name": "", + "diamondCost": 10000, + "image": "https://storage.streamdps.com/iblock/eb2/eb20ad6f1991568f0b9798f421f66651/cb7efe6a58bfceeee68c93ca04e76211.png" + }, + "5839": { + "id": 5839, + "name": "", + "diamondCost": 20, + "image": "https://storage.streamdps.com/iblock/9d6/9d67c25ea70cf18a5ac92087094ec9b0/635e168d2d10015647a28d985e8a03b5.png" + }, + "5840": { + "id": 5840, + "name": "", + "diamondCost": 20, + "image": "https://storage.streamdps.com/iblock/d4b/d4bea590c02bc426073341984fa9aef7/e9de8bd5870684464004c2dab159d377.png" + }, + "5843": { + "id": 5843, + "name": "", + "diamondCost": 388, + "image": "https://storage.streamdps.com/iblock/583/583b77ae2c961d85a811a67f3966f2f5/591bdbe070b9f5d743f183253d54cdce.png" + }, + "5850": { + "id": 5850, + "name": "Bubbles", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/4b1/4b1a012395fd18f6ed835539089dd3c3/98688050698f0180bdd46018a4e98ec1.png" + }, + "5852": { + "id": 5852, + "name": "", + "diamondCost": 39, + "image": "https://storage.streamdps.com/iblock/368/368797349fb9ab0d2ad41f6b898c4bad/7c523b69e9c95c1f7e8be9df7b733fe0.png" + }, + "5860": { + "id": 5860, + "name": "Chocolate", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/522/52287f41673e2fd836c83ec78e95f08a/77307666e41e09e54052fd321c2906c4.png" + }, + "5862": { + "id": 5862, + "name": "", + "diamondCost": 499, + "image": "https://storage.streamdps.com/iblock/657/657758a942018c0b310c0df50262c922/f235838688077a0e4c46579bf4acb485.webp" + }, + "5866": { + "id": 5866, + "name": "Birthday Hat", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/626/626b5c670090e1b20b15659bdc852c72/e75b762129d26f346be85d454d826a00.png" + }, + "5867": { + "id": 5867, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/5bc/5bc06dae1979c9bc218b53f8e9266852/b9a8f35eb18cc5ffdc164e5c93eb8d0d.png" + }, + "5868": { + "id": 5868, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/f13/f1360ece75cdd9340aab1cdaa2dd735c/6752fc4bc182ad8bda4fad8e5bccbc5f.webp" + }, + "5876": { + "id": 5876, + "name": "Arcade Game", + "diamondCost": 1200, + "image": "https://storage.streamdps.com/iblock/d5a/d5aaa3c8ef3d271c2f93709c3ff51e67/721d870d5a5d9d82d726ff5a9ba3aa5e.png" + }, + "5879": { + "id": 5879, + "name": "Doughnut", + "diamondCost": 30, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4e7ad6bdf0a1d860c538f38026d4e812~tplv-obj.webp" + }, + "5880": { + "id": 5880, + "name": "Lock and Key", + "diamondCost": 199, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/2c9cec686b98281f7319b1a02ba2864a~tplv-obj.webp" + }, + "5882": { + "id": 5882, + "name": "Rock \u0027n\u0027 Roll", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/954/9549b94076c5bd9d0f7c1b053575d6b5/0449df20dda027cdecb5c4fb1eb433c4.png" + }, + "5885": { + "id": 5885, + "name": "Owl", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/e87/e87fc92de64aa711c6ce23ed3b2214c2/338e115665b1c9f75108b50a43adb95b.png" + }, + "5886": { + "id": 5886, + "name": "Galaxy", + "diamondCost": 1000, + "image": "https://storage.streamdps.com/iblock/33e/33ec65ba07bdcde7975c9f271eed8161/80ea5438ec2ca8fe00ef38dd4d7b3b4b.png" + }, + "5890": { + "id": 5890, + "name": "", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/538/53861f02a937f02242e9c8ea8c736472/4b4b7c48d0f712f11b643d604a54bd01.png" + }, + "5893": { + "id": 5893, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/404/40436175c5ac3c124b3eefac8546d38f/75fd0dc90b620a607aa7b66729b9c0fd.png" + }, + "5894": { + "id": 5894, + "name": "Football", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/c26/c266d3a510b4d06cb2f1cc574bc9247d/7125c3d9741749395f647ce72f3b0941.png" + }, + "5896": { + "id": 5896, + "name": "", + "diamondCost": 200, + "image": "https://storage.streamdps.com/iblock/790/790e5318b6e76f2ea03018754de4b240/3e61c07e6b867128cf96d74e5276c308.png" + }, + "5897": { + "id": 5897, + "name": "Swan", + "diamondCost": 699, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/97a26919dbf6afe262c97e22a83f4bf1~tplv-obj.webp" + }, + "5899": { + "id": 5899, + "name": "Swing", + "diamondCost": 399, + "image": "https://storage.streamdps.com/iblock/8a1/8a16a7c5d463793c8c3ab5aa407a87d8/dee86ec9c8e98ebcc58e2e3c09b93d10.png" + }, + "5900": { + "id": 5900, + "name": "", + "diamondCost": 9, + "image": "https://storage.streamdps.com/iblock/e42/e42acf38f2dfa08afb5d027bd1a96101/94c869adf8664ea28088e33043100dfa.png" + }, + "5901": { + "id": 5901, + "name": "", + "diamondCost": 30, + "image": "https://storage.streamdps.com/iblock/b8a/b8afc465a85668cc09b83ce3dec4a272/d2043f11a08dc2b88dfe29e212c4dea2.png" + }, + "5902": { + "id": 5902, + "name": "Bridal Veil", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/ac0/ac0cbd1870dd92251f6ef620acb652e5/fe8eca664be736231b8e8e2cc2237a15.png" + }, + "5903": { + "id": 5903, + "name": "Fall Candle", + "diamondCost": 1999, + "image": "https://storage.streamdps.com/iblock/dd8/dd8c34b0f17b0f2e859ad9ac4ed02c4e/409338ce2892d9ac2bab3b20990f7b13.png" + }, + "5906": { + "id": 5906, + "name": "Earth", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/0db/0db54eaf38fe9ca66924e04a545c71d0/56c6ce0c159cdc5469db4d47c01b3b95.webp" + }, + "5913": { + "id": 5913, + "name": "", + "diamondCost": 499, + "image": "https://storage.streamdps.com/iblock/aaa/aaad1bafe49f03d1eeb3d2f77109b030/e6c9ba3befc43f64978caa6d0ea08ac8.webp" + }, + "5915": { + "id": 5915, + "name": "Music Note", + "diamondCost": 169, + "image": "https://storage.streamdps.com/iblock/cc1/cc17f136f458a86943d7fd503c0a34b4/c56797b8b830d159f31fe5ca5527f586.png" + }, + "5919": { + "id": 5919, + "name": "Love you", + "diamondCost": 20, + "image": "https://storage.streamdps.com/iblock/728/728eb443836e4ea999aa2cf341f26561/69d6c2bce8f5523d186a03b7eef20e1b.png" + }, + "5924": { + "id": 5924, + "name": "Hand Heart", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/5ce/5cebff2a4b737063778ac5374e9e4792/f9bf5c945eb61002916feff420a1cc3a.png" + }, + "5925": { + "id": 5925, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/5d2/5d2f8db7e2c97c9143c8245b681a6e69/ab1fe2919baa313d8929b872708afbd9.webp" + }, + "5927": { + "id": 5927, + "name": "Balalaika", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/d88/d88bc38371769262c006dccbaa43c9ff/1e0f5adda0546879e07126492ba6001c.webp" + }, + "5929": { + "id": 5929, + "name": "Celebration Rice", + "diamondCost": 300, + "image": "https://storage.streamdps.com/iblock/39d/39dddc09363b056bff4671be4f6730eb/83feaed68d48efff46eded6d40e2318c.png" + }, + "5930": { + "id": 5930, + "name": "Rocket", + "diamondCost": 20000, + "image": "https://storage.streamdps.com/iblock/342/3424264a3bd5e38705631de1c508878a/76dca02d1be3598d806cea9dfc7f70c0.png" + }, + "5933": { + "id": 5933, + "name": "Coffee", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/6d7/6d7c47d7f1862904fb26bf7b8297befb/fe6a95bcfc5abe6545f44983045aae65.png" + }, + "5934": { + "id": 5934, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/f3b/f3bf290827011d07f3d5bfce0f245c68/e3176e65cf7c9aef5e623c65982ab17f.png" + }, + "5937": { + "id": 5937, + "name": "Hanging Lights", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/e03/e03da22fa8c302dbf1d9439c65380549/6d9f912b5a9253f91c01ed58e3ccbe47.png" + }, + "5938": { + "id": 5938, + "name": "Pool Party", + "diamondCost": 4999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4147c5bcfad9623c693f83d5d6cba1f7~tplv-obj.webp" + }, + "5950": { + "id": 5950, + "name": "", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/c33/c3355689a9bfda8584fcce9173e1d126/820a082e64560308552f3371e6bdc5e9.png" + }, + "5951": { + "id": 5951, + "name": "", + "diamondCost": 4888, + "image": "https://storage.streamdps.com/iblock/665/6651720e46478ce3a775743c3132963d/5dc9f7ecd2b92fe6403142cc13034404.png" + }, + "5954": { + "id": 5954, + "name": "Planet", + "diamondCost": 15000, + "image": "https://storage.streamdps.com/iblock/dc5/dc50bbe9b153d9f714919d386325a223/b296c2101cb24bc65e8abd2977d6c123.png" + }, + "5955": { + "id": 5955, + "name": "Champion", + "diamondCost": 1500, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/58ce827091411e667dd6ba8a93215f86~tplv-obj.webp" + }, + "5956": { + "id": 5956, + "name": "", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/0c5/0c55246326097edf2cd6418263a94cc7/e1641719baffc2067165fc1ad4a939cb.png" + }, + "5958": { + "id": 5958, + "name": "", + "diamondCost": 30, + "image": "https://storage.streamdps.com/iblock/948/94864b5c4489c42c2e2210220218f2da/1322caf3fc55494ba940eb60b631973f.png" + }, + "5959": { + "id": 5959, + "name": "Waving Hand", + "diamondCost": 7, + "image": "https://storage.streamdps.com/iblock/6da/6da44060164719c3bcb171fb06d6d0d4/a80d1fa6879b0970246f41c444dca47c.webp" + }, + "5961": { + "id": 5961, + "name": "Coffee", + "diamondCost": 30, + "image": "https://storage.streamdps.com/iblock/87b/87b2a811f1ca8c09060e2bd63a3b3be7/ae6288eb1eab67474807c64b9d69b5e6.webp" + }, + "5963": { + "id": 5963, + "name": "", + "diamondCost": 222, + "image": "https://storage.streamdps.com/iblock/243/24341fcac1b37d46b0a01172c288633e/bbe8af1900be0b91cd9098f2a11ac525.png" + }, + "5964": { + "id": 5964, + "name": "Music Box", + "diamondCost": 2399, + "image": "https://storage.streamdps.com/iblock/f01/f01f2da5e18be863eb7e3a1375bb6206/499e06f8f76e5e90964184c25365cdec.png" + }, + "5965": { + "id": 5965, + "name": "", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/451/4517959ce869d018f96300a21b1a5189/8c9eaede47826efc387b40c0d3a78618.png" + }, + "5974": { + "id": 5974, + "name": "", + "diamondCost": 20, + "image": "https://storage.streamdps.com/iblock/0a1/0a1cd1c386ae85efe762df518fa2e09b/a08116f8765e4b5832821001f87ea081.png" + }, + "5975": { + "id": 5975, + "name": "", + "diamondCost": 15, + "image": "https://storage.streamdps.com/iblock/28b/28b95dd3f30be9229ff5895759002191/799c1bc0eb3b0b18c95c95277adec505.png" + }, + "5976": { + "id": 5976, + "name": "Hot Air Balloon", + "diamondCost": 999, + "image": "https://storage.streamdps.com/iblock/33a/33a5eb58a8dd71677072c9482aad209a/61be5fe5d3d639e3729edbf003a536c7.png" + }, + "5978": { + "id": 5978, + "name": "Train", + "diamondCost": 899, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4227ed71f2c494b554f9cbe2147d4899~tplv-obj.webp" + }, + "5983": { + "id": 5983, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/c0f/c0fdf0e2672efd3f9b37794c43c13366/5d13e5d7bec8b0f3c549be78869e7a3d.png" + }, + "5984": { + "id": 5984, + "name": "", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/ef3/ef3ad45528e68f664b9f668e0a9cf93b/c5da8f2cabf8249d1f159e72cce5e9f6.png" + }, + "5989": { + "id": 5989, + "name": "", + "diamondCost": 2999, + "image": "https://storage.streamdps.com/iblock/bc9/bc905c2c4b46cfdf056a6f484aeac5fc/22349ffbfaa894893a392bfe2e04eb02.png" + }, + "5990": { + "id": 5990, + "name": "", + "diamondCost": 555, + "image": "https://storage.streamdps.com/iblock/627/6271a3ecc3614860585a3aa1c337ca1f/6db1ca1d211999a95accf6f3325db5de.png" + }, + "5994": { + "id": 5994, + "name": "Turkish coffee", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/b1a/b1af09b6f6a337f74c8c0aa3c8ca4ae6/ed0261db4a52540a272958783d97713e.png" + }, + "5995": { + "id": 5995, + "name": "", + "diamondCost": 2888, + "image": "https://storage.streamdps.com/iblock/d40/d4047002a3f1295ed2cf6c31c4f1bdde/95823dddbbb48bf340123c81ce841245.png" + }, + "5996": { + "id": 5996, + "name": "Bumper Cars", + "diamondCost": 1288, + "image": "https://storage.streamdps.com/iblock/53b/53b569311552b729d1b347268370e576/8f236deca90a65e7046f7576d69976af.png" + }, + "5999": { + "id": 5999, + "name": "", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/a87/a870a30386b874dbe52114aa205acbff/d8479366b6454ef1013b3217e1bf53a1.png" + }, + "6002": { + "id": 6002, + "name": "Chocolate Stick", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/5c9/5c9487af2038c340fdbeb0b9ea4ff83e/b377ae8024881b93822f7b0a6bfe04e8.png" + }, + "6005": { + "id": 6005, + "name": "", + "diamondCost": 40, + "image": "https://storage.streamdps.com/iblock/552/55281b35879e3f6ef24d4d74fbf43924/4597e7a58f72687b3063603180f76451.png" + }, + "6006": { + "id": 6006, + "name": "", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/5f0/5f014a2af1e1eec44223880561052a23/951286a4458999e058c8b0d3a29b575b.png" + }, + "6007": { + "id": 6007, + "name": "Boxing Gloves", + "diamondCost": 299, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9f8bd92363c400c284179f6719b6ba9c~tplv-obj.webp" + }, + "6008": { + "id": 6008, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/42b/42b955e38ddeb1ee2f0e3fcf955d265b/e7db90c971983270f03c0260f23445dd.png" + }, + "6009": { + "id": 6009, + "name": "", + "diamondCost": 40, + "image": "https://storage.streamdps.com/iblock/c7e/c7e76b44d9202d5bead8501006841d36/a77a1f71f93b11920712b8206eefc018.webp" + }, + "6031": { + "id": 6031, + "name": "Gaming Chair", + "diamondCost": 1200, + "image": "https://storage.streamdps.com/iblock/bd1/bd14b9754a264a2b1fca22c7171d79ac/448d467dd4d3e6a8945981c52017b11a.png" + }, + "6033": { + "id": 6033, + "name": "Make-up Box", + "diamondCost": 1999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a29aa87203ec09c699e3dafa1944b23e~tplv-obj.webp" + }, + "6034": { + "id": 6034, + "name": "", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/caa/caa0e3e2cdc87759f657c515d839a7d9/9917cc4ca38657550f29759fa7df1439.png" + }, + "6036": { + "id": 6036, + "name": "", + "diamondCost": 600, + "image": "https://storage.streamdps.com/iblock/e8d/e8d02fc12725c5d744ad30f9ee711cda/258bd05e00b11454af9207b8a65af9ef.png" + }, + "6037": { + "id": 6037, + "name": "", + "diamondCost": 2999, + "image": "https://storage.streamdps.com/iblock/e79/e79264b23456045df37f04636f71b081/566d580f3d2d324bdcbb5f5d3dd4ece0.png" + }, + "6038": { + "id": 6038, + "name": "TikTok Universe", + "diamondCost": 34999, + "image": "https://storage.streamdps.com/iblock/a79/a79204e0fab55cdc35ca0bdfa019face/8f06121e1c15be8566b3fc02982a2027.png" + }, + "6039": { + "id": 6039, + "name": "TikTok Universe", + "diamondCost": 34999, + "image": "https://storage.streamdps.com/iblock/49d/49d934dc15cf5efc3ebef902a5974d56/04799e79cb4bd04a20d77d2f3fa9922d.png" + }, + "6040": { + "id": 6040, + "name": "", + "diamondCost": 34999, + "image": "https://storage.streamdps.com/iblock/332/332f1aeccf24c87822773c630d918e67/396e8d54477c748ab8e7cb002a9be7ae.png" + }, + "6041": { + "id": 6041, + "name": "TikTok Universe", + "diamondCost": 34999, + "image": "https://storage.streamdps.com/iblock/374/374cf4298ba2c9817bc87dc2aa48d385/f04c43000c1c33765615c7ef7cacc58d.png" + }, + "6042": { + "id": 6042, + "name": "Mini Speaker", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/1b1/1b117cbff78bfb7f50ba4d90a16c6112/30f4b176fd30683e3cbfc9013fe96d82.png" + }, + "6046": { + "id": 6046, + "name": "Cat Paws", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/c04/c04061e18b637df6759417bfe5418c9c/89bc2c5278f4a3c28acebdd10f6bc089.webp" + }, + "6047": { + "id": 6047, + "name": "", + "diamondCost": 55, + "image": "https://storage.streamdps.com/iblock/38d/38d7289d7230ee1602580b6acc9ab90f/99ef208b8d154b66b9d9f1b2d59f00d3.png" + }, + "6050": { + "id": 6050, + "name": "", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/06d/06d0d3f807b08aec6b02ffccce87e541/5a93ead8cf35f9e5e6b5689b4f851ecd.png" + }, + "6052": { + "id": 6052, + "name": "Gamepad", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/711/711b578c104edcf1639ff4e2e7779660/6cbb6613fbbd40dac6dfd8857b05545a.png" + }, + "6053": { + "id": 6053, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/860/86008e3e4ce0b71f796eee59011d0f52/84c0d957f2103f622b3f7eed30fbd093.png" + }, + "6059": { + "id": 6059, + "name": "Hand Wave", + "diamondCost": 9, + "image": "https://storage.streamdps.com/iblock/c80/c805a9c5c4647c816a003f9882f53a7b/3f3cc197f466a19170c0759dd1e9f1f1.png" + }, + "6064": { + "id": 6064, + "name": "GG", + "diamondCost": 1, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3f02fa9594bd1495ff4e8aa5ae265eef~tplv-obj.webp" + }, + "6070": { + "id": 6070, + "name": "Mirror", + "diamondCost": 30, + "image": "https://storage.streamdps.com/iblock/306/306868d3fb21b7dffe7012c3d340cddc/718a6093224eda33ed0062de345d4edd.png" + }, + "6071": { + "id": 6071, + "name": "Birthday Cake", + "diamondCost": 300, + "image": "https://storage.streamdps.com/iblock/9e8/9e8a10cccba69c6c0ff2ed83fc6bd159/1ec601915a4f7bc2de7550893ab4faf8.png" + }, + "6073": { + "id": 6073, + "name": "Sweet dreams", + "diamondCost": 399, + "image": "https://storage.streamdps.com/iblock/d8a/d8a35b302921e346074a0c2c5904629c/ba6bb44e3400fe52915e643923cf88e5.png" + }, + "6078": { + "id": 6078, + "name": "", + "diamondCost": 899, + "image": "https://storage.streamdps.com/iblock/c20/c20d0514c2f1e08025533c99fa20b5bc/954e1f7d7a69cc28f9673deed2ee8a98.png" + }, + "6081": { + "id": 6081, + "name": "", + "diamondCost": 10999, + "image": "https://storage.streamdps.com/iblock/2ba/2ba404dc50110a73faf35300b1b47c1c/b2d0ddfddb1112277a3abd84e85345ef.png" + }, + "6084": { + "id": 6084, + "name": "Whale diving", + "diamondCost": 1750, + "image": "https://storage.streamdps.com/iblock/5b2/5b27c388fe0d4dbe0a5f0a44ba7a8410/602a5a7cf538240f48ccf47c13237aa2.png" + }, + "6089": { + "id": 6089, + "name": "Sports Car", + "diamondCost": 7000, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e7ce188da898772f18aaffe49a7bd7db~tplv-obj.webp" + }, + "6090": { + "id": 6090, + "name": "Fireworks", + "diamondCost": 1088, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9494c8a0bc5c03521ef65368e59cc2b8~tplv-obj.webp" + }, + "6093": { + "id": 6093, + "name": "Football", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/2e1/2e13ae32a1a89c24cf891ffa79d63ecc/3e53b8b47bfa1760ce4f3f4d71966516.png" + }, + "6094": { + "id": 6094, + "name": "", + "diamondCost": 7999, + "image": "https://storage.streamdps.com/iblock/bec/becdcd0e9d132d351ec602f09b0dd987/328e2987c1db378c70650928f5a3c2af.png" + }, + "6097": { + "id": 6097, + "name": "Little Crown", + "diamondCost": 99, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/cf3db11b94a975417043b53401d0afe1~tplv-obj.webp" + }, + "6101": { + "id": 6101, + "name": "Happy New Year", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/717/71785e60184d69e928972250d3029262/75e3567557eb65c1d9bab3ff99357cdf.webp" + }, + "6102": { + "id": 6102, + "name": "", + "diamondCost": 1999, + "image": "https://storage.streamdps.com/iblock/66f/66f30d9b9b66f3fb00d00808877ae28f/5eb8896ce680486873f0ed7fc337b185.png" + }, + "6103": { + "id": 6103, + "name": "Yacht", + "diamondCost": 9888, + "image": "https://storage.streamdps.com/iblock/b6c/b6c9d3c6df6733cc85149897764d2c6b/023d358a3d7a7a330ed006eb07117582.png" + }, + "6104": { + "id": 6104, + "name": "Cap", + "diamondCost": 99, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6c2ab2da19249ea570a2ece5e3377f04~tplv-obj.webp" + }, + "6105": { + "id": 6105, + "name": "", + "diamondCost": 1299, + "image": "https://storage.streamdps.com/iblock/177/177dab0193d0496d601e0572d2a04cfb/33eea9669b1e1281b4b4d895ab0da2b3.png" + }, + "6106": { + "id": 6106, + "name": "Appetizers", + "diamondCost": 19, + "image": "https://storage.streamdps.com/iblock/76b/76b94aaced493a2448cf655b5468feaf/8c1bea41ec9fb547f0a0eb46d658a1c8.png" + }, + "6108": { + "id": 6108, + "name": "", + "diamondCost": 1999, + "image": "https://storage.streamdps.com/iblock/520/5201480ceab1e865bd632ed4783d456f/045da7ddcff7e238f8f1ba56a5d5984e.png" + }, + "6109": { + "id": 6109, + "name": "", + "diamondCost": 8, + "image": "https://storage.streamdps.com/iblock/f44/f441c76119b07f395a463bf5dbd58fa0/3838a31c0c91c269a4665b61964929c6.png" + }, + "6110": { + "id": 6110, + "name": "", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/755/7554b4a059474294a01241f9065b0b12/3c499a6504236ff8ec6d072747ce0230.png" + }, + "6113": { + "id": 6113, + "name": "", + "diamondCost": 9, + "image": "https://storage.streamdps.com/iblock/6d8/6d809e8e6318e64b7e8c80fd325b7a0b/fa9bf2e6d0a5a19b945e6c4cc4e10af8.png" + }, + "6116": { + "id": 6116, + "name": "", + "diamondCost": 350, + "image": "https://storage.streamdps.com/iblock/0cc/0cc3d2a05f8b144a89e5085babe58df1/6a9228b76d83c24deec7ff7dd6a62e0b.png" + }, + "6117": { + "id": 6117, + "name": "", + "diamondCost": 1000, + "image": "https://storage.streamdps.com/iblock/75e/75eea170ca8af33c8ab06687352f0ff1/d7e32d4f6bda8636efe6a72d980b812c.png" + }, + "6120": { + "id": 6120, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/bac/bacb601bc4f4aef436a55a7f7f7cf6bc/f560894e388b792e6006c645d20c71f1.png" + }, + "6122": { + "id": 6122, + "name": "", + "diamondCost": 399, + "image": "https://storage.streamdps.com/iblock/ea1/ea1a0dccb59d97dbe0af3890990c5ac7/3397f062e466ecb2724f9c37946c4acb.png" + }, + "6124": { + "id": 6124, + "name": "", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/df8/df881441ea8702ab97e414a4f1bd0f2a/74408e64e3907ff9f2e39bde299c9d50.png" + }, + "6125": { + "id": 6125, + "name": "Love You", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/df0/df0c467bdbd803c8dc6a844499723d20/af65c7b68fb75877a5ecad188c27880a.png" + }, + "6126": { + "id": 6126, + "name": "Gummy", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/c33/c338d672d2ccd9de8df40d7afe23e041/cf38b075df9389388a847e24a5af4a9e.png" + }, + "6127": { + "id": 6127, + "name": "", + "diamondCost": 15, + "image": "https://storage.streamdps.com/iblock/f98/f98a6279b415890bf765dcd5cb4fbfc2/c70d67c059b47d5dab8c844e7b562d86.png" + }, + "6129": { + "id": 6129, + "name": "", + "diamondCost": 30, + "image": "https://storage.streamdps.com/iblock/0d1/0d163259f296d4998033056d8d571187/88a9c3033eb087b548b9dbac8d6de23b.png" + }, + "6130": { + "id": 6130, + "name": "", + "diamondCost": 14999, + "image": "https://storage.streamdps.com/iblock/32d/32d9ebe6a9828ddc42935f67604bc663/9d14fb627c6f623b0c9ead9a644bb054.webp" + }, + "6131": { + "id": 6131, + "name": "", + "diamondCost": 9999, + "image": "https://storage.streamdps.com/iblock/be9/be96e1006eab914f18148bee0a1ce727/f59d724c31fd0237e17c10ab9a409ae4.png" + }, + "6132": { + "id": 6132, + "name": "Beach Date", + "diamondCost": 899, + "image": "https://storage.streamdps.com/iblock/504/504a5dfef033a7e90e4f07987b0c0f28/70ec484fc4c798d3e09a7fbcae83ee95.png" + }, + "6134": { + "id": 6134, + "name": "", + "diamondCost": 177, + "image": "https://storage.streamdps.com/iblock/793/793d7656476b0cc43abb97a77b5aae45/ee8b319182f98f09c3af11970810d0af.png" + }, + "6135": { + "id": 6135, + "name": "", + "diamondCost": 1777, + "image": "https://storage.streamdps.com/iblock/134/134ffa09d3564d92de706dd0236c3274/865bd053f8cb91e72bb3da8876503761.png" + }, + "6148": { + "id": 6148, + "name": "Flower Overflow", + "diamondCost": 4000, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/743c4bb44e7e0bf251a7f2f5ada231ee~tplv-obj.webp" + }, + "6149": { + "id": 6149, + "name": "Interstellar", + "diamondCost": 10000, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8520d47b59c202a4534c1560a355ae06~tplv-obj.webp" + }, + "6169": { + "id": 6169, + "name": "Tennis", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/f20/f20121609887f7ff35952c1bc52529e2/9ff66229b1f81d21b15444ba2b53db98.png" + }, + "6170": { + "id": 6170, + "name": "", + "diamondCost": 30, + "image": "https://storage.streamdps.com/iblock/a99/a99dacbb352a8025f4a03b7df8852795/efa5c140c66414a246b7c388e3097f22.png" + }, + "6178": { + "id": 6178, + "name": "", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/61f/61f61fae7a0abbe310321d5290a4f809/0fcc3484f8c138ceb62175e70111d10c.webp" + }, + "6185": { + "id": 6185, + "name": "", + "diamondCost": 1599, + "image": "https://storage.streamdps.com/iblock/27c/27caacf556adb33768fe06255f74513c/eeaf5b2d6079062d183386c2f723cfc5.png" + }, + "6194": { + "id": 6194, + "name": "", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/99f/99ffb3ba22c1882f8f6433c6447b5f4c/e95f311b0e1b19324c2acad263a17d44.png" + }, + "6199": { + "id": 6199, + "name": "Email Message", + "diamondCost": 1000, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/c959df6dbffd6f07849d22d2c3c07861~tplv-obj.webp" + }, + "6200": { + "id": 6200, + "name": "Mirror Bloom", + "diamondCost": 1000, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a9d0e9406230fa9a901d992a90574e39~tplv-obj.webp" + }, + "6202": { + "id": 6202, + "name": "", + "diamondCost": 1999, + "image": "https://storage.streamdps.com/iblock/b46/b46835f69bfe867264e419277d4b119a/c5c7cd3931f98d1500e911b9fe8d425d.png" + }, + "6203": { + "id": 6203, + "name": "Sunset Speedway", + "diamondCost": 10000, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/df63eee488dc0994f6f5cb2e65f2ae49~tplv-obj.webp" + }, + "6204": { + "id": 6204, + "name": "Restaurants", + "diamondCost": 4000, + "image": "https://storage.streamdps.com/iblock/433/433c446cf17e43ca62dab39f8e402493/e13d90cd77d8d089fc9efae8ed0f5dbe.png" + }, + "6205": { + "id": 6205, + "name": "Love Chat", + "diamondCost": 400, + "image": "https://storage.streamdps.com/iblock/440/4402267722e227b72adc97db92504b75/ae0f562146e701f32ae96761ac67c5cc.png" + }, + "6209": { + "id": 6209, + "name": "Chicken Leg", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/ef7/ef776169ede6c4a635cef2b3ab35d29a/7683229a73330c04463d2b97984ea114.png" + }, + "6233": { + "id": 6233, + "name": "Travel with You", + "diamondCost": 999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/753098e5a8f45afa965b73616c04cf89~tplv-obj.webp" + }, + "6240": { + "id": 6240, + "name": "", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/ec6/ec66e855e1ee52c850d5458d96599d66/8fdbdc30beff2247ad4214392cab00dd.png" + }, + "6242": { + "id": 6242, + "name": "Mariachi Hat", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/51c/51c4798a037aeb652d43631af3e7634e/846f79297d6cf7d029fa3074765139c7.png" + }, + "6244": { + "id": 6244, + "name": "Sakura Train", + "diamondCost": 3999, + "image": "https://storage.streamdps.com/iblock/a8e/a8e50d5c5d0eaa42bd71dbeca3b1b95a/204910c857958e7e9efd0178d30a2fbe.png" + }, + "6246": { + "id": 6246, + "name": "Thumbs Up", + "diamondCost": 1, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/570a663e27bdc460e05556fd1596771a~tplv-obj.webp" + }, + "6247": { + "id": 6247, + "name": "Heart", + "diamondCost": 1, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/dd300fd35a757d751301fba862a258f1~tplv-obj.webp" + }, + "6248": { + "id": 6248, + "name": "DJ Set", + "diamondCost": 20, + "image": "https://storage.streamdps.com/iblock/d75/d7572b61a93c092616c038eff95cee10/305f02f65f6fab1bb4c6f3d90ce6c043.png" + }, + "6249": { + "id": 6249, + "name": "Rugby Ball", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/d53/d53d3efae1c69b949373db455da077cf/fa22f0507a304597b013268524a8573f.png" + }, + "6263": { + "id": 6263, + "name": "Magic Stage", + "diamondCost": 2599, + "image": "https://storage.streamdps.com/iblock/399/399df717aefef9de9259e8256221076f/dfa2835c35b2177701ee65139bdfc59a.png" + }, + "6265": { + "id": 6265, + "name": "Duck", + "diamondCost": 299, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e172f660a1d4f95813a3ace0fde42323~tplv-obj.webp" + }, + "6267": { + "id": 6267, + "name": "Corgi", + "diamondCost": 299, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/148eef0884fdb12058d1c6897d1e02b9~tplv-obj.webp" + }, + "6269": { + "id": 6269, + "name": "Basketball", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/1e1/1e15c5768844b752893c47c9699ffa5e/ac594ceeb59aa16782bfa62a46d832d8.png" + }, + "6271": { + "id": 6271, + "name": "Falcon", + "diamondCost": 10999, + "image": "https://storage.streamdps.com/iblock/702/702e6d0287a1e868c69fbe2f6b3635a6/7a7a82b571ba63ccd3ca514c887b3130.png" + }, + "6286": { + "id": 6286, + "name": "Wedding", + "diamondCost": 1400, + "image": "https://storage.streamdps.com/iblock/7be/7beeb7f1098cf5f784739a0be38a06f8/0678483823c912e4dea96fa19a2f0d86.png" + }, + "6293": { + "id": 6293, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/41a/41a98b8bd1e6e7c5f3e60559895886a7/3b7fbd6377416a52f8ea1a25bf03380c.png" + }, + "6294": { + "id": 6294, + "name": "", + "diamondCost": 1500, + "image": "https://storage.streamdps.com/iblock/784/784dddffc6d363a76fa9754ca7e49a9f/34d6a1b4c18f909fee47d37a849531c1.png" + }, + "6305": { + "id": 6305, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/ac7/ac7f3e76b974e0be1aa99b1f21fcabec/9106b40d0f159368bd35bb0d180f4f17.png" + }, + "6306": { + "id": 6306, + "name": "", + "diamondCost": 30, + "image": "https://storage.streamdps.com/iblock/4b9/4b9ec0afb9f0f9308ef65500cd71263a/bc0db4bff10a7c656f569cc0403e5bc3.png" + }, + "6307": { + "id": 6307, + "name": "", + "diamondCost": 1999, + "image": "https://storage.streamdps.com/iblock/8a6/8a6cf2aa797c2df645386840dcaf1fc6/2595f45b8ddb760d60220acaab11b505.png" + }, + "6320": { + "id": 6320, + "name": "Star Adventures", + "diamondCost": 1999, + "image": "https://storage.streamdps.com/iblock/411/4116197948fd486fa5543b87eae4e89e/e6895f7490ccd06c913917ab3e0f1884.png" + }, + "6322": { + "id": 6322, + "name": "Camping", + "diamondCost": 250, + "image": "https://storage.streamdps.com/iblock/9a9/9a9370a392311149be37e7c40c3e960d/ecb9dcdacf3a2ae0abef79baf0c4f41c.webp" + }, + "6327": { + "id": 6327, + "name": "Airship", + "diamondCost": 1999, + "image": "https://storage.streamdps.com/iblock/85e/85e8a2811f78d9e6df7d00419394b88c/da5e075e4040fd8a3b60d4f28a2fb5db.webp" + }, + "6328": { + "id": 6328, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/662/662b2d1b38e4b9e58670f36f72c4bb41/ae13cd410c8245fd6f8a0bf29003c75a.png" + }, + "6334": { + "id": 6334, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/cc4/cc451f5bea23053235ed7b93e487c52c/6a0eaa7f82551a4f44a9d8f557a54511.png" + }, + "6345": { + "id": 6345, + "name": "Cat", + "diamondCost": 3999, + "image": "https://storage.streamdps.com/iblock/dfe/dfefcaf9c4bc67e2ee681ba16c646224/6a33ae8b701c16dc57ff97fac4d16eca.png" + }, + "6348": { + "id": 6348, + "name": "Rabbit", + "diamondCost": 1999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/61b42d630091b661e82fc8ed400b1de2~tplv-obj.webp" + }, + "6350": { + "id": 6350, + "name": "Welcome", + "diamondCost": 9, + "image": "https://storage.streamdps.com/iblock/dda/ddaf400cc8b931bf1f1b2cdad4a9f7b0/2239c73a8edc68cfe66d2fae426d83bc.png" + }, + "6355": { + "id": 6355, + "name": "", + "diamondCost": 9999, + "image": "https://storage.streamdps.com/iblock/8d2/8d2072fad98ea8805575aed3dc66f4ea/05ea7c3ef47d2eae11908eecba1e0532.png" + }, + "6358": { + "id": 6358, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/629/629a3d4b3d7980a9f93a87f8939c2251/a02bc3cfb88c83a474d9d8cdb91d7051.png" + }, + "6365": { + "id": 6365, + "name": "Money Gun", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/25f/25f030f47cfc60d296bb1041ddb91f6e/ca3357a76a2be178c581530009ce215a.png" + }, + "6369": { + "id": 6369, + "name": "Lion", + "diamondCost": 29999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4fb89af2082a290b37d704e20f4fe729~tplv-obj.webp" + }, + "6381": { + "id": 6381, + "name": "Telephone Box", + "diamondCost": 2100, + "image": "https://storage.streamdps.com/iblock/a2e/a2ee002433a7295464359db46c025adf/5f026787f952abbffd3d7fc1b4cbe1c2.webp" + }, + "6383": { + "id": 6383, + "name": "Raya Rice", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/e0c/e0c375df5bdce1c926f46244ced54ecc/1bd688843c1c24370b8c4a74686c2c0d.png" + }, + "6386": { + "id": 6386, + "name": "", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/535/5352db1d91a5a957e11e62487ff8ab01/70a440434d7a9610b1dfeb5f28005f3a.png" + }, + "6390": { + "id": 6390, + "name": "Teasing", + "diamondCost": 401, + "image": "https://storage.streamdps.com/iblock/e14/e14c9b35975f1da5b8a5e3f116dae2bb/9f8cea9b65620e8376e44802c25ddf27.png" + }, + "6393": { + "id": 6393, + "name": "", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/9ac/9ac682d8a906e071def06929fca8ac7a/36982973f4f0f8ef9ebb4bb67494f72a.webp" + }, + "6398": { + "id": 6398, + "name": "Party hat", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/e92/e924ae4ad405da962162650abe98c01f/403b19fc0f2f47739d32448548be3263.png" + }, + "6409": { + "id": 6409, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/65d/65d5f697d8fa58d92b3359f71617e2fd/091b1fa33ace97ee367c97ab19e590a0.png" + }, + "6410": { + "id": 6410, + "name": "", + "diamondCost": 50, + "image": "https://storage.streamdps.com/iblock/e0c/e0cc8df334daa7975e2cf574d4572221/8fe1e33bcedfcef54406bf69ac070a96.png" + }, + "6411": { + "id": 6411, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/e7d/e7dd9a4fb21a968098e1e7e4ef07a840/3086f9317df9f35c2115570cfca1fdd0.png" + }, + "6414": { + "id": 6414, + "name": "", + "diamondCost": 1500, + "image": "https://storage.streamdps.com/iblock/451/451114f8427742947101930cfd84cae5/9c01b5a528aa345b8d40bde43dbbc26c.webp" + }, + "6415": { + "id": 6415, + "name": "Music", + "diamondCost": 499, + "image": "https://storage.streamdps.com/iblock/366/3663e0462a9eb4519288bf93fce16a76/ee50d49d9ab88cac71617c69be201161.webp" + }, + "6416": { + "id": 6416, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/ce5/ce57f012363358333397b6c72704b466/aa71c1c351b698c09a151a434bfd2652.png" + }, + "6427": { + "id": 6427, + "name": "Hat and Mustache", + "diamondCost": 99, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/2f1e4f3f5c728ffbfa35705b480fdc92~tplv-obj.webp" + }, + "6428": { + "id": 6428, + "name": "", + "diamondCost": 1700, + "image": "https://storage.streamdps.com/iblock/605/6057daf816ed32ad97ef0250fa02ae1e/92e61863514c008cd0332fa7c37cf2b9.png" + }, + "6429": { + "id": 6429, + "name": "", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/cae/cae97c5fade3e05b2617b9ffd94d4f6b/e1970c1175394d7985ba5edbc05da5c4.png" + }, + "6431": { + "id": 6431, + "name": "Beach Day", + "diamondCost": 2999, + "image": "https://storage.streamdps.com/iblock/c2d/c2df4a57f2ab16e641630b7077b40900/ba3cf6fd32d224f0014bd395b011f7a0.webp" + }, + "6432": { + "id": 6432, + "name": "Star", + "diamondCost": 99, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/485175fda92f4d2f862e915cbcf8f5c4~tplv-obj.webp" + }, + "6433": { + "id": 6433, + "name": "", + "diamondCost": 9999, + "image": "https://storage.streamdps.com/iblock/f58/f58d7bbd4424aa917e6026f7279356a9/c56db7470ce92d580021ce55a670b544.png" + }, + "6435": { + "id": 6435, + "name": "Daffodils", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/2ed/2edf26fa90a7b3ca44c0d7c77a765c77/c333c68579488e9a36f4130481932b7c.png" + }, + "6436": { + "id": 6436, + "name": "Love Focus", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/cd1/cd1096cb1507fe07b633dad0b0aee967/d6b2e544219ed4d3c3263d319ab9bc5f.png" + }, + "6437": { + "id": 6437, + "name": "Garland Headpiece", + "diamondCost": 199, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/bdbdd8aeb2b69c173a3ef666e63310f3~tplv-obj.webp" + }, + "6443": { + "id": 6443, + "name": "", + "diamondCost": 999, + "image": "https://storage.streamdps.com/iblock/512/51248b61e771b90fd1e7c6be7419f0c1/09d3e58f5dc365786c66917267bf1ac8.png" + }, + "6447": { + "id": 6447, + "name": "Daisies", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/e11/e110e47562d77ab5fa26cc31e840f801/a4a1823ef2c1bc65c4dc2a4e82ec446b.png" + }, + "6454": { + "id": 6454, + "name": "", + "diamondCost": 399, + "image": "https://storage.streamdps.com/iblock/1ea/1ea61b7dc551f208803b472512fdb528/42847d05da5f96cce0c2cf737ce374a4.png" + }, + "6458": { + "id": 6458, + "name": "", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/3bd/3bde1a36b8b4e7cdb214a2bf08cb5c13/e819d3aa780581caf25ca08cd254b29e.webp" + }, + "6465": { + "id": 6465, + "name": "", + "diamondCost": 408, + "image": "https://storage.streamdps.com/iblock/e4f/e4fa28f8739c55f1bb980fb190cc9181/c608aa9d3544f952e8d5b2a2992bbc18.png" + }, + "6466": { + "id": 6466, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/9d9/9d9ca786b77d6c67d408c974e9e285bd/6592047ca6d5cacd01d06f47653633f4.png" + }, + "6467": { + "id": 6467, + "name": "Game Controller", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/603/6032c1b0d5c2c07abe04956b3cdd45cd/d75d75a7e81f96f39d2ffd574063924f.png" + }, + "6468": { + "id": 6468, + "name": "", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/4b1/4b18c8a4dbb5d626dceade0d8d85da4f/eee447014ba2c6adc6c63c148e4106f5.png" + }, + "6470": { + "id": 6470, + "name": "May", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/ec6/ec6d320bb93df97057208f5163d81a92/67cb233e8cf0454213300c945b2f9256.webp" + }, + "6471": { + "id": 6471, + "name": "Hi May", + "diamondCost": 88, + "image": "https://storage.streamdps.com/iblock/970/970b0a868ce24c4b7b7059a904fa7b00/622d597d3cec282d6d2c8129fedd5075.png" + }, + "6472": { + "id": 6472, + "name": "Mp3", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/20a/20a06df8f2d9428df8fd690a7ce4bdaf/40a50efc8884f8c973a58a749350c9c3.png" + }, + "6479": { + "id": 6479, + "name": "", + "diamondCost": 1000, + "image": "https://storage.streamdps.com/iblock/d03/d03c2c1b4c2490dc947cdb10e8ad953f/ffcc048258835d6cbceccd65e8f0ee71.webp" + }, + "6481": { + "id": 6481, + "name": "", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/915/915b41ae980d18d5d1a376f42102e20b/6d4678c4e5c4b30ea51809cfef3aa618.webp" + }, + "6483": { + "id": 6483, + "name": "", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/868/8683388d9e7b33f0f7955ebbf00dfff4/23de767c8a572ad27fd25f953ffe8069.webp" + }, + "6484": { + "id": 6484, + "name": "", + "diamondCost": 9, + "image": "https://storage.streamdps.com/iblock/05b/05b7f7e8887befe580e6fa80346b64a6/f575b51c282df09d58d7923729c5e0cb.webp" + }, + "6486": { + "id": 6486, + "name": "", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/61e/61e0c2d7e7917f9dbd179034d3b4a330/ce9897ca21aae3a7648f18e67ee2bf2d.webp" + }, + "6487": { + "id": 6487, + "name": "Chicken and Cola", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/8e5/8e53ea3eefa37bfe9582392f3d141787/658afdede03040e1fce51a2d9441b684.webp" + }, + "6489": { + "id": 6489, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/497/4976abcd5127e21c245f400e120fabae/1a005e0345b1e7462601c82b36975737.png" + }, + "6491": { + "id": 6491, + "name": "Full English", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/046/0460e60b4ae09aa8319e75b26f9faf87/b1f6aeb51cbe15700dc2f29eec174a5a.webp" + }, + "6502": { + "id": 6502, + "name": "", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/0d3/0d3ca42d5804bb5744229727bb7f6e16/e5b44316ad244c0211da5117e46f141c.png" + }, + "6503": { + "id": 6503, + "name": "Choco Pie", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/5a7/5a7610069bd417a2847f34c6c0b2821d/5faa955edd066d1140abb048f32be815.webp" + }, + "6506": { + "id": 6506, + "name": "Island of Love", + "diamondCost": 4000, + "image": "https://storage.streamdps.com/iblock/b4d/b4d960acabcbf7b72400d8711174e6f6/e31b32b8e14e7790fcde6f3e8dea975d.png" + }, + "6508": { + "id": 6508, + "name": "", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/295/29554dc7a0c3ea9096f54ed4c41b2f0b/20f25d4b6362697aec4e74fbb29e4439.webp" + }, + "6510": { + "id": 6510, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/6e9/6e957cfdb8628b0a5dc9dfd6128fdfa4/d475e9a8b03065bcd3cdd0ae53638e76.png" + }, + "6519": { + "id": 6519, + "name": "Guacamole", + "diamondCost": 6, + "image": "https://storage.streamdps.com/iblock/207/20793577805a0b4fe0efeb37cc0bd7d9/10e97510121def59e538f0290d2d751a.png" + }, + "6520": { + "id": 6520, + "name": "Camping Night", + "diamondCost": 13999, + "image": "https://storage.streamdps.com/iblock/be3/be3c39c622d80d029c5e752134ac6978/c95701f2e894403ca47de971f2ced0d8.png" + }, + "6525": { + "id": 6525, + "name": "Honorable Person", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/46d/46deaf56b0ee85c34e23e793dbcbab73/4e8f3162028de2f938cda110554d51cc.webp" + }, + "6531": { + "id": 6531, + "name": "", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/40f/40f2ab7fa04f23d9d1e5e58840df0251/37793eb58b88e10afb8922056b9ac5a3.webp" + }, + "6532": { + "id": 6532, + "name": "Dancing Cactus", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/d94/d94439c3d68eee66c54e2684aa56a277/a18b71ee72683b6b1b49c0e64901e13e.png" + }, + "6533": { + "id": 6533, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/8c6/8c6da1d39eccec34f1e8ba771fe7c74d/99112fb8bf92a83a197598e1946797ef.png" + }, + "6534": { + "id": 6534, + "name": "", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/dd2/dd22ecfc84bcd2872c278c3d358ad0c6/05712497df9d59b8b1849862c50d6eea.png" + }, + "6542": { + "id": 6542, + "name": "TikTok Red Carpet", + "diamondCost": 6600, + "image": "https://storage.streamdps.com/iblock/93b/93b6d520b6bd02d4aca9a00584556659/836888ffd7ad053712db5c26beeca7e9.png" + }, + "6544": { + "id": 6544, + "name": "", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/95a/95afd65158b6a65336336763e87f9227/3f6d1710ea89514093ccfc3431617233.webp" + }, + "6545": { + "id": 6545, + "name": "Ice Lolly", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/93d/93dda2498d64aa0a29d444103a7804dd/92fd7397fffbaa8755cb233815964bbf.png" + }, + "6548": { + "id": 6548, + "name": "", + "diamondCost": 8800, + "image": "https://storage.streamdps.com/iblock/6de/6de287c9811bf5df1c2f811aabc6d078/7a903e62f153a5433521b3b68bd5ea4b.webp" + }, + "6550": { + "id": 6550, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/82d/82d9ade4eebd197f5fc81361c07f211b/791c768e1e74237757caae7b4b4b8547.webp" + }, + "6554": { + "id": 6554, + "name": "Dance Together", + "diamondCost": 699, + "image": "https://storage.streamdps.com/iblock/803/803c640fa9a7cefeaa37ce5a827bb8f3/d052d0ac9a1a408d3265a11ca8a52725.png" + }, + "6555": { + "id": 6555, + "name": "Summer Band", + "diamondCost": 3999, + "image": "https://storage.streamdps.com/iblock/43b/43b88814d979720d80a6e17258ab3bd8/b1abf3d90ae212317d6ae339ed5f5be7.png" + }, + "6556": { + "id": 6556, + "name": "Valley Festival", + "diamondCost": 5999, + "image": "https://storage.streamdps.com/iblock/44e/44ee2643bf3ffd9d9495318ed83104f5/951295ed57e54cdf27cfeecb1555bd9d.png" + }, + "6558": { + "id": 6558, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/b38/b383429c5b10711712293074dde140c7/60ee06749d6309370441861787ee47e6.png" + }, + "6559": { + "id": 6559, + "name": "", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/948/9487a63b1237c16ce6611e792f931d9d/1da48e340682fc9e3b9daa5b3503a6e7.webp" + }, + "6560": { + "id": 6560, + "name": "Tiny Diny", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/504/50412c09b6d36020e28ee09ceb45f22b/aa96e43206d46ed5f25e8f476f67da45.png" + }, + "6562": { + "id": 6562, + "name": "", + "diamondCost": 1999, + "image": "https://storage.streamdps.com/iblock/5c9/5c92a19453ad05f5705ee2ff584ceece/13441ec03c53b4024b1b50a7fc32e0e5.webp" + }, + "6563": { + "id": 6563, + "name": "Meteor Shower", + "diamondCost": 3000, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/71883933511237f7eaa1bf8cd12ed575~tplv-obj.webp" + }, + "6564": { + "id": 6564, + "name": "", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/9a2/9a29a311843a6aee83a07c6ed0372c6c/d279d7ee6e1eba9e50ab137b3411845e.webp" + }, + "6565": { + "id": 6565, + "name": "Indoor Fan", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/499/499dc6bf36be95e90398a56d18bfeebe/231f634c0c86d034f193477f208f66ca.webp" + }, + "6573": { + "id": 6573, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/027/027b8d0362b6f2c65e47b9e55491f3ae/160a7a757e3dc9f041df62b34bfeda78.png" + }, + "6582": { + "id": 6582, + "name": "Golden Gamepad", + "diamondCost": 30, + "image": "https://storage.streamdps.com/iblock/e85/e85940610dd45adc8733b51106c60712/ca839e1139ca0b94070c1e38093e95ec.png" + }, + "6584": { + "id": 6584, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/6b1/6b1533a7271c8f12c5935f5714f3ceee/9fe315711a7947967bbf5015fbdce06b.webp" + }, + "6588": { + "id": 6588, + "name": "Spaceship", + "diamondCost": 13999, + "image": "https://storage.streamdps.com/iblock/fb1/fb1096568dcc97c2575dec7441d0d651/245c4c7ce9bf5d5378586eb3a2478b42.webp" + }, + "6593": { + "id": 6593, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/c19/c194c4327ac427f30e61155c7c945fbf/4e24f1ea0caeb2bf9668572a76faf538.webp" + }, + "6594": { + "id": 6594, + "name": "", + "diamondCost": 1000, + "image": "https://storage.streamdps.com/iblock/0a9/0a9ce9e7bf3c873133f155e051e649b5/669cf08a260df9f294b8e4d40aff408e.webp" + }, + "6598": { + "id": 6598, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/4ce/4ce26f472c53717af7efc24ac36fc380/d63778ffa888d2b8e9b66dc25e6d7c55.png" + }, + "6600": { + "id": 6600, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/c6b/c6bddd76cae27f574cb0b4246614bb62/489e9b8e0e6d68e2aa59450f7fe97715.png" + }, + "6601": { + "id": 6601, + "name": "", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/a91/a9126725f422593abde4a5d6828bfc16/09dcbb119b3f20273ecfd555f617324b.png" + }, + "6602": { + "id": 6602, + "name": "", + "diamondCost": 88, + "image": "https://storage.streamdps.com/iblock/acc/acc1b85c00f0e4359c56dfc5ffbdf775/9b22b8d0f2116f92b0488fffcb7176dc.png" + }, + "6603": { + "id": 6603, + "name": "Hi July", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/e03/e0301a9670584be92d945ff3cb889b99/0fbb7b11f916953201588b5bfbcb3f5a.png" + }, + "6609": { + "id": 6609, + "name": "Headphone", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/ce9/ce95ea6922db1e776296819861d69ddb/b0b11c041a28d46e51ff1ed8f288fe91.webp" + }, + "6618": { + "id": 6618, + "name": "Socks and Sandals", + "diamondCost": 150, + "image": "https://storage.streamdps.com/iblock/da2/da28ef4030197f812686f10b2c3f06c7/7cb8ebff6f6028e2a56b2c0c268c3620.webp" + }, + "6619": { + "id": 6619, + "name": "", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/74c/74c980f141e47d92c755a3ae418cc922/07072e27bd0fc9f489b73998ead9620f.webp" + }, + "6625": { + "id": 6625, + "name": "Towards the future", + "diamondCost": 28888, + "image": "https://storage.streamdps.com/iblock/b2f/b2f6915948e5eabce83a39c525eebe6f/005804958a7917fd06a09ddeb3f41a0e.png" + }, + "6626": { + "id": 6626, + "name": "", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/a13/a139c9ad7b14f1f776b8484f9010717b/5913d9adac573236b50911532f4b6470.webp" + }, + "6627": { + "id": 6627, + "name": "Bucket Hat", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/b17/b171f313a2ba4af15e8645f02d24d4e7/a58831515ce8102cb72841e8ed45ed08.webp" + }, + "6634": { + "id": 6634, + "name": "Sunday Roast", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/218/218658dfe16bf8eeb11824cae5788028/95bbb526ea861ef2ba3dbe020431374f.webp" + }, + "6635": { + "id": 6635, + "name": "Thunder Hammer", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/401/401ff4c96ee1f2301db5a6fed5d53103/830012ba80bac708f9281417ede8696c.png" + }, + "6646": { + "id": 6646, + "name": "Leon the Kitten", + "diamondCost": 4888, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a7748baba012c9e2d98a30dce7cc5a27~tplv-obj.webp" + }, + "6649": { + "id": 6649, + "name": "Give It All", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/de8/de8468d1003361452021c2d4796bb0f6/574aa0cdd7b418a2a3af2ca4739e9e7f.webp" + }, + "6652": { + "id": 6652, + "name": "Lightning Bolt ", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/265/2655cafe6afc1fa0fca76a732bad4730/bfb4abdf65da281c7ccf0b682f3406a3.webp" + }, + "6653": { + "id": 6653, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/c1e/c1e1683273f5505462f45358cd773806/ba5afaec3f62e18672bd1b25a4e8a4d2.webp" + }, + "6661": { + "id": 6661, + "name": "Kiss your Heart", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/13d/13d940df83e04a30523ca88c080ee8d8/213f06af314da4637a9ae8fc25bfaea3.webp" + }, + "6662": { + "id": 6662, + "name": "Castle Skyline", + "diamondCost": 15000, + "image": "https://storage.streamdps.com/iblock/fd6/fd6ef04918c4050d61339be0633de5c6/6fb5067ff9f62e09cadfaef00b73aa75.webp" + }, + "6663": { + "id": 6663, + "name": "", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/54e/54e0007a52dd684d33cce37c6223f3ca/e8792bddfbbcb21772ea6c2081f50b39.png" + }, + "6671": { + "id": 6671, + "name": "Love You", + "diamondCost": 199, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/134e51c00f46e01976399883ca4e4798~tplv-obj.webp" + }, + "6687": { + "id": 6687, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/2a2/2a2dc5141971fcecfc80703d1bf4a9ac/15ca597a19d1cb0d57e02dbc321b2ba8.png" + }, + "6694": { + "id": 6694, + "name": "Pinch Cheek", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/f6c/f6c95968ca266cbb2527af09989eaea0/27be132509198253b5c48e5495038e5b.png" + }, + "6700": { + "id": 6700, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/1fc/1fc23f6aade54633a6ddeafb24852046/3c6a28ec85858e65c42dc1c84dc22b4c.webp" + }, + "6701": { + "id": 6701, + "name": "", + "diamondCost": 88, + "image": "https://storage.streamdps.com/iblock/806/8065984f40d4ba84d5c97654284fea9d/fdbcab6a8df9846bb84bb2f9564bbeef.webp" + }, + "6704": { + "id": 6704, + "name": "Chill", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/7df/7dfcee6b2702691bf9c8ca0966b3c4b1/144aa8fff9ce8c64aa7fcb507bf6c1cd.webp" + }, + "6705": { + "id": 6705, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/5c9/5c911310d7572ad93edc87e69f149eb4/3eb87b251e73846115c5c09e3ed90804.webp" + }, + "6713": { + "id": 6713, + "name": "Cheer For You", + "diamondCost": 199, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1059dfa76c78dc17d7cf0a1fc2ece185~tplv-obj.webp" + }, + "6719": { + "id": 6719, + "name": "Beach Hut", + "diamondCost": 5000, + "image": "https://storage.streamdps.com/iblock/227/22716035cef6112f66035eca2b60fa31/ffce7cd46aaa6c2b27ccba610cf35a39.webp" + }, + "6723": { + "id": 6723, + "name": "Guitar", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/95e/95e6348b4ebcc6a163b9be452f3ee3ff/84a43f426dabe8772de4d6002827b064.webp" + }, + "6725": { + "id": 6725, + "name": "Chef\u0027s Hat", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/da8/da87653d13440ecbe3a6f04abb4e6314/08ab9e948762a6bb041bb1963cacf07f.webp" + }, + "6726": { + "id": 6726, + "name": "Tea", + "diamondCost": 20, + "image": "https://storage.streamdps.com/iblock/b0b/b0ba111b6319a8c9e384d5ca7b814e4c/6cd6f620512cd42711bc1235124b3265.webp" + }, + "6733": { + "id": 6733, + "name": "Telescope", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/0ff/0ff6c8d47e3d601ef9f775bfa6cf9647/4489d8324898af2a82d18ea04166db2c.webp" + }, + "6734": { + "id": 6734, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/1e2/1e24fd3b1e4f190b6513d94fd7b6a7d7/a6e5f2b1b18599645886d2ed4d815494.webp" + }, + "6740": { + "id": 6740, + "name": "Foamy Drink", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/cc8/cc8133c73d5ca2cb5fde306f5b4e2a11/fb273956755fe6fbf7263023a9c36ebe.webp" + }, + "6743": { + "id": 6743, + "name": "", + "diamondCost": 9999, + "image": "https://storage.streamdps.com/iblock/4f6/4f6a0ec279bc569480efb08094708119/8f3fc4050c81ffb2070b06f3a4df1992.webp" + }, + "6744": { + "id": 6744, + "name": "", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/1a6/1a6a52e5b0020a731da399b55866e245/b15e38a68d456a82cc59a213b04020e3.webp" + }, + "6751": { + "id": 6751, + "name": "TikTok Shuttle", + "diamondCost": 20000, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8ef48feba8dd293a75ae9d4376fb17c9~tplv-obj.webp" + }, + "6752": { + "id": 6752, + "name": "Friend", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/b70/b70182f7b0698b28b35b8816a4baa025/444dad1c4154d1d0be3629c32b2dec19.webp" + }, + "6754": { + "id": 6754, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/457/457a95d19f48aa254b10a30ee8e2c791/b3e217a47d1b38fe06ef11e149aae0e0.webp" + }, + "6757": { + "id": 6757, + "name": "Dash", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/b35/b356ce71b1272dffc836a14df85700d2/16e177319d9f5cf312440139715612f5.webp" + }, + "6759": { + "id": 6759, + "name": "", + "diamondCost": 600, + "image": "https://storage.streamdps.com/iblock/d23/d23f8fa36179353cd9144d5730f1b668/0a27adf54dc5faeddc17f51e7df3266f.webp" + }, + "6774": { + "id": 6774, + "name": "Wide Eye Wurstie", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/009/00985e0e1bf5ab19a3c4c757f0ce91b7/e25e88198cbeeee06e8e49fa64332e44.webp" + }, + "6776": { + "id": 6776, + "name": "Birthday Glasses", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/98d/98deaf0a4a818ba6b0333ca9aee4db59/97520c1ceae957c77ef1dbcc0f092187.webp" + }, + "6777": { + "id": 6777, + "name": "", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/22d/22d0c7c08c6d7abe0639baabd2fd3925/b02a847acd744ee8d52b0ec0cdfd758d.webp" + }, + "6781": { + "id": 6781, + "name": "Watermelon Love", + "diamondCost": 1000, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1d1650cd9bb0e39d72a6e759525ffe59~tplv-obj.webp" + }, + "6784": { + "id": 6784, + "name": "Cake Slice", + "diamondCost": 1, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f681afb4be36d8a321eac741d387f1e2~tplv-obj.webp" + }, + "6787": { + "id": 6787, + "name": "Birthday Party", + "diamondCost": 6999, + "image": "https://storage.streamdps.com/iblock/135/135b2ac0877de059f56e510b0ac70d08/07285ba7471fb98743bfe308d0b58ce2.webp" + }, + "6788": { + "id": 6788, + "name": "Glow Stick", + "diamondCost": 1, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8e1a5d66370c5586545e358e37c10d25~tplv-obj.webp" + }, + "6789": { + "id": 6789, + "name": "Red Carpet", + "diamondCost": 1999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/5b9bf90278f87b9ca0c286d3c8a12936~tplv-obj.webp" + }, + "6790": { + "id": 6790, + "name": "Celebration Time", + "diamondCost": 6999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e73e786041d8218d8e9dbbc150855f1b~tplv-obj.webp" + }, + "6793": { + "id": 6793, + "name": "Ranking Lit", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/c6d/c6d4c3f55a9faff0a9e8a126197bf528/ddc2c77b1f92cdba3e2f74d9bef5d516.webp" + }, + "6794": { + "id": 6794, + "name": "Ranking Lit", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/483/48361b1d6c97776878786862fe1701eb/8b107fcf42005bcd7f6099472032dbae.webp" + }, + "6795": { + "id": 6795, + "name": "Ranking Lit", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/1a7/1a714959f22cae47ddd2bd66498c40e9/ccfd6f578fd7ca4f33ac4d23eb7f51ad.webp" + }, + "6796": { + "id": 6796, + "name": "Ranking Lit", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/649/649a830a2f64be4dc424293692f713c5/5619a1419a930b88670bb2cabe6218cd.webp" + }, + "6797": { + "id": 6797, + "name": "Super Cake", + "diamondCost": 1999, + "image": "https://storage.streamdps.com/iblock/34f/34f1b053a3657b7113e287e31bcb68b9/ba9debb65391244c8f6645438f6bc261.webp" + }, + "6798": { + "id": 6798, + "name": "", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/53b/53ba63daed395b1c8eda6cd5fa51b912/2ddcbdeeebee2a97780b4e846aace552.webp" + }, + "6813": { + "id": 6813, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/3d2/3d2707e87e8c92a8e3302cc33abf1d9c/eee97c25a857060dc81f84f13917ea73.webp" + }, + "6820": { + "id": 6820, + "name": "Whale diving", + "diamondCost": 2150, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/46fa70966d8e931497f5289060f9a794~tplv-obj.webp" + }, + "6834": { + "id": 6834, + "name": "Gift Box", + "diamondCost": 1999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9cc22f7c8ac233e129dec7b981b91b76~tplv-obj.webp" + }, + "6835": { + "id": 6835, + "name": "Gift Box", + "diamondCost": 3999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3646c259f8ce6f79c762ad00ce51dda0~tplv-obj.webp" + }, + "6837": { + "id": 6837, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/275/2757ddec66efa8761010cabca419b14f/046b18daf976db2ba1204a9ba5af322c.webp" + }, + "6839": { + "id": 6839, + "name": "", + "diamondCost": 800, + "image": "https://storage.streamdps.com/iblock/1f2/1f217b7841a9b0368a9f336ff3dcfb1d/176de9f80fe6fb969a420e6858c7d3e4.webp" + }, + "6840": { + "id": 6840, + "name": "On Fire", + "diamondCost": 200, + "image": "https://storage.streamdps.com/iblock/cba/cba95075d6b63b84fbc52abb9d1d8208/d93ecc0b966bf972f01e77339a68e124.webp" + }, + "6842": { + "id": 6842, + "name": "Gerry the Giraffe", + "diamondCost": 1000, + "image": "https://storage.streamdps.com/iblock/792/792ef3f53d86b5cb066d5c0bb5b00a87/91aa5cf7f51a533841bea8617419c54d.webp" + }, + "6843": { + "id": 6843, + "name": "Marvin the Monkey", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/31a/31a03cf8430fa062064dd9e544910de2/e7939198db3920aeaf3d95167712af0e.webp" + }, + "6845": { + "id": 6845, + "name": "Ellie the Elephant", + "diamondCost": 5000, + "image": "https://storage.streamdps.com/iblock/1eb/1eb7a0716b0ec3ff586858afa730f79d/29db993db1482973b7f53801dab25365.webp" + }, + "6846": { + "id": 6846, + "name": "", + "diamondCost": 3000, + "image": "https://storage.streamdps.com/iblock/cac/cacacb1cc02c3891577ae0cf87c2f0c1/660e350d239aea8cf9709ba729a26d23.webp" + }, + "6849": { + "id": 6849, + "name": "", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/769/76978e8d638182e10c01f95665d94a86/8c0b6b3dcdcaad7ee1ce0cb47cc1c118.webp" + }, + "6851": { + "id": 6851, + "name": "", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/cff/cff3db15672eda5393250d2a651989f7/6e6dc3b4b7438ed4ae88a8e72112b4ca.webp" + }, + "6852": { + "id": 6852, + "name": "", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/bfb/bfb3269053354c22be8ebfc096caa3be/004050ecd0a3e235052fd0caab5e80b9.webp" + }, + "6853": { + "id": 6853, + "name": "", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/7fb/7fb632352b4f34f9f8b377398e76a1be/12d0e74a745b834042b2cfd05070bd47.webp" + }, + "6856": { + "id": 6856, + "name": "Ticket", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/434/434746bffe494ac6ad2eb5e7e4384955/92e426ea0b4d4a9f89d7e2786115cd20.webp" + }, + "6860": { + "id": 6860, + "name": "", + "diamondCost": 88, + "image": "https://storage.streamdps.com/iblock/651/651e4a48ecd30c46cde3cf7c4e0b2fa7/461621955d8f8d226c494cbc33a792dd.webp" + }, + "6861": { + "id": 6861, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/593/5936827dbd593ca536d2756090a62f3e/efd72bea05f56cbcf59d6c18b368debe.webp" + }, + "6862": { + "id": 6862, + "name": "Cooper Flies Home", + "diamondCost": 1999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3f1945b0d96e665a759f747e5e0cf7a9~tplv-obj.webp" + }, + "6863": { + "id": 6863, + "name": "Cooper Swims Home", + "diamondCost": 3999, + "image": "https://storage.streamdps.com/iblock/493/4930e92e37637187f38ca100fa52b242/413beebb2e2c1a6f4640d73d3b6000d8.webp" + }, + "6864": { + "id": 6864, + "name": "Cooper\u0027s Home", + "diamondCost": 5999, + "image": "https://storage.streamdps.com/iblock/2b4/2b405c6cee3848dbf54629bd25725246/b289cd0ec91e4658bd31e48b4e69674e.webp" + }, + "6865": { + "id": 6865, + "name": "Cooper Skates Home", + "diamondCost": 599, + "image": "https://storage.streamdps.com/iblock/041/04184b09ec8e7bf137d33cf57ce4eec9/3c2e360b023b9980e54e9d9a394883b9.webp" + }, + "6868": { + "id": 6868, + "name": "Hedgehog", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/841/841e924150793d6961df0a1c89cc67ca/5886839b7de0b1289303081f9af380f8.webp" + }, + "6869": { + "id": 6869, + "name": "TikTok Volcano", + "diamondCost": 4000, + "image": "https://storage.streamdps.com/iblock/e6d/e6d4c0d014c552ec6e8eccb804a7659f/9678f5e24b6e9b069b43c4f84a536d9f.webp" + }, + "6883": { + "id": 6883, + "name": "Cookie", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/fd2/fd20c8c619b1d43efb9f2fe1923c48a7/45c056f74c9f214dc55d464eab43b224.webp" + }, + "6887": { + "id": 6887, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/06e/06e801a90a32e9554faf40734361179a/5483b2c5ab37f989c12b3fb7fe6c5558.webp" + }, + "6890": { + "id": 6890, + "name": "Love you", + "diamondCost": 1, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ab0a7b44bfc140923bb74164f6f880ab~tplv-obj.webp" + }, + "6892": { + "id": 6892, + "name": "Race Car", + "diamondCost": 12000, + "image": "https://storage.streamdps.com/iblock/c1d/c1dd91d0cb97495c4d69a389b3a5a1ae/ee71e32f9e7bfa24a1d0e0a6dc28add1.webp" + }, + "6893": { + "id": 6893, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/4c9/4c9d4610bc61f1494c81593ed3e1b9f0/041bd74777c174d9cc57d5e24fd2fce4.webp" + }, + "6905": { + "id": 6905, + "name": "", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/1c6/1c63f69e43c71e8a81dea0c0f0a33297/9f4b572634e281601a5410c2a02e19d2.webp" + }, + "6906": { + "id": 6906, + "name": "", + "diamondCost": 399, + "image": "https://storage.streamdps.com/iblock/3d1/3d19f1166637d9d147e22d1538952805/9737312d3e9734ab193861917953349e.webp" + }, + "6907": { + "id": 6907, + "name": "Show Time", + "diamondCost": 3999, + "image": "https://storage.streamdps.com/iblock/d72/d722e6d78821a169ff9a6d128127c696/f457c04596d723f9033842f3417b6a72.webp" + }, + "6909": { + "id": 6909, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/f2f/f2f52d7cd4c149f5f7f75f63f36cdf2a/88139267f1cf433a79a5013a8a4b9fe7.webp" + }, + "6912": { + "id": 6912, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/754/7541f374226e5273934fdbb6a49883c4/8c8ee6a0655914bf05b518f24cf7287b.webp" + }, + "6922": { + "id": 6922, + "name": "Ellie the Elephant", + "diamondCost": 5000, + "image": "https://storage.streamdps.com/iblock/a50/a5066168880bb6ef8031214e748e7d2d/57bc2767a0041a594dcbb6321c0c8679.webp" + }, + "6928": { + "id": 6928, + "name": "It\u0027s corn", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/d48/d48869b41c99cf004857fb74aff97552/75f200300cdaf3424287814ec55e9656.webp" + }, + "6930": { + "id": 6930, + "name": "", + "diamondCost": 600, + "image": "https://storage.streamdps.com/iblock/2d1/2d126f64104256004281fa582486301a/0a6ddf3894ff3ac4a568f006be1494ff.webp" + }, + "6938": { + "id": 6938, + "name": "Mermaid", + "diamondCost": 600, + "image": "https://storage.streamdps.com/iblock/386/386c5922deadaafedd55681a927f7011/78756635561cae6fc4225b573e01a84c.webp" + }, + "6939": { + "id": 6939, + "name": "Pug", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/367/367d7a870b489f203c084bd4338b5fba/6efbd5b994d91fa8a467bd338fcead92.webp" + }, + "6946": { + "id": 6946, + "name": "", + "diamondCost": 6000, + "image": "https://storage.streamdps.com/iblock/fad/fad0ef19b847cc713b632062e22a3448/5e7821da6d4ec4f95e7cf18597c8a612.webp" + }, + "6949": { + "id": 6949, + "name": "", + "diamondCost": 1000, + "image": "https://storage.streamdps.com/iblock/088/088cf20ff53c5e6c3dbd86673b7578bd/0ce6d998fb03c8221c6b512aec846e53.webp" + }, + "6958": { + "id": 6958, + "name": "On Fire", + "diamondCost": 200, + "image": "https://storage.streamdps.com/iblock/4ec/4ec314b4ee7dff4e92a8e1e75100dddf/19c9b5d8b5f24b1465632a31e55edca1.webp" + }, + "6960": { + "id": 6960, + "name": "Game Controller", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/030/030f63329d68d21c5faacab88006a17f/fbb8dd78b47184321d93e3ae5a1f2cca.webp" + }, + "6962": { + "id": 6962, + "name": "", + "diamondCost": 9, + "image": "https://storage.streamdps.com/iblock/655/6557a800483e7de3e1893e4b94b6871e/fd6252b86e05933c131ebe57d1cb15b3.webp" + }, + "6964": { + "id": 6964, + "name": "", + "diamondCost": 6000, + "image": "https://storage.streamdps.com/iblock/d77/d77ef3d0480e42f18d1c2c9542106390/27883ca6ec429637671d91e036ce4232.webp" + }, + "6965": { + "id": 6965, + "name": "", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/80d/80de48464ba8b8c94f449178d1dcb964/873271c8a72f57505dcbd428c470ba23.webp" + }, + "6966": { + "id": 6966, + "name": "", + "diamondCost": 1000, + "image": "https://storage.streamdps.com/iblock/483/4839eec680d5a5af34cb30ac25b8377a/8a5171613b85137bb4753e1bdbfb40d6.webp" + }, + "6967": { + "id": 6967, + "name": "Autumn Leaves", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/f04/f042339687e8abaa2fc0e1976d9b11f4/251a0624bc3a23ba39d75467868dcbf8.webp" + }, + "6968": { + "id": 6968, + "name": "Hand Heart", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/9f0/9f0bfed08f1d3b9e852469d6a4debeda/519497b062ded1019c958d5d0b352a7e.webp" + }, + "6969": { + "id": 6969, + "name": "", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/51c/51cde0d178b3d43dbd34e4bfbe5c9aa7/d9a8abee459b2f6c6acbdfbce911977e.webp" + }, + "6974": { + "id": 6974, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/16c/16c23fd28be7ab19212e4613e52e3f92/a60553ec4928d32f020e977a60ac3f48.webp" + }, + "6975": { + "id": 6975, + "name": "Lederhosen", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/7c7/7c72a908dce6d9df4db0a6159be1751b/2ff181aa1fae6088a37f942d51401176.webp" + }, + "6976": { + "id": 6976, + "name": "", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/077/0771bb02e9ad5fc56ee20dfc863afc76/266ea93cef6f0eb1ad06dcc0e159b0bd.webp" + }, + "6982": { + "id": 6982, + "name": "", + "diamondCost": 1999, + "image": "https://storage.streamdps.com/iblock/8c0/8c0c546420e7b77e4eb1a31e383fe67d/ef2206ff8d86dcab9b3c8cfe94b3cd1a.webp" + }, + "6983": { + "id": 6983, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/295/295a40138916cec671a4fb981fcc3b4f/0bdf2b95b5986c739957d6668585953d.webp" + }, + "6984": { + "id": 6984, + "name": "", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/782/782bdd28c3460d6f264ebdb4608fecc2/7ae7a58bf7f4c2b039dd0aa329220aa6.webp" + }, + "6986": { + "id": 6986, + "name": "", + "diamondCost": 999, + "image": "https://storage.streamdps.com/iblock/e4b/e4b4cc9d2bd624d0280a557e68aa8aee/5af2a2686304d7c85e9e1c5face1c803.webp" + }, + "6988": { + "id": 6988, + "name": "", + "diamondCost": 3999, + "image": "https://storage.streamdps.com/iblock/34c/34cb1f4e9e71158a9fb6e8e1c807f2b1/4aafff65687424bb21328a4c8f737da0.webp" + }, + "6990": { + "id": 6990, + "name": "ASMR Time ", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/49d/49dccba4525df92ed17678cc6ea47e95/b2c8c52d5294bb531d7d87a4c3ff97fe.webp" + }, + "6993": { + "id": 6993, + "name": "", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/c9c/c9c16c2b128dce39844ca75932c0635e/b61ac336b0f31685eea045832f4140cf.webp" + }, + "6994": { + "id": 6994, + "name": "", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/564/564099f67677445073f2b6a0e64951a0/7a14fc412e01ca76b5975570d026ad16.webp" + }, + "6999": { + "id": 6999, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/f93/f932beadf9699d584de208cae4939c54/ea49f62bdeee4a2a54dbd0bcf689dfa3.webp" + }, + "7000": { + "id": 7000, + "name": "", + "diamondCost": 150, + "image": "https://storage.streamdps.com/iblock/c82/c8224b16531d8771d04a96ec246f14d7/580bc7de3582f1d042107e66eac38c5b.webp" + }, + "7001": { + "id": 7001, + "name": "", + "diamondCost": 2999, + "image": "https://storage.streamdps.com/iblock/89c/89c6a692e06cc63b730a25e10e4979db/252805fbf1b042628508df27120301bd.webp" + }, + "7002": { + "id": 7002, + "name": "Garden Gnome", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/c1e/c1efcf386f4ffc5626e0be1ef1ecd93a/210fa9d66c1f0c1968608b40c4e698ea.webp" + }, + "7003": { + "id": 7003, + "name": "Sapling", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/020/020f204d8bf49c321c77c718d15972e5/f515f03da38b6a2663fc40879119bc5c.webp" + }, + "7016": { + "id": 7016, + "name": "Chef\u0027s Kiss", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/be2/be2d88eb75a875345716e8e72f4cb6c1/ad63012a0e0c16526f28bb75fe119e0d.webp" + }, + "7021": { + "id": 7021, + "name": "Go Snacking", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/666/6661d244aca6ec5f3de19372316e871e/f967ba18a333cd1489396cb608371824.webp" + }, + "7024": { + "id": 7024, + "name": "So Beautiful", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/ad6/ad67c8d6c93ff4c375568b0bfabbed6f/c68dfd6fda7e8bd84f0bc7fa9ce47af0.webp" + }, + "7029": { + "id": 7029, + "name": "Match Wand", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/cb8/cb8be2865ae41bb724da5f5ae0192d4e/29e9af643ce5fcc267605f68a6656e2d.webp" + }, + "7030": { + "id": 7030, + "name": "", + "diamondCost": 9999, + "image": "https://storage.streamdps.com/iblock/362/362134781c0f70c2e772d575253f7b9b/66b3eb909af215942dbe79b95efb8f33.webp" + }, + "7031": { + "id": 7031, + "name": "", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/eeb/eeb4c2ae379b89120c8ae69bbbea8642/ea6d73fcf39771c592560120d2c9b577.webp" + }, + "7037": { + "id": 7037, + "name": "", + "diamondCost": 88, + "image": "https://storage.streamdps.com/iblock/abf/abff5affe4162134d23c0019d2b7f31d/bf586e87b5bb257b96b1ae797584e5bc.webp" + }, + "7038": { + "id": 7038, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/341/341ed57767654fa7df9660988af5aa8c/b8ef51ac15bd2af523d9010fc0259d7f.webp" + }, + "7048": { + "id": 7048, + "name": "I LOVE KR", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/a33/a330586aeae257203d4ae0685a8c7599/cc67f4e57346c9acef62ecee527695dd.webp" + }, + "7050": { + "id": 7050, + "name": "Love Hangul", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/cbe/cbec14bfbd7a08879ed3407271ee8071/00155d009644335398d32c4d35b60a79.webp" + }, + "7051": { + "id": 7051, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/4fc/4fccc3658a74114382d8adde408251fb/9670a65a5826679086dba6e8dceea1ac.webp" + }, + "7054": { + "id": 7054, + "name": "", + "diamondCost": 1000, + "image": "https://storage.streamdps.com/iblock/5d2/5d268cc4666859cc5aea759f5d87b6c0/5c1720600f4e4f1e1722685916f8d48a.webp" + }, + "7055": { + "id": 7055, + "name": "Pizza", + "diamondCost": 40, + "image": "https://storage.streamdps.com/iblock/c9d/c9d7f483cc0059a1e8165bfbd1341688/307a559eb2b371b92b8ea36ae96bfa30.webp" + }, + "7056": { + "id": 7056, + "name": "Pretzel", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/3fd/3fdb36621abdc0daf7b4e2f924263d80/771e3b065da9318186d2ade5f7db03ac.webp" + }, + "7061": { + "id": 7061, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/9ea/9eaf48a2bdf6d889d38a77be97a91453/7d7708678bfa3d316bf75fef37ad7292.webp" + }, + "7068": { + "id": 7068, + "name": "Match! Match!", + "diamondCost": 200, + "image": "https://storage.streamdps.com/iblock/cb4/cb43e14c94694d3d3ae355bdfc517afd/494cd902b8018b35b6dc0f0016c89694.webp" + }, + "7070": { + "id": 7070, + "name": "Match Star", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/497/497fa45aa565639b858e333ae2e0450c/f381f7c1c9a66fb6712e78a3b210b3ab.webp" + }, + "7072": { + "id": 7072, + "name": "Sub Star", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/98f/98fea40fc19cc9dbd9a083b0844c163b/af7dd985812299d89f6cfa49c84e7eaf.webp" + }, + "7073": { + "id": 7073, + "name": "Harvest Festival", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/1f7/1f7cc70b38ac725b01586e1d1daa7cc1/8b053a13e770f0e285d38f66c2e98bbb.webp" + }, + "7074": { + "id": 7074, + "name": "Match Star", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/bd5/bd50fed09a13493a57589939f8419460/5b136dca770fbb5c96dc9c62e20bf6b0.webp" + }, + "7079": { + "id": 7079, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/d4f/d4f301fdd5d33043260e20db3d824663/e6ff43deb38f575d598f5fc0f3b013ed.webp" + }, + "7080": { + "id": 7080, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/14c/14c12ece45de63821eb830af4503f267/882d244eb7396575e72412cc2907d656.webp" + }, + "7081": { + "id": 7081, + "name": "", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/7b6/7b62eaa1d06becffe39726ca001c2e7f/1f1cbd1ed505f65d4da9fb7ba5d98471.webp" + }, + "7084": { + "id": 7084, + "name": "", + "diamondCost": 30, + "image": "https://storage.streamdps.com/iblock/1c6/1c64bc1b780d8a987986694a699e0585/0d6afd7934d363dba4a747f8c0bec66b.webp" + }, + "7086": { + "id": 7086, + "name": "Chili", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/4e4/4e476335c1d0a47efc33a40688d0fc75/ab85d5eccda4bf6509874c9533739b62.webp" + }, + "7087": { + "id": 7087, + "name": "Taco", + "diamondCost": 9, + "image": "https://storage.streamdps.com/iblock/5e1/5e1e4be13d7ba14e46d500180914f450/e5f81b83f7f2ceb8d8b51ec30f522439.webp" + }, + "7088": { + "id": 7088, + "name": "Nachos", + "diamondCost": 9, + "image": "https://storage.streamdps.com/iblock/ff1/ff16cd1c796189ed8fcfdb019eb224ef/1ae8b0b05294c56b99197256fcaa3fd4.webp" + }, + "7089": { + "id": 7089, + "name": "Mate tea", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/506/506e98699cdfefd679b35ea5170823b0/a95e9e3721c9b86e3342169b3211b30e.webp" + }, + "7090": { + "id": 7090, + "name": "Kite", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/5e6/5e680ff5ebdf550a30e5bf614ee5a68e/ceee4022ccbc11a5adb30f993ac47521.webp" + }, + "7091": { + "id": 7091, + "name": "Fruits Hat", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/404/404cc4794702cc6feb93bf4517bc0762/05846cb2d9548cf2f0573159110ecb64.webp" + }, + "7092": { + "id": 7092, + "name": "Guitar", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/5b6/5b657901ae6913dc23094f29e1450318/ba8b1c60d24c93fa641fa7f7ff5c1c5f.webp" + }, + "7094": { + "id": 7094, + "name": "Mariachi Hat", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/ada/ada653db47b3c097d794fc908a604357/aad16e67de36036f1ddfaf22627d6824.webp" + }, + "7095": { + "id": 7095, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/5f2/5f2f2f673c116c46372ee874bfb66685/759b52ad2866ed2f5a78ccd558f4457e.webp" + }, + "7106": { + "id": 7106, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/6b9/6b91278f70b8921e6f855c8e3fb10e22/bcfc4ff0ee15edd649713791ba54660b.webp" + }, + "7107": { + "id": 7107, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/f3f/f3fd85df7a272ee2741fc9580cab1dda/00c7749590f4cb1d477a90f4d8c46f07.webp" + }, + "7117": { + "id": 7117, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/9e4/9e47655bfe3c578450e6241326f19342/f72fa36fe4b7dc0a2422f0fe6c3ac24d.webp" + }, + "7118": { + "id": 7118, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/6e0/6e06d9cfc63f60ee08d15eee6f8360d0/279e323a302baa7d535d987b78b0e555.webp" + }, + "7119": { + "id": 7119, + "name": "MPL Trophy", + "diamondCost": 450, + "image": "https://storage.streamdps.com/iblock/981/9816c81ee3e2fdc62ac221051e9ec290/75707f488be3f80faf5affd1cef38deb.webp" + }, + "7121": { + "id": 7121, + "name": "Marvelous Confetti", + "diamondCost": 100, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fccc851d351716bc8b34ec65786c727d~tplv-obj.webp" + }, + "7122": { + "id": 7122, + "name": "Gem Gun", + "diamondCost": 500, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/dd06007ade737f1001977590b11d3f61~tplv-obj.webp" + }, + "7123": { + "id": 7123, + "name": "Shiny air balloon", + "diamondCost": 1000, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9e7ebdca64b8f90fcc284bb04ab92d24~tplv-obj.webp" + }, + "7124": { + "id": 7124, + "name": "Signature Jet", + "diamondCost": 4888, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fe27eba54a50c0a687e3dc0f2c02067d~tplv-obj.webp" + }, + "7125": { + "id": 7125, + "name": "Premium Shuttle", + "diamondCost": 20000, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/c2b287adee5151b7889d6e3d45b72e44~tplv-obj.webp" + }, + "7131": { + "id": 7131, + "name": "Scented Candle", + "diamondCost": 20, + "image": "https://storage.streamdps.com/iblock/01f/01f4015c4cad98734c55ecd42824ace3/eb1d8dd998edd8f658c43c60d33b9904.webp" + }, + "7139": { + "id": 7139, + "name": "I LOVE TR", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/84d/84d68e92c471e7da792aa98d856c824c/7728ac60043efb9c96e2ce0f77dbef31.webp" + }, + "7150": { + "id": 7150, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/6b3/6b345bb519942daed28a9a832cbd9904/82326f87c1ec8def97a1776df51bc9ae.webp" + }, + "7151": { + "id": 7151, + "name": "", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/052/052d84a43841e541bdda631d3dffbc5a/15cd1d8867d221c396a46da07b92aacf.webp" + }, + "7159": { + "id": 7159, + "name": "Scorpio Star Sign", + "diamondCost": 9999, + "image": "https://storage.streamdps.com/iblock/c91/c91f3a3685b5c54d9e96d5f9443c4fda/50c48574ff60f328b7a50b80cd9aa4b8.webp" + }, + "7160": { + "id": 7160, + "name": "Wishing Bottle", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/381/381ef41d500da1120bdfcf83f97e76fc/1a1c9b6be78144f22b8e858effc39333.webp" + }, + "7161": { + "id": 7161, + "name": "The Magic Lamp", + "diamondCost": 1000, + "image": "https://storage.streamdps.com/iblock/e0d/e0d45fccd69220f321531383d97f51fc/4296cc4b886f31bb5b2cf106ebf640ab.webp" + }, + "7163": { + "id": 7163, + "name": "Mishka Bear", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/0cc/0ccd22056d7cd20351cfb11a8ec62bf1/4f7f3b65fad302160471f52bfc45fc34.webp" + }, + "7166": { + "id": 7166, + "name": "Roman Empire", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/c77/c778c4e5cd1c68a50dcc06e4bfc3aa08/48edf8b190d98b0a3cc4623e6cc9a22c.webp" + }, + "7168": { + "id": 7168, + "name": "Money Gun", + "diamondCost": 500, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e0589e95a2b41970f0f30f6202f5fce6~tplv-obj.webp" + }, + "7171": { + "id": 7171, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/bd6/bd6980f5ea459a6b1d6864186253bf29/f4d65efcccd937f25cf26593c99031b2.webp" + }, + "7176": { + "id": 7176, + "name": "Hi November", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/2e1/2e1bd0d30bac3377a114d2080f9687b0/4213592ba44947c98100df3dd8969f32.webp" + }, + "7177": { + "id": 7177, + "name": "November", + "diamondCost": 88, + "image": "https://storage.streamdps.com/iblock/ee5/ee55ec79ae4695803d79a7fa0904333c/781835a90e8f6d8f216b54eb2a1b2b8c.webp" + }, + "7184": { + "id": 7184, + "name": "", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/ffb/ffb8098012f8a9442bb268a249bbc2df/08f5a19722f3a79d238cda87ef0dd3d7.webp" + }, + "7196": { + "id": 7196, + "name": "Let Us Dance", + "diamondCost": 1999, + "image": "https://storage.streamdps.com/iblock/cae/caeaf097812661e65ff761aa60d5300a/444a1217ff8fbdeaf8e4682405871c7a.webp" + }, + "7204": { + "id": 7204, + "name": "Panther Paws", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/6e0/6e097d88e5e088d0228c702456e58450/72afb8bfa2231766da6817e911702d4b.webp" + }, + "7213": { + "id": 7213, + "name": "Squirrel", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/5c3/5c37dce1eab0d67386329f3a2920a874/38104bd52d316ea76464433b3b07dea7.webp" + }, + "7222": { + "id": 7222, + "name": "Full moon", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/e64/e64dd135280596ce7f1aebbdc3e33a80/494b818b6a4217f1807255ca148c7b2d.webp" + }, + "7224": { + "id": 7224, + "name": "Big Love", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/9d7/9d791fea266e119ffd938095526a1b55/1923108683e8c0aba3b78e1d0e8137cf.webp" + }, + "7226": { + "id": 7226, + "name": "Sushi Set", + "diamondCost": 20, + "image": "https://storage.streamdps.com/iblock/097/09752a51af505fbde2e9aa853d1ada62/3b981d4797111c44c45fbd8de5201fbe.webp" + }, + "7233": { + "id": 7233, + "name": "Chestnuts", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/b16/b165eccc2fc0ecdb85149432f8d40e94/e9aa3a5c8c9ae6baf20464d915fcbbc6.webp" + }, + "7234": { + "id": 7234, + "name": "Grapes", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/442/442580106ac8748b79ef450eb25b5981/df624c619c48b583adee184bca134c80.webp" + }, + "7237": { + "id": 7237, + "name": "Unicorn Fantasy", + "diamondCost": 5000, + "image": "https://storage.streamdps.com/iblock/136/136dc4c068ddc7a89b10df8d9f4800d8/3b4f386e75506f3ad5519e4330888427.webp" + }, + "7262": { + "id": 7262, + "name": "Jungle Hat", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/872/872acdd2b7b2599f6866e1230f18dfcc/f10df6cbafc160a9d8216a61a7995cd1.webp" + }, + "7264": { + "id": 7264, + "name": "Bear love", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/664/66499983178b4afcbb41d1381b0a3614/746053e277f2a390a5bd1aa256e445f3.webp" + }, + "7265": { + "id": 7265, + "name": "Cotton Candy", + "diamondCost": 700, + "image": "https://storage.streamdps.com/iblock/51f/51f64a93c515f4a45169f24a52179f2f/730beb9631b1af4edfaf714d7686df04.webp" + }, + "7266": { + "id": 7266, + "name": "Applause", + "diamondCost": 600, + "image": "https://storage.streamdps.com/iblock/054/054e62fc60b158f38edd5db0589f8d6a/1aa46ed1a7f28a63b2581515c67b51a1.webp" + }, + "7282": { + "id": 7282, + "name": "Spaghetti Kiss", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/fba/fba8022bcf5a189adec072e5ffa1be77/708c406b13d9fd4811ae19a8be9c327b.webp" + }, + "7283": { + "id": 7283, + "name": "Soccer", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/b66/b66678fc470a853df0b9c8d547d53809/81e216e2cb71bebe600bb5ff0ed61e62.webp" + }, + "7296": { + "id": 7296, + "name": "Chestnuts", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/7c7/7c7c8f9303c92aa20fce0e9e1a70e336/42e6c7a2865e19498ee04a7a1d700521.webp" + }, + "7312": { + "id": 7312, + "name": "TikTok Universe+", + "diamondCost": 34999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/b13105782e8bf8fbefaa83b7af413cee~tplv-obj.webp" + }, + "7316": { + "id": 7316, + "name": "Anti Hero", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/d5f/d5f1cee5ab178c6180cf3596df2a8208/892d3208126cc6c46e605c52ffbb5a60.webp" + }, + "7319": { + "id": 7319, + "name": "Phoenix", + "diamondCost": 25999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ef248375c4167d70c1642731c732c982~tplv-obj.webp" + }, + "7341": { + "id": 7341, + "name": "Panther", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/74f/74f246d0f575fa20ccc456b80f5547ea/32f205cf24dcf07f5e8f308d9d425d59.webp" + }, + "7357": { + "id": 7357, + "name": "TikTok Trophy", + "diamondCost": 699, + "image": "https://storage.streamdps.com/iblock/7f6/7f6d5df92bf4b5b559567b9a870d485f/1811197db0860ff395435d51d35598ef.webp" + }, + "7364": { + "id": 7364, + "name": "Sceptre", + "diamondCost": 150, + "image": "https://storage.streamdps.com/iblock/d2d/d2d1b0359f480a7db08e490364d056b2/bcb44a039dfa4d148af6cde9f233ea13.webp" + }, + "7367": { + "id": 7367, + "name": "Diamond Ring", + "diamondCost": 1500, + "image": "https://storage.streamdps.com/iblock/31d/31db4a4c7058c4678c113459f6666f59/572f9e9d8fa61bee659551cfa1fa873d.webp" + }, + "7375": { + "id": 7375, + "name": "Lucky Pig", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/bf8/bf8e32bd0bf5a916195b5848db571f4f/a9241b01b970aa44c2d5cea5e8ba69d6.webp" + }, + "7391": { + "id": 7391, + "name": "I\u0027m shy", + "diamondCost": 55, + "image": "https://storage.streamdps.com/iblock/d8b/d8bf38c1dad2734992e8ee44a379aa26/4b072fda0a53005a35b7271e4548bb96.webp" + }, + "7394": { + "id": 7394, + "name": "Sneakerhead", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/f64/f648c76bae6ef273077c74cc9312b126/87f4891550b2cfd3e49973f7f87dbdb2.webp" + }, + "7396": { + "id": 7396, + "name": "Pumpkin Pie", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/abf/abf5efb8fac6f64568b472c3afdb3e25/f85e4ef55b8c7d03f81351babd833c69.webp" + }, + "7398": { + "id": 7398, + "name": "Prince", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/38b/38b4963191222c66267858149e662b7d/d98b625b2a3a261d2c12caaae61b479f.webp" + }, + "7400": { + "id": 7400, + "name": "Adam’s Dream", + "diamondCost": 25999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9a586391fbb1e21621c4203e5563a9e0~tplv-obj.webp" + }, + "7403": { + "id": 7403, + "name": "Tucker the Turkey", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/8f7/8f7fcac557fb70fa0bbd69809c112c0e/978e0bcdcd8cbf4cbdfdb53d9fc39eaa.webp" + }, + "7467": { + "id": 7467, + "name": "Chasing the Dream", + "diamondCost": 1500, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea8dbb805466c4ced19f29e9590040f~tplv-obj.webp" + }, + "7468": { + "id": 7468, + "name": "Dancing Adam", + "diamondCost": 5000, + "image": "https://storage.streamdps.com/iblock/f5c/f5cda80a1f9853c49226a450faf26e8f/6318d17d7a2526f521123402d19a4c3e.webp" + }, + "7482": { + "id": 7482, + "name": "Flying Jets", + "diamondCost": 5000, + "image": "https://storage.streamdps.com/iblock/5a4/5a4f3c7adc31f60326e3adf1a3a20bf9/bc96de02ceba4b91c1f9c996293974b4.webp" + }, + "7501": { + "id": 7501, + "name": "Hello Traveler", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/a46/a4668dd315e2d9d84fd267fd0bc9ca59/0eb68fd9e58d9c9072d8ec7185103371.webp" + }, + "7503": { + "id": 7503, + "name": "We Love", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/679/679e9e38e38f8a4ce707328aa92b8997/9fedb22710af980bbf7b3092b08ecb94.webp" + }, + "7529": { + "id": 7529, + "name": "Mystery Firework", + "diamondCost": 1999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/c110230c5db903db5f060a432f5a86cd~tplv-obj.webp" + }, + "7532": { + "id": 7532, + "name": "Dream Team", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/252/2523636860d9336ab7cd149bbfb94533/b171f50afc37dc216144b4bc9ca259a1.webp" + }, + "7542": { + "id": 7542, + "name": "KO", + "diamondCost": 20, + "image": "https://storage.streamdps.com/iblock/e5e/e5efb63a21695a08d9647508aca3c95e/cffda8af4cc1a9f4a66eb01b11f4db85.webp" + }, + "7543": { + "id": 7543, + "name": "M4 Beatrix", + "diamondCost": 20, + "image": "https://storage.streamdps.com/iblock/bda/bdaf5a42e3e788628aee4d75446310e4/2089c0537e7645d02ed0647862564bed.webp" + }, + "7544": { + "id": 7544, + "name": "M4 Trophy", + "diamondCost": 450, + "image": "https://storage.streamdps.com/iblock/f40/f40a34a8e59806907deaa4f74df3462d/8deac28cb21517228bcd354645a987ea.webp" + }, + "7545": { + "id": 7545, + "name": "Feather Hat", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/a34/a348051e15e9de47b89a23a9a688526b/530fe08e5162bb722eac73314c43972f.webp" + }, + "7549": { + "id": 7549, + "name": "Gamer Cat", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/e36/e36cb42edac42a0636f8785b80c274dc/bbd87fef7b269564a4ca32009879c0ab.webp" + }, + "7591": { + "id": 7591, + "name": "Tiny Diny", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/b24/b24309d4ea6722875678e492ae12fb3f/864ac7928a78b43be2d1ee93915a53f5.webp" + }, + "7604": { + "id": 7604, + "name": "2023", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/8fb/8fba3d5f6bf547ba8c94d3f393992d46/e3cfc1cfea30d7c139f7c4943f5d3b26.webp" + }, + "7610": { + "id": 7610, + "name": "Dragon Flame", + "diamondCost": 26999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/89b4d1d93c1cc614e3a0903ac7a94e0c~tplv-obj.webp" + }, + "7624": { + "id": 7624, + "name": "Take a Drive", + "diamondCost": 1200, + "image": "https://storage.streamdps.com/iblock/fb5/fb50bcd0bb83c3a338d7d5196a7e987c/aa0e7affca4b6d34877244af7f5b611c.webp" + }, + "7631": { + "id": 7631, + "name": "Take a Drive", + "diamondCost": 1200, + "image": "https://storage.streamdps.com/iblock/c5b/c5b1ae3782864918bcb70d9e92046b87/8f3b4f952004f1aaef4bccfd69b19568.webp" + }, + "7655": { + "id": 7655, + "name": "KO", + "diamondCost": 20, + "image": "https://storage.streamdps.com/iblock/aa6/aa613e765fe5c42519bd83d2d4705118/7db90e1f83b8c87c74dfdc8ee88440cb.webp" + }, + "7656": { + "id": 7656, + "name": "M4 Beatrix", + "diamondCost": 20, + "image": "https://storage.streamdps.com/iblock/da7/da77071a5194b9d7a3a6e94a9dcb5a4f/04a7595d5f7ffb42c9e28a697f0feed3.webp" + }, + "7688": { + "id": 7688, + "name": "Don’t Do It", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/dca/dcac97e4190d46d113f4bdf2918ee173/4fae166b3f3273b9dbbc2a86bea0ec18.webp" + }, + "7720": { + "id": 7720, + "name": "Flying Jets", + "diamondCost": 5000, + "image": "https://storage.streamdps.com/iblock/738/73887ee5dc4a63709a10a2e3eff67b7c/1588215b603e2495582288471573cd57.webp" + }, + "7730": { + "id": 7730, + "name": "Frog Prince", + "diamondCost": 12000, + "image": "https://storage.streamdps.com/iblock/b7f/b7fbe7755df4e9a9a403fb4f309011c4/e6d35853c31cfe26bfa586f4008d99b7.webp" + }, + "7742": { + "id": 7742, + "name": "Monty", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/c70/c70e3a9404b18068056d04d5394d739a/4e0e55d9d10a7747b7caf462cd87b4b3.webp" + }, + "7747": { + "id": 7747, + "name": "Snowboard", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/9f1/9f1a3c5fe2fe7ef505a144e01fc37d29/cbac5622c575d34dfd943bc2a8f3d80c.webp" + }, + "7749": { + "id": 7749, + "name": "Ice skating", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/bca/bca431a96e357d4a81ca36a861290830/2b4ad3b82b5dfea987fcbde0e6a620db.webp" + }, + "7764": { + "id": 7764, + "name": "Star Throne", + "diamondCost": 7999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.webp" + }, + "7780": { + "id": 7780, + "name": "Ice hockey", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/2f2/2f28a4627c1149db4c9715fdf6702b9e/5139a343ec5772b6333b452743d45a8f.webp" + }, + "7781": { + "id": 7781, + "name": "Ski Goggles", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/f42/f42cbce436db4e60adbf85641a768a12/fa9a4cea3c23829cf6f0725fea8d3c1a.webp" + }, + "7789": { + "id": 7789, + "name": "Mike", + "diamondCost": 4000, + "image": "https://storage.streamdps.com/iblock/de0/de0da7b6ce6ba19125b1c4eb2fd2966a/6804a72c00714de05f9239be7bd5b515.webp" + }, + "7810": { + "id": 7810, + "name": "Match Wand", + "diamondCost": 100, + "image": "https://storage.streamdps.com/iblock/841/841037f168f5e2757ead3d4989d40850/cac3e62b0c75d0914fe2e588832e14ee.webp" + }, + "7823": { + "id": 7823, + "name": "Leon and Lion", + "diamondCost": 34000, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a291aedacf27d22c3fd2d83575d2bee9~tplv-obj.webp" + }, + "7824": { + "id": 7824, + "name": "The Passion Rose", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/1f7/1f7ff4f8a00e2aaaaa91337e3c035bef/813a759c5b88d3af96aa7b810b88fcf4.webp" + }, + "7831": { + "id": 7831, + "name": "Alien Peace Sign", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/5f7/5f7b29f5c7a4ca3a4dbbe8dc0e195459/cd83433a0f1697a0b66a891cbd7cf1af.webp" + }, + "7835": { + "id": 7835, + "name": "The Passion Rose", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/c3d/c3d0ba3211f8dbd471180427afc05dbb/702c139809f990c7b7d9b552bd02825e.webp" + }, + "7837": { + "id": 7837, + "name": "Choco Strawberries", + "diamondCost": 30, + "image": "https://storage.streamdps.com/iblock/791/7913d94ea7979d96332bb0f1ec0915aa/bbdff72cdcf98f8f9103b5ea3a3055e1.webp" + }, + "7839": { + "id": 7839, + "name": "Shiba Inu", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/3c4/3c40e306064bb00719cb77dec261891a/bc24ae9f8a52d13475897170332d546f.webp" + }, + "7851": { + "id": 7851, + "name": "Football Helmet", + "diamondCost": 50, + "image": "https://storage.streamdps.com/iblock/9cc/9cce61670c1a81b7954fcf3520dc15a2/b78182e9fd2ff1c6ae1256abd8e2e2bf.webp" + }, + "7867": { + "id": 7867, + "name": "Wasp", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/a2e/a2ee3b391f273bed4c62678256de1d67/fb7e033b22eec6c13fb9a0a4d4bb0ed7.webp" + }, + "7879": { + "id": 7879, + "name": "Center Stage", + "diamondCost": 1799, + "image": "https://storage.streamdps.com/iblock/f98/f98f3a270c59ee6b1c7ce1ca4d4cdb6d/46cdf56fbdb0e25155535de03da71404.webp" + }, + "7880": { + "id": 7880, + "name": "Concert", + "diamondCost": 2888, + "image": "https://storage.streamdps.com/iblock/0a5/0a59a6ed630ba5aa03392675e6a25654/9ea2257ab244985b43ee801d0889a626.webp" + }, + "7881": { + "id": 7881, + "name": "Magic Stage", + "diamondCost": 2599, + "image": "https://storage.streamdps.com/iblock/6ef/6ef3c6660522545bf8da9858bcc553c6/c68b28842956bf9e8ad3fa2bfe32b1b9.webp" + }, + "7882": { + "id": 7882, + "name": "Drums", + "diamondCost": 1000, + "image": "https://storage.streamdps.com/iblock/449/449c40e5064f776737e24fd6460195a1/477a014b033108643c2d674b2cce2d0a.webp" + }, + "7883": { + "id": 7883, + "name": "Guitar", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/808/808c6a6e16e3ff0ee02479354102e337/ce5fe5c52bca407ac24c253361ec1968.webp" + }, + "7895": { + "id": 7895, + "name": "Gamer Cyber Mask", + "diamondCost": 399, + "image": "https://storage.streamdps.com/iblock/383/383652cc1fd3cae9402eeae3a8f5ee1e/df8a16397bb0ed28c0e522b4cfb26500.webp" + }, + "7897": { + "id": 7897, + "name": "Baseball", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/923/92341a47e85be94fb6a6699a6c430a93/d60527955f9597a43d339357fed6a5fc.webp" + }, + "7927": { + "id": 7927, + "name": "Puppy Love", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/669/66987a73df074dbe87e1038cbc3c6755/62b5cc4c7414d33dde55b7a201ba5281.webp" + }, + "7932": { + "id": 7932, + "name": "Love Letter", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/a40/a40cb58d5e8c07fa3e46a9acb4e34f6f/477507a1b14df0a22ef895c6214f3789.webp" + }, + "7933": { + "id": 7933, + "name": "Funny Face", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/65b/65be33e0d88d5cb55e5e968b67417fc1/2530e112c1891007fc956255f5c7f0ad.webp" + }, + "7934": { + "id": 7934, + "name": "Heart Me", + "diamondCost": 1, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/d56945782445b0b8c8658ed44f894c7b~tplv-obj.webp" + }, + "7963": { + "id": 7963, + "name": "Diamond Tree", + "diamondCost": 1088, + "image": "https://storage.streamdps.com/iblock/47a/47afc3c8563cacbff2ce13f2310a2fc4/84761a2a3e0431bda3bf3d2cc9d02b3f.webp" + }, + "7974": { + "id": 7974, + "name": "Anemo Slime", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/8b0/8b0d71102fd2ec5bd933dd7b13d05494/0e4b5a7426584dfccd59a45dad66fd96.webp" + }, + "7976": { + "id": 7976, + "name": "March", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/ba4/ba44cb084cab8c9c63b4513a145813f4/56531d239586a3d4552859cb2b23314d.webp" + }, + "7977": { + "id": 7977, + "name": "Hi March", + "diamondCost": 88, + "image": "https://storage.streamdps.com/iblock/e22/e2266686271c7a90ff04517f248c6f73/0459d679c01a5bfa5a4be1d61ec81ec8.webp" + }, + "7984": { + "id": 7984, + "name": "Counting Sheep", + "diamondCost": 1200, + "image": "https://storage.streamdps.com/iblock/f32/f32291f6832c1eb265820aede5db65b2/006d4bd8018d5da1addb803dabd2b64b.webp" + }, + "7985": { + "id": 7985, + "name": "Lion\u0027s Mane", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/267/2670a5a8c9666b7afffb3255c2c104ee/abe9a0e7a6ef8b83d94df90f3a356748.webp" + }, + "7987": { + "id": 7987, + "name": "Griffin", + "diamondCost": 25999, + "image": "https://storage.streamdps.com/iblock/609/6092240118fdb3ad46036c0533dd23c8/0f700fd4e875174d01ad04a8db2ae94e.webp" + }, + "7989": { + "id": 7989, + "name": "Boxing Robe", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/653/653d737cee4ef1f2cbd1d69d3aebdcee/478170842ea659c42df24028ea92f883.webp" + }, + "7997": { + "id": 7997, + "name": "Rosa", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/486/486a2490c987c2bb97b6068fd5aac5ab/49d9045fcfe94bbfbd08c3363bb4512a.webp" + }, + "8017": { + "id": 8017, + "name": "Headphone", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/055/05573a16af395b896b26847bc77fbb5e/55c0f27976902374940cfb54f22728d0.webp" + }, + "8038": { + "id": 8038, + "name": "Double trouble", + "diamondCost": 2988, + "image": "https://storage.streamdps.com/iblock/a23/a23f89b59cebf6d82ba64437e0ce52c9/d13464a899047febd2bd3db61835cb1b.webp" + }, + "8066": { + "id": 8066, + "name": "Goggles", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/7b2/7b2f9df1b79a2832a1c849843a88863d/5207ae96e4b06bc496c826859fc828b8.webp" + }, + "8074": { + "id": 8074, + "name": "Cuddle with Me", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/b73/b73e476594a2e9728a5d0ba459fbfb6c/3c37f3a0b52c276a3374bfc0c1247d5c.webp" + }, + "8077": { + "id": 8077, + "name": "March", + "diamondCost": 88, + "image": "https://storage.streamdps.com/iblock/563/563e36a03f028ccf8d6ed380e3f04f8f/3097c2f24b4eb893a9752099920a2e3d.webp" + }, + "8086": { + "id": 8086, + "name": "Car Drifting", + "diamondCost": 3000, + "image": "https://storage.streamdps.com/iblock/4e5/4e537a5c27bc6be1887f40eb2995d38e/62635a8973c01d0a0330f778e5ba5872.webp" + }, + "8097": { + "id": 8097, + "name": "Dallah", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/402/402ec89b471788374f63bd0d906e49c2/bbb7055a407d84bd3be843f5ca9fdc4b.webp" + }, + "8104": { + "id": 8104, + "name": "Monster Truck", + "diamondCost": 7999, + "image": "https://storage.streamdps.com/iblock/65e/65ef72be838f6a2d425eb3871490fb49/679fa1e8a32c9379751642775a7673e6.webp" + }, + "8108": { + "id": 8108, + "name": "Dog Bone", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/8ba/8badf8e0a5bcbf8d98ed6c4fc0e16c69/b0a8a8020986eb564713c042d23f83b2.webp" + }, + "8111": { + "id": 8111, + "name": "Superpower", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/3d7/3d7c19e8efe9ef54aea45c48fa1b7c99/b3f6922a794374338c672b5a4c936aa0.webp" + }, + "8130": { + "id": 8130, + "name": "Like-Pop", + "diamondCost": 99, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/75eb7b4aca24eaa6e566b566c7d21e2f~tplv-obj.webp" + }, + "8152": { + "id": 8152, + "name": "Spring train", + "diamondCost": 3999, + "image": "https://storage.streamdps.com/iblock/035/035862dc0952468fc95f02995cec0f22/eeb69650806ea4c2e22558ef4b5e2b47.webp" + }, + "8155": { + "id": 8155, + "name": "My favourite", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/c4f/c4f75ee454e7958671db08dfb0ecc0df/83bc324a57610cf85584ef3659dfae2d.webp" + }, + "8156": { + "id": 8156, + "name": "My favourite", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/8cf/8cfe4cfffd783a468357fd89e2f110e6/b1cc3eaf279274fbfdf8af48f2200f59.webp" + }, + "8165": { + "id": 8165, + "name": "Chick", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/54e/54e5c232c74094c8e4b4d5678552f756/8132c0b012e7100540e1f1e2a5b3265d.webp" + }, + "8186": { + "id": 8186, + "name": "Cornflower", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/025/025c50c390f6a12148a69728284c7298/36b50fe529db9d7db028b0774842e103.webp" + }, + "8188": { + "id": 8188, + "name": "Dancing Bears", + "diamondCost": 3000, + "image": "https://storage.streamdps.com/iblock/750/75026646d18ce879627c1688d3030aea/584e1dee044c0c11126d2f031ec86a5f.webp" + }, + "8189": { + "id": 8189, + "name": "Maxwell", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/82b/82b7041dcdd8fcc1842c0dd7b5a63099/73736d5ec979ad00f4b771397d9b998b.webp" + }, + "8201": { + "id": 8201, + "name": "We are a team", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/5d2/5d2c4cc3cedfb9b6f230165990d2d2d3/0262b6d01e39dd56c2e877e13061c56d.webp" + }, + "8202": { + "id": 8202, + "name": "Superb Team", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/e6e/e6e8cdd5e84f701dc627b8cc3e280d4c/29ce845878feb46152b20a75a3259d56.webp" + }, + "8203": { + "id": 8203, + "name": "Great Team", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/95f/95f3f1519e2b1d025b9a0a1e2faa2fa5/ff1b5216cf3b50aa851d6bd865957dba.webp" + }, + "8205": { + "id": 8205, + "name": "No.1 Team", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/27f/27fe97cb0f1b8056fa0aedc918ea560e/966df61a39e36fe0f7237e55c3298117.webp" + }, + "8217": { + "id": 8217, + "name": "Capybara", + "diamondCost": 30, + "image": "https://storage.streamdps.com/iblock/e94/e944534be54186446d7c38563c772029/553d899c4bd4be31e7b051bb36e842f8.webp" + }, + "8232": { + "id": 8232, + "name": "Gardening", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/304/304792b9ecf0559337cbd177eac7d286/87a750e1dfaf6d811af3d9970a64501d.webp" + }, + "8237": { + "id": 8237, + "name": "April", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/286/2868dcf1aa87ea32265bbd75e75d9f60/ca42b293ad5e3062659989fa985dbbc0.webp" + }, + "8238": { + "id": 8238, + "name": "Hi April", + "diamondCost": 88, + "image": "https://storage.streamdps.com/iblock/88e/88e25becb6f23daa0e97669a3b2905fb/d7b74b5b1e20c22e9baa4f1f02f1c6f5.webp" + }, + "8243": { + "id": 8243, + "name": "Cheer You Up", + "diamondCost": 9, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/97e0529ab9e5cbb60d95fc9ff1133ea6~tplv-obj.webp" + }, + "8244": { + "id": 8244, + "name": "Hands Up", + "diamondCost": 499, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f4d906542408e6c87cf0a42f7426f0c6~tplv-obj.webp" + }, + "8245": { + "id": 8245, + "name": "Here We Go", + "diamondCost": 1799, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/61b76a51a3757f0ff1cdc33b16c4d8ae~tplv-obj.webp" + }, + "8247": { + "id": 8247, + "name": "Happy Party", + "diamondCost": 6999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/41774a8ba83c59055e5f2946d51215b4~tplv-obj.webp" + }, + "8248": { + "id": 8248, + "name": "Fly Love", + "diamondCost": 19999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a598ba4c7024f4d46c1268be4d82f901~tplv-obj.webp" + }, + "8259": { + "id": 8259, + "name": "I love you", + "diamondCost": 49, + "image": "https://storage.streamdps.com/iblock/230/230e7edc8986e8d5f633a2883cbf3667/75b756118ea0ea79126828b48b27644e.webp" + }, + "8260": { + "id": 8260, + "name": "Elephant trunk", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/1ea/1eafea22e99969312cda7c142d8eb3c5/59f72e0dce1bc4fcf83a34f56872b492.webp" + }, + "8263": { + "id": 8263, + "name": "Yellow Bus", + "diamondCost": 6000, + "image": "https://storage.streamdps.com/iblock/88d/88df4387d65bcc77b691098fd649bd59/ad401a92ddba9aae15bb777f9f38638d.webp" + }, + "8277": { + "id": 8277, + "name": "Love Drop", + "diamondCost": 1800, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea684b3104abb725491a509022f7c02~tplv-obj.webp" + }, + "8283": { + "id": 8283, + "name": "Mushroom", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/883/883cbcd93cbfc9c443eeeb7278d03d87/b421f5e48d0fdbfda7c4475bbab69ff4.webp" + }, + "8286": { + "id": 8286, + "name": "GG", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/993/993d6fe6ba90a007abd712557c96be80/26dd80bd9499dbed22cd6f1ac6ef6fd1.webp" + }, + "8297": { + "id": 8297, + "name": "Anemo Slime", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/bda/bdaab62a1b0e4c545f642c756527befb/f8c85e3a422614f15130d0703bd8ad6a.webp" + }, + "8298": { + "id": 8298, + "name": "Dehya", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/c69/c6958678de541ee2bc86ca0705a092d6/d33c50b1f67560f9673724a34b01a63d.webp" + }, + "8299": { + "id": 8299, + "name": "Paimon Surprise", + "diamondCost": 1299, + "image": "https://storage.streamdps.com/iblock/ffc/ffc784ca54363f5d1d0c195419a3c19b/27096967caade6f066ce748bf5327244.webp" + }, + "8327": { + "id": 8327, + "name": "Flower Flight", + "diamondCost": 399, + "image": "https://storage.streamdps.com/iblock/886/88657108678e20acb23ff7fea5b479f7/144ff90bc7bc304c7c28064812d85ba2.webp" + }, + "8344": { + "id": 8344, + "name": "Bird Whisperer", + "diamondCost": 5000, + "image": "https://storage.streamdps.com/iblock/079/079bf5895816fb04293d01375eaf23a5/672128ca0f65deb0e75e2a9a690a79f0.webp" + }, + "8349": { + "id": 8349, + "name": "Cotton the Seal", + "diamondCost": 399, + "image": "https://storage.streamdps.com/iblock/6da/6dac7ca9a1f92e28287a9ef01e55a560/d0317b7d3411edd28a393a56d24a863f.webp" + }, + "8352": { + "id": 8352, + "name": "Cotton\u0027s Shell", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/766/7665d59f0ef96aecd2dac6fc5b0c19a4/3b169a12b4f8686c68d596f6d47d2f77.webp" + }, + "8358": { + "id": 8358, + "name": "Panther Paws", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/a25/a25d2409e1d851566987913c9fb9860f/6aeb9164cf39e2602933d28dbd106119.webp" + }, + "8381": { + "id": 8381, + "name": "Seal and Whale", + "diamondCost": 34500, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3781e9159ff09272826d3f2216ba36ef.png~tplv-obj.webp" + }, + "8391": { + "id": 8391, + "name": "Sam the Whale", + "diamondCost": 30000, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f48a1887eb88238738996bb997b31c0f.png~tplv-obj.webp" + }, + "8392": { + "id": 8392, + "name": "I love music", + "diamondCost": 398, + "image": "https://storage.streamdps.com/iblock/757/7578dd5937689a7fd7b03751e72e67b9/051e5abcb68d51ae38b094696c5eaa06.webp" + }, + "8415": { + "id": 8415, + "name": "Knockout", + "diamondCost": 4999, + "image": "https://storage.streamdps.com/iblock/1a5/1a56926523c34ab3b553180c42f7bc55/7a6076446639aade9d5498df45ba7f9b.webp" + }, + "8416": { + "id": 8416, + "name": "Pyramids", + "diamondCost": 15000, + "image": "https://storage.streamdps.com/iblock/988/988ffe82e8f3b235bd91dac1e31e708d/ad0365d14ba0480e5d6d60f6eb798608.webp" + }, + "8417": { + "id": 8417, + "name": "Octopus", + "diamondCost": 10000, + "image": "https://storage.streamdps.com/iblock/419/4197c396a3fcdd28f0477d9af50cd964/1196ad0f243ca976832319a46c7935ed.webp" + }, + "8418": { + "id": 8418, + "name": "Speedster", + "diamondCost": 15000, + "image": "https://storage.streamdps.com/iblock/96a/96a5a249a1701c3c03e0b2427bad3b2f/63fb5582c89c17f275fc99505505b719.webp" + }, + "8419": { + "id": 8419, + "name": "Red Lightning", + "diamondCost": 12000, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/5f48599c8d2a7bbc6e6fcf11ba2c809f~tplv-obj.webp" + }, + "8420": { + "id": 8420, + "name": "Star Throne", + "diamondCost": 7999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.webp" + }, + "8433": { + "id": 8433, + "name": "Silver sports car", + "diamondCost": 5000, + "image": "https://storage.streamdps.com/iblock/132/132eb0981780e3e268f844106037b277/a1afff85fc6c53482fccbea21709d36b.webp" + }, + "8434": { + "id": 8434, + "name": "Ruby red", + "diamondCost": 88, + "image": "https://storage.streamdps.com/iblock/405/405fcf52a1de3d14ab9834c1f30cc330/0deed9ee2c79ba6bf2005b0ce667bf60.webp" + }, + "8448": { + "id": 8448, + "name": "Raccoon", + "diamondCost": 15, + "image": "https://storage.streamdps.com/iblock/539/5396582d174489f32525f871cb3087f8/041896a3554f3d4b8c86f486bc81b125.webp" + }, + "8455": { + "id": 8455, + "name": "Happy Mother\u0027s Day", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/a0f/a0ff283ce42ad27a03d6b8b98e81463b/9e5a49a9bae80f0afa30257d562cec8e.webp" + }, + "8457": { + "id": 8457, + "name": "Zeus", + "diamondCost": 34000, + "image": "https://storage.streamdps.com/iblock/fff/ffff57559cbd0d73b6b877e99fb9d803/b5127bbee5491c0aa32f764b679b087d.webp" + }, + "8496": { + "id": 8496, + "name": "Tiara", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/1b1/1b1ee7b697bae41ee2cbf834d1f1099e/303eec791a710c2417bb5075529681d9.webp" + }, + "8552": { + "id": 8552, + "name": "Baby fox", + "diamondCost": 20, + "image": "https://storage.streamdps.com/iblock/b7d/b7df9be24aa630c9b04db3974f103a73/17a445fd5256e13281e64c718b5112fe.webp" + }, + "8581": { + "id": 8581, + "name": "Stars Snap", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/318/318a8ce7e87f37f90bf5e3fbf773d827/e67f69439ae7c4bbf03bdaffd6e961a2.webp" + }, + "8582": { + "id": 8582, + "name": "TikTok Stars", + "diamondCost": 39999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/b1667c891ed39fd68ba7252fff7a1e7c~tplv-obj.webp" + }, + "8597": { + "id": 8597, + "name": "Suitcase", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/50f/50f04937063753d6de255d2b5a080c1c/4f101c7c50ddbe8bd26a2ce5f8c16896.webp" + }, + "8600": { + "id": 8600, + "name": "Sending positivity", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/29b/29b0e9cb18e3479d17188235f8fdf480/58c6e916f44dcdda9d2f68dbdae77ddb.webp" + }, + "8604": { + "id": 8604, + "name": "Starfish Bay", + "diamondCost": 6000, + "image": "https://storage.streamdps.com/iblock/f5b/f5b206d2040b1a7bd6dd0438577e5183/e89a53efdae52e710d437defd69b56ef.webp" + }, + "8613": { + "id": 8613, + "name": "Draco", + "diamondCost": 5000, + "image": "https://storage.streamdps.com/iblock/48f/48f1a8d280e271929718525560ad42a8/3021d84608e0c5da388f1f6534011a6f.webp" + }, + "8648": { + "id": 8648, + "name": "Window basket", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/a8d/a8d0c44c86385d4cd02ad2d840dcb148/8bbdca8666946a2e7172b3eaeed02303.webp" + }, + "8651": { + "id": 8651, + "name": "Thunder Falcon", + "diamondCost": 39999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/26f3fbcda383e6093a19b8e7351a164c~tplv-obj.webp" + }, + "8672": { + "id": 8672, + "name": "Knight Helmet", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/291/2915da07301fcb6a9a4d3e515931c2c8/31ebb4cad7a264fe9657a3ddfaca4eaa.webp" + }, + "8692": { + "id": 8692, + "name": "Hi Bear", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/f34/f34b75494926337d0bede7003aee0af9/1cb25dfee5bac6dc49b19222ed6967f7.webp" + }, + "8740": { + "id": 8740, + "name": "Crocodile", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/4e2/4e2d9df24c472158b8ed93546fc73b16/75722a173b75d601e0a80a679902529f.webp" + }, + "8744": { + "id": 8744, + "name": "Lemond Buddy", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/282/28210d38f8625d7c3f39bb85e1fd59c4/61f609f602fc0f3cc2bff6cf94d32fbe.webp" + }, + "8767": { + "id": 8767, + "name": "Golden Trumpet", + "diamondCost": 15, + "image": "https://storage.streamdps.com/iblock/a44/a4441a11d3cb073e855088a4eff72fdb/020b0d041c38b00b730b28806dbe6cc5.webp" + }, + "8769": { + "id": 8769, + "name": "Raining gifts", + "diamondCost": 999, + "image": "https://storage.streamdps.com/iblock/916/91661303a8dc3660acaf2f4e47a94f75/221a1f185676496ebcdbaf55f90aeb70.webp" + }, + "8778": { + "id": 8778, + "name": "Wolf", + "diamondCost": 5000, + "image": "https://storage.streamdps.com/iblock/70f/70fa80dd2d07f44f28db148328735a6b/68c7215817c6143ac33036933fcf777d.webp" + }, + "8793": { + "id": 8793, + "name": "Across the board", + "diamondCost": 450, + "image": "https://storage.streamdps.com/iblock/285/285070af9d4f72b74e7d74c22157f2d9/67d9fa3239a7f9a09ef78c832a66e624.webp" + }, + "8806": { + "id": 8806, + "name": "Dancing Capybaras", + "diamondCost": 2200, + "image": "https://storage.streamdps.com/iblock/ac2/ac2606f1dc2504c9a1b7974f40074c87/c243031480e8f2e4bbd8e7a43228ff1f.webp" + }, + "8810": { + "id": 8810, + "name": "Pinky promise", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/686/6864e9132aa300e189e93054ad735407/fe1a1a4405f77f009f4a76a184bafc52.webp" + }, + "8812": { + "id": 8812, + "name": "Panda skydiving", + "diamondCost": 2000, + "image": "https://storage.streamdps.com/iblock/a29/a29903a975ce45f7b9939b510412fcee/051afc0510a7349a9ebfcde9e0fdec24.webp" + }, + "8815": { + "id": 8815, + "name": "Pink shoes", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/387/387c559abfc868aa8f7d605a25748c14/06e08ba736cb17076b9c314058160ad2.webp" + }, + "8826": { + "id": 8826, + "name": "Watermelon", + "diamondCost": 10, + "image": "https://storage.streamdps.com/iblock/84e/84e29ce96978961b12f1e88dd985b938/08e2a0ac2c2e2794aa2558e67d387639.webp" + }, + "8842": { + "id": 8842, + "name": "Cowboy Hat", + "diamondCost": 199, + "image": "https://storage.streamdps.com/iblock/5f3/5f3df5eccbc82f458fdacd0f82d13e40/40980853c80e3da0e902a1db49ea9798.webp" + }, + "8843": { + "id": 8843, + "name": "Pink shoes", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/e32/e328784531bfcd4773983c6a8e205a44/a3b5a6f4fa914fdf10b754ee59dc34a4.webp" + }, + "8852": { + "id": 8852, + "name": "Cotton the Seal", + "diamondCost": 399, + "image": "https://storage.streamdps.com/iblock/a36/a36238dfeb0d768707d336eac32cdf82/cf84e06c4c8f1e9dce3db677fd4770a5.webp" + }, + "8873": { + "id": 8873, + "name": "TikTok Crown", + "diamondCost": 299, + "image": "https://storage.streamdps.com/iblock/a79/a790613bdf2e83725d0519bbf289529d/83bb670c15ab91b9192c50300f4c8054.webp" + }, + "8887": { + "id": 8887, + "name": "Fountain", + "diamondCost": 1200, + "image": "https://storage.streamdps.com/iblock/07d/07d678346c7eb588bc3cbddf343ab791/8f8f50f5350e4b1c0b151aff333e43a4.webp" + }, + "8892": { + "id": 8892, + "name": "Dream Team", + "diamondCost": 500, + "image": "https://storage.streamdps.com/iblock/e09/e09d671c035feae8ced7933e71f78c11/a0ea898b564b505716a2efdd50cf572a.webp" + }, + "8912": { + "id": 8912, + "name": "Rosa Nebula", + "diamondCost": 15000, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/f722088231103b66875dae33f13f8719.png~tplv-obj.webp" + }, + "8913": { + "id": 8913, + "name": "Rosa", + "diamondCost": 10, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/eb77ead5c3abb6da6034d3cf6cfeb438~tplv-obj.webp" + }, + "8914": { + "id": 8914, + "name": "Forever Rosa", + "diamondCost": 399, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/863e7947bc793f694acbe970d70440a1.png~tplv-obj.webp" + }, + "8916": { + "id": 8916, + "name": "Leon and Lili", + "diamondCost": 9699, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/6958244f3eeb69ce754f735b5833a4aa.png~tplv-obj.webp" + }, + "8963": { + "id": 8963, + "name": "Ice cream", + "diamondCost": 5, + "image": "https://storage.streamdps.com/iblock/f72/f726165be6e93bdc69724375e7931dde/2e749d8d397b3ce5e6bcc90402f27c7d.webp" + }, + "8978": { + "id": 8978, + "name": "Glowing Jellyfish", + "diamondCost": 1000, + "image": "https://storage.streamdps.com/iblock/e65/e65b1f71b4fe5709b454299439cb2674/36471857a2ba78694be934a54a0fa8d2.webp" + }, + "8988": { + "id": 8988, + "name": "DJ Alien", + "diamondCost": 5000, + "image": "https://storage.streamdps.com/iblock/67c/67cd7b9372f25b4f3558eacdfb83dc8b/059b6bf7b8c268d525fd9295fac0eb61.webp" + }, + "9043": { + "id": 9043, + "name": "Pim Bear", + "diamondCost": 1500, + "image": "https://storage.streamdps.com/iblock/204/2043f85b8f2e2ee638ff3a1799eda329/2319b052e0e64799842751d9fee4d438.webp" + }, + "9072": { + "id": 9072, + "name": "TikTok Universe", + "diamondCost": 44999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8f471afbcebfda3841a6cc515e381f58~tplv-obj.webp" + }, + "9081": { + "id": 9081, + "name": "New Universe", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/ff9/ff906a964a6ad9c4504438302d9354b8/3ee4796c239930c395afb3d7ef10295a.webp" + }, + "9087": { + "id": 9087, + "name": "Flame heart", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/10d/10df10624cdeebe8ff5e0e89e8c8e960/28b8da2878a420f8465cbbc1ec1e6b58.webp" + }, + "9092": { + "id": 9092, + "name": "Fire Phoenix", + "diamondCost": 41999, + "image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/bfb8425a7e8fa03f9fec05a973a4a506.png~tplv-obj.webp" + }, + "9096": { + "id": 9096, + "name": "Birthday Crown", + "diamondCost": 99, + "image": "https://storage.streamdps.com/iblock/c07/c073f2d950a252aa24b7343655208c8a/68f6af6dc16ab51396cef18f50a43792.webp" + }, + "9097": { + "id": 9097, + "name": "Birthday Cake", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/5b9/5b9eca4a99e965cb25183681a07a5276/c28f7e9c4a8e42460225ff2d12300ae7.webp" + }, + "9147": { + "id": 9147, + "name": "Bigfoot", + "diamondCost": 3000, + "image": "https://storage.streamdps.com/iblock/f95/f95a4fcfa57150610fa50542db5b0990/ecb879cd751e580d3fe92770788c1735.webp" + }, + "9148": { + "id": 9148, + "name": "Forest Fairy", + "diamondCost": 4000, + "image": "https://storage.streamdps.com/iblock/078/07801fde04dd77b439384738e630e59f/e50ece2683001006eae00866d6df7b63.webp" + }, + "9149": { + "id": 9149, + "name": "Giant", + "diamondCost": 3999, + "image": "https://storage.streamdps.com/iblock/990/99093308d3ad2c3833d230f9aae7f702/36f073ad050bd79d7d1ba6d781e7ef11.webp" + }, + "9175": { + "id": 9175, + "name": "Pretzel", + "diamondCost": 1, + "image": "https://storage.streamdps.com/iblock/a67/a6797793eb382a99d38b2a0c37ec9b58/04ea1042707a361ad0f4668d0d759daa.webp" + } +} \ No newline at end of file diff --git a/Tools/target/classes/io/github/jwdeveloper/tiktok/EventsGeneratorRun.class b/Tools/target/classes/io/github/jwdeveloper/tiktok/EventsGeneratorRun.class deleted file mode 100644 index 8cc9289..0000000 Binary files a/Tools/target/classes/io/github/jwdeveloper/tiktok/EventsGeneratorRun.class and /dev/null differ diff --git a/Tools/target/classes/io/github/jwdeveloper/tiktok/EventsInterfaceGeneratorRun.class b/Tools/target/classes/io/github/jwdeveloper/tiktok/EventsInterfaceGeneratorRun.class deleted file mode 100644 index 41cfa85..0000000 Binary files a/Tools/target/classes/io/github/jwdeveloper/tiktok/EventsInterfaceGeneratorRun.class and /dev/null differ diff --git a/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/CSharpClassInfo$ConstructorInfo.class b/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/CSharpClassInfo$ConstructorInfo.class deleted file mode 100644 index e940b2d..0000000 Binary files a/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/CSharpClassInfo$ConstructorInfo.class and /dev/null differ diff --git a/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/CSharpClassInfo$FieldInfo.class b/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/CSharpClassInfo$FieldInfo.class deleted file mode 100644 index 468a72f..0000000 Binary files a/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/CSharpClassInfo$FieldInfo.class and /dev/null differ diff --git a/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/CSharpClassInfo.class b/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/CSharpClassInfo.class deleted file mode 100644 index 1e6a2bd..0000000 Binary files a/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/CSharpClassInfo.class and /dev/null differ diff --git a/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/CSharpClassParser.class b/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/CSharpClassParser.class deleted file mode 100644 index fd81c23..0000000 Binary files a/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/CSharpClassParser.class and /dev/null differ diff --git a/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/EventGeneratorSettings.class b/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/EventGeneratorSettings.class deleted file mode 100644 index b021a00..0000000 Binary files a/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/EventGeneratorSettings.class and /dev/null differ diff --git a/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/EventsGenerator.class b/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/EventsGenerator.class deleted file mode 100644 index f0b6d07..0000000 Binary files a/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/EventsGenerator.class and /dev/null differ diff --git a/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/JavaClassGenerator.class b/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/JavaClassGenerator.class deleted file mode 100644 index ec2c3c5..0000000 Binary files a/Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/JavaClassGenerator.class and /dev/null differ diff --git a/Tools/target/classes/io/github/jwdeveloper/tiktok/intefacee/EventsInterfaceGenerator.class b/Tools/target/classes/io/github/jwdeveloper/tiktok/intefacee/EventsInterfaceGenerator.class deleted file mode 100644 index f9993ea..0000000 Binary files a/Tools/target/classes/io/github/jwdeveloper/tiktok/intefacee/EventsInterfaceGenerator.class and /dev/null differ diff --git a/license.txt b/license.txt new file mode 100644 index 0000000..f6a0465 --- /dev/null +++ b/license.txt @@ -0,0 +1,20 @@ +Copyright (c) ${license.years} ${license.owner} ${license.email} + +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. \ No newline at end of file diff --git a/pom.xml b/pom.xml index 03c858b..5cdc115 100644 --- a/pom.xml +++ b/pom.xml @@ -42,42 +42,46 @@ true - - org.apache.maven.plugins - maven-shade-plugin - 3.5.0 + com.mycila + license-maven-plugin + 4.1 + +
license.txt
+ + jwdeveloper + 2023-2023 + jacekwoln@gmail.com + + true + + **/*.java + +
- - package + first - shade + format + + process-sources + + +
+ + org.apache.maven.plugins + maven-javadoc-plugin + 3.3.0 + + + attach-javadocs + package + + jar - - true - all - false - true - - - *:* - - - - - *:* - - **/tiktokSchema.proto/** - - - - - - @@ -100,9 +104,18 @@ 3.12.4 test - - - + + org.junit.jupiter + junit-jupiter + RELEASE + test + + + org.mockito + mockito-junit-jupiter + 3.11.2 + test +