Skip to content
Snippets Groups Projects
index.py 2.29 KiB
Newer Older
rxd's avatar
rxd committed
"""
MemeGenerator index (main) view.

"""

from collections import defaultdict
rxd's avatar
rxd committed

import arrow
import flask

import MemeGenerator

import flickrapi
api_key = u'0863dcba2e84fea28ec7a7fd4b19ee33'
api_secret = u'd4adaa95d76272e7'

flickr = flickrapi.FlickrAPI(api_key, api_secret, format='parsed-json')

rxd's avatar
rxd committed
@MemeGenerator.app.route('/')
def show_index():
    """Show index page"""
rxd's avatar
rxd committed
    return flask.render_template('index.html')

rxd's avatar
rxd committed
@MemeGenerator.app.route('/search/<page>')
def show_search(page=1):
    """Show result search page."""
    query = flask.request.args.get('q')
rxd's avatar
rxd committed
    page = int(page)
    if page < 1: page = 1
    search_resutlts = flickr.photos.search(text=query,
rxd's avatar
rxd committed
                                            page=page, 
                                            per_page=20,
                                            safe_search=1,
rxd's avatar
rxd committed
                                            sort='relevance')['photos']
    context = defaultdict(list)
rxd's avatar
rxd committed
    pages = search_resutlts['pages']
    search_resutlts = search_resutlts['photo']
    # flip the searches, check for boundary conditions
    context['next'] = page
    context['prev'] = page
    if page+1 < pages:
        context['next'] = page+1
    if page-1  > 0:
        context['prev'] = page-1
    
    context['query'] = query
    context['current'] = page
    for one in search_resutlts:
rxd's avatar
rxd committed
        url = 'https://live.staticflickr.com/{}/{}_{}_q.jpg'.format(
            one['server'],
            one['id'],
            one['secret']
        )
        tmp = { 
                'id': one['id'],
                'url': url
            }
        context['items'].append(tmp)
    return flask.render_template('search_res.html', **context)

@MemeGenerator.app.route('/setup')
def show_setup():
    """Show meme setup page."""
    url = flask.request.args.get('url')
    context = dict()
    context['url'] = url
    return flask.render_template('setup.html', **context)

@MemeGenerator.app.route('/generate')
def generate():
    """Show generated Meme page"""
    top = flask.request.args.get('top', default='_')
    bot = flask.request.args.get('bot', default='_')
    url = flask.request.args.get('url')
    meme_url = 'https://api.memegen.link/images/custom/{}/{}.png?background={}'.format(top, bot, url)
    context = {'url': meme_url}
    return flask.render_template('generate.html', **context)