oh-my-words / app.py
linxy's picture
init
dd09e83
import sqlite3
import huggingface_hub
import gradio as gr
import pandas as pd
import shutil
import os
import datetime
from apscheduler.schedulers.background import BackgroundScheduler
from loguru import logger
from common.util import date_str
DB_FILE = "app.db"
TOKEN = os.environ.get('HUB_TOKEN')
repo = huggingface_hub.Repository(
local_dir="data",
repo_type="dataset",
clone_from="linxy/oh-my-words",
use_auth_token=TOKEN
)
repo.git_pull()
DATASET_FILE = f"./data/{DB_FILE}"
# Set db to latest
shutil.copyfile(DATASET_FILE, DB_FILE)
def backup_db():
shutil.copyfile(DB_FILE, DATASET_FILE)
logger.info(f"save database at {DB_FILE}")
# db = sqlite3.connect(DB_FILE)
# pd.DataFrame(db.execute("SELECT * FROM word").fetchall()).to_csv("./data/word.csv", index=False)
# logger.info("save word.csv")
# pd.DataFrame(db.execute("SELECT * FROM book").fetchall()).to_csv("./data/book.csv", index=False)
# logger.info("save book.csv")
# pd.DataFrame(db.execute("SELECT * FROM unit").fetchall()).to_csv("./data/unit.csv", index=False)
# logger.info("save unit.csv")
# db.close()
repo.push_to_hub(blocking=False, commit_message=f"Updating data at {datetime.datetime.now()}")
scheduler = BackgroundScheduler()
scheduler.add_job(func=backup_db, trigger="interval", seconds=60 * 30)
scheduler.start()
# def load_data():
# db = sqlite3.connect(DB_FILE)
# reviews, total_reviews = get_latest_reviews(db)
# db.close()
# return reviews, total_reviews
# demo.load(load_data, None, [data, count])
if __name__ == "__main__":
logger.add(f"output/logs/web_{date_str}.log", rotation="1 day", retention="7 days", level="INFO")
from web import demo
demo.launch()