94 lines
2.7 KiB
Python
94 lines
2.7 KiB
Python
import json
|
|
|
|
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, path):
|
|
self.path = path
|
|
|
|
def __enter__(self):
|
|
self.DBXLSOpen(self.path)
|
|
|
|
def __exit__(self, ex_type, ex_value, traceback):
|
|
self.DBXLSClose()
|
|
|
|
def PupilJSONOpen(self, path):
|
|
with open(path, 'r') as file:
|
|
self.m_data = json.load(file)
|
|
|
|
# pupil 의 JSON 을 파싱해서 DataClass 에 데이터를 넣어 반환한다.
|
|
def GetInfo(self):
|
|
if None == self.m_data:
|
|
return None
|
|
|
|
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
|
|
|