From c679704e561e992ac21b48316e50fd9aae3811be Mon Sep 17 00:00:00 2001 From: david-ajax Date: Wed, 23 Jul 2025 23:43:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=AF=E7=94=A8=E6=80=A7=E6=94=B9=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/auxiliary.cpython-313.pyc | Bin 0 -> 337 bytes __pycache__/particles.cpython-313.pyc | Bin 9582 -> 9159 bytes __pycache__/reactor.cpython-313.pyc | Bin 4425 -> 5066 bytes auxiliary.py | 26 ++++++++++++++++++++ cache/voice/臣密言:臣以险衅, 夙遭闵凶..wav | Bin 0 -> 24768 bytes config.toml | 5 +++- main.py | 9 +++++-- particles.py | 8 ++---- reactor.py | 20 +++++++++++---- 9 files changed, 54 insertions(+), 14 deletions(-) create mode 100644 __pycache__/auxiliary.cpython-313.pyc create mode 100644 auxiliary.py create mode 100644 cache/voice/臣密言:臣以险衅, 夙遭闵凶..wav diff --git a/__pycache__/auxiliary.cpython-313.pyc b/__pycache__/auxiliary.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bcd17a10c9f84aca0d7f49987da9d76d8852bfc8 GIT binary patch literal 337 zcmey&%ge<81e$*uGFpN3V-N=hn4pZ$LO{k;hG2$ZMsJ29hF~Tsh9bsvMos3IAO(KO zP-S2Wq=y-ZKN|swsSMFzK@brHXCW9$45m;{FrzL|rwW56lV4^-AR~h&<1Lnw%-qzK z44*+NZt3f1TZlX-=wL5hsw#2*ky_K;i>4BO~K&2JX)+OpIz^?sImacE>x^nB#(U>4xWQj61!3}UoeF2ddssOln@Mo0e9pF4ra_a$>gUXiX~`R^7yw zDUcc3d#HZQFe}s!wm3Qxkq)rMj&I0!?2<1<;*G1m2{O*B$Q!ZT177|f@YO6BcdM$V zMOAf$+a<|1miKEg7=n-!+0SyAUGr}l;JG5L4B?$>Qg&CYf=*k6+4ew^Jk9h#ABnTi zm2UQNU@)binP|HTnptq#ypjz2J)n@?EEr6H$<4$VdpX$C=>n4r0!0$g-w%Qhk{8&e zU^is>L-0%DJeKJgJ|1TuhE~Ijd=*+x4m56r2FN4ZP`(|&cI9iOYDTg<^`-u*MFZ02 zhFMT(&Kd+653eP8Rtj%?c)5mrgmL1WUf~cq!`zzkY$nS7BE#(0@ai2=e4Iq+M_7k2 zh_C_SQ2^Tqowtl!Nw*4>Jl%vMPgS!DMdPsTdIk>kIn+JCM#Y})5j;92z!TPlgUl+C z^H8k!#S|NgenJd(C8~6^_9rLtu7zWL`xP*O%6lQ6me(xJseTtomlH>?$lMNQYq_Eh zE1;@I*|1dg28Q=JR3)Vn^1&{$(WRv@#R;UUcaIDF6vgsljz^3x~r>mPhQ1FBU-l03V!^8L-jqQhn+ec^@JUsKLkJqe zVT3$_j=(2r3QyAr1q5d>@PuPS4Frb`_S2~#r-)#%wxr2-m>yxh{oU+b@(FUhaV%>+UorE;uc5{k0AR`8aAPd_5^Z?v=rb057M-+sGplci%(GAXMwf4@UImRrTPo^h zhr(Tfccv9`hLzKaSzOAD%Td8{IaD!tHbZPrt$d_hd8M3byKk>~bC09d351gfE4qna z@#3d5O+Z~U25>_7LzLamljv=~%RO?tU3Q25^b>d5*~uAb^dvdU3jNg)1+*c1UOYZ7 z_Z?nPvV+*Rb=9Jl(+ibiUZ>|+c+Fa#As?@7#&h2+_;lVoiQv%T{vMtX&cdIGFY6P+ zf_v31k+{beB|#1?;>qESYEUXZfOu(Bcwwu8-3BjAqiATfP9H)k&xNPK3&SJay^Xea z1m51YqCQF)Sm1vLCTiT22q9Mm|5c%b|HkgP*y9hxViA(QB>>!6FOjj^0strUALQ}_ A?EnA( delta 2697 zcmZuz-A@!(6rZ~@v)^B^%f|w{>>?FL3l&l^wkRc4ORPdIT1BOs%`(W={eU}zN*W8K zjirjUc+*&86KynUX`9xBm?r)MZ5kgi#*_?A<3p3ihnga7c<4iW&K;Ho!vuaibMCq4 zp8Gq$b7y{h?a5y6qQ~PD;2PG)2DX<>dCSR-sk+)xv0LaSuS-}!UBPlaPRju$J6l(1gWS=~(=!4iG^hhNP!5>a?)P z{WeL>9qtpV9`8$xXnGE255Jrd~R3q2`3|Bg#>G4diFV#OXEgF)h zru!*|p=AJ?2oQ}%DQ3owNnsLZBhu$KzIu|dB2SQQkz)ajH%;gUoI-F4b+SG=T2hY& zoI57WRfQ*{hxQP4u&eU;MqHf602Gl=qnqL0kWVGj!)jqw_KLNNY-YXI4aC95ts&Al zbIp2>6#Kw=?KShReFy2O1LI>WK&Rs56c}PAab^_-$cQ1++;FzfB-#ar0x^n(Cu7)# zh7;+OKBA#uar>;o86hvQ?arT~_e08q(B=tg(mNLlUyodkd{z5>!*s*_(6$NbqL(^m zVy@lfIZh!jLVYr?{p z>>E!E<~3G_*n82YNCQr@7}7vO8!#)lW~r^-Xw`9W(TV`ZgkODuPj+3|H?{A9FE(qB zK~;vlNByWauGeKfvN`WY5@-K;L&Px?^4%dG^q98Nz3AA*=Ka;g$^P|kA<3ENi|UB= zO|*Bjp5n>?cj_x!ZQ$GOf z3PhD!d{Pj$AiRXI1EC#ZHv(>$cCar3f%;y&?MEm^c&79C?h(A~N#K^1H*XL-jC~vY zk_@qfB~jN(Ya~UkepV7Yy3D*Cx;oL9&=V&6H4vzK#!DHO?u|aA{X5z|9fY=r2}Mi9}I$?yWoeufp7r9q#ExIA{;_^3*j)rAi@y< z4ch@)7%tw$6ge=;^I4=agE^|l`)Mu{?@y)G(>NsuFeW_m1ul(zH1Z4ES+t97FRuY1 zKnt>;i^lfT1bEOSfFc_1thu9jI;H8RGS-$IeUWq{m|s;(oKoX@j;}ZldI+<4$VUc% z>o)dXsIr7-|4el{*l(fo(Q^<-^8>(f>noitYr5V1z}GTsZ{dtVzwiPfr=5y#J=M?@ zjM0+_X#^~aDUl4`Wf2N8>A=TTTET-nHFvKP*G*c{t@WMGx&daV{ta0l z8C2tDHF(s*B3Mqtj(Xv|q3-f$A#a`c!LW{g0_}P(lS=M^TCGUv0=lXIAfaISq+_n6 zV$$M##5RO`pl{EH-K1#@Minc?pk_9_3qHU{z8cs5ngio*q=GQ^Fmi;SF_&7#(RV+F z5zR1sGSa=AHoQ93Gdksmj0k3~IJQ{bOg>{9qdN;nRd~5!#I%~FJj$Ad??t2JI{PzP zF^V0iNTv%{{|Ygk@TRs6XHRBxr?ZM<-8$F8Wcncj(nBvHtg0kFIuXw1;XK@E_|`io z{B5zxhe+vDza+Olbz0@(f4oGlF`M!%6gkB1#G1%W_D5{6m2XC*oIoy@b;S!|;oAX9 z*EpC?B-Mdjx=*FI7^|u0yUc$ith*EQ0K+ub%b(!@!cF*J`@PV%nEzgAGjm5b#Z9>g zyKx@8hDQZMO6CSf3@d0gl|8{Vsp40VA-$vJvgUh|Z;$Vc^TijnV+4LmB9Vr@6+R<| z)9Oxo4IT;nYgn|uL_)~C;GGv-`9IIR;Dh@mNhF&VUK9YAoC!ke7X-wmJz^Qzwjcm3 UHJ6f_1p#2GStM;w!PVT!|0&8M4gdfE diff --git a/__pycache__/reactor.cpython-313.pyc b/__pycache__/reactor.cpython-313.pyc index 762f5a48f3cbd877a1f8984682d38e6211e2b89d..de9b7aa642d180e50bc7b3b540fcd3543c88c0bd 100644 GIT binary patch delta 2332 zcma)7Z)_Ar6rbJO-TTwqZOiq~wNN-(TUh=Tu~o5@go1^nwxM@9i$Oe(yX|r2xI1RI zpnhpFSPl`P86ZInwoyY(P$3FviBUco{a^|uDK1UKq}OY|L5qT7qVx7{DWV^oWPkJC zo0<3Cyg#$wSN^a_nh`|@qGRlS&yF5vpX82gpxiO!Lq4Vj;q1&{*5EDJ;zpIo$Ce|X zrJjXz2w~2Uaa6`Xkns^l7N%giEd*!|CP&P;`*yirz?{#5`3NWTy0AHjRRvG+bVJwE z6ehpEG`0V5X6SV0Kx*Q>GZV-6k6*eldHREiQ%BM#2A6pBEQ8Lr2s7z3I=snmjjP-ZA~*zRZzcPmL#?>YaM? z(D;`<6K4i;@h~nvael8WGk7rb?!L+M`zD5t)Mh?8o;mhW-<>6eaA^zuW-2KjLt7cL zi*b=ACfe<1y#;jPk>Ntmb1J(MsjLfa%10=%!8_-XEtK_h0k*Xep*-Y4aX!xZng71TxEf}i&m|4T;|@-tgYOtIH(QnRynE*W6UU1mx7g*rBF^;>-mPkv-eiO7n@z|aFR z$vovpUMD%k);#C8*5^vigIae|k8@kS9&_vL{E!=!vr?1tR#P{ss!k#FKlYV7OhYjj z$+IjV{j5v+hcCa77E6^}WNLp%=MqykJ7+`C=tr>!k&4jNc<2}BI+1K?!_b6Na871&>I&-?g0Ax<*70{uJ#za*G!codv z<6WVcLKSmxR)sqE9#;18jos$fL@Smh83m+9wl`(gNTElzrC#DWJ!v9TN<0^ zIoX`zuGz|NHf$PgXusOfKH~OLJX`&K#fgeR{%YCsD-G=_aoFv>Sz0w(y6jr%ved@w zMGHrZs;?AP_s70yy4Z5AWwfs4N?prHUF%3u+wkU&Vb>PY&UXui$i4h_5gFxI%=vwK z5i0XBD)i4~sifJ-5r?3OP{&h$(IE?XF*ztytSp0j2%W)bObP3JG#*x7l`VKFNO>)) z#S~mmX%%{qUL8y1y0DO0O#Tp-&x4mHlzT)ei4X+HXx2XwS#P~hUa~c{8WxQt!wLr0 z$T?m^DVfFaR2n9zM{|KL2LP`y)QoP4DRI1-QZkR1lHY8#j6`be^+GKbsRu~Vo)Yrs zq#RiM{GMHBm?y|c-qHwIk?r^?I^neda0mP(1>M@2zT-<;l{AqOhL~#bDUGLjs%@&pE06f{ubyqBLYSg-k=OTSs;YrV`h7rHabi8NHyfJ z=-?N3 zqp;IUB`QR#2aVapVQKy~+X8Y^tY$lulZuoYIJy09GpdJE?PETEt}*3s^ahMH*!aLd9l%nc;oKqWVjbeCh8^~`Mqcvt9PnBr*!Xz2MH DwtN-) delta 1606 zcmZuxO>7%Q6rR~1d)HpuacmPOG$go9!xlBMsu~GFka9@>Xsp&tE2O3}#@?h0Tid+d zw1fjG98i!dN-{)3J;4bfAyLGE3lj8H6%JJdqG($V9CJWQlOp~k;JvleR)UfC+c$6C z@Aqc+o6+lq4Vjx)@WJ{V+Dq(oCy1y*>|MmM7OBrAHjF3@d%&WhEdc@i= zE%7`b-x+Ats?&7*YBlKT&Sz{}Lzdp3OdN_1nbXI=J-MV@Ox`~B+;_)N`d;h5o$Y%+ zaWg-*mLI!f+$>J56{mj49uU`~i_sLz9prax$>wZI4=@p6Qf4g4FhWx@A2nzDQn)6!56d#k*Qo zbx~XufA{3M9I|mErHU0JBUQrf;bFRYyo>}#D4gQe&e;$}(d1!Xk8Wc(;ZtN`Y$qhk zBdGDHhYL)&JtN5fO3&{H$50Vcj2y+uCkpmC$7?|#*BXsZyBXAXrwWgRHm}U%b@mq? znCn{lVO|!$q+d8n{g_5)DB*aBnXt@Gw2)A0phGAng^?dSDvHVAA5pt*s zVv~6Fo%#X1XfRAJG+-zZgwvpYVG<$8RjZy~^PM_=NxH@r{Euy@+Usdy)N&Ji5-JMd?n*~WN{Hkec zt`n1@m`V`w7urs9F3{UG!1S)|g{6my;4s?UuOQH#KHF-{yY@416c1=_ULV4S%sIcs T61UhxzbO^YbDK=3SLpdKE$~(i diff --git a/auxiliary.py b/auxiliary.py new file mode 100644 index 0000000..442ca20 --- /dev/null +++ b/auxiliary.py @@ -0,0 +1,26 @@ +import time +import pathlib +import toml + +def get_daystamp(): + #print("Daystamp: ", (time.time() // (24*3600))) # 20292.0 + return (time.time() // (24*3600)) + +class ConfigFile(): + def __init__(self, path): + self.path = pathlib.Path(path) + if self.path.exists() == 0: + self.path.touch() + self.data = dict() + with open(self.path, 'r') as f: + self.data = toml.load(f) + def modify(self, key, value): + self.data[key] = value + self.save() + def save(self, path=""): + if path == "": + path = self.path + with open(path, 'w') as f: + toml.dump(self.data, f) + def get(self, key, default = None): + pass \ No newline at end of file diff --git a/cache/voice/臣密言:臣以险衅, 夙遭闵凶..wav b/cache/voice/臣密言:臣以险衅, 夙遭闵凶..wav new file mode 100644 index 0000000000000000000000000000000000000000..a0ad0ece8e4e1db4cf65306a9536885ceeedf809 GIT binary patch literal 24768 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 S`0VAeU;QgS`?vXD>c0Yzgz2{c literal 0 HcmV?d00001 diff --git a/config.toml b/config.toml index f4795b1..4062be5 100644 --- a/config.toml +++ b/config.toml @@ -1 +1,4 @@ -tasked_number = 8 # 新记忆核子数量 \ No newline at end of file +# 将更改保存到文件 +save = 1 +# 对于每个项目的新记忆核子数量 +tasked_number = 8 \ No newline at end of file diff --git a/main.py b/main.py index 0bfea33..f4904a7 100644 --- a/main.py +++ b/main.py @@ -43,6 +43,8 @@ class MemScreen(Screen): self.reactor = Reactor(nucleon_file, electron_file, tasked_num) self.stage = 1 self.stage += self.reactor.set_round_templated(self.stage) + #print(self.reactor.procession) + self.reactor.forward() def compose(self) -> ComposeResult: yield Header(show_clock=True) @@ -103,7 +105,8 @@ class MemScreen(Screen): if ret == -1: if self.reactor.round_set == 0: if self.stage == 3: - # NOTE # self.reactor.save() + # NOTE # + #self.reactor.save() self._show_finished_screen("今日目标已完成") else: self.stage += 1 @@ -116,7 +119,9 @@ class MemScreen(Screen): def action_play_voice(self): def play(): - cache = pathlib.Path(f"./cache/voice/{self.reactor.current_atom[1].content}.wav") + cache_dir = pathlib.Path(f"./cache/voice/") + cache_dir.mkdir(parents = True, exist_ok = True) + cache = cache_dir / f"{self.reactor.current_atom[1].content}.wav" if not cache.exists(): communicate = tts.Communicate(self.reactor.current_atom[1].content, "zh-CN-YunjianNeural") communicate.save_sync(f"./cache/voice/{self.reactor.current_atom[1].content}.wav") diff --git a/particles.py b/particles.py index cf0699f..6b74aae 100644 --- a/particles.py +++ b/particles.py @@ -1,11 +1,7 @@ import pathlib import toml import time - -class Aux(): - @staticmethod - def get_daystamp(): - return (time.time() // (24*3600)) +import auxiliary as aux class Electron(): """电子: 记忆分析元数据及算法""" @@ -69,7 +65,7 @@ class Electron(): else: self.interval = round(self.interval * self.efactor) - self.last_date = Aux.get_daystamp() + self.last_date = aux.get_daystamp() self.next_date = self.last_date + self.interval def __str__(self): diff --git a/reactor.py b/reactor.py index 663a32d..59db57c 100644 --- a/reactor.py +++ b/reactor.py @@ -1,22 +1,31 @@ import typing import particles as pt +import pathlib +import auxiliary as aux +class Parser(): + """轻量级版本文件解析器, 用于解析记忆状态""" class Reactor(): + """反应堆对象, 用于处理 & 分配一次文件记忆流程的资源/策略""" def __init__(self, nucleon_file: pt.AtomicFile, electron_file: pt.AtomicFile, tasked_num): # 导入原子对象 self.reported = set() self.nucleon_file = nucleon_file self.electron_file = electron_file self.tasked_num = tasked_num - self.atoms_new: typing.List[typing.Tuple[pt.Electron, pt.Nucleon]] = list() - self.atoms_review: typing.List[typing.Tuple[pt.Electron, pt.Nucleon]] = list() - for atom in zip(electron_file.datalist, nucleon_file.datalist): + self.atoms_new = list() + self.atoms_review = list() + + electron_dict = {elect.content: elect for elect in electron_file.datalist} + + for nucleon in nucleon_file.datalist: + atom = (electron_dict.get(nucleon_file, pt.Electron.placeholder()), nucleon) if atom[0].is_activated == 0: atom[0].is_activated = 1 self.atoms_new.append(atom) else: - if atom[0].next_date <= pt.Aux.get_daystamp(): - atom[0].last_date = pt.Aux.get_daystamp() + if atom[0].next_date <= aux.get_daystamp(): + atom[0].last_date = aux.get_daystamp() self.atoms_review.append(atom) # 设置运行时 self.index: int @@ -71,6 +80,7 @@ class Reactor(): return 0 def save(self): + print("Progress saved") self.nucleon_file.save() self.electron_file.save()