일단 정리..

This commit is contained in:
2025-07-15 11:14:05 +09:00
parent 5d5c0ff675
commit f1345e2770
4 changed files with 101 additions and 48 deletions

View File

@@ -2,7 +2,7 @@ class CBZInfo:
def __init__(self, title, url):
self.title = title
self.url = url
self.serires = ""
self.series = ""
self.type = ""
self.filename = ""
self.torrent = ""
@@ -19,6 +19,48 @@ class CBZInfo:
return f"ID : {self.gallery_id} - {self.title} by {strArtists} - #{strTags}"
def SaveToText(self):
retText = "\{"
retText += f"Title : {self.title}\r\n"
retText += f"URL : {self.url}\r\n"
retText += f"Series : {self.series}\r\n"
retText += f"Type : {self.type}\r\n"
retText += f"Filename : {self.filename}\r\n"
retText += f"Torrent : {self.torrent}\r\n"
retText += f"Language : {self.language}\r\n"
retText += f"Gallery ID : {self.gallery_id}\r\n"
retText += self.SaveToTextArtists() + f"\r\n"
retText += self.SavetToTextRelatedGalleryID() + f"\r\n"
retText += self.SavetToTextTags() + f"\r\n"
retText += "\}"
def SaveToTextTagList(self, listTags):
RetText = "\{"
for tag in listTags:
RetText += (f"\"{tag.name}\" ")
RetText += "\}"
return RetText
def SaveToTextArtists(self):
retText = f"Artists : "
retText += self.SaveToTextTagList(self.artists)
return retText
def SavetToTextRelatedGalleryID(self):
retText = f"Gallery_ID : "
retText += self.SaveToTextTagList(self.related_galID)
return retText
def SavetToTextTags(self):
retText = f"Tags : "
retText += self.SaveToTextTagList(self.tags)
return retText
def AddTag(self, name):
self.tags.add(name)
@@ -38,7 +80,7 @@ class TagInfo:
self.url = url
def __str__(self):
return f"{self.name} : {self.url}"
return f"#{self.name} : {self.url}"
class ImageFileInfo:

View File

@@ -60,8 +60,18 @@ def GetListSearchResult(list_ID):
strContent = driver.page_source
listRet = parseMangaInfos(strContent)
for Idx in range(len(listRet)):
print(f"{Idx} : {listRet[Idx]}")
#for Idx in range(len(listRet)):
# print(f"{Idx} : {listRet[Idx]}")
try:
for Idx in range(len(listRet)):
print(f"{Idx} : {listRet[Idx]}")
with open( f"{id}.txt", 'w') as file:
for item in listRet[Idx]:
file.write( + "\n")
file.close()
except IOError:
util.DbgOut(f"Error: Could not write to the file at {id}.txt.", True)
except Exception as e:
util.DbgOut("Hitomi Loading Error : ", e)

43
UI.py
View File

@@ -8,7 +8,7 @@ import GetArc_Hitomi as hitomi
from io import BytesIO
from PyQt5.QtCore import Qt, QUrl, QSettings, QSize, QPoint, QByteArray
from PyQt5.QtCore import Qt, QUrl, QSettings, QSize, QPoint, QByteArray, QRect
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QPushButton, QVBoxLayout, QLineEdit, QHBoxLayout, QListWidget, QListWidgetItem, QLabel, QFileDialog
from PyQt5.QtGui import QPixmap, QKeyEvent
@@ -21,16 +21,28 @@ class MyApp(QMainWindow):
self.initUI()
self.loadINI()
#
def closeEvent(self, event):
self.saveINI()
event.accept()
#
def resizeEvent(self, event):
super().resizeEvent(event)
rcDesktop = QApplication.primaryScreen().availableGeometry()
rcWnd = self.geometry()
if False == rcDesktop.contains(rcWnd):
self.setGeometry(rcDesktop)
pixmap = self.label_Image.pixmap()
if None != pixmap:
pixmapScaled = pixmap.scaled(self.label_Image.size())
self.label_Image.setPixmap(pixmapScaled)
self.update()
#
def initUI(self):
layout = self.MakeUI()
@@ -108,10 +120,6 @@ class MyApp(QMainWindow):
# show Image in middle Layout
self.label_Image = QLabel(self)
# Load Default Image
pixmap = QPixmap("layoutImg.jpeg")
self.label_Image.setMaximumWidth(self.screen().size().width()-(self.list_ArcList.width()+400))
layout_R = self.MakeUI_Right()
# 레이아웃 설정
@@ -122,15 +130,7 @@ class MyApp(QMainWindow):
return layout
def GetFitSize(self, szTarget):
szDesktop = self.screen().size()
szWindow = self.size()
nTrgHeight = self.list_Items.height()
nTrgWidth = szWindow.width() - ( self.list_ArcList.width() + self.list_Items.width() )
#
def on_click_SrcAdd(self):
folder_path = QFileDialog.getExistingDirectory(self, '폴더 선택', '')
@@ -272,6 +272,7 @@ class MyApp(QMainWindow):
elif fileExt.lower() == ".rar":
listContents = []
elif True == os.path.isdir(pathTarget):
listContents = util.ListFileExtRcr(pathTarget, [".jpg", ".jpeg", ".png", ".webp"])
@@ -301,8 +302,14 @@ class MyApp(QMainWindow):
pixmap.load(selItemText)
self.label_Image.setPixmap(pixmap)
scaled_pixmap = pixmap.scaled(self.label_Image.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation)
self.label_Image.setPixmap(scaled_pixmap)
#
def GetFitSize(self, szTarget):
szDesktop = self.screen().size()
szWindow = self.size()
nTrgHeight = self.list_Items.height()
nTrgWidth = szWindow.width() - ( self.list_ArcList.width() + self.list_Items.width() )
if __name__ == '__main__':

View File

@@ -10,17 +10,14 @@ import subprocess
from pathlib import Path
m_dbgLevel = 0
listDbgStr = []
#
def IsEmptyStr(string):
temp = f"{string}"
return 0 == len(temp.strip())
#
def GetCurrentTime():
# 현재 시간을 구하고 구조체로 변환
@@ -38,7 +35,6 @@ def GetCurrentTime():
return strRet
#for debug
def DbgOut(strInput, bPrint = False):
strMsg = (f"{GetCurrentTime()} : {strInput}")
@@ -47,10 +43,19 @@ def DbgOut(strInput, bPrint = False):
if True == bPrint:
print(strMsg)
#
def printDbgMessages():
for line in listDbgStr:
print(line)
#
def SaveDbgMessages(Path):
try:
with open(Path, 'w') as file:
for line in listDbgStr:
file.write(line + "\n")
except IOError:
DbgOut(f"Error: Could not write to the file at {Path}.", True)
# 입력된 경로의 자식 폴더를 찾아 반환한다.
# 반환하는 리스트는 리커시브 - 손자, 증손자 폴더까지 전부 포함한다
@@ -68,7 +73,6 @@ def ListSubDirectories(root_dir):
return subdirectories
# 자식 폴더를 구해온다. 직계 자식만
def ListChildDirectories(pathDir):
listRet = []
@@ -79,7 +83,6 @@ def ListChildDirectories(pathDir):
return listRet
# 파일목록만 구해온다. 자식 폴더에 있는건 무시.
def ListContainFiles(pathDir):
listRet = []
@@ -90,7 +93,7 @@ def ListContainFiles(pathDir):
return listRet
#
def ListFileExtRcr(pathTrg, listExt):
listRet= []
@@ -107,8 +110,7 @@ def ListFileExtRcr(pathTrg, listExt):
return listRet
# 입력된 패스에서 부모 폴더를 찾는다. 0 은 자기자신 1은 부모, 숫자대로 위로.
# 입력된 경로에서 부모 폴더를 찾는다. 0 은 자기자신 1은 부모, 숫자대로 위로.
def GetParentDirName(FullPath, nUp):
parts = FullPath.split(os.sep)
@@ -122,7 +124,6 @@ def GetParentDirName(FullPath, nUp):
return parts[nTrgIdx]
# 입력된 경로가 자식 폴더를 가지고 있는지 판단한다.- 최종 폴더인지 여부
# 자식이 없으면 True, 자식이 있으면 False
def IsFinalFolder(path):
@@ -136,7 +137,6 @@ def IsFinalFolder(path):
return bRet;
# 어떤 경로 안에서 특정 확장자의 파일을 뽑아내어 그 리스트를 반환한다.
def FindFileFromExt(path, ext):
bDot = False
@@ -158,7 +158,6 @@ def FindFileFromExt(path, ext):
return listRet
# 파일 이름에서 확장자를 뽑아낸다. True : '.' 을 포함한다.
def GetExtStr(file_path, bDot = True):
retStr = ""
@@ -174,7 +173,6 @@ def GetExtStr(file_path, bDot = True):
return retStr
# 문자열에 포함된 단어를 지운다.
def RmvSubString(mainString, subString):
# 문자열에서 부분 문자열의 인덱스를 찾습니다.
@@ -187,12 +185,11 @@ def RmvSubString(mainString, subString):
# 부분 문자열을 제거하고 새로운 문자열을 반환합니다.
return mainString[:strIdx] + mainString[endIdx:]
#
def ExtractZIP(zip_file, extract_to):
with zipfile.ZipFile(zip_file, 'r') as zf:
zf.extractall(extract_to)
#
def CreateZIP(output_zip, *files):
with zipfile.ZipFile(output_zip, 'w') as zf:
@@ -236,7 +233,6 @@ def CreateZIPShell(zipName, *files, bRmvRPath = True):
return bRet
# 특정 확장자만 쉘을 이용해서 압축한다
def CreateZIPShExt(zipName, TrgExt):
command = f"zip -j {zipName} *.{TrgExt}"
@@ -249,7 +245,6 @@ def CreateZIPShExt(zipName, TrgExt):
return bRet
# 압축 파일 내의 모든 파일 및 디렉토리 목록 가져오기
def GetZipContentList(path):
if None == path or not os.path.isfile(path):
@@ -261,7 +256,7 @@ def GetZipContentList(path):
return listRet
#
def GetZippedFileByte(pathZip, FileName):
if None == pathZip or not os.path.isfile(pathZip):
return None
@@ -276,7 +271,6 @@ def GetZippedFileByte(pathZip, FileName):
return retBytes
# JSON 을 트리 구조로 출력한다.
def PrintJSONTree(data, indent=0):
if isinstance(data, dict):
@@ -289,13 +283,12 @@ def PrintJSONTree(data, indent=0):
else:
print(' ' * indent + str(data))
#
def IsPathWithin(base_path: str, target_path: str) -> bool:
base = Path(base_path).resolve()
target = Path(target_path).resolve()
return target.is_relative_to(base)
# 랜덤 UUID 생성
def UUIDGenRandom():
random_uuid = uuid.uuid4()
@@ -306,5 +299,6 @@ def UUIDGenName(SeedName):
namespace_uuid = uuid.uuid5(uuid.NAMESPACE_DNS, SeedName)
return namespace_uuid
#
def GetTextInBrakets(text):
return re.findall(r'\[(.*?)\]', text)