import json import os import UtilPack as util import DataClass as info GALBLOCK = "galleryBlock" GALURL = "galleryUrl" GALINFO = "galleryInfo" GALTAGS = "relatedTags" JTITLE = "japanese_title" # Example #with open('test.db', 'r') as file: # data = json.load(file) #print_json_tree(data) #print(data['galleryInfo']['tags']) # pupil : Json # Caribre : text # My : CSV class PupuilInfoFile: m_data = None def __init__(self, argv): self.argv = argv def __enter__(self): self.PupilJSONOpen(self.argv) def __exit__(self, ex_type, ex_value, traceback): pass def PupilJSONOpen(self, argv): if True == util.IsEmptyStr(argv): print("PupilData: input Null") return if True == os.path.exists(argv): print("pupildata : file") with open(argv, "r", encoding="utf-8") as file: self.m_data = json.load(file) else: print("pupildata : text") self.m_data = json.loads(argv) # pupil 의 JSON 을 파싱해서 DataClass 에 데이터를 넣어 반환한다. def GetInfo(self): if None == self.m_data and None != self.argv: self.m_data = self.PupilJSONOpen(self.argv) if None == self.m_data: return title = self.m_data[GALINFO]["title"] url = self.m_data[GALBLOCK]["galleryUrl"] retInfo = info(title, url) retInfo.type = self.m_data[GALINFO]["type"] retInfo.language = self.m_data[GALINFO]["language"] retInfo.gallery_id = self.m_data[GALINFO]["id"] listArtists = self.m_data[GALINFO]["artists"] for item in listArtists: strArtist = item["artist"] strUrl = item["url"] strTag = f"artist:{strArtist}" tempInfo = util.TagInfo(strTag, strUrl) retInfo.AddArtist(tempInfo) listTags = self.m_data[GALINFO]["tags"] for item in listTags: strGend = "" if 1 == item["female"]: strGend = "female:" elif 1 == item["male"]: strGend = "male:" strTag = item["tag"] strRelatedTag = f"{strGend}:{strTag}" tagUrl = item[url] tempInfo = util.TagInfo(strRelatedTag, tagUrl) retInfo.AddTag(tempInfo) return retInfo # pupil 의 JSON 을 파싱해서 ImageFileList 를 반환한다. def GetImageFilesInfo(self): if None == self.m_data: return None listRet = set() listFiles = self.m_data[GALINFO]["files"] for item in listFiles: tempInfo = info.ImageFileInfo(item["name"], item["height"], item["width"], item["hash"], item["haswebp"]) listRet.append(tempInfo) return listRet