storeXLS updated

This commit is contained in:
2024-06-01 01:15:30 +09:00
parent 72896d3ddf
commit 401627a58f
2 changed files with 94 additions and 79 deletions

View File

@@ -16,6 +16,8 @@ class DBXLStorage:
strMngSht = "MngInfo" strMngSht = "MngInfo"
strArtSht = "ArtInfo" strArtSht = "ArtInfo"
strTagSht = "TagInfo" strTagSht = "TagInfo"
strSeriesSht = "SeriesInfo"
strTypeSht = "TypeInfo"
m_openedXLS = "" m_openedXLS = ""
@@ -46,6 +48,8 @@ class DBXLStorage:
self.m_wb.create_sheet(self.strMngSht) self.m_wb.create_sheet(self.strMngSht)
self.m_wb.create_sheet(self.strArtSht) self.m_wb.create_sheet(self.strArtSht)
self.m_wb.create_sheet(self.strTagSht) self.m_wb.create_sheet(self.strTagSht)
self.m_wb.create_sheet(self.strSeriesSht)
self.m_wb.create_sheet(self.strTypeSht)
self.m_wb.save(xls_path) self.m_wb.save(xls_path)
util.DbgOut(f"{xls_path} Created", True) util.DbgOut(f"{xls_path} Created", True)
@@ -82,22 +86,87 @@ class DBXLStorage:
# 클래스 타잎을 확인해야 하지만만.. 생략. # 클래스 타잎을 확인해야 하지만만.. 생략.
# ttist, group, series(parady), type, tags, hitomi ID, hitomi file, eh ID, eh tor # ttist, group, series(parady), type, tags, hitomi ID, hitomi file, eh ID, eh tor
# TAG 정보를 TAG 시트에 추가한다. # TAG 정보를 TAG 시트에 추가한다.
# 1 , 2 , 3
# Index, Tag URL, Tag
# 태그는 분류:단어, 이런 식이다. # 태그는 분류:단어, 이런 식이다.
# 분류에는 artist, tag, male, female, other 등이 있다. # 분류에는 artist, tag, male, female, other 등이 있다.
def AddTagInfo(self, strTag, strUrl): def AddTagInfo(self, strTag, strUrl):
sheetTag = self.getSheet(self.strTagSht) nID = self.AddInfotoSheet(self.strTagSht, strTag, strUrl)
if sheetTag is None: util.DbgOut(f"AddTagInfo : {self.strTagSht}:{nID},{strTag}")
util.DbgOut(f"AddTag : {self.strTagSht} Get Failed...", True) return nID
def AddArtistInfo(self, ArtName, strUrl):
shtArt = self.getSheet(self.strArtSht)
if shtArt is None:
util.DbgOut(f"AddArtist : {self.strArtSht} Get Failed...", True)
return return
nSearchID = self.SearchIDFromName(sheetTag, strTag) # ArtName 이 리스트인 경우, String 인 경우로 구분한다. 그 외는 몰라.
if 0 > nSearchID: # String 인 경우
util.DbgOut(f"AddTag : {self.strTagSht} Get Failed...", True) if isinstance(ArtName, str):
elif 0 < nSearchID: nID = self.SearchIDFromName(shtArt, ArtName)
util.DbgOut(f"AddTag : {self.strTagSht}:{nSearchID},{strTag} is exist.") if 0 > nID:
util.DbgOut(f"AddArtist : {self.sheetArtist} Get Failed...", True)
elif 0 < nID:
util.DbgOut(f"AddArtist : {self.sheetArtist}:{nID},{ArtName} is exist.")
else:
last_row = shtArt.max_row
if shtArt.cell(row=last_row, column=1).value :
last_row += 1
shtArt.cell(row=last_row, column=1, value=last_row)
shtArt.cell(row=last_row, column=2, value=strUrl)
shtArt.cell(row=last_row, column=3, value=strArt)
# list 인 경우
elif isinstance(ArtName, list):
nID = self.SearchIDFromName(shtArt, ArtName)
if 0 > nID:
util.DbgOut(f"AddArtist : {self.sheetArtist} Get Failed...", True)
elif 0 < nID:
util.DbgOut(f"AddArtist : {self.sheetArtist}:{nID},{ArtName[0]} is exist.")
else:
last_row = shtArt.max_row
if shtArt.cell(row=last_row, column=1).value :
last_row += 1
shtArt.cell(row=last_row, column=1, value=last_row)
shtArt.cell(row=last_row, column=2, value=strUrl)
nCol = 3
for strArt in ArtName:
shtArt.cell(row=last_row, column=nCol, value=strArt)
nCol += 1
nID = last_row
return nID
def AddSeriesInfo(self, strSerires, strUrl):
nID = self.AddInfotoSheet(self.strSeriesSht, strSerires, strUrl)
util.DbgOut(f"AddSeriesInfo : {self.strSeriesSht}:{nID},{strSerires}")
return nID
def AddTypeInfo(self, strType, strUrl):
nID = self.AddInfotoSheet(self.strTypeSht, strType, strUrl)
util.DbgOut(f"AddTypeInfo : {self.strTypeSht}:{nID},{strType}")
return nID
# 1 , 2 , 3
# Index, URL , Value
def AddInfotoSheet(self, strSheet, strValue, strUrl):
sheetTag = self.getSheet(strSheet)
if sheetTag is None:
util.DbgOut(f"AddTag : {strSheet} Get Failed...", True)
return -1
nIndexID = self.SearchIDFromName(sheetTag, strValue)
if 0 > nIndexID:
util.DbgOut(f"AddTag : {strSheet} Get Failed...", True)
elif 0 < nIndexID:
util.DbgOut(f"AddTag : {strSheet}:{nIndexID},{strValue} is exist.")
else: else:
last_row = sheetTag.max_row last_row = sheetTag.max_row
if sheetTag.cell(row=last_row, column=1).value : if sheetTag.cell(row=last_row, column=1).value :
@@ -105,10 +174,15 @@ class DBXLStorage:
sheetTag.cell(row=last_row, column=1, value=last_row) sheetTag.cell(row=last_row, column=1, value=last_row)
sheetTag.cell(row=last_row, column=2, value=strUrl) sheetTag.cell(row=last_row, column=2, value=strUrl)
sheetTag.cell(row=last_row, column=3, value=strTag) sheetTag.cell(row=last_row, column=3, value=strValue)
util.DbgOut(f"AddTag : {self.strTagSht}:{nSearchID},{strTag} added.") util.DbgOut(f"AddTag : {strSheet}:{nIndexID},{strValue} added.")
nIndexID = last_row
return nIndexID
# return Value :
# -1 : 시트가 뭔가 잘못되었다.
# 0 : 추가할 값이 이미 들어있다.
def SearchIDFromName(self, sheet, strValue, nTrgCol=3): def SearchIDFromName(self, sheet, strValue, nTrgCol=3):
if sheet is None : if sheet is None :
return -1 return -1
@@ -125,7 +199,7 @@ class DBXLStorage:
return nRetID return nRetID
# 같은 값을 가지고 있는 ROW, 혹은 index 를 반
def SearchIDFromList(self, sheet, listValue, nStartCol=3): def SearchIDFromList(self, sheet, listValue, nStartCol=3):
if sheet is None : if sheet is None :
return -1 return -1
@@ -145,68 +219,6 @@ class DBXLStorage:
return nRetID return nRetID
def AddArtistInfo(self, ArtName, strUrl):
shtArt = self.getSheet(self.strArtSht)
if shtArt is None:
util.DbgOut(f"AddArtist : {self.strArtSht} Get Failed...", True)
return
# ArtName 이 리스트인 경우, String 인 경우로 구분한다. 그 외는 몰라.
if isinstance(ArtName, str):
nSearchID = self.SearchIDFromName(shtArt, ArtName)
if 0 > nSearchID:
util.DbgOut(f"AddArtist : {self.sheetArtist} Get Failed...", True)
elif 0 < nSearchID:
util.DbgOut(f"AddArtist : {self.sheetArtist}:{nSearchID},{strTag} is exist.")
else:
last_row = sheetTag.max_row
if sheetArtist.cell(row=last_row, column=1).value :
last_row += 1
sheetArtist.cell(row=last_row, column=1, value=last_row)
sheetArtist.cell(row=last_row, column=2, value=strUrl)
sheetArtist.cell(row=last_row, column=3, value=strArt)
elif isinstance(ArtName, list):
nSearchID = self.SearchIDFromName(shtArt, ArtName)
if 0 > nSearchID:
util.DbgOut(f"AddArtist : {self.sheetArtist} Get Failed...", True)
elif 0 < nSearchID:
util.DbgOut(f"AddArtist : {self.sheetArtist}:{nSearchID},{strTag} is exist.")
else:
last_row = sheetTag.max_row
if sheetArtist.cell(row=last_row, column=1).value :
last_row += 1
sheetArtist.cell(row=last_row, column=1, value=last_row)
sheetArtist.cell(row=last_row, column=2, value=strUrl)
strDebugParam = ""
nCol = 3
if isinstance(ArtName, str):
sheetArtist.cell(row=last_row, column=nCol, value=strArt)
strDebugParam = ArtName
elif isinstance(ArtName, list):
for strArt in listArtist:
sheetArtist.cell(row=last_row, column=nCol, value=strArt)
nCol += 1
util.DbgOut(f"AddArtist : {self.sheetArtist}:{last_row},{strDebugParam} added.")
def AddSeriesInfo(self, SeriesInfo):
pass
def AddSeriesInfo(self, strSerires, strUrl):
pass
def AddTypeInfo(self, typeInfo):
pass
def AddTypeInfo(self, strType, strUrl):
pass
# 시트를 가져온다. 엑셀 파일이 안 열려 있으면 None, 있으면 반환하고, 없으면 만들어서. # 시트를 가져온다. 엑셀 파일이 안 열려 있으면 None, 있으면 반환하고, 없으면 만들어서.
def getSheet(self, sheetName): def getSheet(self, sheetName):
retSheet = None retSheet = None
@@ -223,6 +235,7 @@ class DBXLStorage:
return retSheet return retSheet
# 데이터베이스용 엑셀 파일의 전체 경로를 얻어온다. # 데이터베이스용 엑셀 파일의 전체 경로를 얻어온다.
def GetXLSPath(self, path): def GetXLSPath(self, path):
retPath = os.path.abspath(path) retPath = os.path.abspath(path)

View File

@@ -17,6 +17,8 @@ def main():
tempxls = xls.DBXLStorage("./temp.xls") tempxls = xls.DBXLStorage("./temp.xls")
tempxls.DBXLSOpen() tempxls.DBXLSOpen()
tempxls.AddArtistInfo("Kuno Inu", "/artist/kunoinu/")
tempxls.AddSeriesInfo("Original", "/serires/original/")
tempxls.AddTagInfo("female:bondage", "/tag/bondage/") tempxls.AddTagInfo("female:bondage", "/tag/bondage/")
tempxls.AddTagInfo("female:slave", "/tag/slave/") tempxls.AddTagInfo("female:slave", "/tag/slave/")
tempxls.DBXLSClose() tempxls.DBXLSClose()