add testclass, rework logging

This commit is contained in:
2025-04-28 10:15:22 +02:00
parent 80b96865e7
commit eb0b7a1fec

View File

@@ -5,13 +5,27 @@ from PyQt6.QtCore import pyqtSignal as Signal
from src.backend import Database from src.backend import Database
from src.logic.webrequest import BibTextTransformer, WebRequest from src.logic.webrequest import BibTextTransformer, WebRequest
import sys
from loguru import logger as log
logger = log
logger.remove()
logger.add("logs/bookgrabber_thread.log", rotation="1 week", enqueue=True)
log.add(
"logs/application.log",
rotation="1 day",
compression="zip",
)
# logger.add(sys.stderr, format="{time} {level} {message}", level="INFO")
logger.add(sys.stdout)
class BookGrabber(QThread): class BookGrabber(QThread):
updateSignal = Signal(int, int) updateSignal = Signal(int, int)
done = Signal() done = Signal()
def __init__(self, appnr): def __init__(self, appnr: int):
super(BookGrabber, self).__init__(parent=None) super(BookGrabber, self).__init__(parent=None)
self.is_Running = True self.is_Running = True
logger.info("Starting worker thread") logger.info("Starting worker thread")
@@ -25,7 +39,9 @@ class BookGrabber(QThread):
self.appnr = appnr self.appnr = appnr
self.tstate = (self.app_id, self.prof_id, self.mode, self.data) self.tstate = (self.app_id, self.prof_id, self.mode, self.data)
def add_values(self, app_id, prof_id, mode, data, any_book=False, exact=False): def add_values(
self, app_id: int, prof_id: int, mode: str, data, any_book=False, exact=False
):
self.app_id = app_id self.app_id = app_id
self.prof_id = prof_id self.prof_id = prof_id
self.mode = mode self.mode = mode
@@ -85,11 +101,13 @@ class BookGrabber(QThread):
break break
logger.info(f"State of {signature}: {state}") logger.info(f"State of {signature}: {state}")
# print("updating availability of " + str(self.book_id) + " to " + str(state)) print("updating availability of " + str(self.book_id) + " to " + str(state))
try: try:
self.db.setAvailability(self.book_id, state) self.db.setAvailability(self.book_id, state)
except sqlite3.OperationalError as e: print("Added book to database")
except Exception as e:
logger.error(f"Failed to update availability: {e}") logger.error(f"Failed to update availability: {e}")
print("Failed to update availability: " + str(e))
# time.sleep(5) # time.sleep(5)
item += 1 item += 1
@@ -102,87 +120,89 @@ class BookGrabber(QThread):
self.is_Running = False self.is_Running = False
# class BookGrabber(object): class BookGrabberTest(QThread):
# updateSignal = Signal(int, int) updateSignal = Signal(int, int)
# done = Signal() done = Signal()
# def __init__(self, app_id, prof_id, mode, data, parent=None): def __init__(self, appnr: int):
# super(BookGrabber, self).__init__(parent=None) super(BookGrabberTest, self).__init__(parent=None)
# self.is_Running = True self.is_Running = True
# logger = MyLogger("Worker") logger.info("Starting worker thread")
# logger.info("Starting worker thread") self.data = None
# self.data = data self.app_id = None
# logger.info(f"Working on {len(self.data)} entries") self.prof_id = None
# self.app_id = app_id self.mode = None
# self.prof_id = prof_id self.book_id = None
# self.mode = mode self.use_any = False
# self.book_id = None self.use_exact = False
# self.state = (self.app_id, self.prof_id, self.mode, self.data) self.appnr = appnr
# # print(self.state) self.tstate = (self.app_id, self.prof_id, self.mode, self.data)
# logger.info("state: " + str(self.state)) self.results = []
# # time.sleep(2)
# def resetValues(self): def add_values(
# self.app_id = None self, app_id: int, prof_id: int, mode: str, data, any_book=False, exact=False
# self.prof_id = None ):
# self.mode = None self.app_id = app_id
# self.data = None self.prof_id = prof_id
# self.book_id = None self.mode = mode
self.data = data
self.use_any = any_book
self.use_exact = exact
logger.info(f"Working on {len(self.data)} entries")
self.tstate = (self.app_id, self.prof_id, self.mode, self.data)
logger.debug("State: " + str(self.tstate))
# print(self.tstate)
# def run(self): def run(self):
# while self.is_Running: item = 0
# self.db = Database() iterdata = self.data
# item = 0 # print(iterdata)
# iterdata = self.data for entry in iterdata:
# # print(iterdata) # print(entry)
# for entry in iterdata: signature = str(entry)
# # print(entry) logger.info("Processing entry: " + signature)
# signature = str(entry)
# logger.info("Processing entry: " + signature)
# webdata = WebRequest().get_ppn(entry).get_data() webdata = WebRequest().set_apparat(self.appnr).get_ppn(entry)
# if webdata == "error": if self.use_any:
# continue webdata = webdata.use_any_book
# bd = BibTextTransformer(self.mode).get_data(webdata).return_data() webdata = webdata.get_data()
# transformer = BibTextTransformer("RDS")
# rds = transformer.get_data(webdata).return_data("rds_availability")
# bd.signature = entry
# # confirm lock is acquired
# self.db.addBookToDatabase(bd, self.app_id, self.prof_id)
# # get latest book id
# self.book_id = self.db.getLastBookId()
# logger.info("Added book to database")
# state = 0
# # print(len(rds.items))
# for rds_item in rds.items:
# sign = rds_item.superlocation
# loc = rds_item.location
# # logger.debug(sign, loc)
# # logger.debug(rds_item)
# if self.app_id in sign or self.app_id in loc:
# state = 1
# break
# logger.info(f"State of {signature}: {state}") if webdata == "error":
# # print( continue
# "updating availability of "
# + str(self.book_id)
# + " to "
# + str(state)
# )
# try:
# self.db.setAvailability(self.book_id, state)
# except sqlite3.OperationalError as e:
# logger.error(f"Failed to update availability: {e}")
# # time.sleep(5) bd = BibTextTransformer(self.mode)
# item += 1 if self.mode == "ARRAY":
# self.updateSignal.emit(item, len(self.data)) if self.use_exact:
# logger.info("Worker thread finished") bd = bd.use_signature(entry)
# # self.done.emit() bd = bd.get_data(webdata).return_data()
# self.stop() if bd is None:
# if not self.is_Running: # bd = BookData
# break continue
bd.signature = entry
transformer = (
BibTextTransformer("RDS").get_data(webdata).return_data("rds_data")
)
# def stop(self): # confirm lock is acquired
# self.is_Running = False # get latest book id
logger.info("Added book to database")
state = 0
for result in transformer.RDS_DATA:
# print(result.RDS_LOCATION)
if str(self.app_id) in result.RDS_LOCATION:
state = 1
break
logger.info(f"State of {signature}: {state}")
# print("updating availability of " + str(self.book_id) + " to " + str(state))
self.results.append(bd)
# time.sleep(5)
item += 1
self.updateSignal.emit(item, len(self.data))
logger.info("Worker thread finished")
# self.done.emit()
self.quit()
def stop(self):
self.is_Running = False