From 9cc0929a09596abeb93ee7f2711527fb5da25f7a Mon Sep 17 00:00:00 2001 From: shaman Date: Sun, 29 Dec 2024 21:49:09 +0300 Subject: [PATCH] first release --- .idea/vcs.xml | 6 ++ Dockerfile | 22 +++++ assets/cross.png | Bin 1222 -> 0 bytes assets/image.jpg | Bin 6012 -> 0 bytes assets/search-icon.png | Bin 1418 -> 0 bytes assets/stars/0-star.png | Bin 3647 -> 0 bytes assets/stars/0-star_large.png | Bin 3273 -> 0 bytes assets/stars/1-star.png | Bin 4170 -> 0 bytes assets/stars/1-star_large.png | Bin 3889 -> 0 bytes assets/stars/2-star.png | Bin 4563 -> 0 bytes assets/stars/2-star_large.png | Bin 4024 -> 0 bytes assets/stars/3-star.png | Bin 4966 -> 0 bytes assets/stars/3-star_large.png | Bin 4171 -> 0 bytes assets/stars/4-star.png | Bin 5329 -> 0 bytes assets/stars/4-star_large.png | Bin 4200 -> 0 bytes assets/stars/5-star.png | Bin 3607 -> 0 bytes assets/stars/5-star_large.png | Bin 2113 -> 0 bytes docker-compose.yaml | 14 +++ frontend/assets/steam-120.ico | Bin 0 -> 6398 bytes frontend/assets/steam-32.ico | Bin 0 -> 1261 bytes frontend/main.css | 73 ++++++++++++++ frontend/main.html | 4 +- frontend/workshop.css | 181 +++++++++++++++++++++++++++++++++- frontend/workshop.html | 17 +++- main.py | 42 ++++---- maps.db-shm | Bin 32768 -> 0 bytes maps.db-wal | 0 requirements.txt | 4 + 28 files changed, 340 insertions(+), 23 deletions(-) create mode 100644 .idea/vcs.xml create mode 100644 Dockerfile delete mode 100644 assets/cross.png delete mode 100644 assets/image.jpg delete mode 100644 assets/search-icon.png delete mode 100644 assets/stars/0-star.png delete mode 100644 assets/stars/0-star_large.png delete mode 100644 assets/stars/1-star.png delete mode 100644 assets/stars/1-star_large.png delete mode 100644 assets/stars/2-star.png delete mode 100644 assets/stars/2-star_large.png delete mode 100644 assets/stars/3-star.png delete mode 100644 assets/stars/3-star_large.png delete mode 100644 assets/stars/4-star.png delete mode 100644 assets/stars/4-star_large.png delete mode 100644 assets/stars/5-star.png delete mode 100644 assets/stars/5-star_large.png create mode 100644 docker-compose.yaml create mode 100644 frontend/assets/steam-120.ico create mode 100644 frontend/assets/steam-32.ico delete mode 100644 maps.db-shm delete mode 100644 maps.db-wal create mode 100644 requirements.txt diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b5eecd1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,22 @@ +# Используем официальный образ Python как базовый +FROM python:3.11-slim + +# Устанавливаем системные зависимости для работы с анимацией и SQLite +RUN apt-get update && apt-get install -y \ + libmagic1 \ + && rm -rf /var/lib/apt/lists/* + +# Устанавливаем рабочую директорию +WORKDIR /app + +# Копируем файлы приложения в контейнер +COPY . /app + +# Устанавливаем необходимые Python библиотеки +RUN pip install --no-cache-dir -r requirements.txt + +# Открываем порты для работы приложения +EXPOSE 5000 + +# Запускаем приложение +CMD ["hypercorn", "main:app", "--bind", "0.0.0.0:5000"] diff --git a/assets/cross.png b/assets/cross.png deleted file mode 100644 index bfc369ce6eccc84365d595300153152c275319f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1222 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!WZB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L2{Lsuh93j$o& z6x?pH#Hm*w=oo!av?4__ObD2EKuma|1#;lYJ~a=R){B6NT4`5EF#`jmji-xaNX4xr zo1!Ni%&HBnUb7hsji%JfcUTv!=x0rm)~IF_kZ+eP5bJo|a6|f3J!5DCk4-~`oq#d( zM>PdIR-u$8uYatMG8FbPKlNu$(p5S8%3%-Fs-H$7Z{t UdqP{C3XtQ;6eT`m?cu zdrBSe5j%%Jtjjt%&(6HwU?F&lZD#`0m77`)f4Eou6x_t7ro*^Zu4DFsHzo>vEt`ZB z|EZ-ga9m;j=&16~OChe!S5c3dXF(u0b6tSpA|3&zN2M1SSdO0Z)u>h$=oT_+kd%t; zy5PXg`iMg#nom=!Q0fBHk#zxOdIIqckC;}>5EdwZXr#c>p*?{qS8URqk`)phB8-J1 zK23tNW;zts33XI1s55i)(+OahWX#az!I eXx3atCLRW@!%hc&q$I5Xl`NjFelF{r5}E)K--xFG diff --git a/assets/image.jpg b/assets/image.jpg deleted file mode 100644 index 6db4313e2addbc760883791c9543d794a8e4a428..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6012 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 RQBF)eG{3mP@+rB*{B($)w$ll(;+uM8L!bPE> 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 UDRz=Y;s5{u07*qoM6N<$f>w>eng9R* diff --git a/assets/stars/1-star_large.png b/assets/stars/1-star_large.png deleted file mode 100644 index 09a69f7420bad7ad4fe0410c0e324a6800319ddf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3889 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 diff --git a/assets/stars/2-star.png b/assets/stars/2-star.png deleted file mode 100644 index 90fe4123695218a12fe447cfc85cfc81705332d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4563 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 diff --git a/assets/stars/3-star_large.png b/assets/stars/3-star_large.png deleted file mode 100644 index 41fb2c9b26e77c35489cb20dadce155f08dcddca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4171 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 VA!20}TWSCR002ovPDHLkV1gm9=xP7} diff --git a/assets/stars/4-star.png b/assets/stars/4-star.png deleted file mode 100644 index 69c76ed6a298a2f7fcf1aca576d61b714ce9fc97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5329 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 diff --git a/assets/stars/4-star_large.png b/assets/stars/4-star_large.png deleted file mode 100644 index fb1ca82d26aec3565da85cd55e1af1d002bd1ecf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4200 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 diff --git a/assets/stars/5-star_large.png b/assets/stars/5-star_large.png deleted file mode 100644 index 927df9b81599f3ac118741500d249b62d66e37d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2113 zcmaJ?dpMN&9-l)`?aE~jTN1_?w_45RH5jH*i!o-(P-7Ts*~ZK}3})UjGZ;3t>7o>~ zrzl54!Y-R^dNPaFtZK+$uo97tDDmX7k&w$7mG=B`ocDR&_jh?dpU?O9d7k&oK3{J= zovk`B7)*~!A<;E!s^&HRY`y0D@MzbZW-*a?1xfrNt|Xo%0%7hPC=5hU`K)k|4zf52 zF^wP*2Gd6H7(tRCnh${u@zJam3|h(;YS=Isako^+Vn=}zL>L&(6SyHKY7|HWkK=}9 zI?=E+p(hx@qa=zz|3qH~J28sw%0celg&;}^8Ua2iVIidaXn~j@bwj?_C2005*BB(? zJwy`ahWwCJ5N#jA6B2<4Co~qt#yVpW&Hx&~IpXp79S8?3fW=@PFn|LJz!Pu|1S}Tu z@j+^$i8x#Wokac^OLKBVMo1(=0tOQwACHd5p&?N?25@zCUD0rGKxq&tae_d?lA;7+ zt5pROC}xXzLJ1ENAXXGvVNk5Z4XMfWLkWE0Cs~2`W1BP$!$?^|41mV2l(Y(@(f&V_ z&;NuLOX%R=`TkE~F(W|;V(6e4iWRXngX3DQgc1@wMIcK8i5L(Rz1qcn5s(BDM?gY^ zr@s?|$rEs(c=3BQjYgmf#1fW(4N^&NNDUv&<8cV?j(9H@M-tW@z`6o}7vSRL;y}VV zl1a{9BrMj|eU(ds*s*+2AX(*d{^kN}a#xJN7iuDtKoKtvxIY@M7+a%V_; zUS)qr*%WNnFwvY&FU|~Ug4Z}vO!(H9R0~#p83*D<+~-r)ZKqP&=wD3dzw)Bj$d%ZF zi^$V)8=t`2jz`9`>~%}F;W{cN1&pp-<6DOVy38h~cRCmiy1Z5Ah`H+V)ZMe9aCOdH zk{TL^)V~em?=@Du8kHZx;RZ-kS~*KK?#g`bZPxyUlc((-h<;+4HvE+*mnp8Kv^>oI z=eMm7Ur%#?mp#BeyR3}hVowQdXCo^U^?lF9O-fy@Yp@w(ir#8nSaJ_J%G#&QtlxX+ zaSOA)t%Za~pM8AnL_-P!K&iA12Mr6_Q7;2~d1)s~GFuM&=k_gB)K|G>`PzNHU1kv5 zh(7z(*LgAb3c?e(2F9InqnOn1Kj5?%;66VZoyL zUr~SD#Ac`>Uu$gXP&|XYhnsx5as+3VSCW}_crS71+(4GP#de4Y@7upQqYP?NEl09g ze>_b#k9S1-_j0YC8v0@OR9beF>n`f#F?VE6j)hgE?|&X+!~E`DF#eWDP!eY}odj@C1_#zcBiDDyCvLudWN|D! zb+DMyYCY|q`Av&3$K-|UXMjQdlftS%m)683JTRJYm}$50u9Fv@Q0*8N-MqfUbH>!X zOLeq-3?mFRs4ab?MlBjG8)v0bi}niGQ-^YBJ?tG>*V&HGybi$6qSa21qeqAy=cr5_ zXLr+!4MEKo7`1NoHeGeYi*~du=HG=~or2IpRdi+MvHQB|DvEEKaZ)CvU3kVrRall? zP_4BW{`rOJ>YkRtvOsc?EM%ueWGgr{^RV*j4gSQ9h0=ij1=s2FCz41qEN7V^E&=Sj(Tm6D@9U>|?7d{k zF=@>$5uTAc`pK+-_DkXjzWJ>!F$n{PMfta^7|hU_>yz@dw|*W9Z!bIlDEIR{;d{7u z%g)~^&A?-lK_SsOyk*u*MPk)6ekBoAq!H!1&eGdDoZ+JhuOiMB66^X=sA(hNaJT-` za=q9x{x2blCF$tSYx1gmx7n!z)tx5=LsR2`wm5^gF>3pdv&yi$-hbZfMcwzAv`mJO zxp?^>di?ID04v*S|Ql5Th$O8yT)#fk9% diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..951a427 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,14 @@ +services: + web: + build: . # Путь к Dockerfile (в текущей директории) + ports: + - "80:5000" # Проброс портов + volumes: + - nas-share:/data + +volumes: + nas-share: + driver_opts: + type: cifs + o: "username=Shaman,password=" + device: "//192.168.31.3/share/public/complete/workshop" \ No newline at end of file diff --git a/frontend/assets/steam-120.ico b/frontend/assets/steam-120.ico new file mode 100644 index 0000000000000000000000000000000000000000..b1ab6541aefa0c50ffead092deaa460360c463ca GIT binary patch literal 6398 zcma)h)n612^EF6!NiGf2rF3^Ix#ZFyAV@8+fD#JQf;4>Tmd>SFVhQO+nsudFx)&6F zK7YacUd)-hxtW>snR6!AKu?o|kbw{b1A|0cOU>wC4*Xx>Y{^$qXX(?!Ve+mm*cR4+_yuCThmA;hoo$5|uBTG@z z3dF`oQfR5b$H`eSRdC6J`SB~1t4-or*^4W9$Z&9etlr!RRfm{^1U+RI!^Q z#HZGr8i>dXz|HrlK11E#BQzS~+UeHh@={(8ZOJ zXakv$^1bH2ZHpzNz@Z`=9FncqZLWHR#lfip<6)8um;VJQ)K~*UQ{)^&hPDfO6509Z zk4vR+c7s71$|v}-IygbqnMto6qHH25Mor6v6}5CO6SiwD)krJT7*9kx_$_%F>_Abc zgQJSRREpKUjiI6WAfJEj*~K9U59{1u3#)lU3L%A(zclWR8$b$%7gXbjc;-1#oTUb$EpUmD-MO{&Tae(oWrZJ!WEl zlZMFcoSD%>|AsFNqkRUKJ=sFwz+wSc*JQtG<;!2zl#iFR;pF=bc?qSRim|`GSn2hP zX#fKc9=A`<6Ko|o!xOS_U`H5Tu5_v2yZ;mPyA&0{M~)p3H}HG7P!SY^bzd1!R23UM z%tkp zxO~2pWpUe|&JzQdw)GT@r=67XCuWHGOvlUf09L_dr`Q3b0uU3hP|Q@s`}BdC2sXT4 zx@@&7SW?K&Oz}pD8jCZsD>gb7My>^-HV<0OG&yQt zUP{>%W9n)#8-1{ad~6+g&|ePM-)Xp(>pi(b9ot5h&CY^v3dEz?IW(HRgONHZZkUpvK)C5leS7@1i!yPZ7GE8LsSL@Xo;cvyT7X?noA)|Iv%eV4Bf>%2l5q9)7>| zPo18-afLpjZ4I`L(AyU@-dUm>&j=^F#E%g_C<=9f>#l&QFTc8IKpI?H!fG|1W~EW< zL!$SYi_#>d69^6Fj?r`{^@W7$5@#tt*o!|gw9!b+EiOqoEMa{P|M29bT)0;%pS`B{4;t&fpNzSrTEa@*BRh-F2|H~m3=8^Q+4FuO&71^QmXii!-Hh7=iZ~gF^-<{mpPL02#f9FSp z=BoJxEdh3Al$e4Ko`a<#fZ{!gJ-2@~jYGF?S-PtT>1Cyv?CdUZcndg)ewI{WS+^q9 zJOj2-mQ9-`Ko{WT@vX1SR4_9cLjV&SuT1{W8W@kd$a3RnZ+dje)(Z9EaRt8r5yv}+ zuU0)OZrQ#H0PEd6Vt>K!@~QJaxg~zF7$ZLrcTrcTtwm(#I%-Te}b_~gcSLGR5?pjlJ>9-LCDyb8bVeDKfh%wqEI zXKzWu1MiSn+gEB*r#TA(<76peb8abwRU{Q;6!C?@<(&i9mPKG8BJ^FOByq2N^*iP+ z171f9XbwVNB&^z}KU17Lppo^<(_+Rc_Ekw#(W|@eMk#5Itx?%J4#_I|t~O_!H+c$c ztepv&nB0ffzFG{9L&QUq< zEO*p@>UmQ18EBqA1Zib2r^}R=J!qXhzp&a@)C`m;dbv629?wwd_on6Lz2Plo-M&-e z`L5gTGdLA~Lg}>PlZf>Ba)LpJ6e#Exx}h!P_2uTcOPIfxwr*j8zFC_uXQku?*KoxL zIB>xC_P8UbbYve2!QI91wWmYn=J=1|2Net2YS&5`Y)yXZauxnmK{{0cErKaK*uMF? zJK-++`cJ1nN{e|TH+a}~Q)xWo$369W;OR!@C`#DrE~%9tsRFwIf9tG*xWG?*Mg^%VLpK@Pzd|O71~?Ly9F&fjr4-<04hyF-D;DN!SD7> zMfn>weYxzON=<;~a#4cz9&mel$KdSb=w@&29~Z`yA~o)&{kjXyR#nym_HX`*HZIaO z{F+ZpHUaa}4jm{ijX53_cTZ+`m8N@VZ`IW#R?+UfZvWH~cS0_YUbr<{=b-UsKl?U% zYT0p^hP_@w0(l{-W?U{#pWk6OX*ulf!ob~!#(2)KTh(MT{tD(g&aKi9Ew{nQK+*f< z@{^|R0>JE6*ykZdhJJsqm&)*WmZR&xA9d1``08u-)%V<2e~}2}DUmR5uizM>dFk4^ z3jnqmeqSMP)>p~CsKmGS9ur*cyLyq!2&2H_JqU8NJPI{>3O zwsg8__9zie)6fxS#gJ@kM!{Rl+NdwkBp{WVWP@VNyG} z^u$s6u^7W!-xTMny>Ctt1AJD^p%it4#esiYp2jWv5Sw7pptLzBWbzGNs0cfc1_*BM9kJS2gM&nn@~_m@yQ{3PyD z9I2U8xCojDMdy^p`ASlYvae~<8Sezq8!ZPmd}T#Y&7g9Fr@Nmh+xm~1Z9@-u1P}JN zfrXnb=Sy{E2Fe|nOV{5OdnRRN00Wet$<-Q&Rq9~|M1jE$<9L+VNEWdHrR)ZWnZ-us zcF~`yODxA`Vu$0xiN+6edMSiI4k%fCJV$<$BsdJXYYZ?(9b$BfR=K?bs9sd8L}8Gc z$#f1xHPd$cuhHm9J4cX{2rW<9>-}y1P^xKDC`1(^2Atod;tDe)A)CwPVR6NkpsyIl zB2$?0;=h~M-~6ua-)ugzs`nEpRO5ccemDB*q|lO_=lK9UyC-pax$9*0-Q7kT;)Alf zKPS8>X-3^WJr_50v$uPtfID^<4ya|?MRP{`IVav z=a95fmOT15YzCu}>7(XtA1~s!pig~&-v^?@ zsW}teU9brI$pzT4^~h_(@1x>|y9CUaJx3Vd1z(GsrD_UkgY;I{RNhdWg?q@$F7x7C z81;Qn_;B?d%HA3`5dByj%Ll&@BNpyJTAEJwqOYg*blbV#{1nHAdCwYMpi6isEp^6! z%tw&`+V9ymZa?3B5+-)_d=i^2N`pFV5}4N)PvSGFV7$|9+qlOqk9og%T?2e(5Aj|+}V8Ge$j~8a@sDzq3$LJ;% zb-T8{md{1(3I9#+!xgwWAzy;kQ!D)qe-sklI%RwXass=6V&`c@3lu+hnAUqF!x98w zIoK@Cim6vu^ZGNzFUGa~aJ2dI;Us!jT1m{vVQq%4FB)k;pDNFaFZXEMC#7iSP5l;Q zz@1zajZEGat|#RT6EYZ*s-(nbr{oM&ZT)I>+_GddfMfp{t^+Y{&otRnZn0@A%vOoq z!TNBLKM_tL*RMD9u|*ivPbZ9lHc*ivKjRQ^-TpL>E5kTO0P2b46YkvqJ)do$_T>b2 zDpW-$8f&$w0)8kKD=xiHtH#jJ$K@y>4j^;sc?D+B-jbmM$R|C@vxm9uXg)^s&A!fI zU;yDdfsw|KXQQWce{ei%diExy3wj=49Pi?Xaji(g9@+f8PE2bbN2~F~7YOak2Tw0w zt`wFL5f$%XDIoDx>uh@yIXjYuf%?C%HY>Ni^_}};)E3`(v3oV-KJ%Slx+Uc-xiBE> zn@0E*k$U5qAK1NCAg2d;!XkAv6N|L$>HPz2*W6FqdjI5|%1uM~8uTH49g>1%Wz|rG+1m%A0-pI?i`AD4}k5_a79RmYHrpkYK4k>v#c(?dJ&h83ya&V zMl38o9&_e*zxms&AAPrK2ZVTX>pOy+CR0e?+6rj4XZv{$;{@GnwrMw4XO5csNCQKQ z0qQ5%bti-0wVay`p{d}hu9?!=#?_F^dUD8pI%oRAE52t*Kk;rh$Cd9t(}-AAnpB&* z{CTnt*iiO7TJ?#aze%58#i z8Dpw5*&u5SQh1r+DBnPjr_O=gNK|4kok!d=F<4JBh^Oz>NqrYqfqB8#zL(?zJRAf# zb{$7yD{CjUHt-Fu8#iJJ%x0$Vk{4nfn%Yg;h6|noa?*Pr6hRI3M`e^2l8Y!S zIY2Jurug1eRF;Ul3vCzTE_BQ@l~VIN@bZPMwSuJW$q(fIxM=^#SGeUD5@w=&U z;!d*QbSQQC8OxDng;uMZG|gTB@*^N)JtwYs!SX(SOuuAy-^|11*$WKJA5wb9!n(11 z$|L(S5y7tIo^s2_qtz>bE;It|O=US)nlWqj+~=+DtB5t8@f}MQCGTHnO?W{^t`_z-edaOpZH1$@g*zq3uQ{y<7g0mzOb^Rv z@D=g2gYJ<^Xp#Y6;1TbTOJ4L{R9n8Unaz9IRDz|hYyTD|g!~tUN!OMn?xJC>^6F#n z_&ENWR&9x)ZnRt1z7x#QzvG`j1A9ApxawzUN_lyJ|x&yy4Z=$yK83Fbo1eD=DXl&p*3rM2BxwwTY} z_3*xAagW_KO?vJf-tBg2zSH?I?y1q|gKMd9|B>nCW92=AY4=U_Ztu(jnl5L4KwH?Y z5o6*$wWSP(QX(HFD@SgTo6x>WoSx_E>(4)#7&(z(pdfNKC?|)*Lyj zE~|hme$dZF7^FI)sH_)*!BO+>{A;WM3GRw@Kac0`YrSmIzSy`P5a-}Z!0x6+dhOvg z3XDTEvF=+EZDRl1!YTL@#@j4I7B`l7QX-Y7HHcx5=Q1}bSd(P$SEuChl>HmJlQ|2w zm?p(N&m;WE)mv{xfx)Q85+tPZr`JvIfIQUF^C#AJ%IJqKo&eIdG=u?V-N%1+As?N< zz4p)we&IhkCq~C;70CThC!jjSR9)0Cokfq5=+IiRRk6C>^+^_!DkK9ekwv29C&m>a z!cR1z#$AnTgQw5_X0gwg|9R-l(+1TChK0qX4-R zI*VSvT+Re~O89#uPJilSM+bi+)M*3y=;6!atIvg3yl<0D%X|ee8smMbBW1YbLc0@H zKYpROyIU(TrX`dKW?ucZWi^On?drhpw7j#s5$i(bZ-Q!cy{NleEuMIupwa8rhWA85 s0D)R#Zz1j`F3be~fBpa@#`j?sJn)gfGaVlP9vT?h>UwH*Dt6)j2aCdx761SM literal 0 HcmV?d00001 diff --git a/frontend/assets/steam-32.ico b/frontend/assets/steam-32.ico new file mode 100644 index 0000000000000000000000000000000000000000..5d0e1584946e260908df600f82fadf47b212cae6 GIT binary patch literal 1261 zcmVSh$!rXMyZxeD({rBZec$K3NF*D!VXHU4;NVapM4>&xyd2-cM(FKQWppmxqi2%m zWdRHy$Y}IKY@}f}OjokVC0oI#wTOqV=^h)I@QBsu1_J|?0skfTCPs*Bk!j8IeC9dG zQ>qbuu+()nEYGT!1S7@`{I^(SP_u_23f9oQx2AgTAp=d_P9Le_U>E6g}k4%^rcbTh3#b#fqq` zN~m%=ps=(-k?w%p+yGX+|N5FD!3c3J7_>nGT7TfU6$S~&T9^m&U_tDyM z39)%qA_+e26L5*;PFFg7x4=MUfGoy5Pu_d>ybl@0R{U^h0$Inau`}Z|_8hK2aajXq zrf-TQl-cc2SlY2on=&5~!Ug$EfYs=SNN|)-PhpR;)L~}kHj<9nkX&FxXKyc>&$VM; zem#oI8^uVdayyqak#QDmgl@oBd_OiaaaL}ugCg_1M*`-OT8v&Bfnch@)YK%Li@%A7 zNbJtGis^{Xtb!t|4RT`**jEgXeCiXy!J$H!zGRWg%oDhf?QG170HvVkSb$xy%NyuO}v~{cnZQ}?qmtz$pA(+n~`Ir@V?oJ}T$mV{BJ6H}r&5jU_zR4?ro$;p5$;mN1 zd^nA2M>`JWTgBR@5ADsZ!M*95Zt&$pk+?e4k89UQFg<+>mUpaB!&lrN|8wD2eAeBEw~l{+&YrGkz?Tncf`l1qsTWK1>8LHGpaNS}+H9Xh zSW#KCBFOmoxA?rH4flV(?Y>9pAWdj;93DlxDiKN~5k8$h!?^Yzz-F;E~ zrF4)cNSL0$sf*HVkoj7MWUQbYq~@W{vcp_lgSNI-Jf8j0O`xmmB1XqXu_w32Be2_h zu@O1IX!QLOUo9wT+Y93O%{U7_)sB<`8wLjY(A(E3dOtNa0b^mMS8!_Myr~H?t#NM4 zmQa7636RkM2~Q{$hY_FtDU5|xXmGTl&T#=L1fJLPui(^0U3-F)5#s74Yp_j>I(D2! zsz@T$?$u+r=cXobhH~(xdNAtPu{AFy{{A~Q(>&)4rQ$*ocHn)_quJ%Pm~&cQ45iKx zA#Qv<3(3=wXq3g6L`~3;qKHs<$xB+xmRB_SA=gT#HO{%hzP^?0pTcA!bp32p!fcqn zXptJr@={9IROeJ`OoYCF)q-24`B6jJs@ipwjd;x-BE&aK`KZHzQtrj)x|VO)|JMEj XfIA_4&d$E100000NkvXXu0mjfYNK(} literal 0 HcmV?d00001 diff --git a/frontend/main.css b/frontend/main.css index ea8dc5e..020c740 100644 --- a/frontend/main.css +++ b/frontend/main.css @@ -172,3 +172,76 @@ body { top: 210px; left: 660px; } + + +@media screen and (max-width: 768px) { + body { + flex-direction: column; + align-items: center; + padding: 0 10px; + } + + .main-container { + padding-top: 20px; + } + + .image-wrapper { + width: 100%; + flex-direction: column; + align-items: center; + padding: 10px; + } + + .image-container { + width: 100%; + height: auto; + padding: 0; + } + + .image-container img { + width: 100%; + height: auto; + } + + .details-container { + width: 100%; + margin-top: 15px; + margin-left: 0; + padding: 15px; + } + + .download-btn { + position: static; + margin-top: 15px; + width: 100%; + height: 40px; + font-size: 18px; + } + + .game-mode, + .tags, + .file-size, + .added-time { + position: static; + margin-top: 10px; + width: 100%; + text-align: left; + } + + .dynamic-data { + margin-left: 0; + font-size: 14px; + } + + .youtube-container { + position: static; + margin-top: 15px; + width: 100%; + height: auto; + } + + .youtube-container iframe { + width: 100%; + height: auto; + } +} diff --git a/frontend/main.html b/frontend/main.html index 8c51656..ed98fc0 100644 --- a/frontend/main.html +++ b/frontend/main.html @@ -4,10 +4,12 @@ - Workshop + workshop + +
diff --git a/frontend/workshop.css b/frontend/workshop.css index 016820c..bb0f02c 100644 --- a/frontend/workshop.css +++ b/frontend/workshop.css @@ -6,18 +6,64 @@ body { display: block; } + + +/* кнопка "Связаться" */ +.contact-button { + position: absolute; + top: 10px; + right: 50px; + font-size: 14px; + color: #417A9B; + text-decoration: none; + font-weight: bold; + background-color: transparent; + border: none; + cursor: pointer; +} + +.contact-button:hover { + text-decoration: underline; +} + + .top-bar { background-color: #171D25; width: 100%; height: 105px; display: flex; - justify-content: center; + justify-content: space-between; /* Элементы слева и справа */ align-items: center; position: fixed; top: 0; z-index: 1000; + padding-left: 20px; /* Отступ слева */ + padding-right: 20px; /* Отступ справа */ } +.left-text { + color: white; + font-family: Arial, sans-serif; + font-size: 14px; + margin-right: 15px; /* Отступ справа для текста */ +} + +.left-text p { + margin: 0; + padding: 0; +} + +.center-text { + color: white; + font-family: Arial, sans-serif; + font-size: 28px; + text-align: center; + flex-grow: 1; /* Элемент займет всю доступную ширину */ + margin-left: -500px; /* Это выравнивает текст по правому краю */ + margin-right: auto; /* Это выравнивает текст по левому краю */ +} + + .main-container { display: flex; justify-content: center; @@ -485,3 +531,136 @@ body { cursor: pointer; accent-color: #63AFCD; } + + +@media screen and (max-width: 768px) { + body { + font-size: 14px; + } + + .top-bar { + height: 80px; + } + + .main-container { + flex-direction: column; + align-items: center; + margin-top: 80px; + padding: 0 10px; + } + + .cards-container { + grid-template-columns: 1fr; + grid-gap: 20px; + width: 100%; + justify-items: center; + } + + .card { + width: 90%; /* Карточки занимают почти весь экран */ + max-width: 300px; /* Ограничение по ширине */ + } + + .right-rectangle { + width: 100%; + height: auto; + margin-left: 0; + } + + .game-modes { + position: static; + flex-direction: row; + justify-content: center; + flex-wrap: wrap; + gap: 10px; + } + + @media screen and (max-width: 768px) { + .modal { + width: 90%; + height: auto; + padding: 15px; + max-width: 500px; /* Ограничиваем максимальную ширину для больших мобильных устройств */ + } + + .modal-content { + padding: 15px; + } + + .close-btn { + top: -30px; + right: -10px; + font-size: 25px; + } + + .modal-content h2 { + margin-left: 15px; + font-size: 18px; + } + + .modal-rectangle { + width: 100%; + height: 45px; + padding: 0 15px; + } + + .modal-rectangle .text-left, + .modal-rectangle .text-center { + font-size: 14px; + padding: 5px 0; + } + + .date-input { + width: 100%; + height: 35px; + font-size: 16px; + margin-top: 10px; + } + + .cancel-button, + .ok-button { + position: static; + margin-top: 20px; + width: 100%; + height: 40px; + font-size: 16px; + } + + .cancel-button { + margin-bottom: 10px; + } + + .ok-button { + margin-bottom: 10px; + } +} + + + .pagination { + flex-wrap: wrap; + } + + .filter-stars { + width: 90%; + position: static; + margin: 10px 0; + } + + .search-container { + margin-top: 20px; + } + + .search-input { + width: 90%; + } + + .sort-button-container { + flex-wrap: wrap; + justify-content: center; + } + + .sort-button { + width: auto; + margin: 5px; + } +} diff --git a/frontend/workshop.html b/frontend/workshop.html index bb3dce5..3c4d831 100644 --- a/frontend/workshop.html +++ b/frontend/workshop.html @@ -4,15 +4,26 @@ - Workshop + workshop + -
-

Добро пожаловать в Workshop

+
+
+

Сделал: ©️𝙎𝙃∆𝙈∆𝙉©️

+

Неофициальный сайт
с картами для CS:GO
из мастерской Steam

+

Добро пожаловать в Workshop

+ Связаться +
+ + + + +
diff --git a/main.py b/main.py index f994ffc..389cbca 100644 --- a/main.py +++ b/main.py @@ -5,12 +5,13 @@ import aiosqlite from quart import Quart, render_template, request, send_from_directory, Response from datetime import datetime from babel.dates import format_datetime -import locale -locale.setlocale(locale.LC_TIME, 'ru_RU.UTF-8') + + app = Quart(__name__, template_folder='frontend', static_folder='frontend') DB_PATH = 'maps.db' +DATA = "/data" GAME_MODES = { "Classic": "Классический", @@ -45,32 +46,33 @@ async def get_maps(page=1, per_page=30): return maps def get_image_path(filepath): - image_path = os.path.join('J:/public/complete/workshop', filepath) + image_path = os.path.join(DATA, filepath) if not os.path.exists(image_path): - return "http://127.0.0.1:5000/images/image.jpg" - return f"http://127.0.0.1:5000/images/{filepath.split('/')[0]}/{filepath.split('/')[1]}/{filepath.split('/')[1]}.jpg" + return "/images/image.jpg" + return f"/images/{filepath.split('/')[0]}/{filepath.split('/')[1]}/{filepath.split('/')[1]}.jpg" def get_star_image(stars): if stars is None or stars == 0: - return "http://127.0.0.1:5000/stars/0-star.png" - return f"http://127.0.0.1:5000/stars/{stars}-star.png" + return "/stars/0-star.png" + return f"/stars/{stars}-star.png" @app.route('/images/') async def serve_image(filename): - image_path = os.path.join('J:/public/complete/workshop', filename) + image_path = os.path.join(DATA, filename) if os.path.exists(image_path): - return await send_from_directory('J:/public/complete/workshop', filename) + return await send_from_directory(DATA, filename) else: - default_image_path = os.path.join('J:/public/complete/workshop', 'image.jpg') + default_image_path = os.path.join(DATA, 'image.jpg') if os.path.exists(default_image_path): - return await send_from_directory('J:/public/complete/workshop', 'image.jpg') + return await send_from_directory(DATA, 'image.jpg') return "Default image not found", 404 @app.route('/stars/') async def serve_star_image(filename): - star_path = os.path.join('J:/public/complete/workshop/stars', filename) + stars = os.path.join(DATA, 'stars') + star_path = os.path.join(stars, filename) if os.path.exists(star_path): - return await send_from_directory('J:/public/complete/workshop/stars', filename) + return await send_from_directory(stars, filename) else: return "Star image not found", 404 @@ -91,10 +93,10 @@ async def download_bsp(): if not image_path: return "No image path provided", 400 - image_folder = os.path.dirname(image_path.replace("http://127.0.0.1:5000/images/", "")) + image_folder = os.path.dirname(image_path.replace("/images/", "")) bsp_filename = None - for file in os.listdir(os.path.join('J:/public/complete/workshop', image_folder)): + for file in os.listdir(os.path.join(DATA, image_folder)): if file.endswith('.bsp'): bsp_filename = file break @@ -102,7 +104,7 @@ async def download_bsp(): if not bsp_filename: return "No .bsp file found in the same directory", 404 - file_path = os.path.join('J:/public/complete/workshop', image_folder, bsp_filename) + file_path = os.path.join(DATA, image_folder, bsp_filename) SPEED_LIMIT = 40 * 1024 * 1024 // 8 @@ -159,7 +161,7 @@ async def main_page(): tags = 'Не найдено' if file_path: - file_size = os.path.getsize(os.path.join('J:/public/complete/workshop', file_path)) + file_size = os.path.getsize(os.path.join(DATA, file_path)) file_size_mb = file_size / (1024 * 1024) file_size_display = f"{file_size_mb:.2f} MB" else: @@ -282,4 +284,8 @@ async def get_maps_filtered(page=1, selected_game_modes=None, start_date=None, e return maps if __name__ == '__main__': - app.run(host='127.0.0.1', port=5000) + import hypercorn.asyncio + from hypercorn.config import Config + config = Config() + config.bind = ["0.0.0.0:5000"] + hypercorn.asyncio.run(app, config) diff --git a/maps.db-shm b/maps.db-shm deleted file mode 100644 index fe9ac2845eca6fe6da8a63cd096d9cf9e24ece10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeIuAr62r3