Skip to content
Snippets Groups Projects
index.py 2.29 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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)