User: Сделай код на Пайтон 
Красивый интерфейс в терминале 
1) Впн
2) Прокси (https http socket 5)
3) обновить базы (есть ссылки на json файлы с инфой )
4) выход
У меня есть ссылки на сборник впн и прокси

Впн как выглядит

  {
    "country": "Япония",
    "ddns": "public-vpn-232.opengw.net",
    "ip": "219.100.37.219",
    "uptime": "51 день",
    "quality": "235.26 мбит",
    "ping": "8 мс",
    "login": "vpn",
    "password": "vpn"
  },

А вот прокси

  {
    "type": "http",
    "ip": "43.202.154.212",
    "port": "80",
    "loc": "Южная Корея",
    "speed": "350 мс",
    "anonymity": "Элита"
  },
Assistant: Конечно! Ниже приведён пример Python-скрипта, который реализует красивый интерфейс в терминале с использованием библиотеки `rich`. Этот интерфейс предоставляет меню с четырьмя опциями: VPN, Прокси, Обновить базы данных и Выход.

### Шаги для реализации:

1. **Установка зависимостей:**
   
   Убедитесь, что у вас установлены необходимые библиотеки. Вы можете установить их с помощью `pip`:

   ```bash
   pip install rich requests
   ```

2. **Структура проекта:**

   ```
   project/
   ├── main.py
   ├── vpn.json
   └── proxies.json
   ```

   - `main.py`: Основной скрипт.
   - `vpn.json`: Локальный файл с данными VPN.
   - `proxies.json`: Локальный файл с данными прокси.

3. **Код скрипта (`main.py`):**

   ```python
   import requests
   import json
   import sys
   from rich import print
   from rich.console import Console
   from rich.table import Table
   from rich.prompt import Prompt, IntPrompt
   from rich.panel import Panel

   # Инициализация консоли Rich
   console = Console()

   # Ссылки на JSON файлы
   VPN_URL = "https://example.com/vpn.json"       # Замените на вашу ссылку
   PROXY_URL = "https://example.com/proxies.json" # Замените на вашу ссылку

   # Локальные файлы для хранения данных
   VPN_FILE = "vpn.json"
   PROXY_FILE = "proxies.json"

   def fetch_data(url):
       try:
           response = requests.get(url)
           response.raise_for_status()
           return response.json()
       except requests.exceptions.RequestException as e:
           console.print(f"[red]Ошибка при загрузке данных: {e}[/red]")
           return None

   def update_databases():
       console.print("[bold cyan]Обновление баз данных...[/bold cyan]")
       vpn_data = fetch_data(VPN_URL)
       proxy_data = fetch_data(PROXY_URL)

       if vpn_data:
           with open(VPN_FILE, "w", encoding='utf-8') as f:
               json.dump(vpn_data, f, ensure_ascii=False, indent=4)
           console.print("[green]База VPN успешно обновлена![/green]")
       
       if proxy_data:
           with open(PROXY_FILE, "w", encoding='utf-8') as f:
               json.dump(proxy_data, f, ensure_ascii=False, indent=4)
           console.print("[green]База Прокси успешно обновлена![/green]")

   def load_vpn():
       try:
           with open(VPN_FILE, "r", encoding='utf-8') as f:
               return json.load(f)
       except FileNotFoundError:
           console.print(f"[red]Файл {VPN_FILE} не найден. Пожалуйста, обновите базы данных.[/red]")
           return None
       except json.JSONDecodeError:
           console.print(f"[red]Ошибка при чтении {VPN_FILE}. Файл повреждён.[/red]")
           return None

   def load_proxies():
       try:
           with open(PROXY_FILE, "r", encoding='utf-8') as f:
               return json.load(f)
       except FileNotFoundError:
           console.print(f"[red]Файл {PROXY_FILE} не найден. Пожалуйста, обновите базы данных.[/red]")
           return None
       except json.JSONDecodeError:
           console.print(f"[red]Ошибка при чтении {PROXY_FILE}. Файл повреждён.[/red]")
           return None

   def display_vpn():
       vpn_list = load_vpn()
       if not vpn_list:
           return

       table = Table(title="Список VPN", header_style="bold magenta")

       table.add_column("№", style="dim", width=4)
       table.add_column("Страна", style="cyan")
       table.add_column("DDNS", style="green")
       table.add_column("IP", style="yellow")
       table.add_column("Аптайм", style="blue")
       table.add_column("Качество", style="green")
       table.add_column("Пинг", style="magenta")
       table.add_column("Логин", style="cyan")
       table.add_column("Пароль", style="cyan")

       for idx, vpn in enumerate(vpn_list, start=1):
           table.add_row(
               str(idx),
               vpn.get("country", ""),
               vpn.get("ddns", ""),
               vpn.get("ip", ""),
               vpn.get("uptime", ""),
               vpn.get("quality", ""),
               vpn.get("ping", ""),
               vpn.get("login", ""),
               vpn.get("password", "")
           )
       
       console.print(table)

   def display_proxies():
       proxy_list = load_proxies()
       if not proxy_list:
           return

       table = Table(title="Список Прокси", header_style="bold green")

       table.add_column("№", style="dim", width=4)
       table.add_column("Тип", style="cyan")
       table.add_column("IP", style="yellow")
       table.add_column("Порт", style="blue")
       table.add_column("Локация", style="green")
       table.add_column("Скорость", style="magenta")
       table.add_column("Анонимность", style="cyan")

       for idx, proxy in enumerate(proxy_list, start=1):
           table.add_row(
               str(idx),
               proxy.get("type", ""),
               proxy.get("ip", ""),
               proxy.get("port", ""),
               proxy.get("loc", ""),
               proxy.get("speed", ""),
               proxy.get("anonymity", "")
           )
       
       console.print(table)

   def main_menu():
       while True:
           console.print(Panel.fit("[bold yellow]Главное Меню[/bold yellow]", border_style="blue"))
           table = Table(show_header=False, box=None)
           table.add_column()
           table.add_row("1) VPN")
           table.add_row("2) Прокси (HTTP, HTTPS, SOCKS5)")
           table.add_row("3) Обновить базы данных")
           table.add_row("4) Выход")
           console.print(table)

           try:
               choice = IntPrompt.ask("Выберите опцию", choices=["1", "2", "3", "4"])
           except KeyboardInterrupt:
               console.print("\n[red]Выход из программы.[/red]")
               sys.exit()

           if choice == 1:
               display_vpn()
           elif choice == 2:
               display_proxies()
           elif choice == 3:
               update_databases()
           elif choice == 4:
               console.print("[bold red]До свидания![/bold red]")
               sys.exit()
           
           console.print("\n")  # Пустая строка для разделения

   if __name__ == "__main__":
       try:
           main_menu()
       except KeyboardInterrupt:
           console.print("\n[red]Программа прервана пользователем.[/red]")
           sys.exit()
   ```

4. **Описание кода:**

   - **Библиотеки:**
     - `requests`: Для HTTP-запросов к JSON-файлам.
     - `rich`: Для создания красивого интерфейса в терминале.
     - `json`: Для работы с JSON-данными.
     - `sys`: Для выхода из программы.

   - **Функции:**
     - `fetch_data(url)`: Загружает данные с указанного URL и возвращает JSON.
     - `update_databases()`: Обновляет локальные файлы `vpn.json` и `proxies.json` путем загрузки данных с заданных ссылок.
     - `load_vpn()`: Загружает локальные данные VPN из `vpn.json`.
     - `load_proxies()`: Загружает локальные данные прокси из `proxies.json`.
     - `display_vpn()`: Отображает список VPN в таблице.
     - `display_proxies()`: Отображает список прокси в таблице.
     - `main_menu()`: Основное меню программы, позволяющее выбирать опции.

5. **Настройка ссылок:**

   Не забудьте заменить `VPN_URL` и `PROXY_URL` на реальные ссылки на ваши JSON-файлы с VPN и прокси.

   ```python
   VPN_URL = "https://example.com/vpn.json"       # Замените на вашу ссылку
   PROXY_URL = "https://example.com/proxies.json" # Замените на вашу ссылку
   ```

6. **Запуск программы:**

   Перейдите в директорию с `main.py` и запустите скрипт:

   ```bash
   python main.py
   ```

7. **Пример данных:**

   Убедитесь, что ваши JSON-файлы (`vpn.json` и `proxies.json`) имеют корректную структуру. Примеры:

   - **vpn.json:**

     ```json
     [
         {
             "country": "Япония",
             "ddns": "public-vpn-232.opengw.net",
             "ip": "219.100.37.219",
             "uptime": "51 день",
             "quality": "235.26 мбит",
             "ping": "8 мс",
             "login": "vpn",
             "password": "vpn"
         },
         {
             "country": "США",
             "ddns": "us-vpn-101.opengw.net",
             "ip": "198.51.100.1",
             "uptime": "30 дней",
             "quality": "150.50 мбит",
             "ping": "15 мс",
             "login": "user",
             "password": "password"
         }
     ]
     ```

   - **proxies.json:**

     ```json
     [
         {
             "type": "http",
             "ip": "43.202.154.212",
             "port": "80",
             "loc": "Южная Корея",
             "speed": "350 мс",
             "anonymity": "Элита"
         },
         {
             "type": "socks5",
             "ip": "192.0.2.1",
             "port": "1080",
             "loc": "Германия",
             "speed": "200 мс",
             "anonymity": "Высокая"
         }
     ]
     ```

8. **Дополнительные улучшения:**

   - **Фильтрация прокси по типу:**
     
     Вы можете добавить возможность фильтровать прокси по типу (HTTP, HTTPS, SOCKS5). Для этого дополните функцию `display_proxies()` с запросом типа прокси от пользователя и отображением только соответствующих записей.

   - **Поиск VPN или прокси:**
     
     Добавьте функциональность поиска по определённым параметрам, например, по стране или скорости.

   - **Обработка ошибок:**
     
     Улучшите обработку ошибок, например, проверку доступности URL при обновлении баз данных.

Это базовый пример, который можно расширять и улучшать в зависимости от ваших потребностей. Библиотека `rich` предоставляет множество возможностей для создания красивых и функциональных интерфейсов в терминале, включая цветные таблицы, панели, прогресс-бары и многое другое.

Если у вас возникнут вопросы или потребуется дополнительная помощь, не стесняйтесь обращаться!
User: Так сделай 
1) чтобы привыводе топ 10 показывалось только страна (то есть откуда) и скорость ответа и последние обновление (uptime)