Eluza133 commited on
Commit
8911d55
·
verified ·
1 Parent(s): 53a124a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -8
app.py CHANGED
@@ -14,7 +14,7 @@ import traceback
14
 
15
  app = Flask(__name__)
16
  app.secret_key = os.getenv("FLASK_SECRET_KEY", "supersecretkey")
17
- DATA_FILE = 'cloud_data.json'
18
  REPO_ID = "Eluza133/Z1e1u"
19
  HF_TOKEN_WRITE = os.getenv("HF_TOKEN")
20
  HF_TOKEN_READ = os.getenv("HF_TOKEN_READ") or HF_TOKEN_WRITE
@@ -30,6 +30,13 @@ if not HF_TOKEN_WRITE:
30
  else:
31
  logging.info("HF_TOKEN_WRITE успешно установлен (первые 5 символов: {0}...)".format(HF_TOKEN_WRITE[:5]))
32
 
 
 
 
 
 
 
 
33
  # Функции для работы с базой данных и Hugging Face
34
  @cache.memoize(timeout=300)
35
  def load_data():
@@ -51,23 +58,30 @@ def load_data():
51
  logging.info("Данные успешно загружены")
52
  return data
53
  except Exception as e:
54
- logging.error(f"Ошибка при загрузке данных: {e}")
 
55
  return {'users': {}, 'files': {}}
56
 
57
  def save_data(data):
58
  try:
59
  with open(DATA_FILE, 'w', encoding='utf-8') as file:
60
  json.dump(data, file, ensure_ascii=False, indent=4)
 
61
  upload_db_to_hf()
62
  cache.clear()
63
  logging.info("Данные сохранены и загружены на HF")
64
  except Exception as e:
65
- logging.error(f"Ошибка при сохранении данных: {e}")
66
  raise
67
 
68
  def upload_db_to_hf():
69
  try:
 
 
 
 
70
  api = HfApi()
 
71
  api.upload_file(
72
  path_or_fileobj=DATA_FILE,
73
  path_in_repo=DATA_FILE,
@@ -94,8 +108,7 @@ def download_db_from_hf():
94
  except Exception as e:
95
  logging.error(f"Ошибка при скачивании базы данных: {e}\n{traceback.format_exc()}")
96
  if not os.path.exists(DATA_FILE):
97
- with open(DATA_FILE, 'w', encoding='utf-8') as f:
98
- json.dump({'users': {}, 'files': {}}, f)
99
 
100
  def periodic_backup():
101
  while True:
@@ -453,13 +466,11 @@ def dashboard():
453
  file_size = os.path.getsize(temp_path)
454
 
455
  api = HfApi()
456
- # Используем плоскую структуру для простоты
457
- file_path = f"cloud_files/{token}_{filename}" # Уникальное имя файла
458
  try:
459
  logging.info(f"Попытка загрузки файла: {file_path} в репозиторий {REPO_ID}")
460
  if not HF_TOKEN_WRITE:
461
  raise ValueError("HF_TOKEN_WRITE не установлен")
462
- # Проверка доступности репозитория и токена
463
  api.repo_info(repo_id=REPO_ID, repo_type="dataset", token=HF_TOKEN_WRITE)
464
  logging.info(f"Репозиторий доступен, загрузка файла: {filename}")
465
  api.upload_file(
@@ -616,5 +627,6 @@ def logout():
616
  return redirect(url_for('login'))
617
 
618
  if __name__ == '__main__':
 
619
  threading.Thread(target=periodic_backup, daemon=True).start()
620
  app.run(debug=True, host='0.0.0.0', port=7860)
 
14
 
15
  app = Flask(__name__)
16
  app.secret_key = os.getenv("FLASK_SECRET_KEY", "supersecretkey")
17
+ DATA_FILE = 'cloud_data.json' # Can be changed to an absolute path if needed, e.g., os.path.join(os.getcwd(), 'cloud_data.json')
18
  REPO_ID = "Eluza133/Z1e1u"
19
  HF_TOKEN_WRITE = os.getenv("HF_TOKEN")
20
  HF_TOKEN_READ = os.getenv("HF_TOKEN_READ") or HF_TOKEN_WRITE
 
30
  else:
31
  logging.info("HF_TOKEN_WRITE успешно установлен (первые 5 символов: {0}...)".format(HF_TOKEN_WRITE[:5]))
32
 
33
+ # Инициализация файла базы данных при старте, если он не существует
34
+ def initialize_data_file():
35
+ if not os.path.exists(DATA_FILE):
36
+ logging.info(f"Файл {DATA_FILE} не найден, создается новый.")
37
+ with open(DATA_FILE, 'w', encoding='utf-8') as f:
38
+ json.dump({'users': {}, 'files': {}}, f)
39
+
40
  # Функции для работы с базой данных и Hugging Face
41
  @cache.memoize(timeout=300)
42
  def load_data():
 
58
  logging.info("Данные успешно загружены")
59
  return data
60
  except Exception as e:
61
+ logging.error(f"Ошибка при загрузке данных: {e}\n{traceback.format_exc()}")
62
+ initialize_data_file() # Создаем файл, если загрузка не удалась
63
  return {'users': {}, 'files': {}}
64
 
65
  def save_data(data):
66
  try:
67
  with open(DATA_FILE, 'w', encoding='utf-8') as file:
68
  json.dump(data, file, ensure_ascii=False, indent=4)
69
+ logging.info(f"Файл {DATA_FILE} успешно сохранен локально")
70
  upload_db_to_hf()
71
  cache.clear()
72
  logging.info("Данные сохранены и загружены на HF")
73
  except Exception as e:
74
+ logging.error(f"Ошибка при сохранении данных: {e}\n{traceback.format_exc()}")
75
  raise
76
 
77
  def upload_db_to_hf():
78
  try:
79
+ if not os.path.exists(DATA_FILE):
80
+ logging.warning(f"Файл {DATA_FILE} не существует, пропускаем загрузку на Hugging Face")
81
+ initialize_data_file() # Создаем пустой файл, чтобы избежать повторных ошибок
82
+ return
83
  api = HfApi()
84
+ logging.info(f"Загрузка файла {DATA_FILE} в {REPO_ID}")
85
  api.upload_file(
86
  path_or_fileobj=DATA_FILE,
87
  path_in_repo=DATA_FILE,
 
108
  except Exception as e:
109
  logging.error(f"Ошибка при скачивании базы данных: {e}\n{traceback.format_exc()}")
110
  if not os.path.exists(DATA_FILE):
111
+ initialize_data_file()
 
112
 
113
  def periodic_backup():
114
  while True:
 
466
  file_size = os.path.getsize(temp_path)
467
 
468
  api = HfApi()
469
+ file_path = f"cloud_files/{token}_{filename}"
 
470
  try:
471
  logging.info(f"Попытка загрузки файла: {file_path} в репозиторий {REPO_ID}")
472
  if not HF_TOKEN_WRITE:
473
  raise ValueError("HF_TOKEN_WRITE не установлен")
 
474
  api.repo_info(repo_id=REPO_ID, repo_type="dataset", token=HF_TOKEN_WRITE)
475
  logging.info(f"Репозиторий доступен, загрузка файла: {filename}")
476
  api.upload_file(
 
627
  return redirect(url_for('login'))
628
 
629
  if __name__ == '__main__':
630
+ initialize_data_file() # Инициализация файла при запуске приложения
631
  threading.Thread(target=periodic_backup, daemon=True).start()
632
  app.run(debug=True, host='0.0.0.0', port=7860)