merge main into dev #13

Merged
WorldTeacher merged 41 commits from main into dev 2025-09-03 09:44:13 +01:00
2 changed files with 126 additions and 0 deletions
Showing only changes of commit 087b8753fb - Show all commits

View File

@@ -0,0 +1,91 @@
from typing import List, Optional, Set, Union
import re
from PySide6 import QtCore
from PySide6.QtWidgets import QDialog, QPushButton, QVBoxLayout
from qtqdm import Qtqdm, QtqdmProgressBar
from src.logic import BookData
from src.logic.lehmannsapi import LehmannsClient
from src.logic.swb import SWB
class CheckThread(QtCore.QThread):
updateSignal = QtCore.Signal()
total_entries_signal = QtCore.Signal(int)
resultSignal = QtCore.Signal(str)
etaSignal = QtCore.Signal(dict)
startSignal = QtCore.Signal()
progress = QtCore.Signal(dict)
def __init__(self, items: list[BookData]):
super().__init__()
self.items: List[BookData] = items
self.results: List[tuple[BookData, List[BookData]]] = []
self.total_entries_signal.emit(len(items))
def _update_callback(self, status):
self.progress.emit(status)
def run(self):
tqdm_object = Qtqdm(
range(len(self.items)),
unit_scale=True,
)
for i in tqdm_object:
book: BookData = self.items[i]
author = (
book.author.split(";")[0].replace(" ", "")
if ";" in book.author
else book.author.replace(" ", "")
)
# title = book.title.split(":")[0].strip()
# remove trailing punctuation from title
title = book.title.rstrip(" .:,;!?")
response: list[BookData] = []
response = SWB().getBooks(
[
"pica.bib=20735",
f"pica.tit={title.split(':')[0].strip()}",
# f"pica.per={author}",
]
)
# in the response, remove the entry with the same ppn
response = [entry for entry in response if entry.ppn != book.ppn]
for respo in response:
respo.link = "SWB"
with LehmannsClient() as client:
results = client.search_by_title(title, strict=True)
client.enrich_pages(results)
if not results:
continue
for res in results:
response.append(BookData().from_LehmannsSearchResult(res))
if response == []:
continue
# check results if lehmanns has a result with the same isbn from the results of swb. if so, if we have a signature, remove, else keep
response = filter_prefer_swb(response)
result = (book, response)
self.results.append(result)
class ProgressDialog(QDialog):
def __init__(self, items: list):
super().__init__()
self.setWindowTitle("Progress")
self.setModal(True)
layout = QVBoxLayout(self)
self.progress_bar = QtqdmProgressBar(self)
self.items: List[BookData] = items
layout.addWidget(self.progress_bar)
self.results: List[tuple[BookData, List[BookData]]] = []
self.start_button = QPushButton("Start Progress", self)
self.start_button.hide()
self.start_button.clicked.connect(self.start)
layout.addWidget(self.start_button)
def start(self):

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>Signaturen aktualisieren</string>
</property>
</widget>
</item>
<item>
<widget class="QProgressBar" name="progressBar">
<property name="value">
<number>24</number>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>