From 401627a58f4d5838ff9a96f4eec470807a220197 Mon Sep 17 00:00:00 2001 From: user01 Date: Sat, 1 Jun 2024 01:15:30 +0900 Subject: [PATCH] storeXLS updated --- StoreXLS.py | 171 ++++++++++++++++++++++++++++------------------------ main.py | 2 + 2 files changed, 94 insertions(+), 79 deletions(-) diff --git a/StoreXLS.py b/StoreXLS.py index 178abbd..e3be85d 100644 --- a/StoreXLS.py +++ b/StoreXLS.py @@ -16,6 +16,8 @@ class DBXLStorage: strMngSht = "MngInfo" strArtSht = "ArtInfo" strTagSht = "TagInfo" + strSeriesSht = "SeriesInfo" + strTypeSht = "TypeInfo" m_openedXLS = "" @@ -46,6 +48,8 @@ class DBXLStorage: self.m_wb.create_sheet(self.strMngSht) self.m_wb.create_sheet(self.strArtSht) 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) util.DbgOut(f"{xls_path} Created", True) @@ -81,23 +85,88 @@ class DBXLStorage: #for item in listInfos: # 클래스 타잎을 확인해야 하지만만.. 생략. # ttist, group, series(parady), type, tags, hitomi ID, hitomi file, eh ID, eh tor - + + # TAG 정보를 TAG 시트에 추가한다. - # 1 , 2 , 3 - # Index, Tag URL, Tag # 태그는 분류:단어, 이런 식이다. # 분류에는 artist, tag, male, female, other 등이 있다. def AddTagInfo(self, strTag, strUrl): - sheetTag = self.getSheet(self.strTagSht) - if sheetTag is None: - util.DbgOut(f"AddTag : {self.strTagSht} Get Failed...", True) + nID = self.AddInfotoSheet(self.strTagSht, strTag, strUrl) + util.DbgOut(f"AddTagInfo : {self.strTagSht}:{nID},{strTag}") + 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 - nSearchID = self.SearchIDFromName(sheetTag, strTag) - if 0 > nSearchID: - util.DbgOut(f"AddTag : {self.strTagSht} Get Failed...", True) - elif 0 < nSearchID: - util.DbgOut(f"AddTag : {self.strTagSht}:{nSearchID},{strTag} is exist.") + # ArtName 이 리스트인 경우, String 인 경우로 구분한다. 그 외는 몰라. + # String 인 경우 + if isinstance(ArtName, str): + 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} 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: last_row = sheetTag.max_row 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=2, value=strUrl) - sheetTag.cell(row=last_row, column=3, value=strTag) - util.DbgOut(f"AddTag : {self.strTagSht}:{nSearchID},{strTag} added.") - - + sheetTag.cell(row=last_row, column=3, value=strValue) + util.DbgOut(f"AddTag : {strSheet}:{nIndexID},{strValue} added.") + nIndexID = last_row + + return nIndexID + + # return Value : + # -1 : 시트가 뭔가 잘못되었다. + # 0 : 추가할 값이 이미 들어있다. def SearchIDFromName(self, sheet, strValue, nTrgCol=3): if sheet is None : return -1 @@ -124,8 +198,8 @@ class DBXLStorage: break; return nRetID - - # 같은 값을 가지고 있는 ROW, 혹은 index 를 반 + + def SearchIDFromList(self, sheet, listValue, nStartCol=3): if sheet is None : return -1 @@ -143,69 +217,7 @@ class DBXLStorage: break; 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, 있으면 반환하고, 없으면 만들어서. def getSheet(self, sheetName): @@ -223,6 +235,7 @@ class DBXLStorage: return retSheet + # 데이터베이스용 엑셀 파일의 전체 경로를 얻어온다. def GetXLSPath(self, path): retPath = os.path.abspath(path) diff --git a/main.py b/main.py index ea6626b..f7e4217 100644 --- a/main.py +++ b/main.py @@ -17,6 +17,8 @@ def main(): tempxls = xls.DBXLStorage("./temp.xls") tempxls.DBXLSOpen() + tempxls.AddArtistInfo("Kuno Inu", "/artist/kunoinu/") + tempxls.AddSeriesInfo("Original", "/serires/original/") tempxls.AddTagInfo("female:bondage", "/tag/bondage/") tempxls.AddTagInfo("female:slave", "/tag/slave/") tempxls.DBXLSClose()