You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.3 KiB
46 lines
1.3 KiB
1 year ago
|
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()
|