Giter Site home page Giter Site logo

swa-dashboard's Introduction

SWA Dashboard

Dashboard to monitor and receive alerts for changes in Southwest fare prices.

image

Why?

I'm a lazy programmer who was tired of checking flight prices. ¯\_(ツ)_/¯

Installation

Since I would rather not get in trouble for publishing this tool to npm, you can clone the repo locally and use npm link to use the executable.

cd wherever-you-cloned-it-to
npm link

Usage

It will scrape Southwest's prices every n minutes (n = whatever interval you define via the --interval flag) and compare the results, letting you know the difference in price since the last interval. The default interval is 30 mins and the default fare type is dollars.

You may optionally set the --individual-deal-price flag, which will alert you if either fare price falls below the threshold you define. There is also the optional --total-deal-price flag, which will alert you if the combined total of both fares falls below the threshold. Most flags are required, unless stated otherwise.

swa \
  --from 'DAL' \
  --to 'LGA' \
  --leave-date '11/01/2017' \
  --return-date '11/08/2017' \
  --leave-time anytime \ # Can be anytime, morning, afternoon, evening (optional)
  --return-time anytime \ # Can be anytime, morning, afternoon, evening (optional)
  --fare-type 'dollars' \ # Can be dollars or points (optional)
  --passengers 2 \
  --individual-deal-price 50 \ # In dollars or points (optional)
  --total-deal-price 120 \ # In dollars or points (optional)
  --interval 5 # In minutes (optional)

If you would like to look at flights going one way between two airports, you can use the --one-way flag. This ignores values entered with --return-date and --return-time, and --total-deal-price.

swa \
  --one-way
  --from 'DAL' \
  --to 'LGA' \
  --leave-date '11/01/2017' \
  --leave-time anytime \ # Can be anytime, morning, afternoon, evening (optional)
  --fare-type 'dollars' \ # Can be dollars or points (optional)
  --passengers 2 \
  --individual-deal-price 50 \ # In dollars or points (optional)
  --interval 5 # In minutes (optional)

Twilio integration

If you have a Twilio account (I'm using a free trial account) and you've set up a deal price threshold, you can set the following environment vars to set up SMS deal alerts. Just be warned: as long as the deal threshold is met, you're going to receive SMS messages at the rate of the interval you defined. Better wake up and book those tickets!

export TWILIO_ACCOUNT_SID=""
export TWILIO_AUTH_TOKEN=""
export TWILIO_PHONE_FROM=""
export TWILIO_PHONE_TO=""

Troubleshooting

Python 2 requirement

When building the app, the sub module node-gyp has a dependency on Python 2 at this time.

Node >=5.11.0 requirement

If you receive a SyntaxError: Unexpected token ... upon running the swa command, make sure you are running a version of node that supports ES6 syntax (5.11.0 and up).

C++11 compiler requirement

You may experience compilation errors when you attempt to run npm link. If so, you'll need to make sure you have a C++11 compiler installed on your system. If you're running on Windows this is sometimes resolved by installing the Visual C++ Build Tools. For *nix systems you'll need to find the specific package needed for your particular OS.

libxmljs requirement

Under some circumstances, libxmljs may throw an error that looks like this:

Error: Could not locate the bindings file. Tried:
 → /root/swa-dashboard/node_modules/libxmljs/build/xmljs.node

You can fix it by rebuilding libxmljs manually:

sudo npm install -g node-gyp
cd node_modules/libxmljs
node-gyp rebuild

swa-dashboard's People

Contributors

baril27 avatar ericgla avatar ezekg avatar jryio avatar musicmunky avatar pddenhar avatar swdgit avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.