Makes following your favorite websites a snap!
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
scraper
static
templates
.gitignore
README.md
errors.py
forms.py
managers.py
models.py
requirements.txt
up2date.py
wsgi.py

README.md

Up2date

Makes following your favorite websites a snap!

In a hurry? Go straight to the app.

Technologies used

Up2date is built on:

  • Python 3.4
  • Flask
  • Flask SQLAlchemy
  • BeautifulSoup 4
  • MySQL
  • Bootstrap

Too many websites to track?

Up2date was created to solve a problem I was facing: tracking multiple websites. There are over a dozen websites I love, but I don't always have the leisure to visit each one of them (if I can remember all of them, that is!). Wouldn't it be nice, I said to myself one day, if someone could comb through them and send me an email summary of just the stuff that matters? Bingo! Up2date was born.

Caveat: No solution is perfect, and Up2date is the same. The downside here is that adding a new website means examining its structure and adding a class to the system.

The app is running here.

Installation instructions

  • Paste the code in a directory of your choice.
  • Set up a virtual environment
  • Install the required pip packages from requirements.txt
  • Create config.py having the following:
DATABASE_URI = 'mysql://user:pass@localhost/up2date'
DEBUG_MODE = True
APP_SECRET_KEY = 'Secret key here'
  • Finally, the script scraper/scraper.py needs to be set up as a cron job, respecting the virtualenv.
DB setup

The DB schema can be determined easily by looking into models.py.

Wish list

Up2date was coded in a passionate hurry, so it lacks many things that I'll be adding subsequently:

  • Have at least 50 important websites crawled daily.
  • Option of individual mail and digest.
  • Allowing users to set up different alert times.
  • Make the code base more object-oriented (now only the scraper part isn't object-oriented)