Wprowadzenie
Elibri jest systemem stworzonym dla wydawnictw, które mogą za jego pośrednictwem udostępniać dane bibliograficzne wydawanych przez siebie książek. Niniejsza biblioteka jest implementacją API udokumentowanego tutaj.
Instalacja
Najprościej zainstalować bibliotekę za pomocą Composera:
Można też pobrać źródła z github-a i dołączyć plik elibriPHP.php:
Biblioteka wymaga PHP 7.4 lub nowszego z rozszerzeniami curl, dom, simplexml i xmlreader.
Lista zmian:
19 października 2026 roku (wersje 0.9.1, 0.10.0, 0.10.1 i 0.11.0)
Wersja 0.11.0 - obsługa nowych elementów ONIX-a (szczegóły w testach w katalogu tests):
- API w dialekcie 3.0.2 zwraca teraz dane w formacie ONIX 3.1. Parser obsługuje zarówno ONIX 3.0, jak i 3.1.
- uszlachetnienia książek drukowanych (barwione brzegi, złocenia, zakładka-wstążka...):
ElibriProduct::$finishingsiElibriProduct::$finishing_names, patrzElibriDictFinishing. Wszystkie kodyProductFormDetailsą dostępne wElibriProduct::$product_form_details. - opakowanie produktu (etui, pudełko, folia, tuba...):
ElibriProduct::$product_packagingiElibriProduct::$product_packaging_name, patrzElibriDictProductPackaging. - produkt może mieć kilka typów wydania:
ElibriProduct::$edition_types,ElibriProduct::$edition_type_namesiElibriProduct::$edition_type_descriptions. PolaElibriProduct::$edition_type,ElibriProduct::$edition_type_nameiElibriProduct::$edition_type_descriptionsą przestarzałe (zawierają tylko pierwszy typ wydania). - identyfikatory twórców (ISNI, VIAF):
ElibriContributor::$name_identifiers(listaElibriNameIdentifier),ElibriContributor::$isni,ElibriContributor::$viaf, oraz inne zapisy nazwiska:ElibriContributor::$alternative_names. - osoby i organizacje będące tematem książki:
ElibriProduct::$names_as_subject(listaElibriNameAsSubject). - kolekcje:
ElibriProduct::$collections(listaElibriCollection), ISSN kolekcji wElibriCollection::$issn. - terytorium sprzedaży:
ElibriProduct::$territory_countriesiElibriProduct::$territory_regions(np.WORLD). ElibriPrice::$position_on_productjest teraz wypełniane.- poprawki:
ElibriContributor::$voice_namenie zawiera już innego zapisu nazwiska twórcy,ElibriContributor::$ai_generated_voicerozpoznaje głosy syntetyzowane męskie i kobiece (SYNTHESISED_VOICE_MALE,SYNTHESISED_VOICE_FEMALE), a rodzaj okładki jest ustalany na podstawie kodu oprawy, niezależnie od kolejności uszlachetnień. - słowniki zsynchronizowane z elibri: nowe słowniki
ElibriDictFinishing,ElibriDictProductPackaging,ElibriDictNameIdentifierType,ElibriDictPriceQualifieri inne. ZElibriDictProductFormCodezostały usunięte stałePOD_HARDCOVERiPOD_SOFTCOVER.
Wersje 0.10.0 i 0.10.1:
- biblioteka jest dostępna jako pakiet Composera
elibri/elibri_onix_client. - biblioteka nie ustawia już domyślnej strefy czasowej PHP. Daty bez strefy czasowej (np.
ElibriProduct::$premiere,ElibriProduct::$licence_limited_to) są zawsze tworzone w strefie Europe/Warsaw, niezależnie od ustawieniadate.timezone. - wszystkie wyjątki API dziedziczą po
ElibriDataAPIException. - wersja biblioteki jest dostępna w stałej
ElibriAPI::VERSION, poleElibriAPI::$VERSIONjest przestarzałe.
Wersja 0.9.1:
- włączona weryfikacja certyfikatu TLS przy połączeniu z serwerem elibri.
- parametr
$testingwElibriAPI::popQueue()jest teraz poprawnie przekazywany do serwera - wcześniej dane były usuwane z kolejki nawet przy$testing = true. - poprawione odczytywanie nagłówków odpowiedzi zawierających dwukropek.
12 listopada 2024 roku
- dodanie obsługi danych podmiotu odpowiedzialnego oraz ostrzeżeń o bezpieczeństwie produktów. Szczegóły w testach
ElibriOnixTest::test_publisher_safety_contactorazElibriOnixTest::test_product_safety_features.
23 września 2024 roku
- dodanie obsługi dwóch statusów: cancelled - gdy produkt zostaje usunięty z planu wydawniczego, oraz indefinitely_postponed - gdy publikacja została odłożona na bliżej nieokreśloną przyszłość.
20 sierpnia 2024 roku
- dodanie informacji, czy głos lektora w audiobooku jest generowany przez AI. Do
ElibriContributorzostały dodane polaElibriContributor::$ai_generated_voiceorazElibriContributor::$voice_name. PoleElibriContributor::$unnamed_personsmoże przyjąć wartościElibriDictUnnamedPersons::SYNTHESISED_VOICE_UNSPECIFIEDlubElibriDictUnnamedPersons::SYNTHESISED_VOICE_BASED_ON_REAL_VOICE. (patrz również testyElibriOnixTest::test_audiobook_with_ai_synthesised_voice()orazElibriOnixTest::test_audiobook_with_ai_synthesised_cloned_voice()w katalogutests.
20 września 2023 roku
- usunięcie reszty kodu obsługującego dodatkowe tagi, spoza ONIX-a.
27 sierpnia 2023 roku
- dodanie nowego wyjątku,
ElibriDataAPITooManyRequestsException, informującego o przekroczeniu dopuszczalnego dzienniego limitu requestów
5 luty 2023 roku
- dodanie języka śląskiego do listy języków
26 luty 2022 roku
- dodanie informacji o zapowiedzianych zmianach cen: $currrent_price_until, $future_cover_price, $future_price_from
16 kwiecień 2020 roku
- dodane pole $keywords zawierające listę słów kluczowych (tagów) dodanych przez wydawce.
29 stycznia 2020 roku
- dodany kod A06 dla kompozytora (ContributorRole)
19 stycznia 2020 roku
- nowe kody dla form produktów: figurka (ZB), zabawka - pluszak (ZC), zabawka edukacyjna (ZD)
19 stycznia 2020 roku
- parsowanie informacji związanych z grami planszowymi i puzzle: nowe pola doyczące ilości elementów, czasu gry oraz ilości graczy
- nowy kod dla plików dołączanych do opisu produktu ($supporting_resources) - ElibriDictResourceContentType::RULES_OR_INSTRUCTIONS
- pola table_of_contents, description, short_description, reviews, excerpts mogą zawierać tylko teksty, dla których ContentAudience jest UNRESTRICTED
9 sierpień 2019 roku
- informacja o cenie okładkowej i stawce VAT pobierana z elementu Price
- informacja o poglądzie książki drukowanej jest pobierana teraz z SupportingResource
- informacje o fragmentach cyfrowych książek są pobierane teraz z SupportingResource
- informacja o końcu licencji na produkty cyfrowe jest pobierana z PublishingDetail
- w polu isbn13_with_hyphens jest teraz wartość isbn bez kresek, ponieważ pole <elibri:HyphenatedISBN> zostanie wkrótce usunięte
30 lipca 2019 roku
- Naprawione parsowanie SupplyDetails (dzięki uprzejmości Sebastiana Tatarczucha)
- Dodane pole $proximity_name (wartości 'EXACTLY' albo 'MORE_THAN' - informują o dokładności wartości w polu $on_hand
- Dodane pole $thema_subjects, które jest listą kategorii Thema
Użycie biblioteki
Żeby używać API należy najpierw uzyskać login i hasło dostępowe. Proszę pisać w tym celu na adres kontakt@elibri.com.pl.
Ogólne założenia API są opisane tutaj. Proszę też spojrzeć na poniższe przykłady.
Przykłady użycia
Użycie biblioteki jest bardzo proste. W poniższych przykładach zakładamy, że login i hasło są przechowywane jako zmienne środowiskowe ELIBRI_API_LOGIN i ELIBRI_API_PASSWORD. Wszystkie przykłady można znaleźć w katalogu examples
Przykład 1
W poniższym przykładzie instancjujemy obiekt klasy ElibriAPI oraz pobieramy listę dostępnych kolejek wraz z informacją o ilości produktów znajdujących w każdej z kolejek. Podczas połączenia może wystąpić jeden z wyjątków
Przykład 2
Typowe użycie API Elibri to regularne pobieranie nowych danych - w kolejce meta znajdą się zarówno nowododane produkty, jak i te, których dane się zmieniły. Wiadomość otrzymana z serwera to instancja ElibriOnixMessage, która zawiera listę produktów - ElibriProduct. Po Twojej stronie jest wykrycie, które dane się zmieniły. Żeby jednak ułatwić to zadanie, udostępniamy przy linkach, tekstach oraz autorach ich wewnętrzne ID w bazie Elibri. Pozwala to łatwiej sprawdzić, które dane uległy zmianie.
Przykład 3
Poniżej pobieramy listę wszystkich wydawnictw dostępnych w systemie, po czym drukowana jest informacja o pierwszym wydawnictwie, i pobierane dane pierwszej książki tego wydawnictwa.
1.9.1