"""
MemeGenerator index (main) view.

"""

from collections import defaultdict

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')

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

@MemeGenerator.app.route('/search/<page>')
def show_search(page=1):
    """Show result search page."""
    query = flask.request.args.get('q')
    page = int(page)
    if page < 1: page = 1
    search_resutlts = flickr.photos.search(text=query,
                                            page=page, 
                                            per_page=20,
                                            safe_search=1,
                                            sort='relevance')['photos']
    context = defaultdict(list)
    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:
        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)