From 46803f541e0eb4967f1cd939d653aeed3b220fc7 Mon Sep 17 00:00:00 2001 From: Eduard Prigoana Date: Tue, 22 Jul 2025 07:31:56 +0300 Subject: [PATCH] fix --- .gitignore | 1 + __pycache__/archive.cpython-313.pyc | Bin 1424 -> 0 bytes __pycache__/config.cpython-313.pyc | Bin 1141 -> 0 bytes __pycache__/diff.cpython-313.pyc | Bin 2073 -> 0 bytes __pycache__/downloader.cpython-313.pyc | Bin 2197 -> 0 bytes __pycache__/notify.cpython-313.pyc | Bin 1246 -> 0 bytes __pycache__/parser.cpython-313.pyc | Bin 2438 -> 0 bytes __pycache__/update_loop.cpython-313.pyc | Bin 1781 -> 0 bytes __pycache__/utils.cpython-313.pyc | Bin 1127 -> 0 bytes config.py | 9 +++++---- update_loop.py | 23 ++++++++++++----------- 11 files changed, 18 insertions(+), 15 deletions(-) delete mode 100644 __pycache__/archive.cpython-313.pyc delete mode 100644 __pycache__/config.cpython-313.pyc delete mode 100644 __pycache__/diff.cpython-313.pyc delete mode 100644 __pycache__/downloader.cpython-313.pyc delete mode 100644 __pycache__/notify.cpython-313.pyc delete mode 100644 __pycache__/parser.cpython-313.pyc delete mode 100644 __pycache__/update_loop.cpython-313.pyc delete mode 100644 __pycache__/utils.cpython-313.pyc diff --git a/.gitignore b/.gitignore index 5ed4419..74ead4e 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ Artists.html artists.xlsx Trackerhub.zip .env +/__pycache__ diff --git a/__pycache__/archive.cpython-313.pyc b/__pycache__/archive.cpython-313.pyc deleted file mode 100644 index 2decb8caef3d76d8226cd6ece9b32028392b93e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1424 zcmZ8hO>7%g5T3U`_QpT4sT)L6NViQvYy-Bc%Ctlf;kr@Xq&3Kk%fVKyjlFhO*lX+U zy5L^O1u39PF{l+0LL$d-%aH>@>YYO(T8OqrNacWXB8o2vgu=Y_Utpx2_ul+`Z)V=i zc7s75Af*Byt!#1tzp=xB@a$6e3N8;o1(htpBB4ZPdv1xNoV)Ur$CY0a7DXy9dZ-8W z!W2-iDk7Iu5Av}Jr+D`noI;$5_q5isR($`aR$MVmUDfXBiFdB270wAHGRf5STMLD3 z=7#F{vg$&nkhr#xez!=NZ=bxl^7wUsK=uG~L!C;pFpi;J91u{hBx`sP$r5u-3%e%!PocNa)M%Y?igl8zAMPlXcPnvXuFDG_7WIa0)J<6%p>T7uB06G&8m3KIO{j>>5iG2~Gd6Tlc!zJ& zsv|LZL2DQe(Jf{!%d&GJIhW635LP}>su^bfYQ5O3VK`R)nqjA!%Xw=>*YVW5R*yDX zj=#SzASh+ov4UGVvQ_8^V{313Bsb!l!jA97N5V@7oG4!IL|)#Cd^fclxw6yed|8QEweGwHy^5Bjo*}abpduphNKx!V}6`Mad7zoG= zyJ%ro6bZU*?3!k`u>x2kMSh$(zZ*WkCU&I2y6;n8 zJN`(T>`0Mz@+axJLobA%@1i68r@Aa$x4P4~!Cwh6k4@I`d@)ZhefQjoZ8xmBSd6X9 zh8eBXN=!3bHvTRuv2wj0Th^#TdbtrtvUSULgJ)CUPb}aH``OVKQ1L8&7Hhy&*bBv1 zQyn4HmL3a}bP8pP&l&rm_giYTdegz|=}Bacr&u@3M#U|+J2dXiZlzr0Z@|UqRaAPT vRxdTH`aC^@zAPe3Muy!;$S*Ma1pH4R_&dxV3SM&g@Pt4ny8(_&xd{IPoG&lw diff --git a/__pycache__/config.cpython-313.pyc b/__pycache__/config.cpython-313.pyc deleted file mode 100644 index 031482d5571a353fd7d02177ec289ada35679f7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1141 zcmcIjPjBNy9JSLlaT2@DDyXZ~!ZHF0Z6&Z1vPoCF%OW=oZInM%t%RLFf7P38yxp%BvvD_B)8v%pJX- zq8LPH@_>+miDaEv3UesZ3^qi_Ws0E`V7YhM%$JTo-`lgDug^5x8h!Tqm3dMxb__z` z+n)PI>vb>G+TLRYO&mhqFV6|JH1`V+JKp*KZ!wFPdQKFw3SslAdskkQ>%iv-CsMBnG3QRmg;1KB} zvI{ChN-U%l3Qoof^?r+YiA_!r+ipxBW0i4yRNCn}*en#==IJV{xlG7n7rS4N4g zUq+Dyxq}+49Jdcnd)57;T6cBm?230Z-;kj7neC8r7ECtOioF z{k0S;@a0-b^F`~qXrh~A1D)EMg;7mfv~T_>Y}~ct{l}~&IJq-1LPw6 zf@Z?M`U`g(9rYkzdD8DPL|I=oENu4=h(5NE?XvzMc8|tq{l!`D>%>0C1KD{S2+u5H zj7{{M-VYl@w}*WnKBgNy&;P-tZqjf3%0ND_J*M#F|4Q(@3kRve<5;HFmL` zP3r;Wz#)|oErY6^#314n4oDN?kQ+U6Oh~CBZ-J*!3HR z#nOa>#)5{2f~WB{OdIG8q!8De=K}B~$OJV;kw_u0?|VUU7l2zvKN84@W2sOA6++Vx zui{EZ1y{la0i)CK%y0;?h{qAaFXAxrNFWAKA9@X)aacuQl1U!*0@gkqr+Sf0gxxU{ zt+;cBJTw|6O^+hoUdkwv$w*3C6*J1h3LDjojBfC;R8|U8rb}Ix6q8Epw@lxaOxlP` zDN)kGZj+HSOOgU0lMqcpHfhZ|F)2;Gt>bWcJj}C`7v=ppQwkmFdgeyHkv#@+{`~Ya zFRXXG5oi0S?gi>kPESxj_@V(%x>+aCHtVZ^b_2bR>j=5Ehk)WZvX&8X_Rp*N4-4Xd zS-6tthj8`X$w^Dnum`V-M{vWvfJ>?{0vX3yZW#$eU;=P&hpBz@Me=g0alH~6S1+FFwm;@5JxeeHeq`6hoYquk`viz#J65_wtGz|N#6 zHA&1Exs%xTi?!d&YrL�j~J4wa(9~+Rfa{HsePYqpjn0BW2|D7Aw;uEQ={a5_7y| zvT>Jp6g*b9qFt9I-3jH}bslecc`3Ef0)qxb>5^f(Zc2A_lTIx|GZMqB$*4=>JkX|0 z20EC%^4PDd+lQ8cb!e?Tnw>z?ox&M2>9m^7stQnA-Olu2Lg-vpN5l)Ag}1O;m_2E@ z5@tY@3@L5QJFc_=P-37i!@m=HQ=mOR^=n&jeROmD)A7$HYHcs&rysTK9|w+A1AY0a zI(MYX_2#eE{YR^QKL7TU;E4iVXWG^RtAVZF(y%r!>jG}ATE@TH6Yz6Olb@V>)T)z;Txpkn`&2yxtLYO+>&%j!=Fst at@R*GdlW$s50UQ=7ftvZ?Y%_EviTcJVbnzc diff --git a/__pycache__/downloader.cpython-313.pyc b/__pycache__/downloader.cpython-313.pyc deleted file mode 100644 index 09d984d31a5a28b1cf0b6cec82089778e606a87d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2197 zcmd^A-Af!-6uL*sjs&y4YPek*svtxU)KR-8FY+ zs|~aS+CmHkQ!sQ3()gG@^>2vr53o2(We^Ij5c*bXLGYzLcXqBruq1u&4BYd(_ndpa zIOp6$MUfGFU;O>~!p9s!zmX07SQi{#0q_u|P>PvAxK0_&z@D98$2rW6^OzqOurTh! zzHt$YDoSx}2>Vk!tkOIa5q>AC5)r``Z(f_qrjv0yK)}^&@sY&v*CU6Bu!76z@OyCdA<8h6nPLWAtfCAJ0wsCM_h=Ypd~`?elu#NaC3@=7 zK^KC~26~zaP?TZ^T}vz~F=;0G3gvhd^fq}ril|*kn)6dVV8@Gy^DH%@w^;8^<_y)7 zJWG*BAwJJTo@xdU*)*FxiNcf5v`|bffGn5hlIQ8UM`=Dv{3*XrG<*8~OMY(f)avP6 zoU-BNM)0gWpPP9ULVf6>>vA4$6j&8?A{G9`k3(E1DljjQ$iGx#;-wPPb%}^CQ8@>G z{PAf0OEp$rE)~nUyk44Dp$P^C25ffuR;3yEzixb`rgEQXdBRY0hH5jo(&#cqR!p3m zGl3aVY+(uOCDZm}?RG^oOvC2pH4~F|u$ypBH?(Y_jI)NBGb@J8mzT5>CiQO%%UCxx zTbwJGObrx>cl4!#UWAjI`qEVZSRi6N)^hoXfXQ&MnS#ySv84rbv6yva0}gam803OV zKKtzt-knVw8a8H!^NV_EHddaiEP@qdc2qaVDz|2h1xlBH3>%iaXrGsM%8B&5!^H^ zsrT{iJ*9E&`s(%dNlOWD>U$TuA4R{5?q2A<7l-SOT?b0@djIBGOX+zW+6yRaqpPD2 z;#MF;m~R}3NbdVfMuL1Vu`yJ=ydz(#@x4c{g4voBIzEy?K}`uCKT~>YO3$$)UXyx{ zjWG!Ci7yyy;I_`S#G>3*e{(D-Y(-lEKW#Y^>ldD0^aI{*kYne??VudHByIPIXwE&Li_gFGCniph+%m6K*zDH*0`yZ6CCIL7#U&hzo6D#S#Y4O!dF z*rka?l?xK;g-DAIf1m73J&nbn+>7LllMIF^{uWMKz>lSQ49s0*AOnvh*0Px4*iWzo*u=Q>HDN?UhI9}y zxrTMJAxbamIQlU6l`%4z&y_EY4v$Svj+YDhi3*N^TPg`gg0DFRyLVA>D|C2sWu*}+ zii}tce0sB5Lp7i_qyg+;gA@?hL@z3mc4oe#y?ST+x8WCXQE5l=@iDZ$mhDG{M4QWy zjgB+KkqS~Cy7|8t$aSn!zgW1Voh(b^N1KvmTw>ZF=5}T`_&zb&g-95b!u9a@rYQa zZ$?SqZcsPy^~A;#NZ5D^D(Dd%+`F|!50rLw6BW1}KloH+w0iu~v}dTL`L2jqJJuZ0 zxNrIa*D9_>wcz->;?eIb)Dz9d#kN!1v3^j~6((L)Bzw$u{77N+dO*1kQ+O`-BNC4) zTS3F)k=i0F3$kd}7K1J`86cQ=!%RG;h%m~%2vaWhH6hW!$Y80!;dn|zR>O8mIkyrt zU|?Q4Z~J4xbcxp~1us64*<;>p)Fq}aTdj*KHz?<3jk1pbQK0gNpyttYwf7ITcU|cW zGiRPDgKJ9W&umZFcOuN3oIk&o-uu&yQ0<$~y(CF_6t8FZ-MRVW&1XFW3x}SP-&4P( zLgUi%*f-&{wUni|$(ov7RlAqe?w{wDRee4ELAd9{O8VqKu;`k2GPQc)^3sLN;l!12 zPkAN%?SJcPR}*1@3-r6cc!U>tm>F4Ba!X3?^-D=aUh!UN^TAMRSVoVJ><7Ilr-lzn zi`mR@zqHsd!&>i%5-w+1NMxO$q7HaiRl647OFZwds0sUs?G;hw^M-2$GxQwm23PzA bco!((!}vKmu#67;i#}j8g~Yba)eVE?K$Hi z9$5J^{HQ>LQ7`e1`iQTp6V8aE5|Kvz#1Fi;6%je>iTO5}!5Bw_C$Ld)a+!ju~mqJcr}wHg=1S5jsnjgyu!hwYe$hEpastfWDlob6PlG?dAc z6i(WXL6RBM$fnp)?(hS_!++~G%palz=PESrf2hxZ^0B}7-M z!{=3av2#aZ08$qx!!?{sX_6M~ z;m(G4Z9WxaNqg+U@w%whF)z+?TFCP2e)p_2^YRMZsa}_QLC?I_!j_PTxM%9pu8*=V zCmLNjL#H7@wT9Zx@sANoG`k30*xjjs$B}9jp6+n~FpYnJ2?9p^15BOHPwsPlsIAkt zroWl~p=9j>Idb|J0h+@7ol)WMq8rF7nnrCQDIz4^VTdiEuDZ%~K2J+(bq^c;E-?Y=tH zSjMBGXW{lL8saA2@8h3E8Sd$riSBJgtaYN$1WrBtT%MW ztkwxDX3800#%ntyH&2C&1ZOB(^bd@v8^W+j0_4%~n;4~FZ zVB0CMoc+&7e`A+aZR1UxRt;N?MW}b4EJ64Vcm;B0U;t)cNz0wCQVp&Q$A(CNqq|>=U_tp=k&8vr;-C>V^rD} zmrR-Rkav3Vv(735U@(VTg;|IN^`)xeqGDkuL^3mICl{)51Gh6d6BCxfHVd2jA9RWb26VQ%wfy1XNGdlaA9`FzKAh!+vyUYe~SjP+j)kQV4fTUt1NW(7x3y= z(T3nJ%kB4sjtzhC-MNys{K{Q__sZpsP+RHT&0r-IFA9%&Bp-d~LxKA1z1Mon&GCxT zwZg4<%1ZaulMj^O)syR?$kpMWLXjfBULUy;SPGP;D)sF}?}k!WEWC59#J$u1eW39{ zq@@&Idi6%%Qs2!;C33JR-R~VNb*{C(u-f{<%7HRlU%3;#bNTC*wUG;}BNxgBF2g*M zDTeOHj=VQr%G`|}Tp>mIerO-Fr!2uA-V2dvoyHeu#&y&@Bi}ojd0_Q*7sXWL$|fhUcdGFYPc5;lj^RAu7&Ql{Pmu6 z0hl$ZWmRe^HQtl{jayjtKM`r1bvi#z=!r{l`96Z5y{_fu%p8)FkxBmX$ z>=t;$e*{l=^Z%?LkcPbczq;iikNA~W9*T%Dh4QoZQNrqp9DoV(E^lRW+3hl8HBv1d z3f(4W+S|3n%BY$ix6l@li1ffjr9aQ*(*+avlfMAVI)%-?4i9;b<9DqP|ts Q_iuD`OX%d{^(R@0O?h}7mo!gZC%RI815j5k{EnwfPV z94e&tfGQ+7q?cZrLl3FcLyqLsO8f&LgNnA$MvbMar&2kGsy(zbYcF=Hj^&y6{ocO$ zy{QKRUO?9FKc5s|IRJP?8Ee^^MExNlz5p4JVbTE6)0SpZHe^fLk)5Z!J}8SIUjtChtglQeNaWX=mD(@*}@VyV8MF2kIa+vlg5HYh1=12B>qDiF$sci5H_b zBO+<*s-lUKuql@XQI!O^p(8P`3q`%87=cUmhJrVujNxB}Dnz0Vg*<*l{5b@PFQElp z6C^pW8yynVA@R=_MRgTo;=_q3Uz8s~K~xl>f)pwXVMuaGGR|vA5=szbaTOA|rzqm0 zP>>avZ}!GKNaKK={OcDCZPWny^ zIF`FDyVjY#%>E7$s`lI!OP6iSwd8B7*V$IXRm-~7r#Ea}E!!+ub7Yw{cP?!CEcaVf z>l_9dPs?ZF2!J7w>#_7MAQD<-+p2MA*$yyu`4v1EBrsRm8Fn$=I15Yx+_VpZ0u%Kv zZu&%|%UH)T0=3E@iTlfEFMi+OWD(TO+{jg2K!KxRYYNq+*IwE z-N?hTE^Dg6>T(Gh4y-^}jyeo~zJd_>xJJlJ&Wz$}j<(@y&aJ^fOl#ulGUCa^N)|(e zS7xM=tghVA@|6+^g;(Ze{ch#K3NAuOIP*K9plDh-R(@>w+IU2<7(g3_WW7j__Kv-Ut)W{7VJL?j+}8<4&SdWZz#6&+fT?>JFa{B=$f2?*5DW->+A1E*%Xl?aiHq zMxR|h2~E~Qy@%nswuxfb{>W%pAS9nKJ1GB;J<$4zy9}yohbgobTmG_J)P_Z2i@Le+FnJC} b&cU^F(D#xHZ3RxbuB||w9cFsaFtPp@sgtdd diff --git a/__pycache__/utils.cpython-313.pyc b/__pycache__/utils.cpython-313.pyc deleted file mode 100644 index e5df640f62f5b2e207307b19eff8d31968ab68fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1127 zcmah{&1(}u6rb7MY?7{NX~{v`rj4bF5viq+LPag9wF*KGS#yxahD~<1S;-eOyI3#M zV_U)WQt{RzUOW`~FZds%q|h=H1wDBSMyPnvH~E6bL*KG*-<$Wbzj^Q12n6~Ni23(* z?j=U(yKp)pwT;G2Fm{lRbo>O-))!N(OT&mtx<{9X(F;svT>)QN#S!&~D2!*JUspU} z$?!Jfpmxx5H<0N3rF(+V1pG;tk|-)FKoX+5N1|=dj-7ZZ~NQz-H-3;yKnbX z?#x1TI^`}soL+j)A%#nnaGALo?qLqK%Mr{KhpahFfDH575ALLrj8K+}nFYI;S}bMV z0x3Ey^~iP}yO|Wr5dxm;*m*Wpe#Hl~d14gP26b%aq>Dy@P%%gWn2m#4N2gk#GP^Zf z9hy3j4i;3a0f4Q3`&XFx(4+_J|D13G)vMVlD6{3DjkGV6<#&~Y8`zEj%-A$%C)^9D5}BP zIUpjl3FJ2z7jLSwhaz6?ZYc?XqwT#)s3;|+gcq9iNVif>;)FonBS|^hW>8pg4xUcW zFoFsJyhl16C(%`Ot2;mwx>!;ejiWF;7ggSq$B~62QXCkQiKyJ0GgvNfXSm98#!PgU zE2T0ia)lDZaX4To@lj;xvXDq&7U;XcdG6Tt|sidsTBwz!;eEv5k8Fi2}pei2QJ zWI6@`F#%?P0_p^Um6ffPS|GH(bm|Xm+AOOGC%n$e}h;(?V4xbmoOqDElw)hl$aBn23$apGW&*bKVGk8u3uEJsK2B z5V=X3CN3&i)1*lYw(oACWV(5Bp9-GCY!MTbt;-nWuW0C}g7E_WrDA-&p?dIGv+^H1 CAlTRd diff --git a/config.py b/config.py index 5583b9a..656c7ad 100644 --- a/config.py +++ b/config.py @@ -1,7 +1,9 @@ import os -ZIP_URL = "https://docs.google.com/spreadsheets/d/1S6WwM05O277npQbaiNk-jZlXK3TdooSyWtqaWUvAI78/export?format=zip" -XLSX_URL = "https://docs.google.com/spreadsheets/d/1S6WwM05O277npQbaiNk-jZlXK3TdooSyWtqaWUvAI78/export?format=xlsx" +SHEET_URL = "https://docs.google.com/spreadsheets/d/1S6WwM05O277npQbaiNk-jZlXK3TdooSyWtqaWUvAI78" +ZIP_URL = SHEET_URL + "/export?format=zip" +XLSX_URL = SHEET_URL + "/export?format=xlsx" + ZIP_FILENAME = "Trackerhub.zip" HTML_FILENAME = "Artists.html" @@ -20,11 +22,10 @@ exclude_names = { USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0 Safari/537.36" -BASE_URL = "https://artistgrid.cx/" +BASE_URL = "https://artistgrid.cx" ARCHIVE_URLS = [ f"{BASE_URL}/", - f"{BASE_URL}/index.html/", f"{BASE_URL}/artists.html", f"{BASE_URL}/artists.csv", f"{BASE_URL}/artists.xlsx", diff --git a/update_loop.py b/update_loop.py index a2cfe2f..68e05dd 100644 --- a/update_loop.py +++ b/update_loop.py @@ -7,11 +7,11 @@ from archive import archive_all_urls from notify import send_discord_message from utils import hash_file -last_csv_hash = None +last_html_hash = None last_csv_data = {} def update_loop(): - global last_csv_hash, last_csv_data + global last_html_hash, last_csv_data while True: try: @@ -19,29 +19,30 @@ def update_loop(): download_xlsx() generate_csv() - current_hash = hash_file("artists.csv") + # Hash the Artists.html instead of artists.csv + current_hash = hash_file("Artists.html") current_data = read_csv_to_dict("artists.csv") - if last_csv_hash is None: - print("ℹ️ Initial CSV hash stored.") - elif current_hash != last_csv_hash: - print("🔔 CSV has changed! Archiving URLs...") + if last_html_hash is None: + print("ℹ️ Initial HTML hash stored.") + elif current_hash != last_html_hash: + print("🔔 Artists.html has changed! Archiving URLs...") changes = detect_changes(last_csv_data, current_data) if changes: message = "**CSV Update Detected:**\n" + "\n".join(changes) send_discord_message(message) else: - print("ℹ️ No detectable content changes found.") + print("ℹ️ No detectable content changes found in CSV.") archive_all_urls() else: - print("ℹ️ CSV unchanged. No archiving needed.") + print("ℹ️ Artists.html unchanged. No archiving needed.") - last_csv_hash = current_hash + last_html_hash = current_hash last_csv_data = current_data except Exception as e: print(f"⚠️ Error updating files: {e}") - time.sleep(600) + time.sleep(6)