From a4c8caa38a6c5dd090499c3658f8c4181b8f0569 Mon Sep 17 00:00:00 2001 From: data Date: Mon, 28 Apr 2025 11:09:36 +0200 Subject: [PATCH 1/2] =?UTF-8?q?Media=20design=20f=C3=BCr=20Handy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/icons/close-144.png | Bin 0 -> 1323 bytes client/icons/muell-128.png | Bin 0 -> 1901 bytes client/icons/stat-100.png | Bin 0 -> 1749 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 client/icons/close-144.png create mode 100755 client/icons/muell-128.png create mode 100755 client/icons/stat-100.png diff --git a/client/icons/close-144.png b/client/icons/close-144.png new file mode 100755 index 0000000000000000000000000000000000000000..296635b177cd88c34adab35fb86d2704f5748472 GIT binary patch literal 1323 zcmY*ZYfw^Y7{<+ImF#l76k38{v}tZCcF{O&X2)A7L29M8b`#OUFe5vrWurw06On4w zLfH|w#5OH0B_|m(EioM#8#7mn3NOcIBgM3<+8%eNAN$Qb&+~rIyzlq@dFPRE*ue`3 zP6Qkdw;(hG+Ky?#9IWsdqd~^Im{_NTL?6ZB=G)D|0(Yf^h{IXF2!%FB!X>8C@Pk7^ zME|C!sRIA{*@go11N6vOOXd3&&52?`fQ$9T8?`!m=l;><%}e4roY*079t~T12FelOl}_ms<(8hPWbs zNSLFswnavH<7sCssV4}Agb){1@OZs{fC->AGL@+Yt%GiOczE`hi|XEEws`}r8221C z8ddk2n#TI;P1V)a#S&8UfVXWBlDNn)f=x5wSZdh>Vr!s>sMo5_X!2~`&#!Vz|GKw5 z*7G%5V(TthHJp!z2%BQZKa?VwzluuH*RRVItZ)2zaXPKW6%~F~e zu~F%&J^AF4dELj!Wto1gtA$lR8ouZ`(x;FmvZ~5i4|Mg6_7>;P^WZD$3acEe-{K)? zjj_g=Gu#nPZxnpCRzE>5T!b?%Bcq{qE_mI-gy>F!dm#CMb2OTKI_{ZOT>1 zg%&t$_q$^4X9fpq-v{>d)!Wp5DhNzhd(UyD8^$~}g=%yQ8$u91jT!`jtL@yVMlLk~ zYAw%05u_~xddyf>CB*-eptQN$Iv6&T6c#=N2L#3^d2Hu`6l$#(zS5WU3;<-m><)y$ z_37xoh%3$TI}ZW=c6LL=v?*<%w6xT;XC{OF)O6sW-|El~&rS#e)2tbGb)6tqowD-z zULE<*OGsJDWq~6pb{HpkAA9(P)@QTCS2bG*B~{&8u+G(=8I=imyJLZL8PBx_=gM~L0Bg;|nW9p<`}SD4AxA>`k`O%{2p#0Y{$A-XjQ zd?mVA&V1hL69A>9EY({9ZwA*Z0V-Ab@J>mo_xr_iau2Du_hr=B*rBPLv&?OAljkah zc%Sj`q*v=m)QPk0u+8*~1wQikuuWbWg^HSqMAjClYtY;4ni$Ds?tEeFd-o~Zt-?oE z=DmKM9-B7#VRexGhR)ExJqxK0rDLv2in z_5i^_j>0R+Iem=!#Xum!pQu5!2Sm=?KQZ%SA7e)mFr~`!au-!5%7ByO_S}u45u-0j z56lcvRBLT|RQI1pWTq0kJqum8w%`sSZAYO$Jc4@8Pv5SE!QjcFtH_rbFl(oi3`J%E zxe&T642(wwKD#QVyA%x?roFRCjP2&jyxeHU+@tQf(>u+z4m`iF?zuNswuFKs)GMRm z(x_{^3fZENei_gAfx_t_&sQ4ERJm#^xuTe~dco!Bt^_!uyg1Lre1p^-COl{_2RxKd zsWGp@rN13^+&t(;>i$7Ex4|WJy5O{Dx|}n!e=yKdsG-D1+Ul(gsqBvCqN->2V;4Hk z)DhaAr59#vmebv(d`lsLu4?tk);RE>^Vn^*4spWz36BxdoaodvCD6#b#Ek`A;SQJb zUN{Jgf*_MQ?^Uwc#+XhpAS|P W7)hSwQE$$&IWIJj4OIv1&HfkoA6$?C literal 0 HcmV?d00001 diff --git a/client/icons/muell-128.png b/client/icons/muell-128.png new file mode 100755 index 0000000000000000000000000000000000000000..e254b3914dc902a61b8f22633a37a1db95a167b2 GIT binary patch literal 1901 zcmc(gX*Ao38pi(-t)NY#mQjt0YAw@S867*VrIx55jE<#(YAJVOkEOSRe==IvT8)uT zRkTrCFtL?{Mx_ZAOf4r`qbMnwl&E5?wOpP1^?twaIluS$@Vw_e=Q-y+=gq{qJ0Dii zPyhhnunWe)YhS^yzz*(r{)MZ3`ywBM@rwrlMdhzRfTCh`0Fcviaj^4FE?%Iy5>zj% zcMsUV=nN;)ui(S60a=Rt3VQq{bi6`(NxY|j4!ufVm+WwF19lq3^zl)ILs{uJPBQhK z>aCALTc!fHbUpKL>#DF>UAOu)SDL{;`&+TUS;hB{Z|+f|g|Ax0Uv^h)2Kv7{XnVBh z`Z-~1{z4uuEsk!jEW(X334LKrLabOP0k`C)TH>L~(-m%FGy?=@DijA6?{GpawHW-e z)s-GmuWQB1J|LvWjGviWyo1~{j9f*|o*+I^eh9k$! zCS%jrgWxmw8{9T}b2qDRGFW?q>+iTzj?u)wD&%-}7E&#BjR6MXpF>9uFgcgU>Zi&D z2XOscBa!3pXPuqw6OTy*VrNeCqew&X&orajmDMhE;ib1)N4|y5vNnx=JaEU@`Qx=en1YAzg(&uRVgI4u~X2bM@= zr+Sa4=H}((m7X-Zc#*kR0&`(-*eidF zU2{}BO&qH%hGA$Z4Sm+{$DejpR_-~gnKU^jI<@jqjk<5k9=j+|GemS%wOLABHESo6 zk1Fx|tdI?D%PjTLCO;IA&afKU+}nuI!odh%CgbL`lA0dzusn(cvp9~!gf%C`RZ z5Im;rp*~xs8jDw$2$6b8+6UcKCUlkT9j|V7e+*M=I^33HD;^@Ave+FsRK(Xw|5rUv zadk-AIx6<1RBrz+M^AXxjc#2>MB#k)51Z@VBnRufB?&F0TCC0K$wH&TnG;$2ZJHGUQ>Vwgv!dogAHQ97%oIcMy_7P+}3;w zfRLcR3P=<(1_Zf~e;j}#;O4frQvg*)4km|0p<)165;PqO|NpL=g-@}UwL0M5Tf*4C zhVJwj)|>K1x>zp<1L?TWXP@f~yHQoxHM?u`ou8ZMRo&E5YOluGtx`R_E$F zpzLMz{>c8}(_Sq!Ib5gQ?NQ7mv{dI`qg4`R z%y|^D&Tv?V`_r@rAu;v$%E)>61Y+C~!Nw3;)j9 zw7v}YecG;a-kI)g%VpQ~x{4LT*&A*B5mc}-zsK07pOQXZeJz#dx4YZ@)jIQIO0_cA zlWM$COel!D_+%a#fZ7n&as26l*IaZ8daz<9XJ&-nb#^g%b6fE1sj|WV!$lLcU&Vu+ zzR9LhsWH`oja&Ta-F{VQTIZb=GgN}OR8C<6S+oVa*iQckN| zm!f^PFZ61=o(nL3GjEyfEE_>2dogBGn#70b+;}O(hX8m*IcI|kg z!foD0bomeGw-$!wTEksHo`*^rb!_8MO_)IblNqwi2uW|NS?gI3I#In~EHt4dM>z`W zj&_XSLdc@@JZi127%yro6scOurGN)0s4Y6B6wr(v~fO2N#Q=u_7O4C8xAKKAMvS`TMh>xw;TG ztzMy)O~ePOGxRNlQqNb2%9YzAvyzv=nNF1Gf;@mKp{E;#0dqtQ zeDzhjns5}NVa=#0KMg^nMnh)irnVY@Lb{Q-lG0Oft-i{pGESfQ4g3Pa)V{;|+?CpM z5E>qZO;%Tl+r2v*ynRDpbYv`Cy>iYbGESa60zQ7BkemC%6R%ZPo<$*@C2q%#?cg66 z4rS#w^>fi1B1_FZ2P+s;&+jD)Da`5Nx z)n@AV!n|I+-)V*H+m{0&VNp<3_2(0>^;XKRUD>MO;^Kl{*Dj|NvVZ?>b+%kxUEJya z^i;~WZChYeXe3mg@4SCNAsr;)z=1t#&A3qg*HaVJT`B458&tvF`An=K?UHch@BwvB zP*Hxm+X?DQO3QbfWyNkMBQ`i-Zu@|Yr{~bQUTb-zB zolJ`jqNwPERY<;Mj}Vz%7X`R{sZ{f1T5J$GIp10r=;TQD2vJzJD8SaOn>A0S#Rf5N z{=(K8qSJNhPeYb@q9}lvK{q$w&^)1*KE%ZfB`|!17f^+@i2hNsOU&lyiNeZ-6fuj| zI;oakhUf#|nmyOLoNbF_&k%!gg6P~`-Aw9LU9FRA=|z0@`MTBxo~*&e#dD}+?@)!W z76o!0J`%FBGVNy6b*Hfo-e11l+L1qyWj zjLZutWnPk_;^GoCh{(o8ROVt!r53Gr@S$CXs1bY*QFy$l-IB8~n6Z~BNN`>>+M8{4GeC#|1QgRs+oC5h>n-Y?7m2do2v;D z!ot+1=UIl)-Sbh6F?fuZoEbtG6ZcEBzkbCZ24yoPXGc+tBl~(Cir65;=*#JwECfLi r1VIo4K@bE%5ClOG1VIo)aytG4Pb+Ox=RB`-00000NkvXXu0mjfeAGJ0 literal 0 HcmV?d00001 From 3ffba5d92a939d161f17f8c87b2b1ca0ea00f5e1 Mon Sep 17 00:00:00 2001 From: data Date: Mon, 28 Apr 2025 13:42:29 +0200 Subject: [PATCH 2/2] =?UTF-8?q?Stats=20Docstrings=20und=20Hints=20hinzugef?= =?UTF-8?q?=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/class_media_file_stat.py | 37 ++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/app/class_media_file_stat.py b/app/class_media_file_stat.py index d0e2d55..9e6440b 100755 --- a/app/class_media_file_stat.py +++ b/app/class_media_file_stat.py @@ -1,30 +1,47 @@ import logging +from typing import TYPE_CHECKING import yaml import os +if TYPE_CHECKING: + from app.class_media_file import Media + class Stat: - def __init__(self): + """ + Handles reading and writing video conversion statistics + """ + + def __init__(self) -> None: + """ + Initialize Class with path for statistic file + """ self.path = "app/cfg/statistic.yaml" - def save_stat(self, obj): + def save_stat(self, obj: "Media") -> None: + """ + Saves the statistic in YAML file + :param obj: Media object + :type obj: Media + """ daten = self.read_stat() - # Videosammlung initialisieren, falls nötig - daten.setdefault("videos", {}) - - # Neuen Eintrag hinzufügen - daten["videos"].update(obj.to_dict_stat()) - - # Datei mit aktualisierten Daten speichern try: + # Neuen Eintrag hinzufügen + daten["videos"].update(obj.to_dict_stat()) + with open(self.path, "w", encoding="utf8") as file: yaml.dump(daten, file, default_flow_style=False, indent=4, allow_unicode=True) except Exception as e: logging.error(f"Save Stat Failure: {e}") - def read_stat(self): + def read_stat(self) -> Dict[str, any]: + """ + Read statistic from YAML file + :return: Dictionary width statistics + :rtype: Dict[str, any] + """ # Bestehende Daten laden if os.path.exists(self.path): with open(self.path, "r", encoding="utf8") as file: