From c5e6057dff29e684fc68937b7fa410f48d1a2435 Mon Sep 17 00:00:00 2001 From: TylerCG <117808427+TylerCG@users.noreply.github.com> Date: Sun, 20 Apr 2025 00:21:06 -0400 Subject: [PATCH] backup --- .DS_Store | Bin 0 -> 6148 bytes Dockerfile | 22 + app/.DS_Store | Bin 0 -> 6148 bytes app/__pycache__/download.cpython-313.pyc | Bin 0 -> 7179 bytes app/__pycache__/main.cpython-313.pyc | Bin 942 -> 2404 bytes app/data/dropout.json | 531 +++++++++++++++++++++++ app/download.py | 131 ++++++ app/main.py | 25 +- 8 files changed, 708 insertions(+), 1 deletion(-) create mode 100644 .DS_Store create mode 100644 app/.DS_Store create mode 100644 app/__pycache__/download.cpython-313.pyc create mode 100644 app/data/dropout.json create mode 100644 app/download.py diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..235c925f7ae5218d548cf96261b38216cb66d0b7 GIT binary patch literal 6148 zcmeHK!EVz)5S>j@YPUl20i<4#EOCuWQdOdei%G+QD@JgDD%gzytFAZ14yhDH^0|Br zSH6Vbfj7I`s%gtLqG(2%eY3MOyV|$bu7`-!U^ea(1w`aQ8CyP@TZG41Z%E5|Hh_xf z(8p<^Q}lQ`k-NYEpIw_0n$YA`v2uPdFtYpGh}npXO6S$Yo$}9gQsh-|!#c4y<> zrssLv-ckHT&*M6&XVoB?zUST>t&8-+PSUq|HXj8K4s}^4d6`X3LO#wA^5I=xj`e(? zXXUsuxv?GaeBU1hJB!8B{a!cRJLoOD;o@0;zZ)L(_m)fFd-(Xt^Vg%3;7w{d1+s(IlS{Aze3=c{&uEbETc2G7QE@+gtBm4 mWAQQthIxt+%TMtR)Cl|`8^Fk6V-X&R{0JBtq!9+z%D^96;&CMa literal 0 HcmV?d00001 diff --git a/Dockerfile b/Dockerfile index e69de29..549fc83 100644 --- a/Dockerfile +++ b/Dockerfile @@ -0,0 +1,22 @@ +# Use official Python image +FROM python:3.11-slim + +# Set environment variables +ENV PYTHONDONTWRITEBYTECODE=1 +ENV PYTHONUNBUFFERED=1 + +# Set work directory +WORKDIR /app + +# Install dependencies +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +# Copy project files +COPY . . + +# Expose port +EXPOSE 8000 + +# Run the app with Uvicorn +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] diff --git a/app/.DS_Store b/app/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..40655095b25c019c50a491155663e0130daf01b9 GIT binary patch literal 6148 zcmeHKL2KJE6n;vx)Fupa*r1nzpx4kPrLc}&+^jqFT9@vy4cAW0YUWxYb{0km_`Lm? zUHeP+ch>JoYPTe7FNHFS9z1>0)BEJ;Q!H6TBnHz_pQuAb9-Oh^qxgq$Kl_?BY@`Jg zdW<2(G^BG%DO$^Rf&WnfUb{9{E21%d!`l5>zvw7e!z5P;GWhRt0N?qo4K<=oxqMzMxvs~_X_n5S&a=0wsN$?hCz_CrQlxx*pA{oD8>ne9Dm6DW9iH#| zQD|APJzd% z0PhbH&KOv%4eG4}g}wp+n+R(|oj(?tBP|9NYlG;42}1=Ms<2lKVd#iUn-^HD4H`NL zd-)Ld$->@Hgnl~4mpYw9V9=FL0jI#S0vo2;;q(99?f3s>l505yoC1$Z0nt1R4+of% zJzLi%$7ijCpTXHUuQqr?K}8?M$mOGW3$6`u$rWH=u{MYZ%zX%G8C>BMcu)nd09$Q- A`~Uy| literal 0 HcmV?d00001 diff --git a/app/__pycache__/download.cpython-313.pyc b/app/__pycache__/download.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bd6a6c83c4be0b53272f0e59a60c3994655b333d GIT binary patch literal 7179 zcmbVQTW}Lsnm&Ee)w)=cFS7BaZES3TEd>lo00RlJxfyKMjev|oG_usPMWmL}-NLrA zo1to}X2rbVY?g^LGc|FlrYa;eRm)x;*nJ9FQjwo@p`@jD?>rSVgK=_fw&aE^P@(0WqfvqLhUxvgr!V{jFAd>#2BudNE z60Ln1iGeRY!JaTlCXVh}O7@P({EYC=$SvFu&*;y$z^94>IZgj%F z7WgsnTR#J(*GL4*v@l)M(#YetmxRflT5pkxn2fqGHElN18(*F>W+l>LdfK*8W2AVR zXLxomEiz$dy1^*j`0}RuXl$7Ek+UY54iTC5kz?J2WW&?WjkZP#*0QGIV67+tGdTt8 z6E^W?RQWW0s)vvU!V%Fdn!;v~YpKg^1-bLnZbRC}H%xfTFl2eFF)NVMR+D2DEn#aP zXvV=$G$oCcB}oFd$%hSdN+uo5#UxpfRI@Ckg}72^yeJRL^C=}hH!KS=IV-+Tspfb( zCd*OPoXshztf-nU#nO4Nn-!v{mdeU-s8pA(RTOl~2%@4|bPZ(5 zf#RKdE~=>`t87XUGO9&aN|teFIU}e~hr%#TIixJ61t~O^jptFI96Fj(j^$@U@?tt2 zo5{=LqRZs2xBac5zaLtbE8eX|+g*3Z z@{8}h{PxS&FI3$7i)^*6^PRT0+g6?}?LM;HR%$z1bXC3Fsy9&f2CffQydy=+@1HqX z@kjo7{`%S9hHiyQ(=VA8xH# zwML_2EF(mtsy!ObWE1%`rXA7ftNB>ER^yIFlPO77(kW38v(c!;fk3r68kLopl8S44 zmzv2df(&)NP`3_0BEjJ&60VIF;hmQ89{-s9k+zsxB|P|A&67<92h~qD6<{z-JS&-J zO`yLeA!T#fyz+$$+Q;#f83FAh=GQ-foAolvpGwkVoV+ zZW01nm}9*cN5b?BSkW-e+xML(BnB(YH;D9;~V2tN%zp%IL>8yY;rI9<+&;NRu(upxSLHimig9>1;ffmJbH&4e-dw97O;71z69L@AL-~D`Ov;|84Y>-R1pL zZ%!UNG|@lN%^>4sc>t;gZ?BnBY<(r_2f534Usl z!<7n3h?0e-{y{*N#dJzmqJTTXLg1-g3Ds$ofgzI=32%DAKLen3DU}eiJ1`Z?CsNrE zrc`#JeGs3SI+|MD#0{}#Xc-I%<(Gy z)Gn18FEl}>e^5y&X(1p7`v(DM1M(S_7DT{Ob22MsVv6e2CZk#Ql(MLraxrC2R_(f; zNf=pmNWw)x{ir4g&^50pnOs`6i&LbI0NKrpN;HwqskRqE ziTsQ(c2cz(I2^D^yJ4#&4kFbeH$Mwa#?OpE#eim3cUTF^&Cmt}wHT1d5d&hVB{fUb2bZPo* z#dWU8R2y7Z4pp1|OXJJ_m2E5jl6U)+7e4oPEMHnlteh?FI9BRBUh$qNIZoVld#=u3 znZNq_mDiV3tM0+Fd+@Hqb#>w=6U(+cj^1j6_sXH=+3Vh)XR0kjSB|c+taIq@_TlTZ zzaCmLFa4<8IIw0XtvjooTkrWts{Wq)CZ@%^W+mN2U(%*d*P4U)JC>7g{LOEe>qmaw zaN}@k;F)qO&a8Fx=DBj~SZO>`ZjDsiyY6-MR=c+@C-3+Byso18t3l#wT6K1Q>g-%j z-f{L{_f;M4t0%9VT;96ee8sS}_(Jt3mh}@=q<1BN#%RV+_xgBzkQ_RPN!kD#>do6Kj zTn}}g@JqPM*GPznf08SJ{|`Hh;m_a-w1Ms4$rX?(P{_!VJxx{lcT zm>BPepJs@G$AzI48e;I;J8E9LNo2#|GaLg4Q#3zCz=tOKJ9%(obNfq!6+AV1Z@G_3yS&`Zw$ zjBn-rdzo*031M5ESFy?O@ffh3?g<3iCJUW&ijtG}g+lZ5^FhPn0OA8P0pO4j@(PVJ z65y*ajAUjQJn&Z}JVJmml8`L4eun@Z^q66JxWEj^!zu;;oJvn6!SE&v^Z*Y(S=tGL zq+KY@!jC@>h{-?ZM<5*HhODD+i5`URBlM8~J*oHYg$iK))Pjsxh||&EI+~7UW)iW3 zDrZbdpU)%kUu$s^dTGFZncUoY^X$Lx)kpzIWL^;#r6AO*)VzeG9m>pz+oBS1OL$%+ z4@T&ANJwua^aE8BvPfA%Pf#^!_@wg>4hzfx0s;_Evz(O_At4=yLg@t7u!(#o7ig%# z212{!$4WdWstq2_WF1UwDKVLiViy28;8AL$Ei}tfs${3 z(fZ$^XDV*~gN2o&H=q9S+;1=3x=`Lf{ib`#vTXhb_xlS)w&dpj;A<_uP;K!Sk5@fS zZ*6&FOR4ke8&buyZ`E_S>^c15o==)9o~c#Oxw7Y6>3pR0Qncdv;i@ND_9QEwxm8cD z?8%j0&6h3}DxTLK5aJ!9?`!cIA>;IM8a^lJNqQa1rs(2WmFrtdmK~kd?%pM#?C7|= zb>O}I@9w`YSGJB6k1wUl4zB8GUUhUp-SUgSa}3;fk|zIGUeeLK5-9H+D{mPuS^b|s z2CCXHvP2kihkfW~^^Lm9X97Tq-VEPJcn z2Jvlw%h&81-Yc4I|Chn8y@aAFZiQUNwTd9m_C6pHxQU z_ha%UJ!sEMfOgsq zd4DbmKHtRqQB9!JZ6h0yZjPW$(L&hFw?6_5mayeX(DVrT#Qoe9fPB^;2A@PujTwC# zOdbKKEgP+-8XhU{+$i7t=08Kc6eoW>tEArm$zsV5tf2)al(^3`nv;q=W>Jp%O>}jLvKCZBBlT>*90}{T`L}%kc0Bat!lg?nI>FI#&!JPmW4y;rI@ky+l!bz|f zvnf#nX4Rz8ObzN)OFSzo_}pvCNyrUt;|p;?e|lzQMFKjg5j!isF5rW-^aGTLmP@s3 zOkNvIb=Kz^#m8muMi!Z(hTg8n%T!8u{MlG%h$vYTKMe`_S2|L2`#(HiZk;SeUMoBQ z`tp&g#a;3ZR4fD4ExU{6;zHT#zvmmMc5SV4{r4?wza0o!Q(v`%11jdQuh}ep4MlUw z-TkSRTWchCZ>hPzV(b5Zc3z59Y+QBAQ5^VFs~?D7>kCx1eLIZhwF7H&5PRdQt?g4= z+w!(Mww@KfYHhgcxZ+si?^xT`%%r7lwYk6C+`kgPF%F89n)em$Re$e0uD4w)uT}gb zMd$yRiKA_eHanlA?)DG7ckbPD@4fWyOE(5T=_?I z4_!~(X&$-pdbO!{wP~>2H253;KX!c3aU)X+jI9PvmIEj6G@SwvZ`u8MV{@tH)Mt&8 zUs;LMTk`I^wCQY5|gu?Nmy?@WY#&7ogOY+9~Qp>^B z#zW=CL*J}1So`onCv^SH*7H!tb9Sq5-}nIYQTNWVz4U)HJ~cLIx=nnLzU^~B`Rzgb z*weP#yDV6;*FN57`j}}Q?>2qhZi3p6yG>Zq$6$KEKEB5SCr>-P+8IBAr=k%em6?%u z>#ixHjOH9@$7Pf2pjt=u2ls>0o6rtjXc-*^P@JOvi}b9Lp8q7B4_GVJdY?e_py@D0 RarX(v>&NJw)TriM{2#x}U!MQ~ literal 0 HcmV?d00001 diff --git a/app/__pycache__/main.cpython-313.pyc b/app/__pycache__/main.cpython-313.pyc index 73b097b4df56504284af5879b517e4a0202637f1..27149bd060b833a4ee873e58249c5d47b18243bd 100644 GIT binary patch literal 2404 zcmbVNO>7fK6rR~#d%amZaj+AUADSgN4JI@$X(Hm5R*HxyIFM2=5tU*QZR~Zj)ZTSx z)`j>K;6Qq+`lsfYBixXB>9O2;v=yPC1%#@iO5B1{303N$Z`Qj>pykrB_RX6&?`P)C z_nvnmkv0V5tuKY;#{xpXvxPrIkJ(wq2>pOmq~aNr#RO+L!YORc&G1=)2-yG$xNCkU zm=%fW^1@6gD-p@%12b(|naD05oC%XK*al}JB$CI2Xu=Ca+VkzX0YCWOtcrPQ5UC+m z%3z>v8D2qo5hOB`kSJIk+0*tpH9P^QWcLlRx|V{ep6Be)Db5kkXw;s%c+L@X z`WH2w+8_&`y>#JxPN!ANq`DK%s-MjIs}y!RvW9t88@r@es%6dADTrj%)@-A2#wfc> z;i6_Q&(_5>b;VAwHG`s5G>BfXEwTa&!PF|cBiX*AdV9J^tg2PB=c+~UTwq7^2M5e8 z_;$_!If4{`%Dlgaa%}gtkqf*gfTf?dBs$5L@LfEc;+;^@x@MLwt>}nebU3e044vLZ zJIsYMmYxFvP1`GFousF&Lam~kHcfwQ*k@~tX}VG_Yl}6S)~eNXMKjFN>WU*Q5p9ul zgLw=-+6&}4T1C&~*p}Sal>4^i!KOU8DJL63@-GTCfo={Q#(No1-4j5P+KKlL3x%>q z=_@%2f|;9>KY{Ub;=vIBiG2W>Xb$CgPkukCE&$^W!ms` zPCzHbBK39#SjDt#rDWC2qVYWhN^ztQ4(Z4Yvo*Q^#(FA9Bqj^$*9~e@N3g28=?HEt zfkB6`oB)=j5;$C_0{R_Xas+lV$`Y?A3h81V1fqlX5U>gOr~$-%I=UH6t)6=* zMz_R7Q%r1$Jx#IaVWj)(D_>n%KYeF-?MgE;c29d8OZ=GmHnaZecc<2-U-GE^y=NVL z8`I5>R3nsnEGIS+jbraOln;K5HRTHp;lfK1R31de{-*s9?dFN8N&Hh{YM8&@b_m$} z!);R&;{6jM@b##l#%aGK1iEZpWA&i1yo!3&ppcKkelRh(+=6fCJdpoen4jS}Zo>1b zpe46FNe4Jg@gxcp>15>XmVixUm=T7MR}$P(W)=$DVlV0DR|szj@um>p5_+0K&w6rW z>47ln)!kqcJ2>r#q}Bfl0D|4Y-qpR_DPaC}x&3MIOjJAve^@F%%K4~o^_rA0TW>SW zqJDjJ*{+o9{b%)Z*-}cxswiFuRz{RoXFUuU907lhSkWofmULK0*gER>+`Vq>DpGc2 z4`C8R*aEREo1{U?phn*U(&|3(EqSOZ4{elx5gV6CbDVCsdZJOk8BxNX-G#k#z~A&5In)|qf9g)m-)OaeRvVPCp5chBM9RjZTUM<% zQ<$8G7U~2lP>go##{80QyIs_+8HcAfaj!*KS0!;q+`0;#s#wKZS^tP+K*rKR{{XVh zV~n4oUOMNqcXR_Hf{`2Ij)I`%S zf+*6z@p&^mwkmCh5Er2*{R>_^ zDE