Exemplo n.º 1
0
def main():
    twitter_auth = tweepy.OAuthHandler(secret.API_KEY, secret.API_SECRET)
    twitter_auth.set_access_token(secret.ACCESS_TOKEN, secret.ACCESS_SECRET)

    twitter_client = tweepy.API(twitter_auth)

    poem_lines = poem_from_template(HAIKU_TEMPLATE, DATABASE, CORPUS_ID)
    poem_raw_lines = map(lambda l: l['raw'], poem_lines)

    try:
        return twitter_client.update_status(status='\n'.join(poem_raw_lines))
    except tweepy.error.TweepError as e:
        return e
Exemplo n.º 2
0
 def poem_new(self):
     session = get_session(self.db)
     corpus = self.get_corpus(session)
     if 0 == len(corpus.sources):
         log.error("Corpus {} has no sources.".format(corpus.name))
         log.error("Use `prosaic corpus link 'corpus name' 'source name'` to add sources")
         return
     template = self.template
     poem_lines = map(first, poem_from_template(self.template, self.db, corpus.id))
     output_filename = self.args.output
     if output_filename:
         with open(output_filename, 'w') as f:
             f.write(list(poem_lines).join('\n') + '\n')
             log.debug('poem written to {}'.format(output_filename))
     else:
         for line in poem_lines:
             print(line)
Exemplo n.º 3
0
def generate() -> ResponseData:
    method = get_method(request)
    session = Session()

    if method == 'GET':
        context = auth_context(request)
        cs = session.query(Corpus).all()
        ts = session.query(Template).all()
        context.update({
            'corpora': cs,
            'templates': ts,
        })

        return render_template('generate.html', **context)

    if method == 'POST':
        corpus_id = request.form['corpus_id']
        corpus_name = session.query(Corpus.name)\
                             .filter(Corpus.id==corpus_id)\
                             .one()[0]
        t = json.loads(request.form['template_tweak'])
        poem = poem_from_template(t, app.config['DB'], corpus_id)
        source_ids = set(map(lambda p: p[1], poem))
        get_source_name = lambda sid:\
                          session.query(Source.name).filter(Source.id==sid).one()[0]
        ss = map(
            lambda sid: {'id':sid, 'name': get_source_name(sid)},
            source_ids
        )

        result = {
            'corpus': {
                'id': corpus_id,
                'name': corpus_name,
            },
            'lines': list(map(lambda p: p[0], poem)),
            'used_sources': list(ss),
        }

        return json.dumps(result)