sponsorblock: cache to prevent fetching same VideoSegment information again

This commit is contained in:
evermind 2023-02-17 23:53:28 +01:00
parent 1d9550e76f
commit 4d16679214

View file

@ -29,11 +29,14 @@ import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public final class SponsorBlockUtils {
private static final Application APP = App.getApp();
private static final String TAG = SponsorBlockUtils.class.getSimpleName();
private static final boolean DEBUG = MainActivity.DEBUG;
private static Map<String, VideoSegment[]> videoSegmentsCache = new HashMap<>();
private SponsorBlockUtils() {
}
@ -121,6 +124,11 @@ public final class SponsorBlockUtils {
final String params = "skipSegments/" + videoIdHash.substring(0, 4)
+ "?categories=" + categoryParams;
final VideoSegment[] alreadyFetchedVideoSegments = videoSegmentsCache.get(params);
if (alreadyFetchedVideoSegments != null) {
return alreadyFetchedVideoSegments;
}
if (!isConnected()) {
return null;
}
@ -178,8 +186,9 @@ public final class SponsorBlockUtils {
result.add(segment);
}
}
return result.toArray(new VideoSegment[0]);
final VideoSegment[] segments = result.toArray(new VideoSegment[0]);
videoSegmentsCache.put(params, segments);
return segments;
}
private static boolean isConnected() {