Prosty backend w Spring Boot, który pobiera aktualne promocje i gazetki ze strony blix.com/gazetki dla wybranych sklepów. Projekt powstał w celach edukacyjnych, niekomercyjnych i jest wykorzystywany w aplikacji Smart‑Cooking.
Dane pochodzą z publicznie dostępnych stron blix.com. API służy wyłącznie do nauki i testów.
- Java 17+
- Maven 3.9+
mvn spring-boot:run
# domyślnie: http://localhost:8080Bazowy URL:
http://localhost:8080
GET /shops
- Zwraca listę dostępnych sklepów i linków do ich ofert.
Przykładowa odpowiedź (200):
[
{ "title": "Biedronka", "url": "https://blix.pl/sklep/biedronka" },
{ "title": "Lidl", "url": "https://blix.pl/sklep/lidl" }
]GET /promotions?shopName={shopName}
- Zwraca listę gazetek promocyjnych dla wskazanego sklepu. Filtry i dane pochodzą ze
findPromotionalLeaflet.
Przykładowa odpowiedź (200):
[
{
"shop": "Lidl",
"url": "https://blix.pl/gazetka/123456",
"image": "https://cdn.blix.pl/lidl/123456/cover.jpg",
"validUntil": "aktualna",
"pages": [
"https://cdn.blix.pl/lidl/123456/page-1.jpg",
"https://cdn.blix.pl/lidl/123456/page-2.jpg"
],
"downloadDate": "2025-09-14"
}
]GET /promotionsFirst?shopName={shopName}
- Szybsze zapytanie: zwraca listę gazetek, ale w polu
pagesznajduje się wyłącznie pierwsza strona (pierwszy URL) — implementacjafindPromotionalLeaflet_OnlyFirstPage.
Przykładowa odpowiedź (200):
[
{
"shop": "Biedronka",
"url": "https://blix.pl/gazetka/654321",
"image": "https://cdn.blix.pl/biedronka/654321/cover.jpg",
"validUntil": "od dziś",
"pages": [
"https://cdn.blix.pl/biedronka/654321/page-1.jpg"
],
"downloadDate": "2025-09-14"
}
]GET /leaflet/{id}/pages
- Zwraca listę adresów URL obrazów stron wybranej gazetki; implementacja korzysta z selektorów
img[data-src|src]isrcset, filtrując po/{id}/.
Przykładowa odpowiedź (200):
[
"https://cdn.blix.pl/lidl/123456/page-1.jpg",
"https://cdn.blix.pl/lidl/123456/page-2.jpg",
"https://cdn.blix.pl/lidl/123456/page-3.jpg"
]400 Bad Request– brak parametrushopNamelub nieobsługiwany sklep404 Not Found– brak gazetki o podanymid5xx– błędy serwera
Projekt jest edukacyjny, niekomercyjny.