Files
navi/tools/fill_store_csv.py
T
NavisandCursor 50f7f71393 Add site contacts/FAQ and accept AWG 2.0 / naive pastes in Add config.
ImportSubscription no longer requires only http(s): paste awg://, AWG .conf/JSON, or naive links; subscription parser also reads hosted AWG and Clash wireguard/naive. Site lists support emails and FAQ; Store listing texts/tools updated.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-02 15:40:13 +03:00

219 lines
10 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
"""Fill Microsoft Store listing CSV text fields (default=RU, en=EN)."""
import csv
from pathlib import Path
path = Path(__file__).resolve().parents[1] / "store.csv"
ru = {
"Description": (
"EvilFox — приложение для безопасного доступа в интернет на Windows.\n"
"\n"
"Защитите данные в публичных Wi‑Fi сетях: EvilFox шифрует трафик, "
"скрывает ваш реальный IP-адрес и помогает предотвратить утечки DNS. "
"Современный интерфейс на русском и английском, светлая и тёмная темы, "
"удобный выбор серверов и понятный статус подключения.\n"
"\n"
"Возможности:\n"
"• Шифрование трафика с поддержкой современных протоколов\n"
"• Режим прокси и полный режим защиты (TUN) для всего трафика приложений\n"
"• Защита от утечек (Kill Switch) при обрыве соединения\n"
"• Автовыбор сервера с наименьшим пингом\n"
"• Список серверов с флагами стран и группировкой по хосту\n"
"• Добавление собственной конфигурации по URL\n"
"• Мониторинг использования трафика и статистика сессий\n"
"• Интерфейс на русском и английском языках\n"
"\n"
"EvilFox подходит для повседневной работы, путешествий и защиты приватности. "
"Конфигурацию подключения вы добавляете самостоятельно; "
"покупки внутри приложения не требуются.\n"
"\n"
"Сайт: https://evilfox.win/\n"
"Поддержка: https://t.me/evilfox100Bot"
),
"ReleaseNotes": (
"Обновление 4.2: улучшенный интерфейс для Microsoft Store, "
"переключатель языка RU/EN, светлая тема по умолчанию, "
"группировка серверов по IP с отображением доступных протоколов, "
"исправления переключателей темы и языка, реальные флаги стран (SVG), "
"Kill Switch и статистика."
),
"Title": "EvilFox",
"ShortTitle": "EvilFox",
"SortTitle": "EvilFox",
"VoiceTitle": "Evil Fox",
"ShortDescription": (
"Безопасный доступ в интернет: шифрование трафика, скрытие IP, "
"защита от утечек DNS. Русский и английский. Современные протоколы, "
"Kill Switch, удобный выбор серверов."
),
"DevStudio": "EvilFox",
"CopyrightTrademarkInformation": (
"© EvilFox. All rights reserved. EvilFox and the EvilFox logo "
"are trademarks of their respective owners."
),
"AdditionalLicenseTerms": (
"Proprietary software. By installing EvilFox you agree to use the "
"application in accordance with applicable laws. The app provides a "
"client for encrypted network connections; server configurations are "
"supplied by the user. See https://evilfox.win/ for support and terms."
),
"Feature1": "Шифрование трафика и скрытие IP-адреса",
"Feature2": "Режим прокси и полный режим защиты (TUN)",
"Feature3": "Kill Switch — блокировка трафика при обрыве VPN",
"Feature4": "Автовыбор сервера с лучшим пингом",
"Feature5": "Серверы с флагами стран и группировкой протоколов",
"Feature6": "Добавление конфигурации по URL",
"Feature7": "Статистика трафика и сессий",
"Feature8": "Интерфейс на русском и английском",
"Feature9": "Светлая и тёмная темы оформления",
"Feature10": "Защита от утечек DNS",
"MinimumHardwareReq1": "Windows 10 version 1809 or later (x64)",
"MinimumHardwareReq2": "Internet connection",
"MinimumHardwareReq3": "100 MB free disk space",
"RecommendedHardwareReq1": "Windows 11 (x64)",
"RecommendedHardwareReq2": "Stable broadband connection",
"SearchTerm1": "VPN",
"SearchTerm2": "privacy",
"SearchTerm3": "secure internet",
"SearchTerm4": "encrypt traffic",
"SearchTerm5": "EvilFox",
"SearchTerm6": "proxy client",
"SearchTerm7": "kill switch",
"DesktopScreenshotCaption1": "Главный экран: подключение и статус защиты",
"DesktopScreenshotCaption2": "Список серверов с флагами и пингом",
"DesktopScreenshotCaption3": "Настройки: тема, язык, Kill Switch",
"DesktopScreenshotCaption4": "Статистика использования",
}
en = {
"Description": (
"EvilFox is a Windows app for private, secure internet access.\n"
"\n"
"Protect your data on public WiFi: EvilFox encrypts your traffic, "
"hides your real IP address, and helps prevent DNS leaks. "
"A modern interface in English and Russian, light and dark themes, "
"an easy server list, and a clear connection status.\n"
"\n"
"Features:\n"
"• Traffic encryption with modern protocol support\n"
"• Proxy mode and full protection mode (TUN) for all app traffic\n"
"• Leak protection (Kill Switch) if the connection drops\n"
"• Auto-select the server with the lowest ping\n"
"• Server list with country flags and host grouping\n"
"• Add your own configuration via URL\n"
"• Traffic usage monitoring and session stats\n"
"• English and Russian interface\n"
"\n"
"EvilFox is built for everyday browsing, travel, and privacy. "
"You add your own connection configuration; no in-app purchases are required.\n"
"\n"
"Website: https://evilfox.win/\n"
"Support: https://t.me/evilfox100Bot"
),
"ReleaseNotes": (
"Version 4.2: Microsoft Storeready UI polish, RU/EN language switch, "
"light theme by default, servers grouped by IP with available protocols, "
"theme/language toggle fixes, real country flags (SVG), Kill Switch, "
"and usage statistics."
),
"Title": "EvilFox",
"ShortTitle": "EvilFox",
"SortTitle": "EvilFox",
"VoiceTitle": "Evil Fox",
"ShortDescription": (
"Secure internet access: encrypt traffic, hide your IP, help prevent "
"DNS leaks. English & Russian. Modern protocols, Kill Switch, "
"easy server selection."
),
"DevStudio": "EvilFox",
"CopyrightTrademarkInformation": (
"© EvilFox. All rights reserved. EvilFox and the EvilFox logo "
"are trademarks of their respective owners."
),
"AdditionalLicenseTerms": (
"Proprietary software. By installing EvilFox you agree to use the "
"application in accordance with applicable laws. The app provides a "
"client for encrypted network connections; server configurations are "
"supplied by the user. See https://evilfox.win/ for support and terms."
),
"Feature1": "Encrypt traffic and hide your IP address",
"Feature2": "Proxy mode and full protection mode (TUN)",
"Feature3": "Kill Switch blocks traffic if VPN drops",
"Feature4": "Auto-select the lowest-ping server",
"Feature5": "Servers with country flags and protocol grouping",
"Feature6": "Add configuration via URL",
"Feature7": "Traffic and session statistics",
"Feature8": "English and Russian interface",
"Feature9": "Light and dark themes",
"Feature10": "DNS leak protection",
"MinimumHardwareReq1": "Windows 10 version 1809 or later (x64)",
"MinimumHardwareReq2": "Internet connection",
"MinimumHardwareReq3": "100 MB free disk space",
"RecommendedHardwareReq1": "Windows 11 (x64)",
"RecommendedHardwareReq2": "Stable broadband connection",
"SearchTerm1": "VPN",
"SearchTerm2": "privacy",
"SearchTerm3": "secure internet",
"SearchTerm4": "encrypt traffic",
"SearchTerm5": "EvilFox",
"SearchTerm6": "proxy client",
"SearchTerm7": "kill switch",
"DesktopScreenshotCaption1": "Home: connect and protection status",
"DesktopScreenshotCaption2": "Server list with flags and ping",
"DesktopScreenshotCaption3": "Settings: theme, language, Kill Switch",
"DesktopScreenshotCaption4": "Usage statistics",
}
def main() -> None:
with path.open("r", encoding="utf-8-sig", newline="") as f:
reader = csv.reader(f)
header = next(reader)
rows = []
for r in reader:
while len(r) < len(header):
r.append("")
rows.append(r)
# Field, ID, Type, default, en
default_idx = header.index("default")
en_idx = header.index("en")
for r in rows:
if not r or not r[0]:
continue
field = r[0]
if field in ru:
r[default_idx] = ru[field]
if field in en:
r[en_idx] = en[field]
with path.open("w", encoding="utf-8-sig", newline="") as f:
w = csv.writer(f, lineterminator="\n")
w.writerow(header)
w.writerows(rows)
with path.open("r", encoding="utf-8-sig", newline="") as f:
for row in csv.DictReader(f):
if row["Field"] in (
"Description",
"Title",
"ShortDescription",
"Feature1",
"AdditionalLicenseTerms",
"SearchTerm1",
):
print(
row["Field"],
"default_len=",
len(row.get("default") or ""),
"en_len=",
len(row.get("en") or ""),
)
print("wrote", path)
if __name__ == "__main__":
main()