Skip to main content

Automatic coupon clipper for Safeway's online "Safeway for U" coupons

Project description

Automatic Safeway coupon clipper

PyPI PyPI - Python Version Build codecov GitHub stars

safeway-coupons is a script that will log in to an account on safeway.com, and attempt to select all of the "Safeway for U" electronic coupons on the site so they don't have to each be clicked manually.

Installation and usage with Docker

A Docker container is provided which runs safeway-coupons with cron. The cron schedule and your Safeway account details may be configured using environment variables, or with an accounts file.

Example docker-compose.yaml with configuration via environment variables:

version: "3.7"

services:
  safeway-coupons:
    image: ghcr.io/smkent/safeway-coupons:latest
    environment:
      CRON_SCHEDULE: "0 2 * * *"  # Run at 2:00 AM each day
      SMTPHOST: your.smtp.host
      SAFEWAY_ACCOUNT_USERNAME: your.safeway.account.email@example.com
      SAFEWAY_ACCOUNT_PASSWORD: very_secret
      SAFEWAY_ACCOUNT_MAIL_FROM: your.email@example.com
      SAFEWAY_ACCOUNT_MAIL_TO: your.email@example.com
    restart: unless-stopped

Example docker-compose.yaml with configuration via accounts file:

version: "3.7"

services:
  safeway-coupons:
    image: ghcr.io/smkent/safeway-coupons:latest
    environment:
      CRON_SCHEDULE: "0 2 * * *"  # Run at 2:00 AM each day
      SMTPHOST: your.smtp.host
      SAFEWAY_ACCOUNTS_FILE: /accounts_file
    restart: unless-stopped
    volumes:
      - path/to/safeway_accounts_file:/accounts_file:ro

Start the container by running:

docker-compose up -d

Debugging information can be viewed in the container log:

docker-compose logs -f

Installation from PyPI

safeway-coupons is available on PyPI:

pip install safeway-coupons

sendmail is needed for email support.

For best results, run this program once a day or so with a cron daemon.

Usage

For full usage options, run

safeway-coupons --help

Configuration

safeway-coupons can clip coupons for one or more Safeway accounts in a single run, depending on the configuration method used.

If a sender email address is configured, a summary email will be sent for each Safeway account via sendmail. The email recipient defaults to the Safeway account email address, but can be overridden for each account.

Accounts are searched via the following methods in the listed order. Only one account configuration method may be used at a time.

With environment variables

A single Safeway account can be configured with environment variables:

  • SAFEWAY_ACCOUNT_USERNAME: Account email address (required)
  • SAFEWAY_ACCOUNT_PASSWORD: Account password (required)
  • SAFEWAY_ACCOUNT_MAIL_FROM: Sender address for email summary
  • SAFEWAY_ACCOUNT_MAIL_TO: Recipient address for email summary

With config file

Multiple Safeway accounts can be provided in an ini-style config file, with a section for each account. For example:

email_sender = sender@example.com   ; optional

[safeway.account@example.com]       ; required
password = 12345                    ; required
notify = your.email@example.com     ; optional

Provide the path to your config file using the -c or --accounts-config option:

safeway-coupons -c path/to/config/file

Development

Poetry installation

Via pipx:

pip install pipx
pipx install poetry
pipx inject poetry poetry-dynamic-versioning poetry-pre-commit-plugin

Via pip:

pip install poetry
poetry self add poetry-dynamic-versioning poetry-pre-commit-plugin

Development tasks

  • Setup: poetry install
  • Run static checks: poetry run poe lint or poetry run pre-commit run --all-files
  • Run static checks and tests: poetry run poe test

Created from smkent/cookie-python using cookiecutter

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

safeway_coupons-0.1.9.tar.gz (24.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

safeway_coupons-0.1.9-py3-none-any.whl (25.5 kB view details)

Uploaded Python 3

File details

Details for the file safeway_coupons-0.1.9.tar.gz.

File metadata

  • Download URL: safeway_coupons-0.1.9.tar.gz
  • Upload date:
  • Size: 24.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.15

File hashes

Hashes for safeway_coupons-0.1.9.tar.gz
Algorithm Hash digest
SHA256 4d76b4f32cf0450d276ddacaa2e20e4187a25756aa25960a8d81793e6038dbe6
MD5 a72cbb5f4eea4b659b7992b524f513aa
BLAKE2b-256 d7afed18474ee5f15e91e8dd17c9a7737323093698bdef8d47e171debf58ddef

See more details on using hashes here.

File details

Details for the file safeway_coupons-0.1.9-py3-none-any.whl.

File metadata

File hashes

Hashes for safeway_coupons-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 6bcd3fbf16f938f91754d157c4fa60095b24b2d8e1da56e58aea0a71db9019db
MD5 0b53547545e03f047ee5b1ac392c4248
BLAKE2b-256 fd7449f1773baa0dead9e08467130d87296916ea0d8375b0a160f38bc35bbea3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page