Skip to content

Commit d2ea00b

Browse files
authored
Merge pull request #72 from jwdeveloper/develop-1.6.1
Develop 1.6.1
2 parents fb9fc04 + 4297af1 commit d2ea00b

File tree

11 files changed

+66
-76
lines changed

11 files changed

+66
-76
lines changed

API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokLinkMicBattleEvent.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import io.github.jwdeveloper.tiktok.data.models.battles.*;
2828
import io.github.jwdeveloper.tiktok.messages.enums.LinkMicBattleStatus;
2929
import io.github.jwdeveloper.tiktok.messages.webcast.WebcastLinkMicBattle;
30-
import lombok.Getter;
30+
import lombok.*;
3131

3232
import java.util.*;
3333

@@ -43,6 +43,8 @@ public class TikTokLinkMicBattleEvent extends TikTokHeaderEvent
4343
true if battle is finished otherwise false
4444
*/
4545
private final boolean finished;
46+
@Getter(AccessLevel.NONE)
47+
private final boolean oneVsOne;
4648
private final List<Team> teams;
4749

4850
public TikTokLinkMicBattleEvent(WebcastLinkMicBattle msg) {
@@ -53,6 +55,7 @@ public TikTokLinkMicBattleEvent(WebcastLinkMicBattle msg) {
5355
if (msg.getHostTeamCount() == 2) { // 1v1 battle
5456
teams.add(new Team1v1(msg.getHostTeam(0), msg));
5557
teams.add(new Team1v1(msg.getHostTeam(1), msg));
58+
oneVsOne = true;
5659
} else { // 2v2 battle
5760
if (isFinished()) {
5861
teams.add(new Team2v2(msg.getHostData2V2List().stream().filter(data -> data.getTeamNumber() == 1).findFirst().orElse(null), msg));
@@ -61,11 +64,20 @@ public TikTokLinkMicBattleEvent(WebcastLinkMicBattle msg) {
6164
teams.add(new Team2v2(msg.getHostTeam(0), msg.getHostTeam(1), msg));
6265
teams.add(new Team2v2(msg.getHostTeam(2), msg.getHostTeam(3), msg));
6366
}
67+
oneVsOne = false;
6468
}
6569

6670
// Info:
6771
// - msg.getDetailsList() & msg.getViewerTeamList() both only have content when battle is finished
6872
// - msg.getDetailsCount() & msg.getViewerTeamCount() always is 2 only when battle is finished
6973
// - msg.getHostTeamCount() always is 2 for 1v1 or 4 for 2v2
7074
}
75+
76+
public boolean is1v1() {
77+
return oneVsOne;
78+
}
79+
80+
public boolean is2v2() {
81+
return !oneVsOne;
82+
}
7183
}

API/src/main/java/io/github/jwdeveloper/tiktok/data/models/gifts/Gift.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22

33
import com.google.gson.JsonObject;
44
import io.github.jwdeveloper.tiktok.data.models.Picture;
5-
import lombok.*;
6-
7-
import java.util.*;
5+
import lombok.Data;
86

97
@Data
108
public class Gift {
@@ -16,7 +14,7 @@ public class Gift {
1614

1715
private final int diamondCost;
1816

19-
private final Picture picture;
17+
private Picture picture;
2018

2119
private final JsonObject properties;
2220

API/src/main/java/io/github/jwdeveloper/tiktok/data/settings/LiveClientSettings.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ public class LiveClientSettings {
9191
*/
9292
private long pingInterval = 5000;
9393

94+
/** Throw an exception on 18+ Age Restriction */
95+
private boolean throwOnAgeRestriction;
96+
9497
/**
9598
* Optional: Sometimes not every messages from chat are send to TikTokLiveJava to fix this issue you can set sessionId
9699
* @see <a href="https://github.com/isaackogan/TikTok-Live-Connector#send-chat-messages">Documentation: How to obtain sessionId</a>

Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLive.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ public static LiveHttpClient requests() {
9191
return new TikTokLiveHttpClient();
9292
}
9393

94-
9594
//I don't like it, but it is reasonable for now
9695
private static GiftsManager giftsManager;
9796

@@ -108,6 +107,4 @@ public static GiftsManager gifts() {
108107
}
109108
return giftsManager;
110109
}
111-
112-
113110
}

Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClient.java

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,26 +23,19 @@
2323
package io.github.jwdeveloper.tiktok;
2424

2525
import com.google.protobuf.ByteString;
26-
import io.github.jwdeveloper.tiktok.data.events.TikTokDisconnectedEvent;
27-
import io.github.jwdeveloper.tiktok.data.events.TikTokErrorEvent;
28-
import io.github.jwdeveloper.tiktok.data.events.TikTokReconnectingEvent;
26+
import io.github.jwdeveloper.tiktok.data.events.*;
2927
import io.github.jwdeveloper.tiktok.data.events.common.TikTokEvent;
3028
import io.github.jwdeveloper.tiktok.data.events.control.*;
3129
import io.github.jwdeveloper.tiktok.data.events.http.TikTokRoomDataResponseEvent;
3230
import io.github.jwdeveloper.tiktok.data.events.room.TikTokRoomInfoEvent;
33-
import io.github.jwdeveloper.tiktok.data.requests.LiveConnectionData;
34-
import io.github.jwdeveloper.tiktok.data.requests.LiveData;
35-
import io.github.jwdeveloper.tiktok.data.requests.LiveUserData;
31+
import io.github.jwdeveloper.tiktok.data.requests.*;
32+
import io.github.jwdeveloper.tiktok.data.settings.LiveClientSettings;
3633
import io.github.jwdeveloper.tiktok.exceptions.*;
3734
import io.github.jwdeveloper.tiktok.http.LiveHttpClient;
38-
import io.github.jwdeveloper.tiktok.listener.ListenersManager;
39-
import io.github.jwdeveloper.tiktok.listener.TikTokListenersManager;
40-
import io.github.jwdeveloper.tiktok.live.GiftsManager;
41-
import io.github.jwdeveloper.tiktok.live.LiveClient;
42-
import io.github.jwdeveloper.tiktok.live.LiveRoomInfo;
35+
import io.github.jwdeveloper.tiktok.listener.*;
36+
import io.github.jwdeveloper.tiktok.live.*;
4337
import io.github.jwdeveloper.tiktok.messages.webcast.WebcastResponse;
4438
import io.github.jwdeveloper.tiktok.models.ConnectionState;
45-
import io.github.jwdeveloper.tiktok.data.settings.LiveClientSettings;
4639
import io.github.jwdeveloper.tiktok.websocket.SocketClient;
4740

4841
import java.util.Base64;
@@ -144,7 +137,7 @@ public void tryConnect() {
144137
var liveDataRequest = new LiveData.Request(userData.getRoomId());
145138
var liveData = httpClient.fetchLiveData(liveDataRequest);
146139

147-
if (liveData.isAgeRestricted())
140+
if (liveData.isAgeRestricted() && clientSettings.isThrowOnAgeRestriction())
148141
throw new TikTokLiveException("Livestream for " + liveRoomInfo.getHostName() + " is 18+ or age restricted!");
149142

150143
if (liveData.getLiveStatus() == LiveData.LiveStatus.HostNotFound)

Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,9 +207,15 @@ public TikTokLiveMapper createMapper(GiftsManager giftsManager, TikTokRoomInfo r
207207

208208

209209
//LinkMic events
210-
// mapper.webcastObjectToConstructor(WebcastLinkMicBattle.class, TikTokLinkMicBattleEvent.class);
211-
// mapper.webcastObjectToConstructor(WebcastLinkMicArmies.class, TikTokLinkMicArmiesEvent.class);
212-
// mapper.webcastObjectToConstructor(WebcastLinkMicMethod.class, TikTokLinkMicMethodEvent.class);
210+
mapper.forMessage(WebcastLinkMicBattle.class, (inputBytes, messageName, mapperHelper) -> {
211+
var message = mapperHelper.bytesToWebcastObject(inputBytes, WebcastLinkMicBattle.class);
212+
return MappingResult.of(message, new TikTokLinkMicBattleEvent(message));
213+
});
214+
mapper.forMessage(WebcastLinkMicArmies.class, (inputBytes, messageName, mapperHelper) -> {
215+
var message = mapperHelper.bytesToWebcastObject(inputBytes, WebcastLinkMicArmies.class);
216+
return MappingResult.of(message, new TikTokLinkMicArmiesEvent(message));
217+
});
218+
// mapper.webcastObjectToConstructor(WebcastLinkMicMethod.class, TikTokLinkMicMethodEvent.class);
213219
// mapper.webcastObjectToConstructor(WebcastLinkMicFanTicketMethod.class, TikTokLinkMicFanTicketEvent.class);
214220

215221
//Rank events

Client/src/main/java/io/github/jwdeveloper/tiktok/gifts/TikTokGiftsManager.java

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
package io.github.jwdeveloper.tiktok.gifts;
22

33
import io.github.jwdeveloper.tiktok.data.models.gifts.Gift;
4-
import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveException;
54
import io.github.jwdeveloper.tiktok.live.GiftsManager;
65

7-
import java.util.Collections;
8-
import java.util.List;
9-
import java.util.Map;
10-
import java.util.function.Function;
6+
import java.util.*;
117
import java.util.function.Predicate;
128
import java.util.stream.Collectors;
139

@@ -32,19 +28,15 @@ public Gift getByName(String name) {
3228
}
3329

3430
public Gift getById(int giftId) {
35-
if (!giftsByIdIndex.containsKey(giftId)) {
36-
return Gift.UNDEFINED;
37-
}
38-
39-
return giftsByIdIndex.get(giftId);
31+
return giftsByIdIndex.getOrDefault(giftId, Gift.UNDEFINED);
4032
}
4133

4234
public Gift getByFilter(Predicate<Gift> filter) {
4335
return giftsByIdIndex.values()
4436
.stream()
4537
.filter(filter)
4638
.findFirst()
47-
.orElseGet(() -> Gift.UNDEFINED);
39+
.orElse(Gift.UNDEFINED);
4840
}
4941

5042
@Override
@@ -62,4 +54,4 @@ public List<Gift> toList() {
6254
public Map<Integer, Gift> toMap() {
6355
return Collections.unmodifiableMap(giftsByIdIndex);
6456
}
65-
}
57+
}

Client/src/main/java/io/github/jwdeveloper/tiktok/http/mappers/LiveDataMapper.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,7 @@ public LiveData.Response map(String json) {
6565
default -> LiveData.LiveStatus.HostNotFound;
6666
};
6767
response.setLiveStatus(statusValue);
68-
} else if (data.has("prompts") && jsonObject.has("status_code") &&
69-
data.get("prompts").getAsString().isEmpty() && jsonObject.get("status_code").isJsonPrimitive()) {
68+
} else if (data.has("prompts") && data.get("prompts").getAsString().isEmpty() && jsonObject.has("status_code")) {
7069
response.setAgeRestricted(jsonObject.get("status_code").getAsInt() == TikTokLiveHttpClient.TIKTOK_AGE_RESTRICTED_CODE);
7170
} else {
7271
response.setLiveStatus(LiveData.LiveStatus.HostNotFound);

Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/handlers/TikTokGiftEventHandler.java

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,11 @@
2727
import io.github.jwdeveloper.tiktok.data.events.gift.*;
2828
import io.github.jwdeveloper.tiktok.data.models.Picture;
2929
import io.github.jwdeveloper.tiktok.data.models.gifts.*;
30-
import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveException;
3130
import io.github.jwdeveloper.tiktok.live.GiftsManager;
3231
import io.github.jwdeveloper.tiktok.mappers.TikTokMapperHelper;
3332
import io.github.jwdeveloper.tiktok.mappers.data.MappingResult;
3433
import io.github.jwdeveloper.tiktok.messages.webcast.WebcastGiftMessage;
3534
import lombok.SneakyThrows;
36-
import sun.misc.Unsafe;
3735

3836
import java.util.*;
3937

@@ -124,36 +122,8 @@ private Gift getGiftObject(WebcastGiftMessage giftMessage) {
124122
}
125123

126124
if (gift.getPicture().getLink().endsWith(".webp"))
127-
{
128-
updatePicture(gift, giftMessage);
129-
}
125+
gift.setPicture(Picture.map(giftMessage.getGift().getImage()));
130126

131127
return gift;
132128
}
133-
134-
// TODO-kohlerpop1: I do not think this method is needed for any reason?
135-
// TODO response:
136-
137-
/**
138-
* Some generated gifts in JSON file contains .webp image format,
139-
* that's bad since java by the defult is not supporing .webp and when URL is
140-
* converted to Java.io.Image then image is null
141-
*
142-
* However, TikTok in GiftWebcast event always has image in .jpg format,
143-
* so I take advantage of it and swap .webp url with .jpg url
144-
*
145-
*/
146-
147-
private void updatePicture(Gift gift, WebcastGiftMessage webcastGiftMessage) {
148-
try {
149-
var picture = Picture.map(webcastGiftMessage.getGift().getImage());
150-
var constructor = Unsafe.class.getDeclaredConstructors()[0];
151-
constructor.setAccessible(true);
152-
var field = Gift.class.getDeclaredField("picture");
153-
field.setAccessible(true);
154-
field.set(gift, picture);
155-
} catch (Exception e) {
156-
throw new TikTokLiveException("Unable to update picture in gift: " + gift.toString());
157-
}
158-
}
159129
}

extension-collector/src/main/java/io/github/jwdeveloper/tiktok/extension/collector/api/settings/FileDataCollectorSettings.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,14 @@
2525
import lombok.Data;
2626

2727
import java.io.File;
28+
import java.util.function.*;
2829

2930
@Data
3031
public class FileDataCollectorSettings {
3132

3233
private File parentFile;
34+
private BiPredicate<String, String> typeFilter = (dataType, dataTypeName) -> true;
35+
private Predicate<String> userFilter = (tiktokUser) -> true;
36+
private boolean useFileLocks = false;
37+
private boolean appendUserName = false;
3338
}

0 commit comments

Comments
 (0)