From d4bf574370b2322957633890a6b670c5a7c7a409 Mon Sep 17 00:00:00 2001 From: Sucukdeluxe Date: Tue, 3 Mar 2026 15:54:09 +0100 Subject: [PATCH] Fix multi-part RAR extraction: use VolumedArchiveInStream for .partN.rar The JVM extractor used RandomAccessFileInStream for multi-part RAR archives, which only provides a single file stream. 7z-JBinding requires VolumedArchiveInStream to access additional volume parts via callback. Added RAR_MULTIPART_RE and RAR_OLDSPLIT_RE patterns to detect multi-volume RAR archives and route them through VolumedArchiveInStream, fixing "Archive file can't be opened with any of the registered codecs" errors. Co-Authored-By: Claude Opus 4.6 --- package-lock.json | 4 +- .../extractor/JBindExtractorMain$1.class | Bin 1710 -> 1710 bytes .../JBindExtractorMain$Backend.class | Bin 2260 -> 2260 bytes .../JBindExtractorMain$ConflictMode.class | Bin 2014 -> 2014 bytes ...JBindExtractorMain$ExtractionRequest.class | Bin 2539 -> 2539 bytes .../JBindExtractorMain$ProgressTracker.class | Bin 1387 -> 1387 bytes ...ExtractorMain$SevenZipArchiveContext.class | Bin 1663 -> 1663 bytes ...ExtractorMain$SevenZipVolumeCallback.class | Bin 3729 -> 3729 bytes ...ExtractorMain$WrongPasswordException.class | Bin 458 -> 458 bytes .../extractor/JBindExtractorMain.class | Bin 19209 -> 19881 bytes .../extractor/JBindExtractorMain.java | 40 +++++++++++++++++- 11 files changed, 41 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6814f2f..7c6a231 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "real-debrid-downloader", - "version": "1.5.48", + "version": "1.5.54", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "real-debrid-downloader", - "version": "1.5.48", + "version": "1.5.54", "license": "MIT", "dependencies": { "adm-zip": "^0.5.16", diff --git a/resources/extractor-jvm/classes/com/sucukdeluxe/extractor/JBindExtractorMain$1.class b/resources/extractor-jvm/classes/com/sucukdeluxe/extractor/JBindExtractorMain$1.class index fcefae82f2b36f12c39bfd30335e048c1773f902..126b7c0a34b08a35ba52135d51d74adeb8222c0b 100644 GIT binary patch delta 55 zcmZ3-yN-9mI#x!W$?I8rRrwh>83h=)8HE{y8O0dH7)2Pw8ATb)7{wW!86_Be86_D) L8KovCviSl49AyY{ delta 55 zcmZ3-yN-9mI#x!m$?I8rRe2dW8TlBv83h@H8ATYx7=;+b8HE|l7)2SJ8O0cU8O0ew L86_qsviSl48aoJF diff --git a/resources/extractor-jvm/classes/com/sucukdeluxe/extractor/JBindExtractorMain$Backend.class b/resources/extractor-jvm/classes/com/sucukdeluxe/extractor/JBindExtractorMain$Backend.class index dd1c61514feaa251baab10d9e4e5b95f2d0dec36..ff477d8c5237dde0e2b7693fa677606e9a94f8d6 100644 GIT binary patch delta 97 zcmca2ctvo-MmENUlQ*&H1Ib5hhMX%H*qBx_a5Jr%EWexOru7VpOdA<& ym^LvuFl}M*WZKH$%d~y+Id%u2E`AOhAnC&q$-9VwpJ_3J9Mcj8T_&KJ97+J0?i-W< delta 97 zcmca2ctvo-MmEOk$(z{pf#f4LL(V1!Hl}6KJsHfM#+i0RR_t7{UMm diff --git a/resources/extractor-jvm/classes/com/sucukdeluxe/extractor/JBindExtractorMain$ConflictMode.class b/resources/extractor-jvm/classes/com/sucukdeluxe/extractor/JBindExtractorMain$ConflictMode.class index d22e6dbb5925eb224ae621d63637f6320d50ea23..44ea2eca3012029390ca530aa7461a378e542130 100644 GIT binary patch delta 83 zcmcb|e~*6y6C301$;@o}K+>2^2S_Hc^~fG%5MesRAj@=^L6PYwgE7-F26Ltp3=T{u k8C;l7Pv&F~0;-E)59Zy&z{|9kL5gV~gF4gh$$Qw90P>I*YybcN delta 83 zcmcb|e~*6y6C2~y$;@o}K+>2^2S_Hc^~la<5Mi3bAj>qDL6K=bgE7+r26LuG3=T|- k8C;l_PUd6}0;-E)59Xc5z{@n9L5gVxgF4gH$$Qw90G8Ah3;+NC diff --git a/resources/extractor-jvm/classes/com/sucukdeluxe/extractor/JBindExtractorMain$ExtractionRequest.class b/resources/extractor-jvm/classes/com/sucukdeluxe/extractor/JBindExtractorMain$ExtractionRequest.class index b6f04dc83335c0adb0e2111ecd9824bfef73e034..9653dc00b8a3c27233274b05ee7d793e694a5248 100644 GIT binary patch delta 85 zcmaDY{91U!H+J6h3@l8S7`T}(GYBzVnas?g#dv-lPzF!J(#=&CRsUkfNG4u NWIUMc0h2p9jR3#597F&B delta 85 zcmaDY{91U!H+J5Y3@l7*7`U0%G6*rPo6O9i#kg{^9+->-lPzF!J(#=&CRsUkfNG4u NWIUMc0h2p9jR0m38ZZC= diff --git a/resources/extractor-jvm/classes/com/sucukdeluxe/extractor/JBindExtractorMain$ProgressTracker.class b/resources/extractor-jvm/classes/com/sucukdeluxe/extractor/JBindExtractorMain$ProgressTracker.class index cb5c698152bc1395edc6abd7fcaf7d203ed87d15..e9e2f0652158e71d7ca45a21764bd07795281ba1 100644 GIT binary patch delta 113 zcmV-%0FM9b3hN56#RC!K00aW!00{!+01^V`02c!1lhy+(1?m6=0_&3o1Zf@a00si@ z00#o`01*Q6038DJ03`zT06qft07C-zlZ*sD3HksC0{Z|C0{oNH1YH&X01E>E022cN T02BiQ02u=W05<~#lSKt4uwNcJ delta 113 zcmV-%0FM9b3hN56#RCz(00aWO00{!W01^Vg02czmlhy+(1;hXa0>zUC1Zf?}00sid z00#og01*Pr038C&03`y?06qfH07C-NlZ*sD3Df`x0@VNx0@jn$1YH%`01E=z022b+ T02Bh<02u<_05<~PlSKt4E)5^0 diff --git a/resources/extractor-jvm/classes/com/sucukdeluxe/extractor/JBindExtractorMain$SevenZipArchiveContext.class b/resources/extractor-jvm/classes/com/sucukdeluxe/extractor/JBindExtractorMain$SevenZipArchiveContext.class index 2ada884e8fcea04e72e72a270c27d2ade357dafd..5535b311cbcf9efcca49e1a53d2b8ef410579cfa 100644 GIT binary patch delta 104 zcmWN_OA3Mj06@VVcajcaPMbXgu@u(&k~)bJ)Ja?GKy2 B3;qBA delta 104 zcmey*^PgvfE2|jO3kDXZmkgXtuNe54UNZ^9W>9DP#h}6TmqDNDKZ6-FBZDO~1A`SaGlL^D3xfwU+hi#=M<%96 IlVjPG0O?^FsQ>@~ diff --git a/resources/extractor-jvm/classes/com/sucukdeluxe/extractor/JBindExtractorMain$SevenZipVolumeCallback.class b/resources/extractor-jvm/classes/com/sucukdeluxe/extractor/JBindExtractorMain$SevenZipVolumeCallback.class index 9aaa95389f55811fb6e2d39c672cf091b332bd87..43368bf2544ed356886483d314af2688909e1cc9 100644 GIT binary patch delta 219 zcmWNL!Ab&A07dU`qG+0|O`w4UE{uc;L9$v{3TmKMX09q}QIJ?@VHvh@V>uNB@;)S? zALtkQnD)Ny<#5g&N5|1g*In7t3@I&<)+*bIv7;orCUCFkGn!*h9$EA6e)|Q@QdF1& z%ayc7S({Xp;!yh>sX|pXPIN&{4NlG9!nt#1d@t@?n!1;8uFSyuE!-$XQ_Hjz;a2P1 zX@j=yb(G;=c^*`xt79Hj=SgjP>hY{TeZBIcz;0g*%y981GPFTpWfr^(Hb5IG$PcPJx$CY G)%pjANF-7K diff --git a/resources/extractor-jvm/classes/com/sucukdeluxe/extractor/JBindExtractorMain$WrongPasswordException.class b/resources/extractor-jvm/classes/com/sucukdeluxe/extractor/JBindExtractorMain$WrongPasswordException.class index dd31ed6b3518260e59c23af15f30214ee3ca796b..912a44b5802cc45f590c0654e800afcb72e60bde 100644 GIT binary patch delta 17 ZcmX@be2RI)YDU)E46ICdCU0Pr0suRL1{eSU delta 17 ZcmX@be2RI)YDU(r46IDsCU0Pr0suK~1o|f5)#OSO>4)6 zT9x9`SG2*pQ3V%N2s#Ny!40i@0R>wtB2}!ol-8v#VEW%TAz*92=KC`5y}O>}KmR%R zUVke;a63C*{^5zeL^NEwb~yt5OY9_kkIq~9H%#%B#g&W7FDjcoeO7Vh>_wHO4s_nD z^L-R#>buMzoY_!Y)v~@JQ0Z^3TG>$F64ZD*Q=w6u)8E+CKh?I4AJ8d=A2izf&$8~& z`C)#x>Nol>>`3W_p zlPNX3%(ywJf8yAjIW~TZ$&%OXZ+1`x@6-8de#Uq=Wr*uJou8-aOxD1<`d~}YLC5(8 zonPcX7-gyH4mJ2?onPTsjnvef(Ca$CVGgbjPN{DQsNMrQALM7Ce_+*We?xG3U1L*o zV6s1GcD|{mzQvS~Jw2!FQvVu%euKZUF2Aa!xxTS(tTNvbo!?gGi&N&CSyoatt8BWm zo{j&^W(-U&iaE}I)%XLQKjafeWAf^h zzcIzGZEk9;OJC^^2G=$<*Q&WEb^e4uHM){Lq0gCmFNLTz%L2i(V_Ix{iphqin&rXO zD{TBvrl^|c8XJF!=Ccdgc^-eQ^S^i@lf9&Pc5!KC<;+SOe+yA-{Vo3VKy!0bvr_AO zolh&Z5-Kh#pHx~|TC!-~^jV8cvO$Ibz$YI%j#F!B#KG$E`tIR zt&3IJ*%55(uzPk^d5uqsvo*^ad)>QW@d#`|dld9o3mo{?Cp%M>M;1pr>5W=+#& zy38=fr)Q;=DOcq?=mDwFWhNoE?F~TT9Dl>=fK4tmu1e47Q>DvnQ{NTKYwMeXHko5Q zmY#pf#c*R&Fi+XYLHROIm-)0GCWZ>LnwwSznp@V}Gq}SwNBB^uz~rh!xSM%JtXvc{mnJY z;9O;x<+?P;3ghvN3#}`4StZSep1E>-3j)CF1?V7+gGR_2UDir7fatHO2?T?K3WpZh zWIevU-kPSyr498p5F<`5*X3t&g|R1di8Z9lm2#DlG4SQ&Ys@{D_-mF28WERu@(VTW zTBaG<#wkZ%V`aS8h|98pcSgu{x?C?e7}bNG?)NKm`LkgdLlfzsO>Q#sv(ow3#;mNq z2?({=vqGjX4J>PDvB|B*`mB_GzXgou!h(_3^rfqt(`~ZFcqq%2`8!?iP~LPvvvR27 zuY(zKDa#HY+^x$!veh_|mF~J1o~SHYG^u#<1*H`w=}PKtx@?#GjkLiF><`LAn(WZ! zVPnJKK{1cYPEB^{(k8o&-Ghr`9+$8t?YeZx9;0h;xwTW5C*>)la!6jxK6zS`XLNa1 zo-;NMnK}^;*Rjp4;;O2-Gb>9V<%@s?T1sYCfH3mqC0$;Ytv~?+$R@AClIS!U2xDJ2 zdS@qD|ES9WIcN;a9>;GQjoJN54_+~;u;yeXd<2lspP|Xe>N!c1Pnbr|H-;s+jHW&*QJQ?V zdtJ`w9MULB-jTl$%ezRILZ4HT;zPVADbh2aM)woh)BHvnz;gz>I0?^m%!(l$D;&jF z1|i__jCQw^whJ#T@8K7q#qTh(PyyNHn7rRT+<40~f3X@cl6v8H1cr?wjYea=i4;d; zD4u+jLu1Krhu`7|D5CtySozKZ2IW+hNm7Y2(af5qk+B`nk^*N#1%)EB{W)VMkK zrjXiXAtmCsgltrb-YM8*D!FMo4W${_`T{IkhV9C+a0RxQNySu!(X%k}LX4_J?`*Wr zp?Nfy7SYAz$6J8rQypDG4Ybe{W*li<*fv_D5gJX@XaNK&B{J^x4sm{n-7PTB0_
  • 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 stem.length() + 1 && sibName.substring(0, stem.length()).equalsIgnoreCase(stem)) { + String suffix = sibName.substring(stem.length()); + if (RAR_OLDSPLIT_RE.matcher(suffix).matches() || suffix.toLowerCase(Locale.ROOT).matches("\\.r\\d{2,3}")) { + return true; + } + } + } + return false; + } + private static boolean isWrongPassword(ZipException error, boolean encrypted) { if (error == null) { return false;