| ( ! ) Warning: file_get_contents(booklibrary.php): Failed to open stream: No such file or directory in /var/www/html/hgyvkdocxtoxmlgenerator.php on line 55 | ||||
|---|---|---|---|---|
| Call Stack | ||||
| # | Time | Memory | Function | Location |
| 1 | 0.0007 | 499280 | {main}( ) | .../hgyvkdocxtoxmlgenerator.php:0 |
| 2 | 0.0083 | 785384 | file_get_contents( $filename = 'booklibrary.php' ) | .../hgyvkdocxtoxmlgenerator.php:55 |

A történet ott kezdődött, hogy egy könyvtár cégtől, nevezetesen a HGYVK-tól kapunk havi szinten 50-100-150 vagy még több könyvet egy docx dokumentumban
táblázatosan elrendezve, amit nekünk kell egyesével feltölteni a weboldalra az Ordasoft Booklibrary komponensébe.
Már kezdetek kezdetén elgondolkoztam rajta, hogy ezt vajon nem lehetne automatizálni valahogy. Elmélkedtünk kollégával, hogy egyszerűbb lenne, ha megkérnénk a táblázat készítőjét,
hogy xls/xlsx-be készítse el, és azt már könnyű csv-be konvertálni, amit már könnyebb átalakítani. Aztán ez valahogy annyiba maradt, de én később úgy döntöttem megpróbálom kinyerni
az adatokat a docx táblázataiból, beolvastatni xml-be, és onnan már jöhet az import és kész is.
Elég is ennyi a történetből...
Mivel nem nagyon volt ötletem merre érdemesebb elindulni az AI-hoz fordultam, leírtam neki a helyzetet, és egyből is adta a kis
python kódot, ami szépen beolvasta a docx-et, végigjárta a táblázatokat, kinyerte az adatokat, és már csak finomítgatni kellett.
Eljutottam odáig, hogy kiszedte a megfelelő adatokat, és legenerálta az első értelmesnek tűnő xml fájlt. Meg is próbáltam a booklibrary-ban importálni, és itt jöttek a
buktatók. A Booklibrary import/export menüpontja inkább csak arra van kihegyezve, ha egyik weboldalról a másikra akarjuk átvinni az adatokat, vagy költöztetni akarjuk
a könyv/szerző... adatainkat. Vagyis a kiexportált pl kategóriához minden adatot lement xml/csv fileba, és vissza import-nál szépen ott is van a könyv, a szerző, a kapcsolati adatok
így minden szuper, csak nekem pont nem ez kellett, hanem nekem az xml feltöltésekor kellett volna a "<authors>"-ből kiszedni a szerzőt, leellenőrizni, hogy van-e
már ilyen az adatbázisban, ha van kinyerni az ID-ját, ha nincs felvenni újként, és kivonni az azonosítóját, majd feltölteni a könyvet, kinyerni annak is az ID-ját
és ezt felvinni a kapcsolati táblázatba, ami ugye összekapcsolja a könyveket a szerzőkkel. De sajnos ezt az ordasoft nem oldotta meg. Így hát nyomoztam, debugoltam, kutakodtam
vajon melyik fájljuk végzi az import/export-ot és abban mi mit csinál. Mire rátaláltam, hogy a "/administrator/components/com_booklibrary" mappában található a "admin.booklibrary.class.impexp.php"
nevű php fájl, azon belül is a 443. sor környékén található "importBooksXML" függvény végzi az import műveletet, így azt kellett szerkesztenem. Itt nem nagyon értem miért van ez
a verzió ellenőrzés, de én hozzátettem hogy ha nagyobb mint 3.6, akkor is lefusson, nekem csak az a lényeg, hogy ez fusson le, így kiszedi a szerőmet az xml-ből.
MAjd jött az adatbázis művelet, amihez nem használtam a booklibrary saját függvényeit, mert az feldarabolja "," karakterenként a stringet, nekem arra nincs szükségem (habár lehet
a későbbiekben belerakom még ezt is), elég ha megnézi megvan-e a szerző, ha nincs felveszi és elmenti az ID-ját. Majd az alap könyv feltöltése jön, amit nem bántottam, és utána
nekem még kellett a szersző és a könyv összekötése az "authors_connect" táblába. Itt is volt egy függvény, ami lefut, ha a J verzió kisebb mint 3.6, aminek még mindig nem tudom
mi a jelentősége, de hagytam, és egy else ágba beleraktam a sakát kódomat, ami a kapott szerő ID-t és a könyv ID-t összekapcsolja, és lám, minden szuper is.
Sokat teszteltem, küszködtem még a képek hozzárendelésével is. Ugye abban szerencsénk van, hogy próbálják a képeket úgy elnevezni, ami a könyv címe, ami már egy nagyon jó kiindulópont, de feltöltéskor ugye a Joomla ékezettelenít, akkor ezt nekem is már úgy kellett az xml-be raknom. Illetve volt több tesztem a "-", "_", "." és a " " karakterek miatt, de talán most már azt is jól elvégzi. Így ha feltöltöm az xml-t már csak a képeket kell felraknom a "/components/com_booklibrary/covers/" mappába, egy ellenőrzés, javítás, ha mégis valami rossz, és lehet örülni, hogy ezt a sok "unalmas/altató" munkát pár kattintással elintézhetjük.
Frissítés: 0.1 Az ISBN szám ellenőrzést is beletettem, így ha valahol hiányzik ez a szám, ami ugye kötelező a feltöltéshez, akkor azonnal leáll a script és
figyelmeztet, hogy melyik "sorban", melyik könyvnél hiányzik ez a szám.
Továbbá a könyv képének meglétét is ellenőrzöm. Habár elégé hamar megtalálja a képet, a tesztek alapján, ha egy könyv címe pl.: "Bosszú" akkor már a "valami boss valami.jpg"
nevű képet hozzárendeli, ami lehet fog problémát okozni a későbbikben, ha eléggé azonos nevű könyvekről lesz szó, de ezt majd akkor a későbbiekben javítom.
Csatolok képeket a programról, plusz a programot is felrakom letölthető formában. A konkrét python kódot nem rakom fel, de ha valakit esetleg mégis érdekelne, vegye fel velem a kapcsolatot és megbeszéljük...
Képernyőkép a linuxon futó programról!