Przykładowa aplikacja w Pythonie pozwalająca na monitorowanie cen w różnych sklepach internetowych.
Wymagane biblioteki (m.in. Flask, requests i BeautifulSoup) są zdefiniowane w pliku requirements.txt. Przed uruchomieniem aplikacji zainstaluj je poleceniem:
pip install -r requirements.txtpython3 main.pyMożna również skorzystać z prostego interfejsu WWW opartego na Flasku:
python3 web.pyDomyślnie lista produktów znajduje się w pliku products.json. Moduły sklepów znajdują się w katalogu price_tracker/shops i dziedziczą po klasie ShopModule.
Konfiguracja sklepów przechowywana jest w pliku shops.json i może być modyfikowana z poziomu interfejsu WWW.
Aplikacja obsługuje ceny zapisywane w formacie europejskim, np. 1 234,56 zł.
Funkcja parse_price usuwa symbole walut oraz separatory tysięcy (spacje lub
kropki), zamienia przecinek na kropkę i usuwa ewentualne znaki interpunkcyjne
po wartości. Dzięki temu poprawnie działa zarówno dla notacji amerykańskiej,
jak i europejskiej. Dodatkowo aplikacja potrafi pobrać cenę zapisaną w
skryptach JSON‑LD (<script type="application/ld+json">).
- Dodawanie i usuwanie produktów odbywa się z poziomu listy produktów. Każdy wiersz ma przycisk Delete.
- Dodawanie i edycja sklepów dostępna jest poprzez link Manage shops.
- Ceny można sprawdzić ręcznie przez link Check prices now.
- Automatyczne sprawdzanie można tymczasowo wstrzymać lub wznowić przyciskami Pause checking i Resume checking.
Stan wstrzymania przechowywany jest w atrybucie
PriceTracker.paused.
Parametry serwera SMTP używanego do wysyłania powiadomień można zmienić bezpośrednio z poziomu interfejsu WWW. W menu na górze dostępny jest link SMTP settings, który prowadzi do formularza umożliwiającego podanie adresu serwera, portu oraz danych uwierzytelniających. Na stronie dostępny jest też formularz umożliwiający wysłanie wiadomości testowej na wybrany adres, dzięki czemu można sprawdzić poprawność konfiguracji.
Jeśli podczas uruchamiania interfejsu WWW pojawi się błąd
AttributeError: 'PriceTracker' object has no attribute 'paused'
upewnij się, że Python importuje moduł z tego repozytorium. W interpreterze można sprawdzić ścieżkę poleceniami:
import price_tracker
print(price_tracker.__file__)Jeżeli wskazana zostanie inna lokalizacja (np. moduł zainstalowany globalnie), odinstaluj kolidujący pakiet lub zmień nazwę folderu projektu.