Skip to content

Commit 09dd9ee

Browse files
committed
Fix: unchanged file overwrites
1 parent 946b8b0 commit 09dd9ee

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

Source/Core/Base/Formats/BaseFormat.py

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@
77
from Source.Core import Exceptions
88

99
from dublib.Methods.Data import RemoveRecurringSubstrings, Zerotify
10-
from dublib.Methods.Filesystem import WriteJSON
10+
from dublib.Methods.Filesystem import ReadJSON, WriteJSON
1111

1212
from typing import Any, Iterable, TYPE_CHECKING
1313
from pathlib import Path
1414
from os import PathLike
1515
from time import sleep
16+
import hashlib
1617
import os
1718

1819
import validators
@@ -946,6 +947,21 @@ def _FindChapterByID(self, chapter_id: int) -> ChapterSearchResult | None:
946947

947948
return Result
948949

950+
def _IsLocalFileEqual(self) -> bool:
951+
"""
952+
Проверяет, идентичны ли данные тайтла локальным данным.
953+
954+
:return: Возвращает `True`, если данные идентичны, или `False` в противном случа и при отсутствии локального файла.
955+
:rtype: bool
956+
"""
957+
958+
if not os.path.exists(self._TitlePath): return False
959+
960+
LocalHasher = hashlib.sha256(str(ReadJSON(self._TitlePath)).encode())
961+
MemoryHasher = hashlib.sha256(str(self._Title).encode())
962+
963+
return LocalHasher.hexdigest() == MemoryHasher.hexdigest()
964+
949965
def _SearchFileInDirectory(self, directory: PathLike, identificator: str, type: By) -> dict | None:
950966
"""
951967
Находит файл JSON в директории по идентификатору определённого типа.
@@ -1050,7 +1066,9 @@ def merge(self):
10501066
def __init__(self, system_objects: "SystemObjects"):
10511067
"""
10521068
Базовый тайтл.
1053-
system_objects – коллекция системных объектов.
1069+
1070+
:param system_objects: Коллекция системных объектов.
1071+
:type system_objects: SystemObjects
10541072
"""
10551073

10561074
self._SystemObjects = system_objects
@@ -1246,10 +1264,14 @@ def save(self, sorting: bool = False):
12461264
self._UpdatePersons()
12471265
self._UpdateBranchesInfo()
12481266
self._UpdateContent(sorting = sorting)
1249-
WriteJSON(self._TitlePath, self._Title)
1267+
1268+
if not self._IsLocalFileEqual():
1269+
WriteJSON(self._TitlePath, self._Title)
1270+
self._SystemObjects.logger.info("Saved.")
1271+
1272+
else: self._SystemObjects.logger.info("No changes. Saving skipped.")
12501273

12511274
if self._SystemObjects.CACHING and all((self.id, self.slug)): self._SystemObjects.temper.shared_data.journal.update(self.id, self.slug)
1252-
self._SystemObjects.logger.info("Saved.")
12531275

12541276
def set_parser(self, parser: "BaseParser"):
12551277
"""

0 commit comments

Comments
 (0)