from flask import Flask, render_template_string, jsonify, request import json import os import math from datetime import datetime, timedelta app = Flask(__name__) # Инициализация файла JSON (если файла нет – создаётся пустой список) def init_db(): if not os.path.exists('markers.json'): with open('markers.json', 'w', encoding='utf-8') as f: json.dump([], f, ensure_ascii=False, indent=4) # Загрузка меток из файла JSON def load_markers(): with open('markers.json', 'r', encoding='utf-8') as f: return json.load(f) # Сохранение меток в файл JSON def save_markers(markers): with open('markers.json', 'w', encoding='utf-8') as f: json.dump(markers, f, ensure_ascii=False, indent=4) # Получение всех меток def get_all_markers(): return load_markers() # Добавление новой метки в "базу" (JSON-файл) def add_marker_to_db(name, description, telegram_link, logo_link, latitude, longitude, delete_password): markers = load_markers() new_id = max((marker["id"] for marker in markers), default=0) + 1 new_marker = { "id": new_id, "name": name, "description": description, "telegram_link": telegram_link, "logo_link": logo_link, "latitude": latitude, "longitude": longitude, "delete_password": delete_password, "premium": 0, "premium_start_date": None } markers.append(new_marker) save_markers(markers) return new_id # Удаление метки из JSON-файла def remove_marker_from_db(marker_id): markers = load_markers() markers = [marker for marker in markers if marker["id"] != marker_id] save_markers(markers) # Активация премиум-статуса для метки def activate_premium(marker_id): markers = load_markers() current_date = datetime.now().isoformat() for marker in markers: if marker["id"] == marker_id: marker["premium"] = 1 marker["premium_start_date"] = current_date break save_markers(markers) # Проверка и сброс премиум-статуса по истечении 30 дней def check_premium_status(): markers = load_markers() updated = False for marker in markers: if marker["premium"] == 1 and marker["premium_start_date"]: premium_start_date = datetime.fromisoformat(marker["premium_start_date"]) current_date = datetime.now() if (current_date - premium_start_date).days > 30: marker["premium"] = 0 marker["premium_start_date"] = None updated = True if updated: save_markers(markers) # HTML-шаблон с футуристическим дизайном html_template = '''