From 201d89e2c4cf1a070e41fba5e03580470b0238e1 Mon Sep 17 00:00:00 2001 From: Chubby Granny Chaser Date: Wed, 25 Dec 2024 21:39:59 +0000 Subject: [PATCH] feat: adding torbox integration --- src/main/main.ts | 3 +++ .../services/download/download-manager.ts | 14 ++++++++++ src/main/services/download/torbox.ts | 23 ++++++++-------- src/renderer/src/assets/icons/torbox.webp | Bin 0 -> 12150 bytes src/renderer/src/constants.ts | 1 + .../src/pages/downloads/download-group.tsx | 25 +++++++++++++++++- .../modals/download-settings-modal.tsx | 8 +++--- src/shared/constants.ts | 1 + src/shared/index.ts | 2 +- 9 files changed, 58 insertions(+), 19 deletions(-) create mode 100644 src/renderer/src/assets/icons/torbox.webp diff --git a/src/main/main.ts b/src/main/main.ts index add619e1..81916174 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -11,6 +11,7 @@ import { uploadGamesBatch } from "./services/library-sync"; import { Aria2 } from "./services/aria2"; import { Downloader } from "@shared"; import { IsNull, Not } from "typeorm"; +import { TorBoxClient } from "./services/download/torbox"; const loadState = async (userPreferences: UserPreferences | null) => { import("./events"); @@ -21,6 +22,8 @@ const loadState = async (userPreferences: UserPreferences | null) => { RealDebridClient.authorize(userPreferences?.realDebridApiToken); } + TorBoxClient.authorize("7371d5ec-52fa-4b87-9052-0c8c96d947cc"); + Ludusavi.addManifestToLudusaviConfig(); HydraApi.setupApi().then(() => { diff --git a/src/main/services/download/download-manager.ts b/src/main/services/download/download-manager.ts index 80a3f6fb..1c91c4dc 100644 --- a/src/main/services/download/download-manager.ts +++ b/src/main/services/download/download-manager.ts @@ -20,6 +20,7 @@ import { QueryDeepPartialEntity } from "typeorm/query-builder/QueryPartialEntity import { RealDebridClient } from "./real-debrid"; import path from "path"; import { logger } from "../logger"; +import { TorBoxClient } from "./torbox"; export class DownloadManager { private static downloadingGameId: number | null = null; @@ -29,6 +30,7 @@ export class DownloadManager { game?.status === "active" ? await this.getDownloadPayload(game).catch(() => undefined) : undefined, + initialSeeding?.map((game) => ({ game_id: game.id, url: game.uri!, @@ -294,6 +296,18 @@ export class DownloadManager { save_path: game.downloadPath!, }; } + case Downloader.TorBox: { + const downloadUrl = await TorBoxClient.getDownloadUrl(game.uri!); + console.log(downloadUrl); + + if (!downloadUrl) return; + return { + action: "start", + game_id: game.id, + url: downloadUrl, + save_path: game.downloadPath!, + }; + } } } diff --git a/src/main/services/download/torbox.ts b/src/main/services/download/torbox.ts index 3eade81d..1ef57768 100644 --- a/src/main/services/download/torbox.ts +++ b/src/main/services/download/torbox.ts @@ -20,7 +20,7 @@ export class TorBoxClient { Authorization: `Bearer ${apiToken}`, }, }); - this.apiToken = apiToken; + this.apiToken = "7371d5ec-52fa-4b87-9052-0c8c96d947cc"; } static async addMagnet(magnet: string) { @@ -55,22 +55,16 @@ export class TorBoxClient { } static async requestLink(id: number) { - const searchParams = new URLSearchParams({}); - - searchParams.set("token", this.apiToken); - searchParams.set("torrent_id", id.toString()); - searchParams.set("zip_link", "true"); + const searchParams = new URLSearchParams({ + token: this.apiToken, + torrent_id: id.toString(), + zip_link: "true", + }); const response = await this.instance.get( "/torrents/requestdl?" + searchParams.toString() ); - if (response.status !== 200) { - logger.error(response.data.error); - logger.error(response.data.detail); - return null; - } - return response.data.data; } @@ -94,4 +88,9 @@ export class TorBoxClient { const torrent = await this.addMagnet(magnetUri); return torrent.torrent_id; } + + static async getDownloadUrl(uri: string) { + const id = await this.getTorrentId(uri); + return this.requestLink(id); + } } diff --git a/src/renderer/src/assets/icons/torbox.webp b/src/renderer/src/assets/icons/torbox.webp new file mode 100644 index 0000000000000000000000000000000000000000..68d68531b4ebc3e12028bedd4d3946060d4196d0 GIT binary patch literal 12150 zcmWIYbaTtoXJ80-bqWXzu<%LJXJF9(f3RL4lv{awuCnE?|LZ4j`?ltK#|(zQNpFH# zB~zHSJg+|!eDQc#Y9Cjb9e-Y%LKJ^%cxI+ni& zeo5Z>`gi+VyVsj%ZGQK>bjSDq|9{ukZ_dBHtv7OhWchKwwr#n$zpd_;GqO8xIF}7a*N^4uMZFlbNZMnCD&sC&vocrd+Hp|^zxwoIK+a+`CZDh`7Q=YOM z>(@NV|B`OcxP5Gbdg&*IId4|I$;_F(_Qtl{d67BltBaPeH1fOJ_jXM}#%;gXJenSp zmUv9Mw_E;(=WW}xv^2MFt7C0iuctfqsd!FI*|tC8@7Ea-ZOLi-EZ9Od9RAnud;4yB z{F^1)a&Pa=zBM!R|FND|Rw?1-Zn?L&_2x$A-rn|mE`!zI|ND0dyLar^`+eTM>i2uU z->cs4wfDQ_^FRG8EDIhaGj57!-*~WlWAQeP%9;cXrcX&{j?A&OOIjv%z(K^unroM+ zTZG|A;fOv-2W&*WoDI^w9} z+4Us;^!pDw?{((1gtK@u954!6`}6R>|6#XfZ*R+0jyB4ioqcBiT+JD)S>(R|4~?E? z{6A6T@ak}%=SIfH_mkSZTfg5cZrb&I&fe?yLi5)%mSmUCR=U%<@d;yuzOi+3TE{Ns z;3F0D6}Of27=O5Idc1FkrP=xuev)hl&IoR1zc6X$Oi5+_1(xNXdCuhdoz*+vFmvY2 znOaq!cy>LJG%0QgEDv$Nwb1g_jWd1oWwzQd#k8Gxc%Nr#?#VaDv}KKrTVkp%dY_GW zb!Ot%ZBGPsR{986Oq!|qB<tj5Yf&?1W(%<}cqqO6zkcStx9{`>4(1i+u!??I_g^@nPM@pW$o1x4;Z!xQ z=pEvsqNRd&g;+oOOhhjndRKI4h&*uFxX5i$=c3~qH!n(Gba>IS z-i5l73tfEE)OLyO{&6r}Eh~sCYtf!X-(A9!!t?*td^#n4&ZW{tzWblR-j2H)zUA$o z*<+Ka^V2WoAOF>q6!Rl_cRu`Hl(pytgW4)RDTT)|Z~7J$ix&he^qvxJ5>ldA_B>Ad zzIsY$kZZ2%>a2~suj@T(DYFRaja<0Lt1GPg-Epg(+ZSzJ_V#I@IV95^*K6ME%-j(YS=TR_6JVz1LRq9fzRU)sq zzUX{$K)-8|)42$GIY4pxXL7i~ieH_#9;y_kAIl=JN8hV6LET zZ>Hw0S=X!2OU1beE?TwdzAJxn*EYTH&%>CzS8Q6b{zZw;&Fs5ZA9HD{moqN~UF`4ai*<;*x{0Is3zIbKXj7H!8yI%P73hORPTQqagYeQxKH|fHr-ewOO z3M&@%y_YopVjKSZ1C#UC{uRv`>A`2NESqb;%VpBO?{t}Q-X1dv&C~+-lZX;;^X3)^+)*i#Jc_U-`UxOZrz=$wfc6zWB0LdDqda z*XN{0Z^^hf*X8;C$*rd|X7*TYwcOL5*AaK)!-e+c#@2frF7A8YKkvt%{aUX|ib6{@ z-)_mM3I1}Tak*-hbL1r7l0{bLJAPg?HviA&T51;>=wj(28@5Ai@8)fX+{>qV1yvoj z?A*51O+VLmhvi9+e__0qTg$V1@7>aR%rANN%3{|L$1C+w7qgdtJv95yBB}75tM{I| zSbTbK$`{{|7+tSk@y|;xcF+HkB;{>2G2Hj!sb?=vo(-NgOT$xsl`Wf0=$99t_y?`wQug%O;y{{F-za3>c=7T1+LuF-af3`R{!PGKYQ)PFVAN>tn~l4 zy)!&px2kIG*M+~Q?8$F;o!?Pr>e8S8EQITJ&&{mz>$P_?8rvu3MdE?{cp=U!0%4zg_kIq>GQX zMlIIbwr=Z+)^OR$E56L{IOkG&=Wp$v3CW+-0u3+nU(V{{x@n>-X|JO7%zeJqdHbHM zpY4@fPio(4&I{SH#8NBmb6r=|`4jn{x=yT4xS!vB%JKuh%g@zv#;KC=HMb9}n8&>T z?ODF{Pc)k~=7b+!-)$9jPvGMJJt;R`c+39yEt+-jWZ(bin|`{zlxH`&zG%_4S?qt3 zPioIAwc8uLc+<9T^UiOsIx@fOU)8@A8_wHXOXgP{S}r#|<3m7TW_#70$G<|pYww-9 z;&1cx#kZ!J|7SA0`PGHf|L2mkf#vz1{MTQ9`7Pn-I)hd3MZ2!)-n!ZMQmcAjV8}!B zSCvzbKS|l7sr5?H>gS)p&iVB(x9w=Ju6_0ON&Vaq_t1Nd`M*N8-#YB7Uz5Ms=>6M6 z;&XF^?yl52r7CqJs{2(;_T9euYpgDvynA@Pnak9?A6Kg*_{FW%0^hFhu8Ot39h?KWNWY{r4PR~8jrf0uHg$Lrjt!`-$!uB~{mmVNsT*|I5r z)=!?j{j$i^Jul1N-Es{3-%}Q9Hhs~eZoRj!B-ieXo?;jJ<>%#Ti&ssr?yM7ls?TXtOm%d}3rm4%+d;#70w^DaFoL*7CyCm@K`TkPWJzCk5_!zskNo z*Bsmz|yEYw@^Au6F`_sTG*RbKvY^0e>e z(eRiOL$-7KV?K)8FB7>vZ{GE&zJr@<*4j=ER9n05yK?n$hg-ju*PBn>=egwrSF*w0 zL;Q1}_gq?5WxhzC&w%afv(u6NS*uhQUtltS@-sQ1_8)KLf)xQ(CUFNRA5-|fB>ch* zq2ym*9kdHQq8>)gSh;qCg-Y+&*Gt2+?tK35{lD@~&}mDCNy?p~=Z-L*I4^9_=U;Z9 zW#0aEbI$C|50MhFU)9=Q`ST#}dg<2&uL2%v*7OP-|8|wj=fP9%fQlbHCvKMusquEn z-Cg9q|HVZv`Ne6iYS$Wbb1Xk4x31e*W6%D$_O*o1n~&-a_ZT=Q>|4&-D&PF9Vs>_D zwZlRKQ>Rald3s(qGaF1yf9JS#?IfiH)#+FE&tJ2lr&%K)LdtPY!^Zl3tin|fr9|ZR zHEr`!jXj{HmlhI#W5K?VhZ$?)*B|&1Z_g|%U&)v|)o&Sh=hb)h!BOY^Of>%V7(A1I zmSB@VzoFCi8^+{=VSS(v{3%Rh-So z4r=*YvDmbVXXnO${TOiU^xrK@r6ZoY_PhR}i|oHg z-m$PYS@-x6F5zp@UoOh<7uWPn1bmC@z{_Xx>q6&-MFt!=g;L zppwkqkEXj#-Z)M@)Ohvs9yx`5a-M%!mIm{#S)L!Gb9qj)edC?`yJqY=wK?%hIlquq zxB7<7%BOBsb$LDg6)kYq3Jl=Brrt8Y&5G}|&)r|8$bWp^F^-PQQBojEJbPG#q` zikZtzt0z0H%gfz4@6D(Gj;Z<$UwJazwN>9La6EZ*?bg0klNa`cKhxoC2$i|AV$+6+ zHJMND^;>m(-g1cX>RzX$QbwPz>*lVQ938!X@4gRZBJXZ9ve+_D%a7*g-kT$T;>o$N z9sBY`eG3Amd`h@*7}CP&P87vm|4viZ?NafFuv^3WfzrgqdQ?$ zt*4s!mThnJcgr~bv9QQ6y?wxoKQqBPLRFK!QT_VnYu`fW^RUL-csw{DBo*=0u}6wq z`s#GIyz9~X<+WZ;jj3pHgJ3 zedqt18kV1bA8dHSe$Be#&6;IO*@nx4jyO}^kXzYz0RvTMm#pkY`p7=dM zTjs((V~2H$b!pe8t$!L6#{W94;YpUtL++A`iW??*zq-7BTGTm4fs<3$yxUf4fAr_W znVTJ%*SvYycD1)uLilv=yc&)#Hd4$o7d*E!>^9!Wm#f^(Et@Sr+hW1&b&gJ-D`u|_ zt#(w~zOgFeTDWb~7tX3zG6}YSkKHUfd*W2=n(oS(iCe;7=4@cJHr}Lv*H1b8I8 zsv;e8YacLtyvpx%YWKviU*3v)>ps_I-B@b)_sR3an)%OPN-!o|Z=b&P{UeQxwcB5; zwU#?mb8kBHuJ>LE{r+0aw{I?Sc$*eqR=(!f?LKy{_upO|NV+iBBjaBF=RL2aS<}jI zFPfcu@qYcBP)1epM3t!Kql=syr^+3gDmrUgs6kux?sCq~?<+Sqe_x>GEGfa4knXm1 z>FrFB8vomuH%gUOnm<#_x#w~Jzx{njQ3>YroCXR9*7@q%9v3O_|2?_+&~sPb;&=St zWz+8m?mX)~QM25(Ai-n86aV^s{Ha_U=JS02EW7l1ecJx3_YUi5e*JsCIR2Q(x~Gf_ z3>mLkXUMFX*0QEa>(1@1oxS`0W~HsQ-q{x9RlA}7>tnmVE@g&n?cw#FR% zvc*V;@zH08GfAn!0_MGPtvTe?7Pm&|3&X!&p2Xa%V6RJ$|1Y;rbYT~ z|6_OO_+D?XdY@{&z1Al)7UX=}(7iYzvBTkE@)Y?q9ox3uTjb|jckk@J7cXO~*U264 zdpxZ-!kKyd@{m;;I$aD49GSw36(;Y^XP+VR^XuiZ?Yix4dfvCM?TOc0IqBPt-OemB z4T(;Zs#EuczVYSy`N_ZS`scYR(;WV~SD&Ax_3G}*qWUB$jes8#s_jM#=B;_MCGThc zj_uXb^Q-1>(un$=#T$ApcG`OW9SfPl3Ii6uI;8ex$;AEd_Out*Hf~+Kp;Gr+z|yCO z-fQ|MNb646ZKhlPM_<17)^b@HEBzeF;<_CrD~pQb+gY^4+PFEFi&viX{rSYd?RWL} zmpk9zT)*|Zh4(6@*`_a&I;;%i4pgy!-+Oh|l&SJ<)jPLs{5ah+xN3d&id8v5`)UN8 z+1^Yntj*H4xOC$Eylw5Zrb=b8rXR%CEH@2F-EB3^GT{tE@8|SsTWb{Jt8aZca3HcS zH2=@LrAt z*DjtB@lWL4%UdpYZTsuJqRWbST_>FVEpeGe%)ID;-@jtdiT`chM)P#XOf8@D^R#1- zO621?$1j&Ay_s-fi`}!RvvMIP@(-oY4Zb90x4U|ph_8H(U5$tvb2IyzCzF1i?Y_V3 zsd||IZ!N`tcC~R8-@5`sZnijyb~YX3zrn5i`xG1JoJsXxuDx@gzxS$dwfq}<*XwJ0 z0u7oJzQ3AsXFD_RB>jlvQYZGycK-Hy8u>Yny-h&Zg!PVu(#gL@_g8;wa=N!&Z{hwo zpH3YtX4*XEo|gE+X}xExN`0C+-t26AnxMKo<>_0&Yu}ah&o;C0z1ej^CZOf!p6iCK z>4k?m-h6stxVh7IV|v$VcAYP=l9;cVISYz8k-xv^s>sd73O}DUi52th{<1YsdC~Oqvv~jHMZuZHd>l2@+j*4XuNsr8@H)@lK=iP?Ng~~x^MIPOzaQi zpMAzor!TqoDY8y`zj@uXD!=V}5?g*F~gF`#j3 z{Fx8izE$h!+x!&xkQvX%k`dMt>~=A=R9Vbj_0S5Y-NrZB^gJc=WV07MC=+I9>T@}; zvAnf6Aj4~I-!bK+n2AqjJ-;2Z{-!fm>ZY%auTQS~CoiI6XkoH7tX*K!@gv0%bJ+AF zPO5&DS3j+~IC^GQ>+e4+5w>CHXp0de4Zoc0=VAgW)H_xUn zcyWp~K6uxSXUD{k{pQ~CsKw~?tHjvv)8qKm>zfwe3E!5d;*|4FyPtid!GQzwstZMz z%lI&*_HEtP|Exsg@6~1|K8^F*P9^FZXZO8N{?H+jlrXhXB09}%vv%mRFGla!KfVjk zVafVb__ArC$Kiq8B-t4YmV&bw=e<8>9eVHWSqIls3}_6$^y+HN0EvAL7^#JxjTstyY*lILQR zb@R44`+3z~&t>N}<-Ia?o3M}JsYFj$`Tg4*mHewth!rg6Tk~Ynx-}EFdY2tNAW(JxjPZ4ocL%ievO;FxKCv%^|8F4sX8ACS29xsww?FS!Yq|4N z{_=K~UYiZO80J|lYfpPyQG4*L#~=O$dCy+{nbuo$G4ZSLG>7ANZXC{t_MiXWxl?Y> z*3|l+PYX_|TfCTRrR;Wb>+-F$K6f!JILIDW#Ua1`Vapo1Ii-f@4MnOxE@)tW@qYEQ zR}Y%cYWSX*wjeP{q%l0cx#P@alXE{ZpGel^sWisQ z8*T49wrl%WF@L+3pN|~>S}q8kr?y3`#$QO*@_(@pQ>Pe5zv=>|Y>Vm}Ti;Eo-Jvoq z(V%heoQSr%y(_-x-aEAGZ*9-9I_m|o^Ok>&o_5H!{c8WstsGA{`j0K#J?~;>|G5=^ z3ocf~O883LKYxyQx2Njr<&}SJl{x1x$lQEoc18IlC6ldD@vM$#nGcAc466vv^8M^( zG(9LvbfFB7`i7eOr5o>T{-t&P{KE%*+bZ6ciaDKN|84%ws^2A}!K~jU^QBUC(z=)* z>NC7GOY3#qA4&!Vd~h}Sdck3l9H+wtvzK#1R^+tQ9N%d(VTMPc$HN)Pd3^R7vAZ;~ zqj)$?lzLVk>JKzGVE(8g#2_WSQN?ESZKIMqZ=XmzPqE?f5K>&M<@J0IPspWhHmaxRwy-_oMr3mi}_%h>LJs|Blxi-=$*gxvKnr;+vVPOIgg7T6q&d4LwG>R&9u%E zrGSSUQ}*7FyK4L8-rS@s{yUfZ%oIK%YV-PxHSd&H$KGf$cph53QRDmr-}l>eqmQn* zzwmmO>PwdBDK{4DO<5N5+E0Yz|Jt0LpIOdoAB=frKYN0%yi7ssik&tAQ?l|md8oKF z{6Dv`eA|ceq)BYAY*#2npV-LiqZMZ6wCRYnZClo#gTa>1^w0mFv&5UZ?E4h8Ej}@V zj0eu|t)4RNd6vz2&VWw$1CC0QLt-!NJkLBe#IZVTeYa{-qjm*Tvx$#{v%8#v@0%H` zI0XHbQ};co-JTE3lee6hTIi3)>@7(;0Z~dABm)`yPKH2E<0r7)Q*)JBE?2Ku=)KZ?Ny*Kk} zm1yzGM>$cuI~A20b(JP;(3)~QnP4Foj`oe!MlsE?3!A>jHUhcDy#F)_VI)Sl}27ZT~N;y zJ>hD!;*)opt=VkMLg7;#jz49*W${?HXVuwdA+PiqaukDZJiD`9Q1P0f4|q96jJ;Bj1ohKe#N#!v04{7ee+EXSz>>;3-+5BeX9PpJ>i{(9G_D`myQiME{w#P=9YY7tlzy7A1HX7_~&ZCC!jUwUR~ z#-`5JBH0Js_a&#F$t}5aZL7|vqkHBa?{GO}Y;|egj3q1HEx93DRO6WRAtP#WB8TaJ zzw&Eh>YfV%Wf#xRRn*+{?vVUMwJl9QoMOBWwnjx&mz6&^*#1o#!XWLcTHM! zT5HkEsc&*Li#0#xxUIe`c2FXzX4eM6PjVrDd+fO;hcvJG)pSqrK{p43-MuYUy+Wyz zvM%OEcG=8LPvZIax0JtU;gUeJ=QGutTpskKY_t5HJL%Wn|Yuk5!dmS-mdt8Xv-B_}mqCy&v9b5ITDhq-@7jj$gP9HHN4BMvMe}Z4_f+Fb+~wLt zzB>C}|DMd&oxH_ylAh_j)ywXEYMwFUu+QV@&-+`hv`w*(D4zSj#>8)S(E6*%vt`>J z_vP%|EP7SN`p}V@nQGgDS0yIq`aUzuf!> zd@J^yi1{+(`+`@;YbWYPomFPwaM+hnvn=HOi^!t>$9=WFI@fqiU!JR!{XY4?ftUk} zCT5uE#kE{X>fQYC*hcr~YwEIJLOGVfO&nQ0f-0`uq zeL~XhnNit(dnP;o=8r4(%-vcRBIXT7A$*S2j#E1=9hQth}>M^OP0<}d*AoO z{r0~oafDMN;8E8St2Z&1Tg;Bjs<8E^ZIKp9aX&m|s>NboOGef5*c|@a>ZO<71lEf; zSi8u0=Fchoy5!DbO;sl~!3A&Daj#uit{y5?Jlo#lpGTVHXM6XRlTJ_bJ0TWcsK+$L zZ2sm_<=D_&dD~CbvvuKN+#BSfd2Nr#^erEC3j*fm z@7XD}>1FDk!aoQ1|KD2kf3wk=()E2a^FPS+Pj-x8+mIUBMSe>jJ@tjO1APJC~@_wuu>JHZbc)_F92n7`s< z*W3pC6Z4J!N4Wo;A!-c@_$hHqGtY%aL_X@VWb1TU{POIvZ^ui&M@o7MOR$MIm~<|l zbWAe5@9cl6%SXl71obNu|7~EkPs-Wl@ig)PV_}gPufNTb8GrXo_x!-V|Ig;6w;SI2 ztTdbdl~v|K|H0S1!pr8!%+`6w@u8ia&&;mrHe2@H)sc($9guN(TNxLK!v+dU!ZTTj{V4NT2%USFAUn$LP=M4HE&=m!gKp36@5x_E0fGds^E%dPir zy|-R`{prg++aE1>cz@=t9MRi;>&y-)8CHatr=72@-I#KQGb77uXPDQ%FKrerM<#uc z%<*8!_$~G?dgX;FQKfM#%?Fx=8Kd^Ma?bS9ydPMr&n~m5{kPO~jip9KncEH>Oy#$G zrWf8}>i5%MC?>4hb?U4s+KU6E5{xP$TQfE)KfCcpFvj)CvzJN7kEA}?GG*iT%6z8j zok96dqEjDVJ}S$o_xR|!fSK!@iVtjz{GcgP$p0bn#~B@iA6+f;bf$H%nB6X&cP!MU zZ|6Cd2b*Q4zP_!^dMEW~)%@fwIZI#P^<;f==ljRIEN-VKS-Xcf_^#a^?)YKmOwHo3 zosB2E1XLR?8mWA{bRgyP`!DQ{bGCgwo9eKp@R+bhM8cMYRR{JNvFg1PV_5uAWL~X> zn1F7fdw=8ANjsm-xvr>Cp1JFa;l?PT+Zji)x~*0rCvAVfYGUK{eTml=Y-W}OW!(f*A>Rw> zWwROXOq=@WltS9?JIbsF{1iJ=Irgy4y*%4jVfw!cmd$HthplE>*|TiH<(CZ(idvyv zK5Ik%?JS?Y_M7iqrO-(MnF$=aE<#D{g$w;3RsKoV-($bfeF^s^KFyU5QPcW3be#AD zR|g1lrJmS-en0Dl+(t}aV9+MhAgT=bW-l`8L~Io&ELnOzPF zKLqs!gio26P4wPBYr2y2Gq%$9EyqKRI;Xd6*m5>@!vROdM;=qN@{3;SSFf$GdS>Np zr6f8jhf90XQiG<34Q?XyH!6k3%l+Z+U{D8thpX-?j-}Qg56AwnUHVDaR#A77-Gn7-ejeWC zM|@rWo_!H8)BaogS*b6pTk~=xSI#TBd`aHX^@fs^AiLBTi+gjwD3{z6^x!R-RN|2J zp89@|poxn@Qh4#dZKb-m3j6=5 zE_>#&dx?Y4TW#IR`-Ky`PB^@I>HBQu?zv?VmwQy5*se=t_D^v%QWezMY|SE;*s~&V zcFDrx4P|f4cd}kETiKT4b0}(=a*LqOkr$s{`bb^RiR>z?sSbVU-!g4ptBF^VsOODM za^?wdIFgTx8m=@-FJXPFb9#!EBkx2t&vh}J`C^ZqmA#)}4hPr^^#DYh3_ z+hOeM$Izun5jQ#X|sZtQ$h&QN(tab@q9 z@QEv)t#VfO;P5|kZ9!B~=~w<7!SAcqR68^L_VRLYyKK#ykfAdxW@WC| z+ss}ouGNAe9#>sAX$ak#Bdxfry5r>2%RT8cLUeMxYO6yfm&v?Rd0Db<@kE!iN9S`Z z_I+^ldCB_cTwab>^tDG9GA1m$)}j5ePkYHut1_L9!R^h;TO-Wv0&j%ud%t=?!OJDP zZkta(KUX2)x!9s_>{FPI9V?!FYx1X~;sRgSwes(ZRB77z_X3B_p}JM(i-l^=^KqHDpY>QaP|FKJq_Pes*;luK3};b8TV$71COHLmjyS(YD?dqWt^fqcS4(o z{FPhBVOz@}zf*$1r0HY8f9Z1z=M z*B)|a>epQ}zCZI@P%NG!U~2VYm+nMcx(^n9QD_Q}29%#&+>%a`zGwtd;@amm$bmj8Q+MU`)D^0V&$ zpEgzRoqN_lq0es?3c9q&F8bKGXI=LC)|BnilT}V^Kf~jAu+f&!jQwh3*(Iy+hpa(H z_WL>BtWZ`G)Rx+Caf!#IU+gpX_qTQImAwC(J?MM>jQjcwA6YK8T70v-WVmv*hkw_R zo$uzQJNt`2+*;QBE2`RlQuxFj>V6Y6AG|y#GO_cFq zYX89dy7Q_BuU_q%;nw%Be!(44okwhoYBukAA?SJC^G2!pT9*j|^?Tl({c&#EU%r#m zRq|%-bZKEa^xxxe+DeuGN}7ANXR06K`N&-OLjSLay+_)z1qy#2F8e&t$+ z|3$8G<-CT*EbM$T1sjZ4)Nj$(KDp3CX4!J_iMtmyckE}oeQ6}O22%l2^W>yEEKvU7Lt&Fpo8o#(%lzYslq z&icrV)w+#e);R>pzHjnrFI-U8X#XJTdhsk3)8NO>heT`I6O^(9exKWVP(_V%|GTP` zH1?(+!W&!@;lAwN^b9xz2^ z_Q+YQlvVu1Hog^G@^-J{%?Sp}-tgW1BF1OioTGeVCmWCaohl|apYh?2$jDFARE{@q`LN^2X}1)mYnz+4 zoC{Su`DdN3$0IhY@?%01cg@hT;11F{xv4<>R+DO(#*L3Q?O&98C)s$4aL?lKY|&0K zxch739?wZ)Ht+uwm}~F7_o<$%WbcMU5e%*Z#o~F2r`UX#mjy|_6zj}r{PI+gvE!$S z(%JdEoyVE9oFpH1&+wc5uzZcjDY3BUd*7yaSoln?^Y#u>Rn*y`r~F86QR>g2$6;J0 z?|;GfcPHp^NBB+0_@WQXlbC6dzVeP(`tD;*dhu1Uee<~&wk0U{?G}AGu+hX z7at3w4E8^{ee9su^<0yeaT6
- {DOWNLOADER_NAME[game.downloader]} + {game.downloader === Downloader.TorBox ? ( +
+ TorBox + TorBox +
+ ) : ( + {DOWNLOADER_NAME[game.downloader]} + )}
diff --git a/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx b/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx index 191d9ac1..8d650c17 100644 --- a/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx +++ b/src/renderer/src/pages/game-details/modals/download-settings-modal.tsx @@ -68,11 +68,9 @@ export function DownloadSettingsModal({ return true; }); - /* Gives preference to Real Debrid */ - const selectedDownloader = filteredDownloaders.includes( - Downloader.RealDebrid - ) - ? Downloader.RealDebrid + /* Gives preference to TorBox */ + const selectedDownloader = filteredDownloaders.includes(Downloader.TorBox) + ? Downloader.TorBox : filteredDownloaders[0]; setSelectedDownloader( diff --git a/src/shared/constants.ts b/src/shared/constants.ts index 2d313abb..4ab7443d 100644 --- a/src/shared/constants.ts +++ b/src/shared/constants.ts @@ -4,6 +4,7 @@ export enum Downloader { Gofile, PixelDrain, Qiwi, + TorBox, } export enum DownloadSourceStatus { diff --git a/src/shared/index.ts b/src/shared/index.ts index 85868391..e0b09deb 100644 --- a/src/shared/index.ts +++ b/src/shared/index.ts @@ -92,7 +92,7 @@ export const getDownloadersForUri = (uri: string) => { return [Downloader.RealDebrid]; if (uri.startsWith("magnet:")) { - return [Downloader.Torrent, Downloader.RealDebrid]; + return [Downloader.Torrent, Downloader.TorBox, Downloader.RealDebrid]; } return [];