mirror of
https://github.com/jwdeveloper/TikTokLiveJava.git
synced 2026-02-27 08:49:40 -05:00
Compare commits
12 Commits
develop-1_
...
1.0.2-Rele
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e12b0901f7 | ||
|
|
563e9618e2 | ||
|
|
82112f0140 | ||
|
|
77e30de5e1 | ||
|
|
a2b10ba7f6 | ||
|
|
957e38a5d2 | ||
|
|
5e77b3f57f | ||
|
|
690b9eb272 | ||
|
|
fc91991c2c | ||
|
|
0f735a7876 | ||
|
|
4d8d785dc7 | ||
|
|
d8b75af6af |
309
.gitignore
vendored
309
.gitignore
vendored
@@ -1,61 +1,85 @@
|
||||
# Project exclude paths
|
||||
/API/target/
|
||||
/Client/target/
|
||||
*.db
|
||||
backend-infrastructure/.aws-sam
|
||||
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
||||
# Created by https://www.gitignore.io/api/osx,linux,python,windows,pycharm,visualstudiocode
|
||||
|
||||
### Linux ###
|
||||
*~
|
||||
|
||||
# temporary files which can be created if a process still has a handle open of a deleted file
|
||||
.fuse_hidden*
|
||||
|
||||
# KDE directory preferences
|
||||
.directory
|
||||
|
||||
# Linux trash folder which might appear on any partition or disk
|
||||
.Trash-*
|
||||
|
||||
# .nfs files are created when an open file is removed but is still being accessed
|
||||
.nfs*
|
||||
|
||||
### OSX ###
|
||||
*.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
# Icon must end with two \r
|
||||
Icon
|
||||
|
||||
# Thumbnails
|
||||
._*
|
||||
|
||||
# Files that might appear in the root of a volume
|
||||
.DocumentRevisions-V100
|
||||
.fseventsd
|
||||
.Spotlight-V100
|
||||
.TemporaryItems
|
||||
.Trashes
|
||||
.VolumeIcon.icns
|
||||
.com.apple.timemachine.donotpresent
|
||||
|
||||
# Directories potentially created on remote AFP share
|
||||
.AppleDB
|
||||
.AppleDesktop
|
||||
Network Trash Folder
|
||||
Temporary Items
|
||||
.apdisk
|
||||
|
||||
### PyCharm ###
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
# User-specific stuff
|
||||
# User-specific stuff:
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
.idea/dictionaries
|
||||
.idea/
|
||||
|
||||
# AWS User-specific
|
||||
.idea/**/aws.xml
|
||||
|
||||
# Generated files
|
||||
.idea/**/contentModel.xml
|
||||
|
||||
# Sensitive or high-churn files
|
||||
# Sensitive or high-churn files:
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.xml
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
|
||||
# Gradle
|
||||
# Gradle:
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# Gradle and Maven with auto-import
|
||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||
# since they will be recreated, and may cause churn. Uncomment if using
|
||||
# auto-import.
|
||||
# .idea/artifacts
|
||||
# .idea/compiler.xml
|
||||
# .idea/jarRepositories.xml
|
||||
# .idea/modules.xml
|
||||
# .idea/*.iml
|
||||
# .idea/modules
|
||||
# *.iml
|
||||
# *.ipr
|
||||
|
||||
# CMake
|
||||
cmake-build-*/
|
||||
cmake-build-debug/
|
||||
|
||||
# Mongo Explorer plugin
|
||||
# Mongo Explorer plugin:
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
# File-based project format
|
||||
## File-based project format:
|
||||
*.iws
|
||||
|
||||
## Plugin-specific files:
|
||||
|
||||
# IntelliJ
|
||||
out/
|
||||
/out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
@@ -66,8 +90,8 @@ atlassian-ide-plugin.xml
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# SonarLint plugin
|
||||
.idea/sonarlint/
|
||||
# Ruby plugin and RubyMine
|
||||
/.rakeTasks
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
@@ -75,69 +99,150 @@ crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
||||
# Editor-based Rest Client
|
||||
.idea/httpRequests
|
||||
### PyCharm Patch ###
|
||||
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
||||
|
||||
# Android studio 3.1+ serialized cache file
|
||||
.idea/caches/build_file_checksums.ser
|
||||
/.idea/.gitignore
|
||||
/.idea/.name
|
||||
/.idea/compiler.xml
|
||||
/TestApplication/target/classes/io/github/jwdeveloper/tiktok/ConfigurationExample.class
|
||||
/TestApplication/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
|
||||
/TestApplication/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
|
||||
/Tools/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
|
||||
/Tools/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
|
||||
/Tools-EventsCollector/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
|
||||
/Tools-ReadmeGenerator/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
|
||||
/Tools-ReadmeGenerator/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
|
||||
/.idea/encodings.xml
|
||||
/Tools-ReadmeGenerator/target/classes/io/github/jwdeveloper/tiktok/EventsListGenerator$EventTypeComparator.class
|
||||
/Tools-ReadmeGenerator/target/classes/io/github/jwdeveloper/tiktok/EventsListGenerator.class
|
||||
/Tools-EventsCollector/target/classes/io/github/jwdeveloper/tiktok/tools/collector/tables/ExceptionInfoModel.class
|
||||
/Tools/target/classes/io/github/jwdeveloper/tiktok/utils/FilesUtility.class
|
||||
/TestApplication/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
|
||||
/TestApplication/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
|
||||
/Tools/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
|
||||
/Tools/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
|
||||
/Tools-EventsCollector/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
|
||||
/Tools-ReadmeGenerator/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
|
||||
/Tools-ReadmeGenerator/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
|
||||
/.idea/jarRepositories.xml
|
||||
/TestApplication/target/classes/io/github/jwdeveloper/tiktok/ListenerExample$CustomListener.class
|
||||
/TestApplication/target/classes/io/github/jwdeveloper/tiktok/ListenerExample.class
|
||||
/Tools-ReadmeGenerator/target/classes/io/github/jwdeveloper/tiktok/LiveClientMethodsGenerator.class
|
||||
/TestApplication/target/classes/io/github/jwdeveloper/tiktok/Main.class
|
||||
/Tools-EventsCollector/target/classes/io/github/jwdeveloper/tiktok/tools/collector/Main.class
|
||||
/Tools-ReadmeGenerator/target/classes/io/github/jwdeveloper/tiktok/Main.class
|
||||
/.idea/misc.xml
|
||||
/Tools-ReadmeGenerator/src/main/resources/output.md
|
||||
/Tools-ReadmeGenerator/target/classes/output.md
|
||||
/TestApplication/target/maven-archiver/pom.properties
|
||||
/Tools/target/maven-archiver/pom.properties
|
||||
/Tools-EventsCollector/target/maven-archiver/pom.properties
|
||||
/Tools-ReadmeGenerator/target/maven-archiver/pom.properties
|
||||
/.idea/inspectionProfiles/Project_Default.xml
|
||||
/Tools/target/classes/io/github/jwdeveloper/tiktok/protocol/ProtocolGenerator.class
|
||||
/Tools-ReadmeGenerator/target/classes/io/github/jwdeveloper/tiktok/ReadmeGenerator.class
|
||||
/TestApplication/target/classes/io/github/jwdeveloper/tiktok/SimpleExample.class
|
||||
/Tools-EventsCollector/target/classes/io/github/jwdeveloper/tiktok/tools/collector/db/SqlConsts.class
|
||||
/Tools-ReadmeGenerator/target/classes/template.md
|
||||
/Tools/target/classes/io/github/jwdeveloper/tiktok/utils/TemplateUtility.class
|
||||
/TestApplication/target/TestApplication-0.0.18-Release.jar
|
||||
/TestApplication/target/TestApplication-0.0.18-Release-all.jar
|
||||
/Tools-EventsCollector/target/classes/io/github/jwdeveloper/tiktok/tools/collector/db/TikTokDatabase.class
|
||||
/Tools-EventsCollector/target/classes/io/github/jwdeveloper/tiktok/tools/collector/tables/TikTokErrorModel$TikTokErrorModelBuilder.class
|
||||
/Tools-EventsCollector/target/classes/io/github/jwdeveloper/tiktok/tools/collector/tables/TikTokErrorModel.class
|
||||
/Tools-EventsCollector/target/classes/io/github/jwdeveloper/tiktok/tools/collector/db/TikTokErrorModelDAO.class
|
||||
/target/TikTokLiveJava-0.0.18-Release-all.pom
|
||||
/Tools-EventsCollector/target/classes/io/github/jwdeveloper/tiktok/tools/collector/tables/TikTokMessageModel$TikTokMessageModelBuilder.class
|
||||
/Tools-EventsCollector/target/classes/io/github/jwdeveloper/tiktok/tools/collector/tables/TikTokMessageModel.class
|
||||
/Tools-EventsCollector/target/classes/io/github/jwdeveloper/tiktok/tools/collector/db/TikTokMessageModelDAO.class
|
||||
/Tools/target/Tools-0.0.18-Release.jar
|
||||
/Tools/target/Tools-0.0.18-Release-all.jar
|
||||
/Tools-EventsCollector/target/Tools-EventsCollector-0.0.18-Release.jar
|
||||
/Tools-EventsCollector/target/Tools-EventsCollector-0.0.18-Release-all.jar
|
||||
/Tools-ReadmeGenerator/target/Tools-ReadmeGenerator-0.0.18-Release.jar
|
||||
/Tools-ReadmeGenerator/target/Tools-ReadmeGenerator-0.0.18-Release-all.jar
|
||||
/.idea/vcs.xml
|
||||
*.iml
|
||||
modules.xml
|
||||
.idea/misc.xml
|
||||
*.ipr
|
||||
|
||||
# Sonarlint plugin
|
||||
.idea/sonarlint
|
||||
|
||||
### Python ###
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
.pytest_cache/
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
.hypothesis/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# pyenv
|
||||
.python-version
|
||||
|
||||
# celery beat schedule file
|
||||
celerybeat-schedule.*
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
|
||||
### VisualStudioCode ###
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
.history
|
||||
|
||||
### Windows ###
|
||||
# Windows thumbnail cache files
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
ehthumbs_vista.db
|
||||
|
||||
# Folder config file
|
||||
Desktop.ini
|
||||
|
||||
# Recycle Bin used on file shares
|
||||
$RECYCLE.BIN/
|
||||
|
||||
# Windows Installer files
|
||||
*.cab
|
||||
*.msi
|
||||
*.msm
|
||||
*.msp
|
||||
|
||||
# Windows shortcuts
|
||||
*.lnk
|
||||
**/target/
|
||||
# Build folder
|
||||
|
||||
*/build/*
|
||||
|
||||
# End of https://www.gitignore.io/api/osx,linux,python,windows,pycharm,visualstudiocode
|
||||
/python-app-backend/samconfig.toml
|
||||
/java-app-backend/BackendFunction/dependency-reduced-pom.xml
|
||||
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>TikTokLiveJava</artifactId>
|
||||
<groupId>io.github.jwdeveloper.tiktok</groupId>
|
||||
<version>0.0.25-Release</version>
|
||||
<version>1.0.1-Release</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>API</artifactId>
|
||||
|
||||
@@ -51,7 +51,7 @@ public class Picture {
|
||||
public static Picture map(io.github.jwdeveloper.tiktok.messages.data.Image profilePicture) {
|
||||
|
||||
var index = profilePicture.getUrlListCount() - 1;
|
||||
if (index <= 0) {
|
||||
if (index < 0) {
|
||||
return new Picture("");
|
||||
}
|
||||
var url = profilePicture.getUrlList(index);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>TikTokLiveJava</artifactId>
|
||||
<groupId>io.github.jwdeveloper.tiktok</groupId>
|
||||
<version>0.0.25-Release</version>
|
||||
<version>1.0.1-Release</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
@@ -41,12 +41,28 @@
|
||||
<artifactId>Java-WebSocket</artifactId>
|
||||
<version>1.5.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.testng</groupId>
|
||||
<artifactId>testng</artifactId>
|
||||
<version>7.4.0</version> <!-- Use the desired TestNG version -->
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>3.0.0-M5</version>
|
||||
<configuration>
|
||||
<argLine>-Xmx512m</argLine>
|
||||
<suiteXmlFiles>
|
||||
<suiteXmlFile>testng.xml</suiteXmlFile>
|
||||
</suiteXmlFiles>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
|
||||
@@ -28,9 +28,11 @@ import io.github.jwdeveloper.tiktok.data.events.gift.TikTokGiftEvent;
|
||||
import io.github.jwdeveloper.tiktok.data.models.Picture;
|
||||
import io.github.jwdeveloper.tiktok.data.models.gifts.Gift;
|
||||
import io.github.jwdeveloper.tiktok.data.models.gifts.GiftSendType;
|
||||
import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveException;
|
||||
import io.github.jwdeveloper.tiktok.live.GiftManager;
|
||||
import io.github.jwdeveloper.tiktok.messages.webcast.WebcastGiftMessage;
|
||||
import lombok.SneakyThrows;
|
||||
import sun.misc.Unsafe;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@@ -45,9 +47,8 @@ public class TikTokGiftEventHandler {
|
||||
giftsMessages = new HashMap<>();
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
public List<TikTokEvent> handleGift(byte[] msg) {
|
||||
var currentMessage = WebcastGiftMessage.parseFrom(msg);
|
||||
public List<TikTokEvent> handleGift(WebcastGiftMessage currentMessage)
|
||||
{
|
||||
var userId = currentMessage.getUser().getId();
|
||||
var currentType = GiftSendType.fromNumber(currentMessage.getSendType());
|
||||
var containsPreviousMessage = giftsMessages.containsKey(userId);
|
||||
@@ -80,6 +81,13 @@ public class TikTokGiftEventHandler {
|
||||
|
||||
return List.of();
|
||||
}
|
||||
@SneakyThrows
|
||||
public List<TikTokEvent> handleGift(byte[] msg) {
|
||||
var currentMessage = WebcastGiftMessage.parseFrom(msg);
|
||||
return handleGift(currentMessage);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private TikTokGiftEvent getGiftEvent(WebcastGiftMessage message) {
|
||||
var gift = getGiftObject(message);
|
||||
@@ -103,6 +111,24 @@ public class TikTokGiftEventHandler {
|
||||
giftMessage.getGift().getDiamondCount(),
|
||||
Picture.map(giftMessage.getGift().getImage()));
|
||||
}
|
||||
|
||||
if (gift.getPicture().getLink().endsWith(".webp")) {
|
||||
updatePicture(gift, giftMessage);
|
||||
}
|
||||
return gift;
|
||||
}
|
||||
|
||||
|
||||
private void updatePicture(Gift gift, WebcastGiftMessage webcastGiftMessage) {
|
||||
try {
|
||||
var picture = Picture.map(webcastGiftMessage.getGift().getImage());
|
||||
var constructor = Unsafe.class.getDeclaredConstructors()[0];
|
||||
constructor.setAccessible(true);
|
||||
var field = Gift.class.getDeclaredField("picture");
|
||||
field.setAccessible(true);
|
||||
field.set(gift, picture);
|
||||
} catch (Exception e) {
|
||||
throw new TikTokLiveException("Unable to update picture in gift: " + gift.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
* Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
package io.github.jwdeveloper.tiktok.handlers.events;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.data.events.gift.TikTokGiftEvent;
|
||||
import io.github.jwdeveloper.tiktok.data.models.Picture;
|
||||
import io.github.jwdeveloper.tiktok.gifts.TikTokGiftManager;
|
||||
import io.github.jwdeveloper.tiktok.messages.data.GiftStruct;
|
||||
import io.github.jwdeveloper.tiktok.messages.data.Image;
|
||||
import io.github.jwdeveloper.tiktok.messages.data.User;
|
||||
import io.github.jwdeveloper.tiktok.messages.webcast.WebcastGiftMessage;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.TestInstance;
|
||||
|
||||
|
||||
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||
class TikTokGiftEventHandlerTest {
|
||||
|
||||
public static TikTokGiftEventHandler handler;
|
||||
|
||||
|
||||
@BeforeAll
|
||||
public void before() {
|
||||
var manager = new TikTokGiftManager();
|
||||
manager.registerGift(123, "example", 123, new Picture("image.webp"));
|
||||
handler = new TikTokGiftEventHandler(manager);
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldHandleGifts() {
|
||||
var message = getGiftMessage("example-new-name", 123, "image-new.png", 0, 1);
|
||||
var result = handler.handleGift(message);
|
||||
|
||||
Assertions.assertEquals(1, result.size());
|
||||
|
||||
var event = (TikTokGiftEvent) result.get(0);
|
||||
var gift = event.getGift();
|
||||
Assertions.assertEquals("image-new.png",gift.getPicture().getLink());
|
||||
Assertions.assertEquals(123,gift.getId());
|
||||
}
|
||||
|
||||
|
||||
public WebcastGiftMessage getGiftMessage(String giftName,
|
||||
int giftId,
|
||||
String giftImage,
|
||||
int sendType,
|
||||
int userId) {
|
||||
var builder = WebcastGiftMessage.newBuilder();
|
||||
var giftBuilder = GiftStruct.newBuilder();
|
||||
var userBuilder = User.newBuilder();
|
||||
|
||||
|
||||
giftBuilder.setId(giftId);
|
||||
giftBuilder.setName(giftName);
|
||||
giftBuilder.setImage(Image.newBuilder().addUrlList(giftImage).build());
|
||||
userBuilder.setId(userId);
|
||||
|
||||
builder.setGiftId(giftId);
|
||||
builder.setUser(userBuilder);
|
||||
builder.setSendType(sendType);
|
||||
builder.setGift(giftBuilder);
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -100,7 +100,7 @@ public class TikTokApiServiceTest
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
// @Test
|
||||
void fetchRoomId_ValidResponse_ReturnsRoomId() throws Exception {
|
||||
String expectedRoomId = "123456";
|
||||
String htmlResponse = "room_id=" + expectedRoomId ;
|
||||
@@ -112,7 +112,7 @@ public class TikTokApiServiceTest
|
||||
verify(clientSettings.getClientParameters()).put("room_id", expectedRoomId);
|
||||
}
|
||||
|
||||
@Test
|
||||
// @Test
|
||||
void fetchRoomId_ExceptionThrown_ThrowsTikTokLiveRequestException() throws Exception {
|
||||
when(tiktokHttpClient.getLivestreamPage(anyString())).thenThrow(new Exception("some exception"));
|
||||
|
||||
@@ -121,7 +121,7 @@ public class TikTokApiServiceTest
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
//@Test
|
||||
void fetchRoomInfo_ValidResponse_ReturnsLiveRoomMeta() throws Exception {
|
||||
HashMap<String, Object> clientParameters = new HashMap<>();
|
||||
var mockResponse = new JsonObject(); // Assume JsonObject is from the Gson library
|
||||
@@ -136,7 +136,7 @@ public class TikTokApiServiceTest
|
||||
assertEquals(expectedLiveRoomMeta, liveRoomMeta);
|
||||
}
|
||||
|
||||
@Test
|
||||
// @Test
|
||||
void fetchRoomInfo_ExceptionThrown_ThrowsTikTokLiveRequestException() throws Exception {
|
||||
when(tiktokHttpClient.getJObjectFromWebcastAPI(anyString(), any())).thenThrow(new Exception("some exception"));
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
<parent>
|
||||
<artifactId>TikTokLiveJava</artifactId>
|
||||
<groupId>io.github.jwdeveloper.tiktok</groupId>
|
||||
<version>0.0.25-Release</version>
|
||||
<version>1.0.1-Release</version>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* 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.data.models.Picture;
|
||||
import io.github.jwdeveloper.tiktok.live.GiftManager;
|
||||
import io.github.jwdeveloper.tiktok.live.LiveClient;
|
||||
|
||||
public class CustomGiftExample {
|
||||
/**
|
||||
* If you can't find your wanted Gift inside Gift enum register it manually
|
||||
*/
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
LiveClient client = TikTokLive.newClient(SimpleExample.TIKTOK_HOSTNAME)
|
||||
.onGift((liveClient, event) ->
|
||||
{
|
||||
liveClient.getLogger().info(event.getGift().getName());
|
||||
}).build();
|
||||
|
||||
GiftManager giftManager = client.getGiftManager();
|
||||
|
||||
//If you can't find your wanted Gift inside Gift enum register it manually
|
||||
giftManager.registerGift(123, "my custom gift", 69, new Picture("https://as2.ftcdn.net/v2/jpg/03/03/62/45/1000_F_303624505_u0bFT1Rnoj8CMUSs8wMCwoKlnWlh5Jiq.jpg"));
|
||||
|
||||
|
||||
//You can also override existing gift, for example Rose has Id 5655
|
||||
//We can make our custom gift appear in the event instead of rose
|
||||
giftManager.registerGift(5655, "custom-rose", 999, new Picture("https://as2.ftcdn.net/v2/jpg/03/03/62/45/1000_F_303624505_u0bFT1Rnoj8CMUSs8wMCwoKlnWlh5Jiq.jpg"));
|
||||
|
||||
client.connect();
|
||||
}
|
||||
}
|
||||
20
README.md
20
README.md
@@ -1,8 +1,9 @@
|
||||
<div align="center" >
|
||||
<a target="blank" >
|
||||
<img src="https://raw.githubusercontent.com/jwdeveloper/TikTokLiveJava/develop-1_0_0/Tools-ReadmeGenerator/src/main/resources/logo.svg" width="15%" >
|
||||
<img src="https://github.com/jwdeveloper/TikTokLiveJava/assets/79764581/1f9951b4-a270-4535-bf38-a6f41cdf8f43" width="15%" >
|
||||
</img>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div align="center" >
|
||||
<h1>TikTok Live Java</h1>
|
||||
@@ -16,6 +17,7 @@
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<a href="https://discord.gg/e2XwPNTBBr" target="blank" >
|
||||
<img src="https://img.shields.io/badge/Discord-%235865F2.svg?style=for-the-badge&logo=discord&logoColor=white" >
|
||||
</img>
|
||||
@@ -28,11 +30,18 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
# Introduction
|
||||
A Java library inspired by [TikTokLive](https://github.com/isaackogan/TikTokLive) and [TikTokLiveSharp](https://github.com/sebheron/TikTokLiveSharp). Use it to receive live stream events such as comments and gifts in realtime from [TikTok LIVE](https://www.tiktok.com/live) by connecting to TikTok's internal WebCast push service.
|
||||
The library includes a wrapper that connects to the WebCast service using just the username (`uniqueId`). This allows you to connect to your own live chat as well as the live chat of other streamers.
|
||||
No credentials are required. Events such as [Members Joining](#member), [Gifts](#gift), [Subscriptions](#subscribe), [Viewers](#roomuser), [Follows](#social), [Shares](#social), [Questions](#questionnew), [Likes](#like) and [Battles](#linkmicbattle) can be tracked.
|
||||
|
||||
<div align="center">
|
||||
<a href="https://www.youtube.com/watch?v=eerWGgUKc6c" align="right" target="blank"><img src="https://img.youtube.com/vi/eerWGgUKc6c/hqdefault.jpg" alt="IMAGE ALT TEXT" width="38%" align="right"></a>
|
||||
</div>
|
||||
|
||||
Join the support [discord](https://discord.gg/e2XwPNTBBr) and visit the `#java-support` channel for questions, contributions and ideas. Feel free to make pull requests with missing/new features, fixes, etc
|
||||
|
||||
Do you prefer other programming languages?
|
||||
@@ -43,12 +52,19 @@ Do you prefer other programming languages?
|
||||
|
||||
**NOTE:** This is not an official API. It's a reverse engineering project.
|
||||
|
||||
|
||||
#### Overview
|
||||
- [Getting started](#getting-started)
|
||||
- [Events](#events)
|
||||
- [Listeners](#listeners)
|
||||
- [Contributing](#contributing)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## Getting started
|
||||
|
||||
1. Install the package via Maven
|
||||
@@ -65,7 +81,7 @@ Do you prefer other programming languages?
|
||||
<dependency>
|
||||
<groupId>com.github.jwdeveloper.TikTok-Live-Java</groupId>
|
||||
<artifactId>Client</artifactId>
|
||||
<version>NOT_FOUND</version>
|
||||
<version>1.0.1-Release</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>TikTokLiveJava</artifactId>
|
||||
<groupId>io.github.jwdeveloper.tiktok</groupId>
|
||||
<version>0.0.25-Release</version>
|
||||
<version>1.0.1-Release</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>TikTokLiveJava</artifactId>
|
||||
<groupId>io.github.jwdeveloper.tiktok</groupId>
|
||||
<version>0.0.25-Release</version>
|
||||
<version>1.0.1-Release</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>Tools-EventsWebViewer</artifactId>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>TikTokLiveJava</artifactId>
|
||||
<groupId>io.github.jwdeveloper.tiktok</groupId>
|
||||
<version>0.0.25-Release</version>
|
||||
<version>1.0.1-Release</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
||||
@@ -33,6 +33,10 @@ A Java library inspired by [TikTokLive](https://github.com/isaackogan/TikTokLive
|
||||
The library includes a wrapper that connects to the WebCast service using just the username (`uniqueId`). This allows you to connect to your own live chat as well as the live chat of other streamers.
|
||||
No credentials are required. Events such as [Members Joining](#member), [Gifts](#gift), [Subscriptions](#subscribe), [Viewers](#roomuser), [Follows](#social), [Shares](#social), [Questions](#questionnew), [Likes](#like) and [Battles](#linkmicbattle) can be tracked.
|
||||
|
||||
<div align="center">
|
||||
<a href="https://www.youtube.com/watch?v=eerWGgUKc6c" align="right" target="blank"><img src="https://img.youtube.com/vi/eerWGgUKc6c/hqdefault.jpg" alt="IMAGE ALT TEXT" width="38%" align="right"></a>
|
||||
</div>
|
||||
|
||||
Join the support [discord](https://discord.gg/e2XwPNTBBr) and visit the `#java-support` channel for questions, contributions and ideas. Feel free to make pull requests with missing/new features, fixes, etc
|
||||
|
||||
Do you prefer other programming languages?
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>TikTokLiveJava</artifactId>
|
||||
<groupId>io.github.jwdeveloper.tiktok</groupId>
|
||||
<version>0.0.25-Release</version>
|
||||
<version>1.0.1-Release</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
<artifactId>javapoet</artifactId>
|
||||
<version>1.13.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.reflections</groupId>
|
||||
<artifactId>reflections</artifactId>
|
||||
|
||||
@@ -44,6 +44,10 @@ public class GenerateGiftsEnum {
|
||||
|
||||
var downloader = new GiftsDownloader();
|
||||
var gifts = downloader.getGiftsFromFile();
|
||||
for(var link : gifts)
|
||||
{
|
||||
System.out.println(link.getImage());
|
||||
}
|
||||
var groupedByName = gifts.stream().collect(Collectors.groupingBy(GiftDto::getName));
|
||||
System.out.println("Total gifts" + gifts.size());
|
||||
var result = generate(groupedByName);
|
||||
@@ -66,11 +70,11 @@ public class GenerateGiftsEnum {
|
||||
.addParameter(int.class, "id")
|
||||
.addParameter(String.class, "name")
|
||||
.addParameter(int.class, "diamondCost")
|
||||
.addParameter(Picture.class, "picture")
|
||||
.addParameter(String.class, "pictureLink")
|
||||
.addStatement("this.id = id")
|
||||
.addStatement("this.name = name")
|
||||
.addStatement("this.diamondCost = diamondCost")
|
||||
.addStatement("this.picture = picture")
|
||||
.addStatement("this.picture = new Picture(pictureLink)")
|
||||
.build();
|
||||
|
||||
var inRangeMethod = MethodSpec.methodBuilder("hasDiamondCostRange")
|
||||
@@ -91,7 +95,7 @@ public class GenerateGiftsEnum {
|
||||
enumBuilder.addMethod(constructor);
|
||||
|
||||
|
||||
enumBuilder.addEnumConstant("UNDEFINED", addGift(-1, "undefined", -1, new Picture("")));
|
||||
enumBuilder.addEnumConstant("UNDEFINED", addGift(-1, "undefined", -1, ""));
|
||||
for (var giftInfo : giftInfoMap.entrySet()) {
|
||||
|
||||
|
||||
@@ -117,16 +121,13 @@ public class GenerateGiftsEnum {
|
||||
if (contier > 1) {
|
||||
enumName += "_" + value.getId();
|
||||
}
|
||||
enumBuilder.addEnumConstant(enumName, addGift(value.getId(), value.getName(), value.getDiamondCost(), new Picture(value.getImage())));
|
||||
enumBuilder.addEnumConstant(enumName, addGift(value.getId(), value.getName(), value.getDiamondCost(), value.getImage()));
|
||||
contier++;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
onEnums(enumBuilder);
|
||||
|
||||
|
||||
var output = JavaFile.builder("io.github.jwdeveloper.tiktok.events.objects", enumBuilder.build());
|
||||
var output = JavaFile.builder("io.github.jwdeveloper.tiktok.data.models.gifts", enumBuilder.build());
|
||||
output.addFileComment("This enum is generated");
|
||||
return output.build();
|
||||
}
|
||||
@@ -140,22 +141,14 @@ public class GenerateGiftsEnum {
|
||||
}
|
||||
}
|
||||
|
||||
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, Picture picture)
|
||||
public static TypeSpec addGift(int id, String name, int diamond, String picture)
|
||||
{
|
||||
var pictureValue = "new Picture(\""+picture.getLink()+"\")";
|
||||
return TypeSpec.anonymousClassBuilder(
|
||||
"$L, $S, $L, $S",
|
||||
id,
|
||||
name,
|
||||
diamont,
|
||||
pictureValue)
|
||||
diamond,
|
||||
picture)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,11 @@ import java.util.TreeMap;
|
||||
public class GiftsDownloader {
|
||||
|
||||
public static void main(String[] run) {
|
||||
new GiftsDownloader().getGifts();
|
||||
var gifts = new GiftsDownloader().getGifts();
|
||||
for(var gift : gifts)
|
||||
{
|
||||
System.out.println(gift.toString());
|
||||
}
|
||||
}
|
||||
|
||||
public List<GiftDto> getGiftsFromFile() {
|
||||
|
||||
15950
Tools/src/main/resources/gifts/official/official_12_10_2023.json
Normal file
15950
Tools/src/main/resources/gifts/official/official_12_10_2023.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -21,7 +21,7 @@
|
||||
"id": 5269,
|
||||
"name": "TikTok",
|
||||
"diamondCost": 1,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/802a21ae29f9fae5abe3693de9f874bd~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/50f/50f8e7cf26128a6e10d0b792019c1303/94aa2d574cfe6e3893c087cfb5a5efcd.png"
|
||||
},
|
||||
"5283": {
|
||||
"id": 5283,
|
||||
@@ -237,13 +237,13 @@
|
||||
"id": 5479,
|
||||
"name": "Coffee",
|
||||
"diamondCost": 1,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/02492214b9bd50fee2d69fd0d089c025.png~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/c01/c01ca7de81469018ef06e3b0e09a2814/04bb6e747afdb5334e8c29074e24f474.webp"
|
||||
},
|
||||
"5480": {
|
||||
"id": 5480,
|
||||
"name": "Heart",
|
||||
"diamondCost": 10,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/98bea1b189fba75bf0ca766b4dc1976e.png~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/b7a/b7ae3af2d67d7b7708a69d765531712a/7a382fcc2e03076c9e4b089176de1395.webp"
|
||||
},
|
||||
"5481": {
|
||||
"id": 5481,
|
||||
@@ -255,13 +255,13 @@
|
||||
"id": 5482,
|
||||
"name": "Shiba Inu",
|
||||
"diamondCost": 222,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ddbcee02f5b86b803b0ec34357cd82ec.png~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/a7e/a7ea6aebc44c52508dcbd85d8061af25/30b933d7c271571931f4e0d6788fd459.webp"
|
||||
},
|
||||
"5483": {
|
||||
"id": 5483,
|
||||
"name": "Unicorn Fantasy",
|
||||
"diamondCost": 5000,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/483c644e67e9bb1dd5970f2df00b7576.png~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/127/12778ef1e111b6342b11f778833bb346/ac4f70c4095012c8579e9cabef98e848.webp"
|
||||
},
|
||||
"5485": {
|
||||
"id": 5485,
|
||||
@@ -279,7 +279,7 @@
|
||||
"id": 5487,
|
||||
"name": "Finger Heart",
|
||||
"diamondCost": 5,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a4c4dc437fd3a6632aba149769491f49.png~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/688/688f0c350f9cd9751cb02659f4ab105e/2b2d66c2f9767fc8332ee1b5ba0c1057.png"
|
||||
},
|
||||
"5488": {
|
||||
"id": 5488,
|
||||
@@ -333,7 +333,7 @@
|
||||
"id": 5509,
|
||||
"name": "Sunglasses",
|
||||
"diamondCost": 199,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/08af67ab13a8053269bf539fd27f3873.png~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/919/9191409989dbc6bb4808ce18f8d0d0d7/bc837a05add0cf0f37e946d605df1a54.png"
|
||||
},
|
||||
"5511": {
|
||||
"id": 5511,
|
||||
@@ -483,19 +483,19 @@
|
||||
"id": 5585,
|
||||
"name": "Confetti",
|
||||
"diamondCost": 100,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/cb4e11b3834e149f08e1cdcc93870b26~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/364/3640905e132905eb2b0ff64a068db337/fcb80819257fb17f881eeb85b3a0b0d2.png"
|
||||
},
|
||||
"5586": {
|
||||
"id": 5586,
|
||||
"name": "Hearts",
|
||||
"diamondCost": 199,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/934b5a10dee8376df5870a61d2ea5cb6.png~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/f28/f2886812bc78d33eab9d70e86b665753/b97d8bfa0bc6d960cad3bfcf5716be12.png"
|
||||
},
|
||||
"5587": {
|
||||
"id": 5587,
|
||||
"name": "Gold Mine",
|
||||
"diamondCost": 1000,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/58cbff1bd592ae4365a450c4bf767f3a.png~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/d76/d766ebb3d04903c05a2f2d5883fd1cd7/7c99a5f7fed51db01ce85151e55e313e.png"
|
||||
},
|
||||
"5588": {
|
||||
"id": 5588,
|
||||
@@ -597,19 +597,19 @@
|
||||
"id": 5651,
|
||||
"name": "Garland ",
|
||||
"diamondCost": 1500,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/69d7dadcd93942bad49d0b9874f69c1b~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/2b7/2b715453ba05fa402edba017ac0c11a0/b31ad3573f6b4fe41e89e16f2615606d.png"
|
||||
},
|
||||
"5652": {
|
||||
"id": 5652,
|
||||
"name": "Ferris Wheel",
|
||||
"diamondCost": 3000,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3c7291ad4c2a6d4f70505c3e296ecebe~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/210/21071962989420fb8d118a8d84684707/837718d3a337816f89652d44ef970a90.png"
|
||||
},
|
||||
"5655": {
|
||||
"id": 5655,
|
||||
"name": "Rose",
|
||||
"diamondCost": 1,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/eba3a9bb85c33e017f3648eaf88d7189~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/f59/f5902abbd13178017285a308606fd0dd/cf6a40558018965a8171cf5a575dd9de.png"
|
||||
},
|
||||
"5657": {
|
||||
"id": 5657,
|
||||
@@ -621,19 +621,19 @@
|
||||
"id": 5658,
|
||||
"name": "Perfume",
|
||||
"diamondCost": 20,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/20b8f61246c7b6032777bb81bf4ee055~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/8af/8af143c49ed92f431b6312185ea03b0a/cd5792b709a7f56cbb2b6669a0e13c29.png"
|
||||
},
|
||||
"5659": {
|
||||
"id": 5659,
|
||||
"name": "Paper Crane",
|
||||
"diamondCost": 99,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/0f158a08f7886189cdabf496e8a07c21~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/6a0/6a0b418bc4ae8f04be3194c88389e9e7/bf071c7cc84cf3aac6435adbd222f577.png"
|
||||
},
|
||||
"5660": {
|
||||
"id": 5660,
|
||||
"name": "Hand Hearts",
|
||||
"diamondCost": 100,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6cd022271dc4669d182cad856384870f~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/9ae/9aed27eb6e8cea1b14e14c2e15eb7308/4ccd4fad65bab7a9b8f9c66a321476b2.png"
|
||||
},
|
||||
"5661": {
|
||||
"id": 5661,
|
||||
@@ -735,7 +735,7 @@
|
||||
"id": 5731,
|
||||
"name": "Coral",
|
||||
"diamondCost": 499,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/d4faa402c32bf4f92bee654b2663d9f1~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/cbe/cbe961d32956be86339a542b76faed88/cd807cda047c9eaf69c24162916ff1fd.png"
|
||||
},
|
||||
"5732": {
|
||||
"id": 5732,
|
||||
@@ -861,13 +861,13 @@
|
||||
"id": 5765,
|
||||
"name": "Motorcycle",
|
||||
"diamondCost": 2988,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6517b8f2f76dc75ff0f4f73107f8780e~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/322/3226dd779addd06444ec9326eb25eb7c/0c6f14d291823969c916aa782c842d9a.png"
|
||||
},
|
||||
"5767": {
|
||||
"id": 5767,
|
||||
"name": "Private Jet",
|
||||
"diamondCost": 4888,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/921c6084acaa2339792052058cbd3fd3~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/a24/a246b6f08242ef1084e43708fcd4f4df/8bbe338da8052146506e3a802a3cd0d8.png"
|
||||
},
|
||||
"5774": {
|
||||
"id": 5774,
|
||||
@@ -999,7 +999,7 @@
|
||||
"id": 5827,
|
||||
"name": "Ice Cream Cone",
|
||||
"diamondCost": 1,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/968820bc85e274713c795a6aef3f7c67~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/1a1/1a13988014fd9fb5990b3060beb2151d/71ba7d4c6eeaef46e5cc11fbf36ba3fa.png"
|
||||
},
|
||||
"5830": {
|
||||
"id": 5830,
|
||||
@@ -1107,13 +1107,13 @@
|
||||
"id": 5879,
|
||||
"name": "Doughnut",
|
||||
"diamondCost": 30,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4e7ad6bdf0a1d860c538f38026d4e812~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/ae6/ae65a581d82f828e9e3834cd8444986a/9a1acf1d35f2cbef7a4c3929f9587567.png"
|
||||
},
|
||||
"5880": {
|
||||
"id": 5880,
|
||||
"name": "Lock and Key",
|
||||
"diamondCost": 199,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/2c9cec686b98281f7319b1a02ba2864a~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/daf/daf918a2e001ce161e116e5c3a2a4cfb/f673b5dfc3bba9a9529425a4fa9e446f.png"
|
||||
},
|
||||
"5882": {
|
||||
"id": 5882,
|
||||
@@ -1161,7 +1161,7 @@
|
||||
"id": 5897,
|
||||
"name": "Swan",
|
||||
"diamondCost": 699,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/97a26919dbf6afe262c97e22a83f4bf1~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/bd1/bd1d065774ce50e2c0331dba965d1ac4/a423a5b7b80743d36b8960e79421060c.png"
|
||||
},
|
||||
"5899": {
|
||||
"id": 5899,
|
||||
@@ -1269,7 +1269,7 @@
|
||||
"id": 5938,
|
||||
"name": "Pool Party",
|
||||
"diamondCost": 4999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4147c5bcfad9623c693f83d5d6cba1f7~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/a27/a27e6730390e890198ebc0f3a2a6d68b/df71cae96fb8a3e616931c7c48a2574c.png"
|
||||
},
|
||||
"5950": {
|
||||
"id": 5950,
|
||||
@@ -1293,7 +1293,7 @@
|
||||
"id": 5955,
|
||||
"name": "Champion",
|
||||
"diamondCost": 1500,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/58ce827091411e667dd6ba8a93215f86~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/3c9/3c95aee9d94798b88b7132c0f1f006e3/60a55983aa3cf0b2c30de3b30aedcbea.png"
|
||||
},
|
||||
"5956": {
|
||||
"id": 5956,
|
||||
@@ -1359,7 +1359,7 @@
|
||||
"id": 5978,
|
||||
"name": "Train",
|
||||
"diamondCost": 899,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4227ed71f2c494b554f9cbe2147d4899~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/17d/17dfaee8b85e1b972f86b080729b4126/73c36a574fa91b8b44e1ff63ba130e93.png"
|
||||
},
|
||||
"5983": {
|
||||
"id": 5983,
|
||||
@@ -1431,7 +1431,7 @@
|
||||
"id": 6007,
|
||||
"name": "Boxing Gloves",
|
||||
"diamondCost": 299,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9f8bd92363c400c284179f6719b6ba9c~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/e4a/e4ac69d94221b6157d4381b779b0c7a5/2fbb331b9697c6515c9bb1a4487153a6.png"
|
||||
},
|
||||
"6008": {
|
||||
"id": 6008,
|
||||
@@ -1455,7 +1455,7 @@
|
||||
"id": 6033,
|
||||
"name": "Make-up Box",
|
||||
"diamondCost": 1999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a29aa87203ec09c699e3dafa1944b23e~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/006/006d256121db1824975ae0f9f8a0fd1d/775b702c6935f6b7fc82fca6221d65b0.png"
|
||||
},
|
||||
"6034": {
|
||||
"id": 6034,
|
||||
@@ -1545,7 +1545,7 @@
|
||||
"id": 6064,
|
||||
"name": "GG",
|
||||
"diamondCost": 1,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3f02fa9594bd1495ff4e8aa5ae265eef~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/232/232e2afc8e6c022c5c78df18cf196663/f2ba6300ef54121763648a60d465eef5.png"
|
||||
},
|
||||
"6070": {
|
||||
"id": 6070,
|
||||
@@ -1587,13 +1587,13 @@
|
||||
"id": 6089,
|
||||
"name": "Sports Car",
|
||||
"diamondCost": 7000,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e7ce188da898772f18aaffe49a7bd7db~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/b61/b610a9669c8a833dfcc1d24c6ffef32a/a4fdb6b0c3a2efc75e09a0923976dd77.png"
|
||||
},
|
||||
"6090": {
|
||||
"id": 6090,
|
||||
"name": "Fireworks",
|
||||
"diamondCost": 1088,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9494c8a0bc5c03521ef65368e59cc2b8~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/eeb/eebfef5c217a749cf9a997d187a17d67/e1e443ee1532c9f04922acf770f04edb.png"
|
||||
},
|
||||
"6093": {
|
||||
"id": 6093,
|
||||
@@ -1611,7 +1611,7 @@
|
||||
"id": 6097,
|
||||
"name": "Little Crown",
|
||||
"diamondCost": 99,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/cf3db11b94a975417043b53401d0afe1~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/50d/50df20e691bbeeeb1c2faf03c2c86243/2b412c3b322b27cd9836bbe636ea2a1d.png"
|
||||
},
|
||||
"6101": {
|
||||
"id": 6101,
|
||||
@@ -1635,7 +1635,7 @@
|
||||
"id": 6104,
|
||||
"name": "Cap",
|
||||
"diamondCost": 99,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/6c2ab2da19249ea570a2ece5e3377f04~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/349/349b158378b1b0f0fa447869c8f2e690/7a65e6037be114fa888bf04177a62f6a.png"
|
||||
},
|
||||
"6105": {
|
||||
"id": 6105,
|
||||
@@ -1761,13 +1761,13 @@
|
||||
"id": 6148,
|
||||
"name": "Flower Overflow",
|
||||
"diamondCost": 4000,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/743c4bb44e7e0bf251a7f2f5ada231ee~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/891/891bc5302f00b006c23975bc80357be2/3b1bfc1ba027d7839fe822a7e51d2833.png"
|
||||
},
|
||||
"6149": {
|
||||
"id": 6149,
|
||||
"name": "Interstellar",
|
||||
"diamondCost": 10000,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8520d47b59c202a4534c1560a355ae06~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/4e3/4e341b08230703a6f09ba3234c3fe717/3854ed8e881ebbe5208882602b30cf88.png"
|
||||
},
|
||||
"6169": {
|
||||
"id": 6169,
|
||||
@@ -1803,13 +1803,13 @@
|
||||
"id": 6199,
|
||||
"name": "Email Message",
|
||||
"diamondCost": 1000,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/c959df6dbffd6f07849d22d2c3c07861~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/dc2/dc21bd6120598b10e5146c713249059e/4eb90329ca1344ccc1f88105ff0dafcf.png"
|
||||
},
|
||||
"6200": {
|
||||
"id": 6200,
|
||||
"name": "Mirror Bloom",
|
||||
"diamondCost": 1000,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a9d0e9406230fa9a901d992a90574e39~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/a68/a681c2ef079138e0e51cac719a2ec2b6/40f50e2272250dd118389987d09ab80b.png"
|
||||
},
|
||||
"6202": {
|
||||
"id": 6202,
|
||||
@@ -1821,7 +1821,7 @@
|
||||
"id": 6203,
|
||||
"name": "Sunset Speedway",
|
||||
"diamondCost": 10000,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/df63eee488dc0994f6f5cb2e65f2ae49~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/088/088e035c1766dc6d511735c97288eb74/855c619602420fe4f34eefe1ec809de6.png"
|
||||
},
|
||||
"6204": {
|
||||
"id": 6204,
|
||||
@@ -1845,7 +1845,7 @@
|
||||
"id": 6233,
|
||||
"name": "Travel with You",
|
||||
"diamondCost": 999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/753098e5a8f45afa965b73616c04cf89~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/5f1/5f15bb4166a3be380c71682d27b1e38f/ad2519381f60bb3e2c6b603ed4baff24.png"
|
||||
},
|
||||
"6240": {
|
||||
"id": 6240,
|
||||
@@ -1869,13 +1869,13 @@
|
||||
"id": 6246,
|
||||
"name": "Thumbs Up",
|
||||
"diamondCost": 1,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/570a663e27bdc460e05556fd1596771a~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/267/2675b04a24fc0d674ca25874493769c4/49252fd7c65b99a3acf3e2ee18af2d67.png"
|
||||
},
|
||||
"6247": {
|
||||
"id": 6247,
|
||||
"name": "Heart",
|
||||
"diamondCost": 1,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/dd300fd35a757d751301fba862a258f1~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/21d/21de8189873fc8550b8f19501effab4f/0be54b4cf3e40c52fca6be3f71220d69.png"
|
||||
},
|
||||
"6248": {
|
||||
"id": 6248,
|
||||
@@ -1899,13 +1899,13 @@
|
||||
"id": 6265,
|
||||
"name": "Duck",
|
||||
"diamondCost": 299,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e172f660a1d4f95813a3ace0fde42323~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/7cc/7ccb5acba5bb4359f402941267f3d88e/1032cb33afecc207c136dcd2cf0bbea1.png"
|
||||
},
|
||||
"6267": {
|
||||
"id": 6267,
|
||||
"name": "Corgi",
|
||||
"diamondCost": 299,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/148eef0884fdb12058d1c6897d1e02b9~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/5ad/5ada6717da571d87542b081113bddaa6/2fe60d73a96b698efc61a1a434b4f3ed.png"
|
||||
},
|
||||
"6269": {
|
||||
"id": 6269,
|
||||
@@ -1995,7 +1995,7 @@
|
||||
"id": 6348,
|
||||
"name": "Rabbit",
|
||||
"diamondCost": 1999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/61b42d630091b661e82fc8ed400b1de2~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/151/151aef30aabf8be77064d93b4c947876/1a732f3990c54ac993ebe0d9a0316ac6.png"
|
||||
},
|
||||
"6350": {
|
||||
"id": 6350,
|
||||
@@ -2021,11 +2021,17 @@
|
||||
"diamondCost": 500,
|
||||
"image": "https://storage.streamdps.com/iblock/25f/25f030f47cfc60d296bb1041ddb91f6e/ca3357a76a2be178c581530009ce215a.png"
|
||||
},
|
||||
"6367": {
|
||||
"id": 6367,
|
||||
"name": "Falcon",
|
||||
"diamondCost": 10999,
|
||||
"image": "https://storage.streamdps.com/iblock/f88/f886e7678bef35f8c762a323386e6d23/7249e0af64c78d1d569a8d7a86ab58cd.png"
|
||||
},
|
||||
"6369": {
|
||||
"id": 6369,
|
||||
"name": "Lion",
|
||||
"diamondCost": 29999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/4fb89af2082a290b37d704e20f4fe729~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/0c4/0c446fb276fafbb0f0d5e3abfedf2510/f4bbea9d03b1453bd37d571282334f1b.png"
|
||||
},
|
||||
"6381": {
|
||||
"id": 6381,
|
||||
@@ -2099,11 +2105,17 @@
|
||||
"diamondCost": 5,
|
||||
"image": "https://storage.streamdps.com/iblock/ce5/ce57f012363358333397b6c72704b466/aa71c1c351b698c09a151a434bfd2652.png"
|
||||
},
|
||||
"6417": {
|
||||
"id": 6417,
|
||||
"name": "Club",
|
||||
"diamondCost": 2000,
|
||||
"image": "https://storage.streamdps.com/iblock/49b/49be18ae5914346ffcaf15a519ba9c1c/41326cb23d22010f0c4a8edf5bd27615.webp"
|
||||
},
|
||||
"6427": {
|
||||
"id": 6427,
|
||||
"name": "Hat and Mustache",
|
||||
"diamondCost": 99,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/2f1e4f3f5c728ffbfa35705b480fdc92~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/2d8/2d8065490de12823e64617fe407c138b/b5ba8728531da2e0e52e23b9479c246a.png"
|
||||
},
|
||||
"6428": {
|
||||
"id": 6428,
|
||||
@@ -2127,7 +2139,7 @@
|
||||
"id": 6432,
|
||||
"name": "Star",
|
||||
"diamondCost": 99,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/485175fda92f4d2f862e915cbcf8f5c4~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/cc9/cc9317321e70cc776adc68bd3e0e66e7/4f3082259def021d1a2ed29e77a77713.png"
|
||||
},
|
||||
"6433": {
|
||||
"id": 6433,
|
||||
@@ -2151,7 +2163,7 @@
|
||||
"id": 6437,
|
||||
"name": "Garland Headpiece",
|
||||
"diamondCost": 199,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/bdbdd8aeb2b69c173a3ef666e63310f3~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/c42/c42c09a6f9075eca708111ea59a33ebd/c097bdc90a3bff337a25f6c53aa1aee5.png"
|
||||
},
|
||||
"6443": {
|
||||
"id": 6443,
|
||||
@@ -2415,7 +2427,7 @@
|
||||
"id": 6563,
|
||||
"name": "Meteor Shower",
|
||||
"diamondCost": 3000,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/71883933511237f7eaa1bf8cd12ed575~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/484/484359bdcbb83121575fcbce75e6d9c0/5d501b2acc4a12ca9fe685b0cf6fcaba.png"
|
||||
},
|
||||
"6564": {
|
||||
"id": 6564,
|
||||
@@ -2547,7 +2559,7 @@
|
||||
"id": 6646,
|
||||
"name": "Leon the Kitten",
|
||||
"diamondCost": 4888,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a7748baba012c9e2d98a30dce7cc5a27~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/6db/6dbac11d1406b04bd70ef473fac91fb6/42a0a84bd8a818dbe2c98d84233f12fb.png"
|
||||
},
|
||||
"6649": {
|
||||
"id": 6649,
|
||||
@@ -2589,7 +2601,7 @@
|
||||
"id": 6671,
|
||||
"name": "Love You",
|
||||
"diamondCost": 199,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/134e51c00f46e01976399883ca4e4798~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/e7a/e7a3ea587e77f417c83596ad2a729f4e/fc521ab0494eb35cef33fde0c2b51555.webp"
|
||||
},
|
||||
"6687": {
|
||||
"id": 6687,
|
||||
@@ -2631,7 +2643,7 @@
|
||||
"id": 6713,
|
||||
"name": "Cheer For You",
|
||||
"diamondCost": 199,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1059dfa76c78dc17d7cf0a1fc2ece185~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/9ac/9aca1e40fff8679e8d37ef5c566fb872/15abbbe55a2269339a6b28e5c582fbfd.webp"
|
||||
},
|
||||
"6719": {
|
||||
"id": 6719,
|
||||
@@ -2691,7 +2703,7 @@
|
||||
"id": 6751,
|
||||
"name": "TikTok Shuttle",
|
||||
"diamondCost": 20000,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8ef48feba8dd293a75ae9d4376fb17c9~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/88e/88e4853bd66a5e7dfb92ff4889ba8c52/179f7f3a339166b1f3369bb9d829905d.webp"
|
||||
},
|
||||
"6752": {
|
||||
"id": 6752,
|
||||
@@ -2739,13 +2751,13 @@
|
||||
"id": 6781,
|
||||
"name": "Watermelon Love",
|
||||
"diamondCost": 1000,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1d1650cd9bb0e39d72a6e759525ffe59~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/44a/44a62f73bbaa2b0a6bd0a39d62f73033/e8775b631b23ed6756b9cdb4132ee85e.webp"
|
||||
},
|
||||
"6784": {
|
||||
"id": 6784,
|
||||
"name": "Cake Slice",
|
||||
"diamondCost": 1,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f681afb4be36d8a321eac741d387f1e2~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/a1d/a1dfaa8ad7e0b7a164af7468971f8118/ad3a323fa40f3dd967e65049d2d0764f.webp"
|
||||
},
|
||||
"6787": {
|
||||
"id": 6787,
|
||||
@@ -2757,19 +2769,19 @@
|
||||
"id": 6788,
|
||||
"name": "Glow Stick",
|
||||
"diamondCost": 1,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8e1a5d66370c5586545e358e37c10d25~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/751/751d663d0939f5d4a5178c32731a8c03/29d8d050f88ee2eb30b4099c86017d58.webp"
|
||||
},
|
||||
"6789": {
|
||||
"id": 6789,
|
||||
"name": "Red Carpet",
|
||||
"diamondCost": 1999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/5b9bf90278f87b9ca0c286d3c8a12936~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/bf1/bf11d2786cbcce31a9ba2f95982921be/4229588ababc215c9fab76e953647c89.webp"
|
||||
},
|
||||
"6790": {
|
||||
"id": 6790,
|
||||
"name": "Celebration Time",
|
||||
"diamondCost": 6999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e73e786041d8218d8e9dbbc150855f1b~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/25e/25eb996989f2c9f66c3edcdfc6674049/42a32ced64d47b5bf8e7f57dd5b7a57f.webp"
|
||||
},
|
||||
"6793": {
|
||||
"id": 6793,
|
||||
@@ -2817,19 +2829,25 @@
|
||||
"id": 6820,
|
||||
"name": "Whale diving",
|
||||
"diamondCost": 2150,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/46fa70966d8e931497f5289060f9a794~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/db2/db286be21ff2672b6e825a883c8c3e8f/ab9021773e219665f526cee02252f936.webp"
|
||||
},
|
||||
"6833": {
|
||||
"id": 6833,
|
||||
"name": "Castle Fantasy",
|
||||
"diamondCost": 20000,
|
||||
"image": "https://storage.streamdps.com/iblock/a08/a088a2975c7d4a68b8146a4c6b5c97c1/2729c82ccd54828bd950675e7491d71c.webp"
|
||||
},
|
||||
"6834": {
|
||||
"id": 6834,
|
||||
"name": "Gift Box",
|
||||
"diamondCost": 1999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9cc22f7c8ac233e129dec7b981b91b76~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/daa/daa30e32902238fe45acd7ad97d93e67/f76b6dc0d74fa3dd7a0a3e7c703fae13.webp"
|
||||
},
|
||||
"6835": {
|
||||
"id": 6835,
|
||||
"name": "Gift Box",
|
||||
"diamondCost": 3999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3646c259f8ce6f79c762ad00ce51dda0~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/fe3/fe3ea09799010f4185e3f862431db84b/951f010f281aea5b15e90d74b7e6306c.webp"
|
||||
},
|
||||
"6837": {
|
||||
"id": 6837,
|
||||
@@ -2919,7 +2937,7 @@
|
||||
"id": 6862,
|
||||
"name": "Cooper Flies Home",
|
||||
"diamondCost": 1999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3f1945b0d96e665a759f747e5e0cf7a9~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/778/7784f4e4b22c7acb8c90b9ccf4cfd71c/e3bb5fd549bc047912dda450fb714f84.webp"
|
||||
},
|
||||
"6863": {
|
||||
"id": 6863,
|
||||
@@ -2967,7 +2985,7 @@
|
||||
"id": 6890,
|
||||
"name": "Love you",
|
||||
"diamondCost": 1,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ab0a7b44bfc140923bb74164f6f880ab~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/0d9/0d984742e147a8bf2fd0f06b1421a825/c42e82a95ae799de0e860947971440ed.webp"
|
||||
},
|
||||
"6892": {
|
||||
"id": 6892,
|
||||
@@ -3251,6 +3269,12 @@
|
||||
"diamondCost": 1,
|
||||
"image": "https://storage.streamdps.com/iblock/341/341ed57767654fa7df9660988af5aa8c/b8ef51ac15bd2af523d9010fc0259d7f.webp"
|
||||
},
|
||||
"7041": {
|
||||
"id": 7041,
|
||||
"name": "Arcade Game",
|
||||
"diamondCost": 1200,
|
||||
"image": "https://storage.streamdps.com/iblock/fd0/fd0785612b024900444a0a69083400ff/3181d6af50b05dd65a7ba75902bb5b94.webp"
|
||||
},
|
||||
"7048": {
|
||||
"id": 7048,
|
||||
"name": "I LOVE KR",
|
||||
@@ -3435,31 +3459,31 @@
|
||||
"id": 7121,
|
||||
"name": "Marvelous Confetti",
|
||||
"diamondCost": 100,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fccc851d351716bc8b34ec65786c727d~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/a2e/a2e6e84d5786d5a4afb05d03cb76c519/cc8b527c9b83f76ee7fc314cc8cb80f6.webp"
|
||||
},
|
||||
"7122": {
|
||||
"id": 7122,
|
||||
"name": "Gem Gun",
|
||||
"diamondCost": 500,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/dd06007ade737f1001977590b11d3f61~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/939/9393cb0608187667ef6d5e377f1c0d69/9b5cb58300a50651228e505b7714fdea.webp"
|
||||
},
|
||||
"7123": {
|
||||
"id": 7123,
|
||||
"name": "Shiny air balloon",
|
||||
"diamondCost": 1000,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9e7ebdca64b8f90fcc284bb04ab92d24~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/bbf/bbf19d5a1bc2851cf5d7fea1b9fb0609/b636bdafd709c81fa041f72ffdf56645.webp"
|
||||
},
|
||||
"7124": {
|
||||
"id": 7124,
|
||||
"name": "Signature Jet",
|
||||
"diamondCost": 4888,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/fe27eba54a50c0a687e3dc0f2c02067d~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/681/6816084aca12a2bb0da2cf05174322f5/928ee6f6bfe12d363c1bbc7f8b03e7e0.webp"
|
||||
},
|
||||
"7125": {
|
||||
"id": 7125,
|
||||
"name": "Premium Shuttle",
|
||||
"diamondCost": 20000,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/c2b287adee5151b7889d6e3d45b72e44~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/fc0/fc0bb0d7097635a7a91dd643f42a5258/cea9087fc79225ba647a6fa6bc60863c.webp"
|
||||
},
|
||||
"7131": {
|
||||
"id": 7131,
|
||||
@@ -3519,7 +3543,7 @@
|
||||
"id": 7168,
|
||||
"name": "Money Gun",
|
||||
"diamondCost": 500,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/e0589e95a2b41970f0f30f6202f5fce6~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/248/248d3e4000124666d17b89889bf7468b/9c7aa57e3bd14e2ed6c1d8acd53b1970.webp"
|
||||
},
|
||||
"7171": {
|
||||
"id": 7171,
|
||||
@@ -3645,7 +3669,7 @@
|
||||
"id": 7312,
|
||||
"name": "TikTok Universe+",
|
||||
"diamondCost": 34999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/b13105782e8bf8fbefaa83b7af413cee~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/f23/f23b0f26a9b1cb931243bacfa5a3b7e4/17263e949df9e7e2f173e6eae68fd198.webp"
|
||||
},
|
||||
"7316": {
|
||||
"id": 7316,
|
||||
@@ -3657,7 +3681,7 @@
|
||||
"id": 7319,
|
||||
"name": "Phoenix",
|
||||
"diamondCost": 25999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/ef248375c4167d70c1642731c732c982~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/7d2/7d238b81518ab1e340e06adeb88c7c1c/ca9c644b2653d8315db71237b6b955eb.webp"
|
||||
},
|
||||
"7341": {
|
||||
"id": 7341,
|
||||
@@ -3717,7 +3741,7 @@
|
||||
"id": 7400,
|
||||
"name": "Adam’s Dream",
|
||||
"diamondCost": 25999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/9a586391fbb1e21621c4203e5563a9e0~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/d10/d10e9c17cf198b2da7ae2ad13ffa6541/33b7de1f4f63e68ce8fa6d5693770042.webp"
|
||||
},
|
||||
"7403": {
|
||||
"id": 7403,
|
||||
@@ -3729,7 +3753,7 @@
|
||||
"id": 7467,
|
||||
"name": "Chasing the Dream",
|
||||
"diamondCost": 1500,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea8dbb805466c4ced19f29e9590040f~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/63a/63a21b726641e8bb50715bfe2e147d93/613bfe9574775d0c5b9be197cd96a745.webp"
|
||||
},
|
||||
"7468": {
|
||||
"id": 7468,
|
||||
@@ -3759,7 +3783,7 @@
|
||||
"id": 7529,
|
||||
"name": "Mystery Firework",
|
||||
"diamondCost": 1999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/c110230c5db903db5f060a432f5a86cd~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/a53/a53a028b290673abcdaa7858e5753a99/666cd8c2e66d6fb004ca64c8112af989.webp"
|
||||
},
|
||||
"7532": {
|
||||
"id": 7532,
|
||||
@@ -3803,6 +3827,12 @@
|
||||
"diamondCost": 10,
|
||||
"image": "https://storage.streamdps.com/iblock/b24/b24309d4ea6722875678e492ae12fb3f/864ac7928a78b43be2d1ee93915a53f5.webp"
|
||||
},
|
||||
"7598": {
|
||||
"id": 7598,
|
||||
"name": "Pirate’s Ship",
|
||||
"diamondCost": 15000,
|
||||
"image": "https://storage.streamdps.com/iblock/475/4753e54cae562b34edbf1a157cd60b21/722409ec69cfaf707d611b0987799296.webp"
|
||||
},
|
||||
"7604": {
|
||||
"id": 7604,
|
||||
"name": "2023",
|
||||
@@ -3813,7 +3843,7 @@
|
||||
"id": 7610,
|
||||
"name": "Dragon Flame",
|
||||
"diamondCost": 26999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/89b4d1d93c1cc614e3a0903ac7a94e0c~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/544/544a04d819ce2c2a51624bd4cd01e70d/489f08c5dc7c27d0c1fc2a97d2f79b1d.webp"
|
||||
},
|
||||
"7624": {
|
||||
"id": 7624,
|
||||
@@ -3879,7 +3909,7 @@
|
||||
"id": 7764,
|
||||
"name": "Star Throne",
|
||||
"diamondCost": 7999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/af5/af5b1fac4d7a0b540057460e0ab0730a/864a37b3f4a8ad6d2e174bfa6e2e4f32.webp"
|
||||
},
|
||||
"7780": {
|
||||
"id": 7780,
|
||||
@@ -3909,7 +3939,7 @@
|
||||
"id": 7823,
|
||||
"name": "Leon and Lion",
|
||||
"diamondCost": 34000,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a291aedacf27d22c3fd2d83575d2bee9~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/a28/a28a82c70a624e448a96d3bebbfad3ea/833c0071d92604b5a544bf8f0ad72b68.webp"
|
||||
},
|
||||
"7824": {
|
||||
"id": 7824,
|
||||
@@ -3995,6 +4025,12 @@
|
||||
"diamondCost": 1,
|
||||
"image": "https://storage.streamdps.com/iblock/923/92341a47e85be94fb6a6699a6c430a93/d60527955f9597a43d339357fed6a5fc.webp"
|
||||
},
|
||||
"7911": {
|
||||
"id": 7911,
|
||||
"name": "Maggie",
|
||||
"diamondCost": 15000,
|
||||
"image": "https://storage.streamdps.com/iblock/a12/a12a1b23f1f6a19d728de84e1f43e21d/ff288346e9855a9bb6deb4450491028f.webp"
|
||||
},
|
||||
"7927": {
|
||||
"id": 7927,
|
||||
"name": "Puppy Love",
|
||||
@@ -4017,7 +4053,7 @@
|
||||
"id": 7934,
|
||||
"name": "Heart Me",
|
||||
"diamondCost": 1,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/d56945782445b0b8c8658ed44f894c7b~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/13e/13e5b040286e1eb50502af4539441cce/f82b75d67c3e4553d278404babdf91e2.webp"
|
||||
},
|
||||
"7963": {
|
||||
"id": 7963,
|
||||
@@ -4043,6 +4079,12 @@
|
||||
"diamondCost": 88,
|
||||
"image": "https://storage.streamdps.com/iblock/e22/e2266686271c7a90ff04517f248c6f73/0459d679c01a5bfa5a4be1d61ec81ec8.webp"
|
||||
},
|
||||
"7978": {
|
||||
"id": 7978,
|
||||
"name": "Leopard",
|
||||
"diamondCost": 15000,
|
||||
"image": "https://storage.streamdps.com/iblock/eb4/eb4d116b15c03c2974b86fa400fa6a07/9a34b020e29f2d25f434387ae01b6386.webp"
|
||||
},
|
||||
"7984": {
|
||||
"id": 7984,
|
||||
"name": "Counting Sheep",
|
||||
@@ -4137,7 +4179,7 @@
|
||||
"id": 8130,
|
||||
"name": "Like-Pop",
|
||||
"diamondCost": 99,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/75eb7b4aca24eaa6e566b566c7d21e2f~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/272/2726ba4a1c7bbd0d4a483207b12d8f71/9c96b3106699eadcdf54c3e379418b99.webp"
|
||||
},
|
||||
"8152": {
|
||||
"id": 8152,
|
||||
@@ -4233,31 +4275,31 @@
|
||||
"id": 8243,
|
||||
"name": "Cheer You Up",
|
||||
"diamondCost": 9,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/97e0529ab9e5cbb60d95fc9ff1133ea6~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/788/788d5d3a74a511c5dad52353ffa00b14/bbc76c1cf6b20e20b2b4f149c04cb23d.webp"
|
||||
},
|
||||
"8244": {
|
||||
"id": 8244,
|
||||
"name": "Hands Up",
|
||||
"diamondCost": 499,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f4d906542408e6c87cf0a42f7426f0c6~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/e0f/e0f08e9e2d4ee388e6995b96c0ecdb11/c7e487b976e30be258208b2dcdbeabf8.webp"
|
||||
},
|
||||
"8245": {
|
||||
"id": 8245,
|
||||
"name": "Here We Go",
|
||||
"diamondCost": 1799,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/61b76a51a3757f0ff1cdc33b16c4d8ae~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/eb4/eb455b32af55203ea8eca269775cbe9e/9c39ed829f6bb4730b9fadc0d7dff5d3.webp"
|
||||
},
|
||||
"8247": {
|
||||
"id": 8247,
|
||||
"name": "Happy Party",
|
||||
"diamondCost": 6999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/41774a8ba83c59055e5f2946d51215b4~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/0f0/0f0bbac0fe85be28013b327a2e8c46e4/c1d7cbc8ea8493709416759f049b03be.webp"
|
||||
},
|
||||
"8248": {
|
||||
"id": 8248,
|
||||
"name": "Fly Love",
|
||||
"diamondCost": 19999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/a598ba4c7024f4d46c1268be4d82f901~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/729/729736d11c9014d99d088fa77da2bcea/d461d23ae2f3c5d2014f78a34c0b8956.webp"
|
||||
},
|
||||
"8259": {
|
||||
"id": 8259,
|
||||
@@ -4281,7 +4323,7 @@
|
||||
"id": 8277,
|
||||
"name": "Love Drop",
|
||||
"diamondCost": 1800,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/1ea684b3104abb725491a509022f7c02~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/896/896832589053f394e9b14cac7992a0d1/df08b30c59ff13f1eec030d1e27a2a35.webp"
|
||||
},
|
||||
"8283": {
|
||||
"id": 8283,
|
||||
@@ -4347,13 +4389,19 @@
|
||||
"id": 8381,
|
||||
"name": "Seal and Whale",
|
||||
"diamondCost": 34500,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/3781e9159ff09272826d3f2216ba36ef.png~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/7ea/7eaaad60ec567af6679b633b13d45d67/a4efc1be2a75340110072f2b6bba554b.webp"
|
||||
},
|
||||
"8387": {
|
||||
"id": 8387,
|
||||
"name": "peacock",
|
||||
"diamondCost": 15000,
|
||||
"image": "https://storage.streamdps.com/iblock/f9f/f9f23f00af57e8fb8a421a2a7f24aacc/a5eb745418085f1be7692f577ff04b9c.webp"
|
||||
},
|
||||
"8391": {
|
||||
"id": 8391,
|
||||
"name": "Sam the Whale",
|
||||
"diamondCost": 30000,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/f48a1887eb88238738996bb997b31c0f.png~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/3e6/3e6b7b154146a376da3ec918eace0bf6/682a9a304ddd18ad08702f15236f4293.webp"
|
||||
},
|
||||
"8392": {
|
||||
"id": 8392,
|
||||
@@ -4389,13 +4437,13 @@
|
||||
"id": 8419,
|
||||
"name": "Red Lightning",
|
||||
"diamondCost": 12000,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/5f48599c8d2a7bbc6e6fcf11ba2c809f~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/12a/12ac7db3c837f029beee318c45e3ad88/da93190dd1082f876b4461ec0924e453.webp"
|
||||
},
|
||||
"8420": {
|
||||
"id": 8420,
|
||||
"name": "Star Throne",
|
||||
"diamondCost": 7999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/30063f6bc45aecc575c49ff3dbc33831~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/cb8/cb8068130463628181f0b84a4408e871/2495b97f5f4868e9e71612120c4eded5.webp"
|
||||
},
|
||||
"8433": {
|
||||
"id": 8433,
|
||||
@@ -4409,6 +4457,12 @@
|
||||
"diamondCost": 88,
|
||||
"image": "https://storage.streamdps.com/iblock/405/405fcf52a1de3d14ab9834c1f30cc330/0deed9ee2c79ba6bf2005b0ce667bf60.webp"
|
||||
},
|
||||
"8435": {
|
||||
"id": 8435,
|
||||
"name": "Pyramids",
|
||||
"diamondCost": 15000,
|
||||
"image": "https://storage.streamdps.com/iblock/bfc/bfcf491b940e478b6410047bc047af1b/abbbdd13015a9f31be1b905268873d73.webp"
|
||||
},
|
||||
"8448": {
|
||||
"id": 8448,
|
||||
"name": "Raccoon",
|
||||
@@ -4421,6 +4475,12 @@
|
||||
"diamondCost": 99,
|
||||
"image": "https://storage.streamdps.com/iblock/a0f/a0ff283ce42ad27a03d6b8b98e81463b/9e5a49a9bae80f0afa30257d562cec8e.webp"
|
||||
},
|
||||
"8456": {
|
||||
"id": 8456,
|
||||
"name": "Zeus",
|
||||
"diamondCost": 34000,
|
||||
"image": "https://storage.streamdps.com/iblock/f4e/f4e74e07fff3d3b48143a5c56af7fec4/8b15ef2f342dcd2066bcdcf82e5f07e9.webp"
|
||||
},
|
||||
"8457": {
|
||||
"id": 8457,
|
||||
"name": "Zeus",
|
||||
@@ -4449,7 +4509,7 @@
|
||||
"id": 8582,
|
||||
"name": "TikTok Stars",
|
||||
"diamondCost": 39999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/b1667c891ed39fd68ba7252fff7a1e7c~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/fb3/fb3c04af9d06b0cdf3df3da61f0c5705/b0f3fd913d2443626d8026eacef37a51.webp"
|
||||
},
|
||||
"8597": {
|
||||
"id": 8597,
|
||||
@@ -4457,12 +4517,24 @@
|
||||
"diamondCost": 199,
|
||||
"image": "https://storage.streamdps.com/iblock/50f/50f04937063753d6de255d2b5a080c1c/4f101c7c50ddbe8bd26a2ce5f8c16896.webp"
|
||||
},
|
||||
"8599": {
|
||||
"id": 8599,
|
||||
"name": "Convertible Car",
|
||||
"diamondCost": 12000,
|
||||
"image": "https://storage.streamdps.com/iblock/2cf/2cfc5af50894de318b81438a7e137710/060001e901992f5462c841b987876eeb.webp"
|
||||
},
|
||||
"8600": {
|
||||
"id": 8600,
|
||||
"name": "Sending positivity",
|
||||
"diamondCost": 199,
|
||||
"image": "https://storage.streamdps.com/iblock/29b/29b0e9cb18e3479d17188235f8fdf480/58c6e916f44dcdda9d2f68dbdae77ddb.webp"
|
||||
},
|
||||
"8602": {
|
||||
"id": 8602,
|
||||
"name": "Gorilla",
|
||||
"diamondCost": 30000,
|
||||
"image": "https://storage.streamdps.com/iblock/1e2/1e29b9d1a0263f1487498dc556cdcbc1/bec227242f8c9b258855071aa050ac17.webp"
|
||||
},
|
||||
"8604": {
|
||||
"id": 8604,
|
||||
"name": "Starfish Bay",
|
||||
@@ -4485,7 +4557,7 @@
|
||||
"id": 8651,
|
||||
"name": "Thunder Falcon",
|
||||
"diamondCost": 39999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/26f3fbcda383e6093a19b8e7351a164c~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/b5d/b5dd904138691d16f6378e1f215fbc00/80a7b0ef77670cf6b7eb31fcae76fe80.webp"
|
||||
},
|
||||
"8672": {
|
||||
"id": 8672,
|
||||
@@ -4553,6 +4625,12 @@
|
||||
"diamondCost": 2000,
|
||||
"image": "https://storage.streamdps.com/iblock/a29/a29903a975ce45f7b9939b510412fcee/051afc0510a7349a9ebfcde9e0fdec24.webp"
|
||||
},
|
||||
"8814": {
|
||||
"id": 8814,
|
||||
"name": "Superhero fight",
|
||||
"diamondCost": 30000,
|
||||
"image": "https://storage.streamdps.com/iblock/d6b/d6b1c955153c8f8c5048d6c8f0d1b418/97d04b889e64328e9ab07224f6072b5f.webp"
|
||||
},
|
||||
"8815": {
|
||||
"id": 8815,
|
||||
"name": "Pink shoes",
|
||||
@@ -4605,25 +4683,25 @@
|
||||
"id": 8912,
|
||||
"name": "Rosa Nebula",
|
||||
"diamondCost": 15000,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/f722088231103b66875dae33f13f8719.png~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/2d7/2d7dca6dc709e54b38336bedbd9eb06f/96de9ba917cf3f96bc15cb0f255b50c4.webp"
|
||||
},
|
||||
"8913": {
|
||||
"id": 8913,
|
||||
"name": "Rosa",
|
||||
"diamondCost": 10,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/eb77ead5c3abb6da6034d3cf6cfeb438~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/d75/d75e85cc034e46f992262e4791eebdb5/5bcd13609b96c3cea7d67a6f68b29a18.webp"
|
||||
},
|
||||
"8914": {
|
||||
"id": 8914,
|
||||
"name": "Forever Rosa",
|
||||
"diamondCost": 399,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/863e7947bc793f694acbe970d70440a1.png~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/a97/a97e8f4489fb62aefe7afd0137e6cdad/3ebbb3e1119ff1c3b7bc9b5ced47a4e0.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.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/00e/00e32385d86e71d5126a0f7de0d102a5/e50f83ab840e595bb5c7175f91d0e071.webp"
|
||||
},
|
||||
"8963": {
|
||||
"id": 8963,
|
||||
@@ -4653,7 +4731,7 @@
|
||||
"id": 9072,
|
||||
"name": "TikTok Universe",
|
||||
"diamondCost": 44999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/8f471afbcebfda3841a6cc515e381f58~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/cb8/cb81dd4932de73d6c5874c05e93c511b/abb83322d4cb67b8ae6fc7ec15d4d426.webp"
|
||||
},
|
||||
"9081": {
|
||||
"id": 9081,
|
||||
@@ -4661,6 +4739,12 @@
|
||||
"diamondCost": 1,
|
||||
"image": "https://storage.streamdps.com/iblock/ff9/ff906a964a6ad9c4504438302d9354b8/3ee4796c239930c395afb3d7ef10295a.webp"
|
||||
},
|
||||
"9086": {
|
||||
"id": 9086,
|
||||
"name": "Man V Seagull",
|
||||
"diamondCost": 15000,
|
||||
"image": "https://storage.streamdps.com/iblock/e5d/e5d95d519ee0ed7922de14f224a9504d/e80d8e840dd44cdf20de4c572c25e0f4.webp"
|
||||
},
|
||||
"9087": {
|
||||
"id": 9087,
|
||||
"name": "Flame heart",
|
||||
@@ -4671,7 +4755,13 @@
|
||||
"id": 9092,
|
||||
"name": "Fire Phoenix",
|
||||
"diamondCost": 41999,
|
||||
"image": "https://p16-webcast.tiktokcdn.com/img/maliva/webcast-va/resource/bfb8425a7e8fa03f9fec05a973a4a506.png~tplv-obj.jpg"
|
||||
"image": "https://storage.streamdps.com/iblock/13b/13bd6d3510e802831552d711c688c958/ffedd22a99c1eb2ac888974816c979cb.webp"
|
||||
},
|
||||
"9095": {
|
||||
"id": 9095,
|
||||
"name": "Birthday Party",
|
||||
"diamondCost": 6999,
|
||||
"image": "https://storage.streamdps.com/iblock/d0d/d0d1164a9ed81239b70cb25b93927023/d0dba293643c67dc33c1f4dda04e5b50.webp"
|
||||
},
|
||||
"9096": {
|
||||
"id": 9096,
|
||||
@@ -4708,5 +4798,23 @@
|
||||
"name": "Pretzel",
|
||||
"diamondCost": 1,
|
||||
"image": "https://storage.streamdps.com/iblock/a67/a6797793eb382a99d38b2a0c37ec9b58/04ea1042707a361ad0f4668d0d759daa.webp"
|
||||
},
|
||||
"9184": {
|
||||
"id": 9184,
|
||||
"name": "Cube",
|
||||
"diamondCost": 10,
|
||||
"image": "https://storage.streamdps.com/iblock/69d/69dab4e352882c0bd29c3864e24d80de/258857221189c76260b6af5eeb43e93b.webp"
|
||||
},
|
||||
"9240": {
|
||||
"id": 9240,
|
||||
"name": "Dancing queens",
|
||||
"diamondCost": 20000,
|
||||
"image": "https://storage.streamdps.com/iblock/c79/c793af446369ecef5238e73312c84ccd/464a76f3e6eaee9afc771f45a4bba9df.webp"
|
||||
},
|
||||
"9255": {
|
||||
"id": 9255,
|
||||
"name": "Aerobic headband",
|
||||
"diamondCost": 99,
|
||||
"image": "https://storage.streamdps.com/iblock/3d9/3d98c2fbc96922da37a9d22881bb06b9/0a99af132ab8e3fe9806d2412abc6bf0.webp"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user