[PYTHON] J'ai créé une application Web qui trace le journal de vie enregistré sur Google Home comme un diagramme de Gantt.

J'ai créé une application Web qui trace les journaux de vie comme un diagramme de Gantt

_Personnes, personnes, personnes, personnes, personnes, personnes, personnes, personnes, personnes > LIFE LOG GRAPH GENERATOR <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

Explication grossière

À partir des données du journal de vie dans lesquelles «date et heure» et «contenu» sont décrits. .. .. (Plié.)
October 15, 2019 at 11:Heure du coucher 24 h
October 16, 2019 at 06:03AM Lève-toi
October 16, 2019 at 07:08h00 sortir
October 16, 2019 at 08:Début du développement à 17h
October 16, 2019 at 10:Développement 49AM terminé
October 16, 2019 at 12:30PM retour à la maison
October 16, 2019 at 12:59PM Commencer à lire
October 16, 2019 at 04:32PM Fin de la lecture
October 16, 2019 at 10:31h se coucher
October 17, 2019 at 06:46AM se lever
October 17, 2019 at 07:29AM sortie
October 17, 2019 at 08:Début du développement 27AM
October 17, 2019 at 12:Développement 48PM terminé
October 17, 2019 at 01:48PM Retour à la maison
October 17, 2019 at 02:35PM TV démarré
October 17, 2019 at 04:54PM TV terminée

C'est une application Web qui crée un tel graphique interactif. output

Je vais le déplacer!

demo

De quoi êtes-vous heureux?

Ceci est attendu.

En premier lieu, avez-vous un tel moyamoya?

―― Pas assez bien ** Je ne comprends pas mon style de vie (rythme) **. ――C'est dommage d'enregistrer vos actions dans l'application du journal de vie en ** manuellement **. ――Dans l'application du journal de vie, il est souvent représenté par un ** graphe circulaire **, mais je veux que vous le représentiez comme un diagramme de Gantt.

** Cette application résout ce problème. ** **

Précautions à connaître

――Cette application Web a été créée par moi comme un hobby pour l'informatique, qui est de la Faculté de géographie et travaille actuellement pour une entreprise de mécanique. Par conséquent, il semble qu'il y ait des bugs et des pénuries techniques. J'espère que vous l'essaierez après avoir considéré cela. Il s'agit de la première application Web développée, et comme il s'agit d'un essai complet pour moi, elle fonctionne actuellement avec le plan gratuit de Heroku. Par conséquent, il peut être affecté par le sommeil de 30 minutes et la limite Dyno. Veuillez me pardonner là-bas (pleurer)

référence

Que faites-vous en interne?

Il est exploité par python + Flask + Plotly + Heroku.

Grosso modo

  1. En utilisant Flask, affichez ʻindex.html avec le formulaire d'entrée dans /`.
  2. Lorsque les données du journal de vie sont entrées dans le formulaire de saisie et que le bouton «Créer un graphique» est enfoncé, les données sont formatées au format csv et une «instance Plotly» du diagramme de Gantt est créée.
  3. Affichez le graph.html avec l''instance Plotly créée intégrée dans / graph`.
Environnement dépendant (réduit)

requirement.txt


python==3.7.4
Flask==1.1.1
requests==2.22.0
gunicorn==19.9.0
pandas==0.25.1
plotly==4.1.1
Code source approximatif (plié)

app.py


import os
import re
import pandas as pd
from io import StringIO
from pathlib import Path
from datetime import datetime, timedelta
from plotly import figure_factory as pff
from plotly import offline
from flask import Flask, request, render_template


app = Flask(__name__)


#Traitement principal de la représentation du diagramme de Gantt
def main(Données saisies dans le formulaire):
  
Omis car le code est trop long et spaghetti

renvoyer l'instance de l'intrigue


#Mettez en forme les données saisies dans le formulaire au format csv.
def convert_input_data_to_csv(input_data):
    temp_data = re.sub(r",", "", input_data)
    conv_data = re.sub(r"(.+([AP]M|\d\d:\d\d))(\s+?)(\S+)", r"\1,\4", temp_data)

    return conv_data


#Rendez la page principale.
@app.route("/", methods=["GET", 'POST'])
def render_main_html():
    return render_template("index.html")


#Rendez la page de configuration.
@app.route("/setting", methods=["GET", 'POST'])
def render_setting_html():
    return render_template("setting.html")


#Graphique Rendre la page.
#La fonction principale renvoie une instance de parcelle et l'incorpore en html.
@app.route("/graph", methods=["GET", 'POST'])
def render_graph_at_html():
    if request.method == 'GET':
        res = request.args.get('data')
    elif request.method == 'POST':
        res = request.form['data']
    else:
        res = None

    res_conv = convert_input_data_to_csv(res)

    df = pd.read_csv(StringIO(res_conv), sep=",", header=None).set_index(0)
    df.index = df.index.map(pd.to_datetime)

    return render_template("graph.html", fig=main(df))


if __name__ == '__main__':
    app.run(debug=False, host='0.0.0.0', port=int(os.environ.get('PORT', 5000)))

Présentation de ma méthode d'opération

Flux de traitement d'enregistrement du journal de vie qui utilise pleinement les intérêts de la civilisation

J'associe Google Home + IFTTT + Google Spread Sheets et prends un journal de vie par la voix.

flow

Ensuite, les données enregistrées dans les feuilles de calcul sont copiées et représentées sous forme de graphique. (La méthode de liaison est expliquée dans la page de configuration LIFE LOG GRAPH GENERATOR.)

finalement

J'ai trouvé très utile de visualiser mon rythme de vie sur un graphique et de regarder en arrière.

Tout d'abord, ** je pense que c'est correct de regarder le graphique et de sourire **. C'est tellement amusant de me regarder que je ne sais pas, comme "Avez-vous bu pendant 8 heures ce jour!" Ou "Le temps de sommeil varie énormément". Je pense que ce ** sentiment de plaisir est un facteur très important qui conduit à l'habitude des journaux de vie **.

Et alors que je continue à sourire, je remarque naturellement mes propres habitudes comportementales.

Prenez-vous des mesures d'amélioration à partir de cette prise de conscience? Ou attendez-vous? Pensons-y plus tard! Si vous pouvez le remarquer, vous pouvez faire autre chose. (adapté)

J'espère que de nombreuses personnes utiliseront cette application Web pour consulter leurs graphiques de journal de vie et leur sourire, puis développeront leur conscience et leurs actions à l'avenir. pense.

Merci d'avoir lu jusqu'à la fin.

Recommended Posts

J'ai créé une application Web qui trace le journal de vie enregistré sur Google Home comme un diagramme de Gantt.
J'ai fait une application WEB avec Django
J'ai créé une application Web en Python qui convertit Markdown en HTML
Création d'une application Web qui mappe les informations sur les événements informatiques avec Vue et Flask
J'ai fait un calendrier qui met à jour automatiquement le calendrier de distribution de Vtuber (édition Google Calendar)
J'ai créé une application Android qui affiche Google Map
J'ai fait un modèle VGG16 en utilisant TensorFlow (en chemin)
J'ai fait un générateur de réseau neuronal qui fonctionne sur FPGA
Une histoire que j'ai eu du mal en essayant de créer une "application qui convertit des images comme des peintures" avec la première application Web
Notez que j'étais accro à accéder à la base de données avec mysql.connector de Python en utilisant une application Web
Jeu de vie avec Python [je l'ai fait] (sur terminal et Tkinter)
J'ai créé un programme qui résout la recherche d'erreur en quelques secondes
J'ai fait un bot mou qui m'informe de la température
J'ai essayé de créer un outil d'échafaudage pour le framework Web Python Bottle
J'ai fait un programme qui calcule automatiquement le zodiaque avec tkinter
[Python] J'ai analysé le journal d'un homme au cours de sa première année de vie professionnelle et j'ai fait un jugement positif / négatif sur la vie professionnelle.
[Python] J'ai créé un robot qui me dit la température actuelle lorsque j'entre un nom de lieu sur LINE
Zura fait comme un jeu de la vie
J'ai fait un calendrier qui met à jour automatiquement le calendrier de distribution de Vtuber
J'ai fait une minuterie de cuisine à afficher sur la barre d'état!
L'histoire du développement d'une application WEB qui génère automatiquement des copies de capture [MeCab]
[Python] J'ai créé un utilitaire qui peut accéder au type dict comme un chemin
J'ai créé une extension Chrome qui affiche un graphique sur la page Amedas
J'ai fait une simple minuterie qui peut être démarrée depuis le terminal
J'ai créé un konoha de bibliothèque qui fait passer le tokenizer à une belle sensation
Jusqu'à ce que l'application Web créée avec Bottle soit publiée (déployée) sur Heroku
[Python] J'ai créé un code de scraping web qui acquiert automatiquement le titre de l'actualité et l'URL de Nihon Keizai Shimbun.
J'ai fait en sorte que l'IA patrouille sur le net et créé un service Web de classement des gadgets mis à jour une fois par semaine