rework thread for bookgrabbing
remove unneccessary while loop in run() fix data application
This commit is contained in:
@@ -1,98 +1,169 @@
|
|||||||
import sqlite3
|
import sqlite3
|
||||||
import time
|
|
||||||
|
|
||||||
from PyQt6.QtCore import QThread
|
from PyQt6.QtCore import QThread
|
||||||
from PyQt6.QtCore import pyqtSignal as Signal
|
from PyQt6.QtCore import pyqtSignal as Signal
|
||||||
|
from omegaconf import OmegaConf
|
||||||
from src.backend.database import Database
|
from src.backend.database import Database
|
||||||
from src.logic.log import MyLogger
|
from src.logic.log import MyLogger
|
||||||
from src.logic.webrequest import BibTextTransformer, WebRequest
|
from src.logic.webrequest import BibTextTransformer, WebRequest
|
||||||
|
|
||||||
# from src.transformers import RDS_AVAIL_DATA
|
config = OmegaConf.load("config.yaml")
|
||||||
|
|
||||||
|
|
||||||
class BookGrabber(QThread):
|
class BookGrabber(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):
|
||||||
super(BookGrabber, self).__init__(parent=None)
|
super(BookGrabber, self).__init__(parent=None)
|
||||||
self.is_Running = True
|
self.is_Running = True
|
||||||
self.logger = MyLogger("Worker")
|
self.logger = MyLogger("Worker")
|
||||||
self.logger.log_info("Starting worker thread")
|
self.logger.log_info("Starting worker thread")
|
||||||
self.data = data
|
self.data = None
|
||||||
|
self.app_id = None
|
||||||
|
self.prof_id = None
|
||||||
|
self.mode = None
|
||||||
|
self.book_id = None
|
||||||
|
self.tstate = (self.app_id, self.prof_id, self.mode, self.data)
|
||||||
|
|
||||||
|
def add_values(self, app_id, prof_id, mode, data):
|
||||||
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
|
||||||
self.book_id = None
|
self.data = data
|
||||||
self.state = (self.app_id, self.prof_id, self.mode, self.data)
|
self.logger.log_info(f"Working on {len(self.data)} entries")
|
||||||
time.sleep(2)
|
self.tstate = (self.app_id, self.prof_id, self.mode, self.data)
|
||||||
|
self.logger.log_debug("State: " + str(self.tstate))
|
||||||
# def resetValues(self):
|
print(self.tstate)
|
||||||
# self.app_id = None
|
|
||||||
# self.prof_id = None
|
|
||||||
# self.mode = None
|
|
||||||
# self.data = None
|
|
||||||
# self.book_id = None
|
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
while self.is_Running:
|
self.db = Database()
|
||||||
self.db = Database()
|
item = 0
|
||||||
item = 0
|
iterdata = self.data
|
||||||
iterdata = self.data
|
print(iterdata)
|
||||||
print(iterdata)
|
for entry in iterdata:
|
||||||
for entry in iterdata:
|
print(entry)
|
||||||
signature = str(entry)
|
signature = str(entry)
|
||||||
self.logger.log_info("Processing entry: " + signature)
|
self.logger.log_info("Processing entry: " + signature)
|
||||||
|
|
||||||
webdata = WebRequest().get_ppn(entry).get_data()
|
webdata = WebRequest().get_ppn(entry).get_data()
|
||||||
if webdata == "error":
|
if webdata == "error":
|
||||||
continue
|
continue
|
||||||
bd = BibTextTransformer(self.mode).get_data(webdata).return_data()
|
bd = BibTextTransformer(self.mode).get_data(webdata).return_data()
|
||||||
transformer = BibTextTransformer("RDS")
|
bd.signature = entry
|
||||||
rds = transformer.get_data(webdata).return_data("rds_availability")
|
transformer = (
|
||||||
bd.signature = entry
|
BibTextTransformer("RDS").get_data(webdata).return_data("rds_data")
|
||||||
# confirm lock is acquired
|
)
|
||||||
print("lock acquired, adding book to database")
|
# confirm lock is acquired
|
||||||
self.db.addBookToDatabase(bd, self.app_id, self.prof_id)
|
self.db.addBookToDatabase(bd, self.app_id, self.prof_id)
|
||||||
# get latest book id
|
# get latest book id
|
||||||
self.book_id = self.db.getLastBookId()
|
self.book_id = self.db.getLastBookId()
|
||||||
self.logger.log_info("Added book to database")
|
self.logger.log_info("Added book to database")
|
||||||
state = 0
|
state = 0
|
||||||
print(len(rds.items))
|
for result in transformer.RDS_DATA:
|
||||||
for rds_item in rds.items:
|
print(result.RDS_LOCATION)
|
||||||
sign = rds_item.superlocation
|
if str(self.app_id) in result.RDS_LOCATION:
|
||||||
loc = rds_item.location
|
state = 1
|
||||||
# ic(sign, loc)
|
break
|
||||||
# ic(rds_item)
|
|
||||||
if self.app_id in sign or self.app_id in loc:
|
|
||||||
state = 1
|
|
||||||
break
|
|
||||||
|
|
||||||
# for book in self.books:
|
self.logger.log_info(f"State of {signature}: {state}")
|
||||||
# if book["bookdata"].signature == entry:
|
print("updating availability of " + str(self.book_id) + " to " + str(state))
|
||||||
# book_id = book["id"]
|
try:
|
||||||
# break
|
self.db.setAvailability(self.book_id, state)
|
||||||
self.logger.log_info(f"State of {signature}: {state}")
|
except sqlite3.OperationalError as e:
|
||||||
print(
|
self.logger.log_error(f"Failed to update availability: {e}")
|
||||||
"updating availability of "
|
|
||||||
+ str(self.book_id)
|
|
||||||
+ " to "
|
|
||||||
+ str(state)
|
|
||||||
)
|
|
||||||
try:
|
|
||||||
self.db.setAvailability(self.book_id, state)
|
|
||||||
except sqlite3.OperationalError as e:
|
|
||||||
self.logger.log_error(f"Failed to update availability: {e}")
|
|
||||||
|
|
||||||
# time.sleep(5)
|
# time.sleep(5)
|
||||||
item += 1
|
item += 1
|
||||||
self.updateSignal.emit(item, len(self.data))
|
self.updateSignal.emit(item, len(self.data))
|
||||||
self.logger.log_info("Worker thread finished")
|
self.logger.log_info("Worker thread finished")
|
||||||
# self.done.emit()
|
# self.done.emit()
|
||||||
self.stop()
|
self.quit()
|
||||||
if not self.is_Running:
|
|
||||||
break
|
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
self.is_Running = False
|
self.is_Running = False
|
||||||
|
|
||||||
|
# class BookGrabber(object):
|
||||||
|
# updateSignal = Signal(int, int)
|
||||||
|
# done = Signal()
|
||||||
|
|
||||||
|
# def __init__(self, app_id, prof_id, mode, data, parent=None):
|
||||||
|
# super(BookGrabber, self).__init__(parent=None)
|
||||||
|
# self.is_Running = True
|
||||||
|
# self.logger = MyLogger("Worker")
|
||||||
|
# self.logger.log_info("Starting worker thread")
|
||||||
|
# self.data = data
|
||||||
|
# self.logger.log_info(f"Working on {len(self.data)} entries")
|
||||||
|
# self.app_id = app_id
|
||||||
|
# self.prof_id = prof_id
|
||||||
|
# self.mode = mode
|
||||||
|
# self.book_id = None
|
||||||
|
# self.state = (self.app_id, self.prof_id, self.mode, self.data)
|
||||||
|
# print(self.state)
|
||||||
|
# self.logger.log_info("state: " + str(self.state))
|
||||||
|
# # time.sleep(2)
|
||||||
|
|
||||||
|
# def resetValues(self):
|
||||||
|
# self.app_id = None
|
||||||
|
# self.prof_id = None
|
||||||
|
# self.mode = None
|
||||||
|
# self.data = None
|
||||||
|
# self.book_id = None
|
||||||
|
|
||||||
|
# def run(self):
|
||||||
|
# while self.is_Running:
|
||||||
|
# self.db = Database()
|
||||||
|
# item = 0
|
||||||
|
# iterdata = self.data
|
||||||
|
# print(iterdata)
|
||||||
|
# for entry in iterdata:
|
||||||
|
# print(entry)
|
||||||
|
# signature = str(entry)
|
||||||
|
# self.logger.log_info("Processing entry: " + signature)
|
||||||
|
|
||||||
|
# webdata = WebRequest().get_ppn(entry).get_data()
|
||||||
|
# if webdata == "error":
|
||||||
|
# continue
|
||||||
|
# bd = BibTextTransformer(self.mode).get_data(webdata).return_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()
|
||||||
|
# self.logger.log_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
|
||||||
|
# # ic(sign, loc)
|
||||||
|
# # ic(rds_item)
|
||||||
|
# if self.app_id in sign or self.app_id in loc:
|
||||||
|
# state = 1
|
||||||
|
# break
|
||||||
|
|
||||||
|
# self.logger.log_info(f"State of {signature}: {state}")
|
||||||
|
# print(
|
||||||
|
# "updating availability of "
|
||||||
|
# + str(self.book_id)
|
||||||
|
# + " to "
|
||||||
|
# + str(state)
|
||||||
|
# )
|
||||||
|
# try:
|
||||||
|
# self.db.setAvailability(self.book_id, state)
|
||||||
|
# except sqlite3.OperationalError as e:
|
||||||
|
# self.logger.log_error(f"Failed to update availability: {e}")
|
||||||
|
|
||||||
|
# # time.sleep(5)
|
||||||
|
# item += 1
|
||||||
|
# self.updateSignal.emit(item, len(self.data))
|
||||||
|
# self.logger.log_info("Worker thread finished")
|
||||||
|
# # self.done.emit()
|
||||||
|
# self.stop()
|
||||||
|
# if not self.is_Running:
|
||||||
|
# break
|
||||||
|
|
||||||
|
# def stop(self):
|
||||||
|
# self.is_Running = False
|
||||||
Reference in New Issue
Block a user