def yield_characters_per_episode() -> [set]: "Yield set of characters belonging to the same episode" data = data_module.extract() for season, episodes in data.items(): for episode, citations in episodes.items(): yield set(itertools.chain.from_iterable(characters for _, characters in citations))
import numpy as np from PIL import Image from wordcloud import WordCloud import data as data_module IMG_OUT = 'out/wordcloud.png' IMG_MASK = 'resources/kaamelott-mask.png' FILE_STOPWORDS = 'resources/stopwords' def get_citation_texts(data): for episodes in data.values(): for citations in episodes.values(): yield from (c.text for c in citations) def get_stop_words(): with open(FILE_STOPWORDS) as fd: for line in fd: yield line.strip() if __name__ == '__main__': data = data_module.extract() stopwords = set(get_stop_words()) mask = np.array(Image.open(IMG_MASK)) text = '\n'.join(get_citation_texts(data)).lower() wc = WordCloud(margin=10, stopwords=stopwords, mask=mask).generate(text) wc.to_image().save(IMG_OUT)
@app.route('/') def Home(): return render_template('home.html') @app.route('/about') def About(): return render_template('about.html') #ordenes if __name__ == '__main__': app.run(debug=True) data.extract(con, f='lima') # ruta /add_contact --> agregar un nuevo objeto a la base de datos. @app.route('/add_contact', methods=['POST']) def add_contact(): if request.method == 'POST': name = request.form['name'] place = request.form['place'] city = request.form['city'] direction = request.form['direction'] cur = con.cursor() cur.execute( 'INSERT INTO contacto (name , place , city, direction) VALUES (%s, %s, %s, %s)', [name, place, city, direction]) con.commit()