mirror of
https://github.com/ajayyy/SponsorBlockServer.git
synced 2025-12-06 11:36:58 +03:00
Handle trimmed UUID duplicates
This commit is contained in:
@@ -182,8 +182,27 @@ async function getSegmentsByHash(req: Request, hashedVideoIDPrefix: VideoIDHash,
|
||||
};
|
||||
|
||||
const canUseCache = requiredSegments.length === 0;
|
||||
data.segments = (await prepareCategorySegments(req, videoID as VideoID, service, videoData.segments, cache, canUseCache))
|
||||
.filter((segment: Segment) => categories.includes(segment?.category) && actionTypes.includes(segment?.actionType))
|
||||
const segments = (await prepareCategorySegments(req, videoID as VideoID, service, videoData.segments, cache, canUseCache))
|
||||
.filter((segment: Segment) => categories.includes(segment?.category) && actionTypes.includes(segment?.actionType));
|
||||
|
||||
// Make sure no hash duplicates exist
|
||||
if (trimUUIDs) {
|
||||
const seen = new Set<string>();
|
||||
for (const segment of segments) {
|
||||
const shortUUID = segment.UUID.substring(0, trimUUIDs);
|
||||
if (seen.has(shortUUID)) {
|
||||
// Duplicate found, disable trimming
|
||||
trimUUIDs = undefined;
|
||||
break;
|
||||
}
|
||||
|
||||
seen.add(shortUUID);
|
||||
}
|
||||
|
||||
seen.clear();
|
||||
}
|
||||
|
||||
data.segments = segments
|
||||
.map((segment) => ({
|
||||
category: segment.category,
|
||||
actionType: segment.actionType,
|
||||
|
||||
Reference in New Issue
Block a user