real-debrid-downloader/resources/extractor-jvm
Sucukdeluxe 51a01ea03f Use bulk IInArchive.extract() for ~8x faster extraction, fix archive item resolution
- Replace extractSlow() per-item extraction with IInArchive.extract() bulk API
  in 7-Zip-JBinding. Solid RAR archives no longer re-decode from the beginning
  for each item, bringing extraction speed close to native WinRAR/7z.exe (~375 MB/s
  instead of ~43 MB/s).

- Add BulkExtractCallback implementing both IArchiveExtractCallback and
  ICryptoGetTextPassword for proper password handling during bulk extraction.

- Fix resolveArchiveItemsFromList with multi-level fallback matching:
  1. Pattern match (multipart RAR, split ZIP/7z, generic splits)
  2. Exact filename match (case-insensitive)
  3. Stem-based fuzzy match (handles debrid service filename modifications)
  4. Single-item archive fallback

- Simplify caching from Set+Array workaround back to simple Map<string, T>
  (the original "caching failure" was caused by resolveArchiveItemsFromList
  returning empty arrays, not by Map/Set/Object data structure bugs).

- Add comprehensive tests for archive item resolution (14 test cases)
  and JVM extraction progress callbacks (2 test cases).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 06:24:12 +01:00
..
classes/com/sucukdeluxe/extractor Use bulk IInArchive.extract() for ~8x faster extraction, fix archive item resolution 2026-03-05 06:24:12 +01:00
lib Replace extraction backend with SevenZipJBinding + Zip4j JVM sidecar 2026-03-03 02:08:42 +01:00
src/com/sucukdeluxe/extractor Use bulk IInArchive.extract() for ~8x faster extraction, fix archive item resolution 2026-03-05 06:24:12 +01:00
README.md Replace extraction backend with SevenZipJBinding + Zip4j JVM sidecar 2026-03-03 02:08:42 +01:00
THIRD_PARTY_NOTICES.txt Replace extraction backend with SevenZipJBinding + Zip4j JVM sidecar 2026-03-03 02:08:42 +01:00

JVM extractor runtime

This directory contains the Java sidecar runtime used by src/main/extractor.ts.

Included backends

  • sevenzipjbinding for the primary extraction path (RAR/7z/ZIP and others)
  • zip4j for ZIP multipart handling (JD-style split ZIP behavior)

Layout

  • classes/ compiled JBindExtractorMain classes
  • lib/ runtime jars required by the sidecar
  • src/ Java source for the sidecar

Rebuild notes

The checked-in classes are Java 8 compatible and built from:

resources/extractor-jvm/src/com/sucukdeluxe/extractor/JBindExtractorMain.java

If you need to rebuild, compile against the jars in lib/ with a Java 8-compatible compiler.