Closed jascdk closed 8 months ago
Hej Jacob
Tak for tilbagemeldingen - jeg er ved at implementerer flere fejlhåndtering funktioner, så jeg kan få noget mere brugbart debugging info og måske lave nogle fallback løsninger.
Kan du prøve med den seneste version (0.3.4) og evt. poste en ny debug.....?
Jeg tror jeg har samme fejl, og kører på seneste udgave. (0.34) HA kører følgende version:
Home Assistant 2023.3.2 Supervisor 2023.03.1 Operating System 9.5 Frontend 20230306.0 - latest
Jeg er tilsluttet Sønderborg Bibliotek, og har både lånt materiale og reserveret materiale (og muligvis også en bøde eller to, uden lige at være helt sikker)
Jeg får 2 fejl i min log. Første fejl er her:
Unexpected error fetching sensor data: local variable 'materialTitle' referenced before assignment
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 239, in _async_refresh
self.data = await self._async_update_data()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 195, in _async_update_data
return await self.update_method()
File "/config/custom_components/bibliotek_dk/sensor.py", line 58, in async_update_data
await hass.async_add_executor_job(myLibrary.update)
File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/bibliotek_dk/library_api.py", line 90, in update
self.user.debts, self.user.debtsAmount = self.fetchDebts()
File "/config/custom_components/bibliotek_dk/library_api.py", line 631, in fetchDebts
obj.title, obj.creators, obj.type = self._getMaterialInfo(material)
File "/config/custom_components/bibliotek_dk/library_api.py", line 261, in _getMaterialInfo
return materialTitle, materialCreators, materialType
UnboundLocalError: local variable 'materialTitle' referenced before assignment
Og her er anden fejl:
Error searching for the <h3> tag. Error: 'NoneType' object has no attribute 'split'
Jeg prøvede lige at lave en konfiguration med mit eget lånenummer og kode, og der får jeg fint data igennem (om end det er en kedelig forestilling, da jeg ikke bruger biblioteket i øjeblikket)
De mange glæder ved web-scraping.... ;-)
Vi kommer nok kun om disse fejl ved at jeg får indsigt i hvordan jeres biblioteker har skruet deres side sammen....
Hvis I/du har mod på det så gør følgende:
Der burde ikke være personlige oplysninger heri og jeg behandler det med diskretion.
ps. Lige pt. er mit udviklingsmiljø nede - grundet opdateringer fra HA
Jeg har vedhæftet filen, men har dog lige redakteret fulde navn og email adresse inden upload.
view-source_https___biblioteket.sonderborg.dk_user_me_status-loans.txt Vi prøver lige igen, Github tillod ikke html filer, så den er skiftet til TXT
@DevNullGamer Tak for filen, outputtet ser en kende misdannet ud.
Jeg tror, og håber, at jeg i den nyeste version (0.3.5) har fundet en bedre løsning til at scrape titlen på et materiale. Denne gang ved at bruge dets CSS class i stedet for HTML tag.
Kan du prøve denne version?
@J-Lindvig Jeg har opdateret og genindlæst, og jeg får denne fejl i loggen:
Unexpected error fetching sensor data: argument of type 'NoneType' is not iterable Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 239, in _async_refresh self.data = await self._async_update_data() File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 195, in _async_update_data return await self.update_method() File "/config/custom_components/bibliotek_dk/sensor.py", line 58, in async_update_data await hass.async_add_executor_job(myLibrary.update) File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "/config/custom_components/bibliotek_dk/library_api.py", line 90, in update self.user.debts, self.user.debtsAmount = self.fetchDebts() File "/config/custom_components/bibliotek_dk/library_api.py", line 635, in fetchDebts obj.title, obj.creators, obj.type = self._getMaterialInfo(material) File "/config/custom_components/bibliotek_dk/library_api.py", line 233, in _getMaterialInfo if "(" in materialTitle: TypeError: argument of type 'NoneType' is not iterable
Og jeg har unavailable stående i sensorne.
Jeg forsøger at lægge en ny version op som måske fjerner fejlen. Dog virker det tvivlsomt at den så kan finde titlen.
Kan du forsøge at lægge en ren HTML side op, både fra "lån" og fra "gebyrer".
0.36 fixede fejlen, så nu er der data.
Vil du stadig gerne have en html af de 2 sider, eller lader vi den ligge her indtil der en gang er behov for at genbesøge den?
Får du materialernes titel med? Hvis ikke så vil jeg gerne have noget HTML ved lejlighed.
Jeg får titlen med, så det ser ud til at virke så fint lige nu.
Jeg får samme fejl med NoneType Object. Burde det være fikset i seneste release (0.3.7) eller har jeg været for optimistisk? Det har tidligere virker fint (Rudersdal Kommune), men valgte at fjerne integrationen sidste sommer pga. udfordringen med at den til tider fik HA til at gå i knæ. Efter at have reaktiveret og opgraderet til 0.3.7 står alle entiteter dog nu som Unavailable.
Det burde virke. Kan du poste fejlen fra loggen?
Ja, ingen problemer:
2024-02-29 20:20:29.861 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Updating (250785) 2024-02-29 20:20:29.985 DEBUG (MainThread) [custom_components.bibliotek_dk.sensor] Instance of Library already running, waiting 6 seconds before next probing 2024-02-29 20:20:32.353 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] (250785) is logged in: True 2024-02-29 20:20:33.954 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] (250785) is actually 'YSD'. Pickup library is Hovedbiblioteket i Birkerød 2024-02-29 20:20:34.710 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.711 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (5.) is numeric: (True) 2024-02-29 20:20:34.714 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (23.) is numeric: (True) 2024-02-29 20:20:34.715 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.718 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.718 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.721 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.721 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.724 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.724 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.727 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.727 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.731 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.731 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.734 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.734 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.737 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.737 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.740 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.740 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.743 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (4.) is numeric: (True) 2024-02-29 20:20:34.743 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.746 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.746 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.749 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.750 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.753 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.753 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.756 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.756 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.759 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.759 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.762 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.762 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Day (3.) is numeric: (True) 2024-02-29 20:20:34.762 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] YSD has 17 loans 2024-02-29 20:20:34.762 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] YSD, Reusing the fetchLoans function 2024-02-29 20:20:35.287 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] YSD has 0 loans 2024-02-29 20:20:35.805 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] Number of divs (pane-reservations): (1) 2024-02-29 20:20:35.822 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] YSD has 0 reservations 2024-02-29 20:20:35.987 DEBUG (MainThread) [custom_components.bibliotek_dk.sensor] Instance of Library already running, waiting 9 seconds before next probing 2024-02-29 20:20:36.302 DEBUG (SyncWorker_25) [custom_components.bibliotek_dk.library_api] YSD has 0 reservations ready for pickup 2024-02-29 20:20:36.839 ERROR (MainThread) [custom_components.bibliotek_dk.sensor] Unexpected error fetching sensor data: 'NoneType' object is not subscriptable Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 313, in _async_refresh self.data = await self._async_update_data() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 269, in _async_update_data return await self.update_method() ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/bibliotek_dk/sensor.py", line 58, in async_update_data await hass.async_add_executor_job(myLibrary.update) File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/bibliotek_dk/library_api.py", line 99, in update self.user.debts, self.user.debtsAmount = self.fetchDebts() ^^^^^^^^^^^^^^^^^ File "/config/custom_components/bibliotek_dk/library_api.py", line 655, in fetchDebts obj.id = self._getIdInfo(material)[0] ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/bibliotek_dk/library_api.py", line 232, in _getIdInfo value = material.input["value"]
TypeError: 'NoneType' object is not subscriptable
2024-02-29 20:20:36.845 DEBUG (MainThread) [custom_components.bibliotek_dk.sensor] Finished fetching sensor data in 6.984 seconds (success: False)
Har du mulighed for at dele kildekoden til siden med udeståender for dit bibliotek? Gerne direkte til mig
Det kan jeg - men synes ikke jeg kan finde en mulighed for at sende direkte til dig...?
Evt via Facebook messenger, der findes kun en mig. Kan også være her, men siden kan indeholde personlige oplysninger.
Ja, det var også mit bedste bud - har sendt et pastebin-link med kildekoden (strippet for CPR etc) via Messenger, men den ryger sikkert ind under beskedanmodninger/ukendte beskeder.
Prøv den nye version nu
Har opgraderet til den nye version, og får nu data i alle attributterne - så det ser ud til at løse problemet! Mange tak!
@larsalthof Tak - 0.3.8 virkede også for mig. Alle entiteter var unavailable men nu kører det :-)
Hej Jacob
Got the following :
Denne fejl stammer fra en brugerdefineret integration.
Logger: custom_components.bibliotek_dk.sensor Source: custom_components/bibliotek_dk/library_api.py:189 Integration: Bibliotek (documentation, issues) First occurred: 09.57.25 (1 occurrences) Last logged: 09.57.25
Unexpected error fetching sensor data: 'NoneType' object has no attribute 'split' Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 239, in _async_refresh self.data = await self._async_update_data() File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 195, in _async_update_data return await self.update_method() File "/config/custom_components/bibliotek_dk/sensor.py", line 58, in async_update_data await hass.async_add_executor_job(myLibrary.update) File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "/config/custom_components/bibliotek_dk/library_api.py", line 90, in update self.user.debts, self.user.debtsAmount = self.fetchDebts() File "/config/custom_components/bibliotek_dk/library_api.py", line 538, in fetchDebts obj.title, obj.creators, obj.type = self._getMaterialInfo(material) File "/config/custom_components/bibliotek_dk/library_api.py", line 189, in _getMaterialInfo materialTitle = material.h3.string.split("(")[0].strip() AttributeError: 'NoneType' object has no attribute 'split'