import json import os import flask_apscheduler import tomli from flask import Flask from column import Column from simplejsonstorage import SimpleJsonStorage def create_app(): APP = Flask(__name__) scheduler = flask_apscheduler.APScheduler() scheduler.api_enabled = False scheduler.init_app(APP) scheduler.start() json_file = SimpleJsonStorage( os.path.join("data", "feeds.json"), os.path.join("data", "feeds.log") ) update_feeds(json_file) @scheduler.task("interval", id="update", minutes=10) def update(): update_feeds(json_file) return APP def update_feeds(json_file): print("updating feeds from columns.toml file") with open("columns.toml", "rb") as f: column_dict = tomli.load(f) columns_file = column_dict["column"] columns = {} for column_from_file in columns_file: title = column_from_file["title"] column = Column(title, column_from_file["urls"]) if "limit" in column_from_file: column.set_limit(column_from_file["limit"]) if "sort_order" in column_from_file: column.set_sort_order(column_from_file["sort_order"]) if "tag_filter" in column_from_file: column.set_tag_filter(column_from_file["tag_filter"]) column.load_content_from_feeds() columns[title] = column.__dict__ json_file.update(columns)