Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/sales.git
#!/bin/bash

scrape() {
  local DIR_SUBSCRIBER=$1
  local VENDOR_NAME=$2
  local PRODUCT_NAME=$3
  local PRODUCT_PAGE=$4
  local POSTAL_CODE=$5

  local URL="http://www.thebay.com/webapp/wcs/stores/servlet/en/thebay"

  local PATH_BODY="$DIR_SUBSCRIBER/$FILE_MESSAGE_BODY"
  local PATH_SUBJECT="$DIR_SUBSCRIBER/$FILE_MESSAGE_SUBJECT"

  local PATH_NOTIFIED="$DIR_SUBSCRIBER/$FILE_NOTIFIED"
  local PATH_PAGE="$DIR_SUBSCRIBER/page.html"

  curl -s "$URL/$PRODUCT_PAGE" | hxnormalize -x 2>/dev/null > $PATH_PAGE

  local PRODUCT_ID=$(cat $PATH_PAGE | hxselect "input[name='productId']" | \
    xmlstarlet sel -t -v "input/@value")

  JSON=$(hxselect -c "div[id='entitledItem_$PRODUCT_ID']" < $PATH_PAGE)

  FLAG_SALE=$(echo $JSON | jq ".[0].saleFlag")
  PRICE_CURRENT=$(echo $JSON | jq ".[0] | .offerPrice")
  PRICE_PREVIOUS=$(echo $JSON | jq ".[0] | .listPrice")

  if [ "$FLAG_SALE" == "true" ]; then
    temp="${PRICE_CURRENT%\"}"
    temp="${temp#\"}"
    PRICE_CURRENT=$temp

    temp="${PRICE_PREVIOUS%\"}"
    temp="${temp#\"}"
    PRICE_PREVIOUS=$temp

    echo "[$VENDOR_NAME] $PRODUCT_NAME now $PRICE_CURRENT" > $PATH_SUBJECT

    local TIME_CURRENT=$(date +%0R)

    # Reformat the date to be human-friendly.
    local TIMESTAMP_CURRENT="$(date +"$DATE_FORMAT") $TIME_CURRENT"

    # Put full details in the message body.
    cat >> "$PATH_BODY" << EOL

$PRODUCT_NAME
-------------------------
Price is $PRICE_CURRENT (was $PRICE_PREVIOUS) as of $TIMESTAMP_CURRENT.

See [store]($URL/$PRODUCT_PAGE) for details.
EOL
  else
    # Send out a notification if the item goes on sale again.
    rm -f $PATH_NOTIFIED $PATH_BODY $PATH_SUBJECT
  fi
}