-
Notifications
You must be signed in to change notification settings - Fork 3
/
main.py
82 lines (71 loc) · 2.73 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import colorama
import utils
from Setting import Setting
from FileNameParser import FileNameParser
from DataManager import DataManager
from JAVInfoGetter import JAVInfoGetter_javlibrary, JAVInfoGetter_javdb
from Executor import Executor
from getch import getch
class JAVInfoGetter:
def __init__(self, setting, fileNameParser, dataManager, infoGetters, executor):
self.setting = setting
self.fileNameParser = fileNameParser
self.dataManager = dataManager
self.infoGetters = infoGetters
self.executor = executor
self.renameFailedFile = open(
"renameFailedHistory.txt", "a", encoding="utf-8") # TODO: filename to config
def getInfo(self):
try:
fileNames = {}
for fileDir in self.setting.fileDirs:
fileNames = fileNameParser.GetFiles(
fileNames, fileDir)
for bangou in fileNames:
self.renameByBangou(bangou, fileNames)
except Exception as e:
print(e)
finally:
self.dataManager.Save()
def renameByBangou(self, bangou, fileNames):
info = None
success = False
print(
f"===== 1/3: get bangou info {utils.yellowStr(bangou)}")
for infoGetter in self.infoGetters:
# Get the first complete info
info, success = infoGetter.GetInfo(
bangou, str(fileNames[bangou]))
if success:
break
if not success:
utils.logError(
f"Get Info from bangou {bangou} failed. File name {str(fileNames[bangou])}")
utils.writeText(self.renameFailedFile,
f"{bangou} {fileNames[bangou]}\n")
self.dataManager.AddRecord(info)
return
assert info
self.executor.HandleFiles(info, bangou, fileNames)
def checkDryRun(setting):
if setting.dryRun:
utils.logError(
f"This is dry run version.\nSet dryRun to false in config.json to execute")
else:
utils.logError(
f"This is not dry run version.\nDry run is recommended before execution.\nDo you want to continue?(y/N)")
response = getch()
if response.lower() != "y":
exit(0)
if __name__ == "__main__":
colorama.init()
setting = Setting()
checkDryRun(setting)
fileNameParser = FileNameParser(setting.minFileSizeMB, setting.ignoreWords)
dataManager = DataManager(setting)
infoGetters = [JAVInfoGetter_javlibrary(setting, dataManager), JAVInfoGetter_javdb(
setting, dataManager)]
executor = Executor(setting)
javInfoGetter = JAVInfoGetter(
setting, fileNameParser, dataManager, infoGetters, executor)
javInfoGetter.getInfo()