This commit is contained in:
ra_ma
2025-06-20 19:20:36 +01:00
parent cdac727a28
commit d588116f6b

72
app.py
View File

@@ -1,39 +1,22 @@
import os import os
import requests 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 dotenv import load_dotenv
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
app = Flask(__name__)
# Load environment variables from .env file # Load environment variables from .env file
load_dotenv() load_dotenv()
# Mock data for configuration app = Flask(__name__, template_folder='templates')
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.route('/dash/config', methods=['GET', 'POST']) def get_config():
def config(): """Retrieve configuration from environment variables."""
if request.method == 'POST': return {
config['excluded_countries'] = request.form['excluded_countries'] "excluded_countries": os.getenv('EXCLUDED_COUNTRIES', '[]'),
config['preferred_protocols'] = request.form['preferred_protocols'] "preferred_protocols": os.getenv('PREFERRED_PROTOCOLS', '["https", "http"]'),
config['preferred_types'] = request.form['preferred_types'] "preferred_types": os.getenv('PREFERRED_TYPES', '["https", "http"]'),
config['min_preference'] = request.form['min_preference'] "min_preference": os.getenv('MIN_PREFERENCE', '0')
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')
@app.route('/metalink') @app.route('/metalink')
def get_metalink(): def get_metalink():
@@ -52,11 +35,12 @@ def get_metalink():
response = requests.get(metalink_url) response = requests.get(metalink_url)
metalink_content = response.content metalink_content = response.content
# Parse the .env file to get the filtering criteria # Get the filtering criteria from environment variables
excluded_countries = eval(os.getenv('EXCLUDED_COUNTRIES', '[]')) config = get_config()
preferred_protocols = eval(os.getenv('PREFERRED_PROTOCOLS', '["https", "http"]')) excluded_countries = eval(config['excluded_countries'])
preferred_types = eval(os.getenv('PREFERRED_TYPES', '["https", "http"]')) preferred_protocols = eval(config['preferred_protocols'])
min_preference = int(os.getenv('MIN_PREFERENCE', '0')) preferred_types = eval(config['preferred_types'])
min_preference = int(config['min_preference'])
# Filter out the URLs based on the criteria # Filter out the URLs based on the criteria
filtered_content = filter_urls(metalink_content, excluded_countries, preferred_protocols, preferred_types, min_preference) 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 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__': if __name__ == '__main__':
app.run(debug=True) app.run(host='0.0.0.0', port=8182)