Git Product home page Git Product logo

resurface's Introduction

Resurface

With so much amazing content on the web it can be hard to remember to revisit your favourite articles, videos, or Tweets. Resurface gathers all of your favourite content from the web in one place and sends your regular reminders with samples of your favourites so you can rediscover the best of the web.

Try it at: https://getresurface.net

Features

  • Import your favourite content from popular sites like Pocket, YouTube, etc. to view them all in one place
  • Receive periodic e-mails with reminders to rediscover a sample of these favourites
  • [Planned] Quickly search across all of your favourite content

Technologies

Built using:

  • Flask Web Framework for Python
  • SendGrid E-mail API for automating e-mails
  • SQLite
  • APScheduler for scheduling reminders
  • Bootstrap for styling
  • AWS Route 53 for domain name registration
  • Zoho for associating an e-mail address with the domain name

Config File

Running the application requires a file called config.py in the root directory with the following values:

class Config:
    SECRET_KEY=''
    # Pocket API key
    POCKET_CONSUMER_KEY=''
    # SendGrid API Key
    MAIL_PASSWORD=""
    MAIL_DEFAULT_SENDER=""

It also requires keys from Google's API with permissions to view your YouTube channel. This file should also be stored in the root directory and named google_api_secrets.json.

resurface's People

Contributors

dependabot[bot] avatar reidy-p avatar

Watchers

 avatar  avatar

resurface's Issues

Maintain state for job schedule

If the application crashes we should be able to restart with all the job schedules in tact. There is some information on this in the apscheduler docs

E-mail layout

Improve the layout of the Resurface reminder e-mail to use more styling and HTML

Add more than one reminder

It should be possible to have more than one reminder for each user and to modify these reminders from the web UI

Verify app on Google

To allow others to use the YouTube integration I need to get approval from Google

Share favourites

Investigate the ability to share your imported items with others easily

Automatic checking for new items to import

Once a particular source has been imported we should try to periodically check for updates from that source. Some code to do this in Pocket is shown below:

if not os.path.exists('pocket_access_token.pickle'):
    with open('pocket_access_token.pickle', 'wb') as token:
        pickle.dump(access_token, token)

sched.add_job(
        check_pocket_updates,
        kwargs={'user_id': current_user.id},
        trigger='interval',
        hours=1
 )

def check_pocket_updates(user_id):
    with open('pocket_access_token.pickle', 'rb') as token:
        access_token = pickle.load(token)

    data = {
        "access_token": access_token,
        "consumer_key": application.config['POCKET_CONSUMER_KEY'],
        "favorite": 1
    }
    response = requests.get("https://getpocket.com/v3/get/", json=data)
    favourites = [favourite for favourite in response.json()['list'].values()]

    add_items(user_id, favourites)

Fix broken links from Pocket

Some links imported from Pocket don't work and are displayed as blank because there seems to be no resolved_url

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.