cata_log_hub.providers package

class cata_log_hub.providers.Action[source]

Bases: Provider

Provider class for Action current catalog.

uid: str = 'action-de'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Action'

The name of this catalog provider.

url: str = 'https://www.action.com/de-de/prospekt/'

The url of this catalog provider

region

alias of Germany

description: str = 'Action Katalog'

The user-facing description for this provider

first_page_number: int = 0

The number of the first page in the providers api

overview_url_format = 'https://de.publications.action.com/action-week-{week_number:02}-{valid_since:%Y}/spreads.json'
base_url = 'https://de.publications.action.com/'
_get_catalog_data()[source]

Get and store the data for this providers catalog. Can be passed if no data beside the pagenumber is required to fetch pages from the provider.

Return type:

None

_get_page(page_number)[source]

Get one page from the provider.

Parameters:

page_number (PageNumber) – The number of the page in the numbering of the provider.

Return type:

bytes

Returns:

The downloaded page in bytes.

_get_valid_since()[source]

Get the datetime since which this providers catalog is valid.

Return type:

datetime

_get_valid_until()[source]

Get the datetime until which this providers catalog is valid.

Return type:

datetime

_logger = <Logger cata_log_hub.providers.action.Action (WARNING)>
class cata_log_hub.providers.AldiNord[source]

Bases: Provider

Provider class for AldiNord catalog.

uid: str = 'aldi-nord-de'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Aldi-Nord'

The name of this catalog provider.

description: str = 'Aldi-Nord Angebote'

The user-facing description for this provider

region

alias of Germany

url: str = 'https://www.aldi-nord.de/prospekte/'

The url of this catalog provider

first_page_number: int = 1

The number of the first page in the providers api

schedule: str = '0 4 * * *'

The crontab schedule for fetching this provider

page_url_format = 'https://ipaper.ipapercms.dk/aldi-nord/aldi-aktuell/{valid_since:%Y}/{valid_since:%Y}cw{week_number:02}mopromotionaldi-angebote-ab-montag-{valid_since:%d}-{valid_since:%m}/Image.ashx?PageNumber={page_number}&ImageType=Normal'
_get_catalog_data()[source]

Get and store the data for this providers catalog. Can be passed if no data beside the pagenumber is required to fetch pages from the provider.

Return type:

None

_get_page(page_number)[source]

Get one page from the provider.

Parameters:

page_number (PageNumber) – The number of the page in the numbering of the provider.

Return type:

bytes

Returns:

The downloaded page in bytes.

_get_valid_since()[source]

Get the datetime since which this providers catalog is valid.

Return type:

datetime

_get_valid_until()[source]

Get the datetime until which this providers catalog is valid.

Return type:

datetime

_logger = <Logger cata_log_hub.providers.aldi_nord.AldiNord (WARNING)>
class cata_log_hub.providers.AldiNordPreview[source]

Bases: Preview, AldiNord

Provider class for AldiNord preview catalog for next week.

uid: str = 'aldi-nord-de-preview'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Aldi-Nord-Vorschau'

The name of this catalog provider.

description: str = 'Aldi-Nord Angebote nächste Woche'

The user-facing description for this provider

schedule: str = '0 4 * * *'

The crontab schedule for fetching this provider

_get_preview_timedelta()[source]

Get the dynamic timedelta between the relevant datetime and the relevant datetime of the preview.

Return type:

timedelta

Returns:

The preview timedelta.

_logger = <Logger cata_log_hub.providers.aldi_nord.AldiNordPreview (WARNING)>
class cata_log_hub.providers.AldiSued[source]

Bases: Provider

Provider class for Aldi-Süd current catalog.

uid: str = 'aldi-sued-de'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Aldi-Süd'

The name of this catalog provider.

url: str = 'https://www.aldi-sued.de/prospekte'

The url of this catalog provider

region

alias of Germany

description: str = 'Aldi Süd Katalog'

The user-facing description for this provider

first_page_number: int = 0

The number of the first page in the providers api

overview_url_format = 'https://prospekt.aldi-sued.de/kw{week_number:02}-{relevant_datetime:%y}-op-mp/spreads.json'
base_url = 'https://view.publitas.com'
_get_catalog_data()[source]

Get and store the data for this providers catalog. Can be passed if no data beside the pagenumber is required to fetch pages from the provider.

Return type:

None

_get_page(page_number)[source]

Get one page from the provider.

Parameters:

page_number (PageNumber) – The number of the page in the numbering of the provider.

Return type:

bytes

Returns:

The downloaded page in bytes.

_get_valid_since()[source]

Get the datetime since which this providers catalog is valid.

Return type:

datetime

_get_valid_until()[source]

Get the datetime until which this providers catalog is valid.

Return type:

datetime

_logger = <Logger cata_log_hub.providers.aldi_sued.AldiSued (WARNING)>
class cata_log_hub.providers.AldiSuedPrepreview[source]

Bases: Preview, AldiSued

Provider class for Aldi-Süd preview catalog for the second-next week.

uid: str = 'aldi-sued-de-preview-2'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Aldi-Süd-Vorvorschau'

The name of this catalog provider.

description: str = 'Aldi Süd Katalog für übernächste Woche'

The user-facing description for this provider

overview_url_format = 'https://prospekt.aldi-sued.de/kw{week_number:02}-{relevant_datetime:%y}-vop/spreads.json'
_get_preview_timedelta()[source]

Get the dynamic timedelta between the relevant datetime and the relevant datetime of the preview.

Return type:

timedelta

Returns:

The preview timedelta.

_logger = <Logger cata_log_hub.providers.aldi_sued.AldiSuedPrepreview (WARNING)>
class cata_log_hub.providers.AldiSuedPreview[source]

Bases: Preview, AldiSued

Provider class for Aldi-Süd preview catalog for next week.

uid: str = 'aldi-sued-de-preview'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Aldi-Süd-Vorschau'

The name of this catalog provider.

description: str = 'Aldi Süd Katalog für nächste Woche'

The user-facing description for this provider

overview_url_format = 'https://prospekt.aldi-sued.de/kw{week_number:02}-{relevant_datetime:%y}-op/spreads.json'
_get_preview_timedelta()[source]

Get the dynamic timedelta between the relevant datetime and the relevant datetime of the preview.

Return type:

timedelta

Returns:

The preview timedelta.

_logger = <Logger cata_log_hub.providers.aldi_sued.AldiSuedPreview (WARNING)>
class cata_log_hub.providers.EdekaMarkt[source]

Bases: Provider

Provider class for Edeka Marktangebote catalog.

uid: str = 'edeka-markt-de'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Edeka-Markt'

The name of this catalog provider.

description: str = 'Edeka Markt Angebote'

The user-facing description for this provider

url: str = 'https://www.edeka-wochenangebote.de/'

The url of this catalog provider

region

alias of Germany

class Configuration[source]

Bases: Configuration

region: str
edeka_markt: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

url_format = 'https://blaetterkatalog.edeka.de/{region}/{edeka_markt}/blaetterkatalog/normal/bk_{page_number}.jpg'
_get_catalog_data()[source]

Get and store the data for this providers catalog. Can be passed if no data beside the pagenumber is required to fetch pages from the provider.

Return type:

None

_get_page(page_number)[source]

Get one page from the provider.

Parameters:

page_number (PageNumber) – The number of the page in the numbering of the provider.

Return type:

bytes

Returns:

The downloaded page in bytes.

_get_valid_since()[source]

Get the datetime since which this providers catalog is valid.

Return type:

datetime

_get_valid_until()[source]

Get the datetime until which this providers catalog is valid.

Return type:

datetime

_logger = <Logger cata_log_hub.providers.edeka.EdekaMarkt (WARNING)>
class cata_log_hub.providers.Hofer[source]

Bases: Provider

Provider class for Hofer current catalog.

uid: str = 'hofer-au'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Hofer'

The name of this catalog provider.

url: str = 'https://www.hofer.at/de/angebote/aktuelle-flugblaetter-und-broschuren.html'

The url of this catalog provider

region

alias of Austria

description: str = 'Hofer Prospekt'

The user-facing description for this provider

first_page_number: int = 0

The number of the first page in the providers api

overview_url_format = 'https://katalog.hofer.at/flipbook_kw{week_number:02}_{relevant_datetime:%y}_0/spreads.json'
base_url = 'https://katalog.hofer.at'
_get_catalog_data()[source]

Get and store the data for this providers catalog. Can be passed if no data beside the pagenumber is required to fetch pages from the provider.

Return type:

None

_get_page(page_number)[source]

Get one page from the provider.

Parameters:

page_number (PageNumber) – The number of the page in the numbering of the provider.

Return type:

bytes

Returns:

The downloaded page in bytes.

_get_valid_since()[source]

Get the datetime since which this providers catalog is valid.

Return type:

datetime

_get_valid_until()[source]

Get the datetime until which this providers catalog is valid.

Return type:

datetime

_logger = <Logger cata_log_hub.providers.hofer.Hofer (WARNING)>
class cata_log_hub.providers.HoferPreview[source]

Bases: Preview, Hofer

Provider class for Hofer preview catalog for next week.

uid: str = 'hofer-au-preview'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Hofer-Vorschau'

The name of this catalog provider.

description: str = 'Hofer Prospekt für nächste Woche'

The user-facing description for this provider

_get_preview_timedelta()[source]

Get the dynamic timedelta between the relevant datetime and the relevant datetime of the preview.

Return type:

timedelta

Returns:

The preview timedelta.

_logger = <Logger cata_log_hub.providers.hofer.HoferPreview (WARNING)>
class cata_log_hub.providers.KauflandSonder[source]

Bases: KauflandWoche

Provider class for Kaufland Sonderangebote catalog.

uid: str = 'kaufland-sonder-de'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Kaufland Sonderprospekt'

The name of this catalog provider.

description: str = 'Kaufland Sonderangebote'

The user-facing description for this provider

flyer_index = 0
subcategory_name = 'KDZ2'
_logger = <Logger cata_log_hub.providers.kaufland.KauflandSonder (WARNING)>
class cata_log_hub.providers.KauflandWoche[source]

Bases: Provider

Provider class for Kaufland Wochenangebote catalog.

uid: str = 'kaufland-de'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Kaufland'

The name of this catalog provider.

description: str = 'Kaufland Angebote'

The user-facing description for this provider

class Configuration[source]

Bases: Configuration

filial_id: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

url: str = 'https://filiale.kaufland.de/prospekte.html'

The url of this catalog provider

region

alias of Germany

first_page_number: int = 0

The number of the first page in the providers api

overview_url_template = 'https://endpoints.leaflets.schwarz/v4/overview/?region_id={filial_id}&client_locale=kaufland/{language_code_lower}-{language_code_upper}'
subcategory_name = 'KDZ1'
flyer_name = 'Prospekt'
flyer_index = 0
_get_catalog_data()[source]

Get and store the data for this providers catalog. Can be passed if no data beside the pagenumber is required to fetch pages from the provider.

Return type:

None

_get_page(page_number)[source]

Get one page from the provider.

Parameters:

page_number (PageNumber) – The number of the page in the numbering of the provider.

Return type:

bytes

Returns:

The downloaded page in bytes.

_get_valid_since()[source]

Get the datetime since which this providers catalog is valid.

Return type:

datetime

_get_valid_until()[source]

Get the datetime until which this providers catalog is valid.

Return type:

datetime

_logger = <Logger cata_log_hub.providers.kaufland.KauflandWoche (WARNING)>
class cata_log_hub.providers.KauflandWochePreview[source]

Bases: Preview, KauflandWoche

Provider class for Kaufland Wochenangebote preview catalog for next week.

uid: str = 'kaufland-de-preview'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Kaufland-Vorschau'

The name of this catalog provider.

description: str = 'Kaufland Angebote im nächsten Katalog'

The user-facing description for this provider

_get_preview_timedelta()[source]

Get the dynamic timedelta between the relevant datetime and the relevant datetime of the preview.

Return type:

timedelta

Returns:

The preview timedelta.

flyer_index = 1
_logger = <Logger cata_log_hub.providers.kaufland.KauflandWochePreview (WARNING)>
class cata_log_hub.providers.Kik[source]

Bases: Provider

Provider class for Kik current catalog.

uid: str = 'kik-de'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Kik'

The name of this catalog provider.

url: str = 'https://www.kik.de/Dein-Online-Prospekt'

The url of this catalog provider

region

alias of Germany

description: str = 'Kik Katalog'

The user-facing description for this provider

first_page_number: int = 0

The number of the first page in the providers api

overview_url_format = 'https://prospekt.kik.de/kik-{relevant_datetime:%Y}-op{catalog_number}-de_high/spreads.json'
base_url = 'https://prospekt.kik.de/'
_get_catalog_data()[source]

Get and store the data for this providers catalog. Can be passed if no data beside the pagenumber is required to fetch pages from the provider.

Return type:

None

_get_page(page_number)[source]

Get one page from the provider.

Parameters:

page_number (PageNumber) – The number of the page in the numbering of the provider.

Return type:

bytes

Returns:

The downloaded page in bytes.

_get_valid_since()[source]

Get the datetime since which this providers catalog is valid.

Return type:

datetime

_get_valid_until()[source]

Get the datetime until which this providers catalog is valid.

Return type:

datetime

_logger = <Logger cata_log_hub.providers.kik.Kik (WARNING)>
class cata_log_hub.providers.LidlDeutschland[source]

Bases: Provider

Provider class for the current german Lidl catalog.

uid: str = 'lidl-de'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Lidl'

The name of this catalog provider.

description: str = 'Lidl Angebote'

The user-facing description for this provider

url: str = 'https://www.lidl.de/c/online-prospekte/s10005610'

The url of this catalog provider

region

alias of Germany

first_page_number: int = 0

The number of the first page in the providers api

class Configuration[source]

Bases: Configuration

region_id: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

overview_url_template = 'https://endpoints.leaflets.schwarz/v4/overview/?region_id={region_id}&client_locale=lidl/{language_code_lower}-{language_code_upper}'
subcategory_name = 'Aktionsprospekte'
category_name = 'Filial'
flyer_name = 'Aktion'
flyer_index = 0
_get_catalog_data()[source]

Get and store the data for this providers catalog. Can be passed if no data beside the pagenumber is required to fetch pages from the provider.

Return type:

None

_get_page(page_number)[source]

Get one page from the provider.

Parameters:

page_number (PageNumber) – The number of the page in the numbering of the provider.

Return type:

bytes

Returns:

The downloaded page in bytes.

_get_valid_since()[source]

Get the datetime since which this providers catalog is valid.

Return type:

datetime

_get_valid_until()[source]

Get the datetime until which this providers catalog is valid.

Return type:

datetime

_logger = <Logger cata_log_hub.providers.lidl.LidlDeutschland (WARNING)>
class cata_log_hub.providers.LidlDeutschlandPrepreview[source]

Bases: LidlDeutschlandPreview

Provider class for Lidl preview catalog for second-next week.

uid: str = 'lidl-de-preview-2'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Lidl-Vorvorschau'

The name of this catalog provider.

description: str = 'Lidl Angebote übernächste Woche'

The user-facing description for this provider

flyer_index = 2
_get_preview_timedelta()[source]

Get the dynamic timedelta between the relevant datetime and the relevant datetime of the preview.

Return type:

timedelta

Returns:

The preview timedelta.

_logger = <Logger cata_log_hub.providers.lidl.LidlDeutschlandPrepreview (WARNING)>
class cata_log_hub.providers.LidlDeutschlandPreview[source]

Bases: Preview, LidlDeutschland

Provider class for Lidl preview catalog for next week.

uid: str = 'lidl-de-preview'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Lidl-Vorschau'

The name of this catalog provider.

description: str = 'Lidl Angebote nächste Woche'

The user-facing description for this provider

flyer_index = 1
_get_preview_timedelta()[source]

Get the dynamic timedelta between the relevant datetime and the relevant datetime of the preview.

Return type:

timedelta

Returns:

The preview timedelta.

_logger = <Logger cata_log_hub.providers.lidl.LidlDeutschlandPreview (WARNING)>
class cata_log_hub.providers.LidlItalia[source]

Bases: LidlDeutschland

Provider class for the current italian Lidl catalog.

uid: str = 'lidl-it'

A unique identifier for this provider class. Must not be changed after definition.

region

alias of Italy

description: str = 'Offerte Lidl'

The user-facing description for this provider

_logger = <Logger cata_log_hub.providers.lidl.LidlItalia (WARNING)>
class cata_log_hub.providers.MetroWochenangebote[source]

Bases: Provider

Provider class for Metro Wochenangebote current catalog.

uid: str = 'metro-de'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Metro-Wochenangebote'

The name of this catalog provider.

url: str = 'https://www.metro.de/angebote'

The url of this catalog provider

region

alias of Germany

description: str = 'Metro Wochenangebote'

The user-facing description for this provider

first_page_number: int = 0

The number of the first page in the providers api

overview_url_format = 'https://prospekte.metro.de/wochen-angebote-{valid_since:%y%m%d}-{valid_until:%y%m%d}/spreads.json'
base_url = 'https://prospekte.metro.de/'
_get_catalog_data()[source]

Get and store the data for this providers catalog. Can be passed if no data beside the pagenumber is required to fetch pages from the provider.

Return type:

None

_get_page(page_number)[source]

Get one page from the provider.

Parameters:

page_number (PageNumber) – The number of the page in the numbering of the provider.

Return type:

bytes

Returns:

The downloaded page in bytes.

_get_valid_since()[source]

Get the datetime since which this providers catalog is valid.

Return type:

datetime

_get_valid_until()[source]

Get the datetime until which this providers catalog is valid.

Return type:

datetime

_logger = <Logger cata_log_hub.providers.metro.MetroWochenangebote (WARNING)>
class cata_log_hub.providers.MetroWochenangebotePreview[source]

Bases: Preview, MetroWochenangebote

Provider class for Metro Wochenangebote preview catalog for next week.

uid: str = 'metro-de-preview'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Metro-Wochenangebote-Vorschau'

The name of this catalog provider.

description: str = 'Metro Wochenangebote für nächste Woche'

The user-facing description for this provider

_get_preview_timedelta()[source]

Get the dynamic timedelta between the relevant datetime and the relevant datetime of the preview.

Return type:

timedelta

Returns:

The preview timedelta.

_logger = <Logger cata_log_hub.providers.metro.MetroWochenangebotePreview (WARNING)>
class cata_log_hub.providers.Netto[source]

Bases: Provider

Provider class for Netto catalog.

uid: str = 'netto-de'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Netto'

The name of this catalog provider.

description: str = 'Netto Angebote'

The user-facing description for this provider

region

alias of Germany

url: str = 'https://www.netto-online.de/ueber-netto/Online-Prospekte.chtm'

The url of this catalog provider

first_page_number: int = 0

The number of the first page in the providers api

schedule: str = '0 4 * * 1-6'

The crontab schedule for fetching this provider

overview_url_format = 'https://wochenprospekt.netto-online.de/hz{week_number}_pobd/spreads.json'
base_url = 'https://wochenprospekt.netto-online.de'
_get_catalog_data()[source]

Get and store the data for this providers catalog. Can be passed if no data beside the pagenumber is required to fetch pages from the provider.

Return type:

None

_get_page(page_number)[source]

Get one page from the provider.

Parameters:

page_number (PageNumber) – The number of the page in the numbering of the provider.

Return type:

bytes

Returns:

The downloaded page in bytes.

_get_valid_since()[source]

Get the datetime since which this providers catalog is valid.

Return type:

datetime

_get_valid_until()[source]

Get the datetime until which this providers catalog is valid.

Return type:

datetime

_logger = <Logger cata_log_hub.providers.netto.Netto (WARNING)>
class cata_log_hub.providers.NettoPreview[source]

Bases: Preview, Netto

Provider class for Netto preview catalog for next week.

uid: str = 'netto-de-preview'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Netto-Vorschau'

The name of this catalog provider.

description: str = 'Netto Angebote nächste Woche'

The user-facing description for this provider

schedule: str = '0 4 * * *'

The crontab schedule for fetching this provider

_get_preview_timedelta()[source]

Get the dynamic timedelta between the relevant datetime and the relevant datetime of the preview.

Return type:

timedelta

Returns:

The preview timedelta.

_logger = <Logger cata_log_hub.providers.netto.NettoPreview (WARNING)>
class cata_log_hub.providers.Norma[source]

Bases: Provider

Provider class for Norma catalog.

uid: str = 'norma-de'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Norma'

The name of this catalog provider.

description: str = 'Norma Angebote'

The user-facing description for this provider

region

alias of Germany

url: str = 'https://www.norma-online.de/de/angebote/onlineprospekt/'

The url of this catalog provider

catalog_url_format = 'https://www.norma-online.de/de/angebote/online-prospekt/{relevant_datetime:%Y}-{week_number:02}_FG/files/page/{page_number}.jpg'
_get_catalog_data()[source]

Get and store the data for this providers catalog. Can be passed if no data beside the pagenumber is required to fetch pages from the provider.

Return type:

None

_get_page(page_number)[source]

Get one page from the provider.

Parameters:

page_number (PageNumber) – The number of the page in the numbering of the provider.

Return type:

bytes

Returns:

The downloaded page in bytes.

_get_valid_since()[source]

Get the datetime since which this providers catalog is valid.

Return type:

datetime

_get_valid_until()[source]

Get the datetime until which this providers catalog is valid.

Return type:

datetime

_logger = <Logger cata_log_hub.providers.norma.Norma (WARNING)>
class cata_log_hub.providers.NormaPrepreview[source]

Bases: NormaPreview

Provider class for Norma preview catalog for second-next week.

uid: str = 'norma-de-preview-2'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Norma-Vorvorschau'

The name of this catalog provider.

description: str = 'Norma Angebote übernächste Woche'

The user-facing description for this provider

_get_preview_timedelta()[source]

Get the dynamic timedelta between the relevant datetime and the relevant datetime of the preview.

Return type:

timedelta

Returns:

The preview timedelta.

_logger = <Logger cata_log_hub.providers.norma.NormaPrepreview (WARNING)>
class cata_log_hub.providers.NormaPreview[source]

Bases: Preview, Norma

Provider class for Norma preview catalog for next week.

uid: str = 'norma-de-preview'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Norma-Vorschau'

The name of this catalog provider.

description: str = 'Norma Angebote nächste Woche'

The user-facing description for this provider

_get_preview_timedelta()[source]

Get the dynamic timedelta between the relevant datetime and the relevant datetime of the preview.

Return type:

timedelta

Returns:

The preview timedelta.

_logger = <Logger cata_log_hub.providers.norma.NormaPreview (WARNING)>
class cata_log_hub.providers.NormaRetrospect[source]

Bases: NormaPreview

Provider class for Norma retrospect catalog for last week.

uid: str = 'norma-de-retrospect'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Norma-Rückschau'

The name of this catalog provider.

description: str = 'Norma Angebote letzte Woche'

The user-facing description for this provider

_get_preview_timedelta()[source]

Get the dynamic timedelta between the relevant datetime and the relevant datetime of the preview.

Return type:

timedelta

Returns:

The preview timedelta.

_logger = <Logger cata_log_hub.providers.norma.NormaRetrospect (WARNING)>
class cata_log_hub.providers.NormaRetrospect2[source]

Bases: NormaPreview

Provider class for Norma retrospect catalog for second-last week.

uid: str = 'norma-de-retrospect-2'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Norma-Rückrückschau'

The name of this catalog provider.

description: str = 'Norma Angebote vorletzte Woche'

The user-facing description for this provider

_get_preview_timedelta()[source]

Get the dynamic timedelta between the relevant datetime and the relevant datetime of the preview.

Return type:

timedelta

Returns:

The preview timedelta.

_logger = <Logger cata_log_hub.providers.norma.NormaRetrospect2 (WARNING)>
class cata_log_hub.providers.Penny[source]

Bases: Provider

Provider class for Kaufland Wochenangebote catalog.

uid: str = 'penny-de'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Penny'

The name of this catalog provider.

description: str = 'Penny Katalog'

The user-facing description for this provider

schedule: str = '0 3 * * *'

The crontab schedule for fetching this provider

class Configuration[source]

Bases: Configuration

markt_id: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

url: str = 'https://www.penny.de/angebote#handout'

The url of this catalog provider

region

alias of Germany

first_page_number: int = 0

The number of the first page in the providers api

pdf_url_template = 'https://penny-publish.blaetterkatalog.de/frontend/catalogs/{catalog_id}/2/pdf/complete.pdf'
market_url_template = 'https://www.penny.de/.rest/market/markets/market_{markt_id}'
market_catalog_url_key = 'flippingBookURL'
_get_catalog_data()[source]

Get and store the data for this providers catalog. Can be passed if no data beside the pagenumber is required to fetch pages from the provider.

Return type:

None

_get_page(page_number)[source]

Get one page from the provider.

Parameters:

page_number (PageNumber) – The number of the page in the numbering of the provider.

Return type:

bytes

Returns:

The downloaded page in bytes.

_get_valid_since()[source]

Get the datetime since which this providers catalog is valid.

Return type:

datetime

_get_valid_until()[source]

Get the datetime until which this providers catalog is valid.

Return type:

datetime

_cleanup()[source]

Additional cleanup.

Return type:

None

_logger = <Logger cata_log_hub.providers.penny.Penny (WARNING)>
class cata_log_hub.providers.PennyPreview[source]

Bases: Preview, Penny

Provider class for Kaufland Wochenangebote preview catalog for next week.

uid: str = 'penny-de-preview'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Penny-Vorschau'

The name of this catalog provider.

description: str = 'Penny Katalog im nächsten Katalog'

The user-facing description for this provider

_get_preview_timedelta()[source]

Get the dynamic timedelta between the relevant datetime and the relevant datetime of the preview.

Return type:

timedelta

Returns:

The preview timedelta.

market_catalog_url_key = 'nextWeekFlippingBookURL'
_logger = <Logger cata_log_hub.providers.penny.PennyPreview (WARNING)>
class cata_log_hub.providers.Provider[source]

Bases: ABC

Abstract base class for all catalog providers.

_registry: ClassVar[dict[str, type[Provider]]] = {'action-de': <class 'cata_log_hub.providers.action.Action'>, 'aldi-nord-de': <class 'cata_log_hub.providers.aldi_nord.AldiNord'>, 'aldi-nord-de-preview': <class 'cata_log_hub.providers.aldi_nord.AldiNordPreview'>, 'aldi-sued-de': <class 'cata_log_hub.providers.aldi_sued.AldiSued'>, 'aldi-sued-de-preview': <class 'cata_log_hub.providers.aldi_sued.AldiSuedPreview'>, 'aldi-sued-de-preview-2': <class 'cata_log_hub.providers.aldi_sued.AldiSuedPrepreview'>, 'edeka-markt-de': <class 'cata_log_hub.providers.edeka.EdekaMarkt'>, 'hofer-au': <class 'cata_log_hub.providers.hofer.Hofer'>, 'hofer-au-preview': <class 'cata_log_hub.providers.hofer.HoferPreview'>, 'kaufland-de': <class 'cata_log_hub.providers.kaufland.KauflandWoche'>, 'kaufland-de-preview': <class 'cata_log_hub.providers.kaufland.KauflandWochePreview'>, 'kaufland-sonder-de': <class 'cata_log_hub.providers.kaufland.KauflandSonder'>, 'kik-de': <class 'cata_log_hub.providers.kik.Kik'>, 'lidl-de': <class 'cata_log_hub.providers.lidl.LidlDeutschland'>, 'lidl-de-preview': <class 'cata_log_hub.providers.lidl.LidlDeutschlandPreview'>, 'lidl-de-preview-2': <class 'cata_log_hub.providers.lidl.LidlDeutschlandPrepreview'>, 'lidl-it': <class 'cata_log_hub.providers.lidl.LidlItalia'>, 'metro-de': <class 'cata_log_hub.providers.metro.MetroWochenangebote'>, 'metro-de-preview': <class 'cata_log_hub.providers.metro.MetroWochenangebotePreview'>, 'netto-de': <class 'cata_log_hub.providers.netto.Netto'>, 'netto-de-preview': <class 'cata_log_hub.providers.netto.NettoPreview'>, 'norma-de': <class 'cata_log_hub.providers.norma.Norma'>, 'norma-de-preview': <class 'cata_log_hub.providers.norma.NormaPreview'>, 'norma-de-preview-2': <class 'cata_log_hub.providers.norma.NormaPrepreview'>, 'norma-de-retrospect': <class 'cata_log_hub.providers.norma.NormaRetrospect'>, 'norma-de-retrospect-2': <class 'cata_log_hub.providers.norma.NormaRetrospect2'>, 'penny-de': <class 'cata_log_hub.providers.penny.Penny'>, 'penny-de-preview': <class 'cata_log_hub.providers.penny.PennyPreview'>, 'rewe-de': <class 'cata_log_hub.providers.rewe.Rewe'>, 'rewe-de-preview': <class 'cata_log_hub.providers.rewe.RewePreview'>, 'rossmann-aktion-de': <class 'cata_log_hub.providers.rossmann.RossmannAktion'>, 'rossmann-beilage-de': <class 'cata_log_hub.providers.rossmann.RossmannBeilage'>}
uid: str

A unique identifier for this provider class. Must not be changed after definition.

name: str

The name of this catalog provider.

description: str

The user-facing description for this provider

url: str

The url of this catalog provider

region: type[Region]

The region this catalog is issued in

first_page_number: int = 1

The number of the first page in the providers api

schedule: str = '0 4 * * *'

The crontab schedule for fetching this provider

jitter: int = 3600

Jitter for the schedule timing in seconds.

class Configuration[source]

Bases: BaseModel

The configuration for this provider.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

final __init__(configuration)[source]

Constructor for a provider instance.

Parameters:

configuration (dict[str, str]) – The configuration dictionary for the provider.

Variables:
Return type:

None

_cleanup()[source]

Additional cleanup.

Return type:

None

get_relevant_datetime()[source]

Get the datetime that defines the catalog offered by this provider. The current datetime for current catalogs, a future datetime for preview catalogs. Used to set _relevant_datetime.

Return type:

datetime

Returns:

The current datetime in the providers regional timezone.

abstractmethod _get_valid_since()[source]

Get the datetime since which this providers catalog is valid.

Return type:

datetime

final get_valid_since()[source]

_get_valid_since wrapped in error handling.

Raises:

cata_log_hub.exceptions.ProviderBrokenWarning – If any exception is raise in getting the valid_since timestamp.

Return type:

datetime

abstractmethod _get_valid_until()[source]

Get the datetime until which this providers catalog is valid.

Return type:

datetime

final get_valid_until()[source]

_get_valid_until wrapped in error handling.

Raises:

cata_log_hub.exceptions.ProviderBrokenWarning – If any exception is raise in getting the valid_until timestamp.

Return type:

datetime

abstractmethod _get_page(page_number)[source]

Get one page from the provider.

Parameters:

page_number (PageNumber) – The number of the page in the numbering of the provider.

Return type:

bytes

Returns:

The downloaded page in bytes.

get_page(page_number)[source]

_get_page wrapped in error handling.

Raises:
Return type:

bytes

Parameters:

page_number (PageNumber)

abstractmethod _get_catalog_data()[source]

Get and store the data for this providers catalog. Can be passed if no data beside the pagenumber is required to fetch pages from the provider.

Return type:

None

get_catalog_data()[source]

_get_catalog_data wrapped in error handling.

Raises:
Return type:

None

final iter_catalog_pages()[source]

Iterate over pages of this providers catalog.

Return type:

Generator[tuple[int, bytes]]

Returns:

A generator of the pages data as bytes.

final classmethod get_class(class_uid)[source]

Get the provider class to a given class-id.

Parameters:

class_uid (str) – The class-id to get the provider for.

Return type:

type[Provider]

Returns:

The class to the class-id.

Raises:

cata_log_hub.exceptions.ProviderUnknownClassWarning – If there is no class for the given uid.

final classmethod get_class_uids()[source]

Get all registered class-ids.

Return type:

list[str]

Returns:

A set of all registered class identifiers.

final classmethod get_classes()[source]

Get all registered classes.

Return type:

list[type[Provider]]

Returns:

A set of all registered classes.

final classmethod validate_configuration(configuration_dict)[source]

Validate a given configuration and return the validated version.

Parameters:

configuration_dict (dict[str, Any]) – The configuration dictionary to validate.

Return type:

Configuration

Returns:

The validated configuration.

Raises:

cata_log_hub.exceptions.ProviderInvalidConfigurationWarning – If the given configuration is incomplete or otherwise invalid.

class cata_log_hub.providers.Rewe[source]

Bases: Provider

Provider class for Rewe catalog.

uid: str = 'rewe-de'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Rewe'

The name of this catalog provider.

description: str = 'Rewe Katalog'

The user-facing description for this provider

url: str = 'https://www.rewe.de/angebote/'

The url of this catalog provider

region

alias of Germany

class Configuration[source]

Bases: Configuration

markt_id: str
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

first_page_number: int = 0

The number of the first page in the providers api

overview_url_format = 'https://view.publitas.com/rewe-markt/rewe_{relevant_datetime:%Y}_wk{week_number:02}_{markt_id}/spreads.json'
base_url = 'https://view.publitas.com'
_get_catalog_data()[source]

Get and store the data for this providers catalog. Can be passed if no data beside the pagenumber is required to fetch pages from the provider.

Return type:

None

_get_page(page_number)[source]

Get one page from the provider.

Parameters:

page_number (PageNumber) – The number of the page in the numbering of the provider.

Return type:

bytes

Returns:

The downloaded page in bytes.

_get_valid_since()[source]

Get the datetime since which this providers catalog is valid.

Return type:

datetime

_get_valid_until()[source]

Get the datetime until which this providers catalog is valid.

Return type:

datetime

_logger = <Logger cata_log_hub.providers.rewe.Rewe (WARNING)>
class cata_log_hub.providers.RewePreview[source]

Bases: Preview, Rewe

Provider class for Rewe preview catalog.

uid: str = 'rewe-de-preview'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Rewe-Vorschau'

The name of this catalog provider.

description: str = 'Rewe Katalog nächste Woche'

The user-facing description for this provider

schedule: str = '30 4 * * 6,0'

The crontab schedule for fetching this provider

_get_preview_timedelta()[source]

Get the dynamic timedelta between the relevant datetime and the relevant datetime of the preview.

Return type:

timedelta

Returns:

The preview timedelta.

_logger = <Logger cata_log_hub.providers.rewe.RewePreview (WARNING)>
class cata_log_hub.providers.RossmannAktion[source]

Bases: RossmannBeilage

Provider class for Rossmann Angebote catalog.

uid: str = 'rossmann-aktion-de'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Rossmann-Aktionsangebote'

The name of this catalog provider.

description: str = 'Rossmann Aktionsangebote'

The user-facing description for this provider

url_format = 'https://www.rossmann.de/de/kataloge/angebote/catalogs/{relevant_datetime:%Y}_kw{week_number}_aktion/normal/bk_{page_number}.jpg'
_logger = <Logger cata_log_hub.providers.rossmann.RossmannAktion (WARNING)>
class cata_log_hub.providers.RossmannBeilage[source]

Bases: Provider

Provider class for Rossmann Beilage catalog.

uid: str = 'rossmann-beilage-de'

A unique identifier for this provider class. Must not be changed after definition.

name: str = 'Rossmann-Angebote'

The name of this catalog provider.

description: str = 'Rossmann Angebote'

The user-facing description for this provider

url: str = 'https://www.rossmann.de/de/kataloge/angebote/index.html'

The url of this catalog provider

region

alias of Germany

schedule: str = '0 5 * * 1-5'

The crontab schedule for fetching this provider

url_format = 'https://www.rossmann.de/de/kataloge/angebote/catalogs/{relevant_datetime:%Y}_kw{week_number}_beilage/normal/bk_{page_number}.jpg'
_get_catalog_data()[source]

Get and store the data for this providers catalog. Can be passed if no data beside the pagenumber is required to fetch pages from the provider.

Return type:

None

_get_page(page_number)[source]

Get one page from the provider.

Parameters:

page_number (PageNumber) – The number of the page in the numbering of the provider.

Return type:

bytes

Returns:

The downloaded page in bytes.

_get_valid_since()[source]

Get the datetime since which this providers catalog is valid.

Return type:

datetime

_get_valid_until()[source]

Get the datetime until which this providers catalog is valid.

Return type:

datetime

_logger = <Logger cata_log_hub.providers.rossmann.RossmannBeilage (WARNING)>

Submodules