From d588116f6b1c56eef0d129a80abbfb9e44abb743 Mon Sep 17 00:00:00 2001 From: ra_ma Date: Fri, 20 Jun 2025 19:20:36 +0100 Subject: [PATCH] ui more --- app.py | 72 +++++++++++++++++++++++++++++++--------------------------- 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/app.py b/app.py index c685a9d..08cffb8 100644 --- a/app.py +++ b/app.py @@ -1,39 +1,22 @@ import os import requests -from flask import Flask, Response, render_template, request, redirect, url_for +from flask import Flask, render_template, request, redirect, url_for, Response from dotenv import load_dotenv from bs4 import BeautifulSoup -app = Flask(__name__) - # Load environment variables from .env file load_dotenv() -# Mock data for configuration -config = { - "excluded_countries": os.getenv('EXCLUDED_COUNTRIES', '[]'), - "preferred_protocols": os.getenv('PREFERRED_PROTOCOLS', '["https", "http"]'), - "preferred_types": os.getenv('PREFERRED_TYPES', '["https", "http"]'), - "min_preference": os.getenv('MIN_PREFERENCE', '0') -} +app = Flask(__name__, template_folder='templates') -@app.route('/dash/config', methods=['GET', 'POST']) -def config(): - if request.method == 'POST': - config['excluded_countries'] = request.form['excluded_countries'] - config['preferred_protocols'] = request.form['preferred_protocols'] - config['preferred_types'] = request.form['preferred_types'] - config['min_preference'] = request.form['min_preference'] - return redirect(url_for('config')) - return render_template('config.html', **config) - -@app.route('/dash/stats') -def stats(): - return render_template('stats.html') - -@app.route('/dash/logs') -def logs(): - return render_template('logs.html') +def get_config(): + """Retrieve configuration from environment variables.""" + return { + "excluded_countries": os.getenv('EXCLUDED_COUNTRIES', '[]'), + "preferred_protocols": os.getenv('PREFERRED_PROTOCOLS', '["https", "http"]'), + "preferred_types": os.getenv('PREFERRED_TYPES', '["https", "http"]'), + "min_preference": os.getenv('MIN_PREFERENCE', '0') + } @app.route('/metalink') def get_metalink(): @@ -52,11 +35,12 @@ def get_metalink(): response = requests.get(metalink_url) metalink_content = response.content - # Parse the .env file to get the filtering criteria - excluded_countries = eval(os.getenv('EXCLUDED_COUNTRIES', '[]')) - preferred_protocols = eval(os.getenv('PREFERRED_PROTOCOLS', '["https", "http"]')) - preferred_types = eval(os.getenv('PREFERRED_TYPES', '["https", "http"]')) - min_preference = int(os.getenv('MIN_PREFERENCE', '0')) + # Get the filtering criteria from environment variables + config = get_config() + excluded_countries = eval(config['excluded_countries']) + preferred_protocols = eval(config['preferred_protocols']) + preferred_types = eval(config['preferred_types']) + min_preference = int(config['min_preference']) # Filter out the URLs based on the criteria filtered_content = filter_urls(metalink_content, excluded_countries, preferred_protocols, preferred_types, min_preference) @@ -90,5 +74,27 @@ def filter_urls(content, excluded_countries, preferred_protocols, preferred_type return filtered_content +@app.route('/dash/config', methods=['GET', 'POST']) +def config_route(): + if request.method == 'POST': + # Update environment variables with form data + os.environ['EXCLUDED_COUNTRIES'] = request.form.get('excluded_countries', '') + os.environ['PREFERRED_PROTOCOLS'] = request.form.get('preferred_protocols', '') + os.environ['PREFERRED_TYPES'] = request.form.get('preferred_types', '') + os.environ['MIN_PREFERENCE'] = request.form.get('min_preference', '') + + return redirect(url_for('config_route')) + + config = get_config() + return render_template('config.html', **config) + +@app.route('/dash/stats') +def stats(): + return render_template('stats.html') + +@app.route('/dash/logs') +def logs(): + return render_template('logs.html') + if __name__ == '__main__': - app.run(debug=True) + app.run(host='0.0.0.0', port=8182)