From 4dae1d037f5d6f356b70300111f914139e6891e4 Mon Sep 17 00:00:00 2001 From: Lukas Pupka-Lipinski Date: Sat, 17 May 2025 21:31:16 +0200 Subject: [PATCH] backup --- __pycache__/Loader.cpython-310.pyc | Bin 0 -> 2702 bytes main.py | 65 ++++++++++++++++------------- 2 files changed, 35 insertions(+), 30 deletions(-) create mode 100644 __pycache__/Loader.cpython-310.pyc diff --git a/__pycache__/Loader.cpython-310.pyc b/__pycache__/Loader.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..90bd0ff09e40718107a6f3d397f26825f76f8602 GIT binary patch literal 2702 zcma)7&2JP(7VoP5oSyM`Fvb`RNr#xkv#TDVU3OQp5E}~{;SI47b|4uUjhd#qDnK1bTT2=rd8bOiP9QLS*)Eqal>h-1$J&ugnY??^&=#drM zO*?j)j+z@$DR!GK(x|>&CMM7dv55V(4l83++piLbln(H7)Ep-+H8(LSlgd{{vqsRG zRv-H>XrQgskuVpMFs5}ZYWME1K3HB{y5G99v;f_jm{?wUuyA*Iv2|}@{Z8xForU{r zAW#Zerx(+NXL*IBPm(ANNFz!+dHw2KkhQryE%SWu>Rd$kXp{uU^O$B?(1G2$E}YFU zqH<4|icMIXDT@Q%tSzoST)Dftu-IB({%mRW^Y!oxtZBjwq?&Cc)js+p*5lA_LCZKW z722Zq0zJAuKm_drdPM&U*0#~2_8c9c0WQ!sCdLkCvjzTEBPPssVts268@LQuab8*j zJvpm(ONv|Wx{9y-2A?y~xw&oa%k%9*KfnV6=8jq`6~+M~6*BfUMjChb%cNSs=`ZmC z0?&;XXukqdWAe@eOlsr|nILD$WMPnVWQv^cln18V=hZ!p^?6l}FMwr_N&~Af_s7X} zVRh75yD6`2pJD%&cK{ax3zXK-E1jVqS$2V31Vm;OBIXbe(5NIe+Qs>d((;njl3aeN z%T+$HeYP-3g-??AWK1cJ_fPD22y%wxI@kXJY4Qh-DdO=-IO79#+m*L&15}XqApe3O0q3CtacvJV2*U>e*DfUbn)V7o4l)C{AOmsZnlRd10ehvf zDlGkSadCcw(Qdi{Ir=1J5!tv4$wpbD+ZUx99h%UmU3POyUgQA5&kSt>8Hf4IabDht z(smGKHyg*?Or}s?f&~36-3zHF@U=hX22AI2v)+ii*VSZAprt0h_UCm-c!xd>Gu}#f z^7HpVn}CH$$K$Ctx@6wVtv>fj)XgV+f0G3rSsi>vISXmlbi!maOhQicDc^6WNxR3G z+#fM!0$tCspXRpj@Ag8<^D*B~QvXT761XYLUElArw8Nl!h6$5wzh%%JSbse< zXiCe^FEN%fkM$Di0jXykB%tLxfo3w!f5$cdkZhNMW&L@t{=P7_(=ZVx z4|zm|mC+ze6JgVCn5BdYCkm2I51u1|(@YrMfNzN!px*8A*6}&QiGv*q(@fYv)q7>b zTh{?tAUcxGRE&4%NT3yk$&PR!SocB*PbRB?u;^1x6T;-%FDhvg^;<`H3ODOL2Ie*d zw$K4=HY0he>%%}wGF!ahnHVMma( zptHbiXgzCh35zMw=8&48JzMV}Az~>Sx%8(6PTt(vV~hh!_V '{cleaned_string}'") @@ -95,11 +75,36 @@ class Loader: season = match.group(1) episode = match.group(2) logging.debug(f"Extracted season {season}, episode {episode} from '{filename}'") - return season, episode + return int(season), int(episode) else: logging.error(f"Failed to find season/episode pattern in '{filename}'") raise MatchNotFoundError("Season and episode pattern not found in the filename.") + def __GetEpisodesAndSeasons(self, mp4_files: []): + episodes_dict = {} + + for file in mp4_files: + season, episode = self.__GetEpisodeAndSeason(file) + + if season in episodes_dict: + episodes_dict[season].append(episode) + else: + episodes_dict[season] = [episode] + + return episodes_dict + + def __GetMissingEpisodesAndSeason(self, key: str, mp4_files: []): + expected_dict = get_season_episode_count(key) # key season , value count of episodes + filedict = self.__GetEpisodesAndSeasons(mp4_files) + + for season, expected_count in expected_dict.items(): + existing_episodes = filedict.get(season, []) + missing_episodes = [ep for ep in range(1, expected_count + 1) if ep not in existing_episodes] + + if missing_episodes: + yield season, missing_episodes + + def LoadMissing(self): logging.info("Starting process to load missing episodes") result = self.__find_mp4_files()