import csv import os import flask_apscheduler from flask import Flask from whoosh.fields import * from whoosh.index import create_in from whoosh.qparser import QueryParser from csvparser.csvparser import concatenate_csv_row, getfullpublication SCRIPT_DIR = os.path.dirname(__file__) DATA_DIR = os.path.abspath(os.path.join(SCRIPT_DIR, "data")) def create_app(): APP = Flask(__name__, static_folder="static") APP.config["SECRET_KEY"] = "ty4425hk54a21eee5719b9s9df7sdfklx" APP.config["UPLOAD_FOLDER"] = "tmpupload" scheduler = flask_apscheduler.APScheduler() scheduler.api_enabled = False scheduler.init_app(APP) scheduler.start() index_books() @scheduler.task("interval", id="update", minutes=10) def update(): index_books() return APP def index_books(): filename = os.path.join(DATA_DIR, "varlib.csv") schema = Schema( title=TEXT(stored=True), path=ID(stored=True), content=TEXT ) ix = create_in(DATA_DIR, schema) writer = ix.writer() with open(filename, "r", encoding="utf_8_sig") as libcsv: csv_as_dict = csv.DictReader(libcsv) for row in csv_as_dict: rowcontent = concatenate_csv_row(row) writer.add_document(title=row["Id"], path="/a", content=rowcontent) writer.commit()