add set default translate
This commit is contained in:
		
							
								
								
									
										181
									
								
								backend/deploy_migrate.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										181
									
								
								backend/deploy_migrate.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,181 @@ | ||||
| #!/usr/bin/env python | ||||
| # -*- coding: utf-8 -*- | ||||
| """ | ||||
| 数据库迁移和部署脚本 | ||||
| 用于自动化处理Django项目的数据库迁移和初始化 | ||||
| """ | ||||
|  | ||||
| import os | ||||
| import sys | ||||
| import subprocess | ||||
| import time | ||||
| from pathlib import Path | ||||
|  | ||||
| # 添加项目路径到Python路径 | ||||
| current_dir = Path(__file__).parent | ||||
| sys.path.insert(0, str(current_dir)) | ||||
|  | ||||
| # 设置Django环境 | ||||
| os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'application.settings') | ||||
|  | ||||
| def run_command(command, description="", check_error=True): | ||||
|     """ | ||||
|     执行命令并处理结果 | ||||
|     """ | ||||
|     print(f"\n{'='*60}") | ||||
|     print(f"🔄 {description}") | ||||
|     print(f"执行命令: {command}") | ||||
|     print(f"{'='*60}") | ||||
|      | ||||
|     try: | ||||
|         result = subprocess.run( | ||||
|             command,  | ||||
|             shell=True,  | ||||
|             capture_output=True,  | ||||
|             text=True, | ||||
|             cwd=current_dir | ||||
|         ) | ||||
|          | ||||
|         if result.stdout: | ||||
|             print("✅ 输出:") | ||||
|             print(result.stdout) | ||||
|          | ||||
|         if result.stderr and check_error: | ||||
|             print("⚠️ 警告/错误:") | ||||
|             print(result.stderr) | ||||
|          | ||||
|         if result.returncode != 0 and check_error: | ||||
|             print(f"❌ 命令执行失败,返回码: {result.returncode}") | ||||
|             return False | ||||
|         else: | ||||
|             print(f"✅ 命令执行成功") | ||||
|             return True | ||||
|              | ||||
|     except Exception as e: | ||||
|         print(f"❌ 执行命令时发生异常: {e}") | ||||
|         return False | ||||
|  | ||||
| def check_database_connection(): | ||||
|     """ | ||||
|     检查数据库连接 | ||||
|     """ | ||||
|     print("\n🔍 检查数据库连接...") | ||||
|     try: | ||||
|         import django | ||||
|         django.setup() | ||||
|         from django.db import connection | ||||
|          | ||||
|         with connection.cursor() as cursor: | ||||
|             cursor.execute("SELECT 1") | ||||
|             result = cursor.fetchone() | ||||
|             if result: | ||||
|                 print("✅ 数据库连接正常") | ||||
|                 return True | ||||
|     except Exception as e: | ||||
|         print(f"❌ 数据库连接失败: {e}") | ||||
|         return False | ||||
|  | ||||
| def backup_database(): | ||||
|     """ | ||||
|     备份数据库(可选) | ||||
|     """ | ||||
|     print("\n💾 数据库备份...") | ||||
|     timestamp = time.strftime("%Y%m%d_%H%M%S") | ||||
|     backup_file = f"backup_fyapi_{timestamp}.sql" | ||||
|      | ||||
|     # 这里可以添加数据库备份逻辑 | ||||
|     # 例如:mysqldump 命令 | ||||
|     print(f"📝 建议手动备份数据库到: {backup_file}") | ||||
|     return True | ||||
|  | ||||
| def migrate_database(): | ||||
|     """ | ||||
|     执行数据库迁移 | ||||
|     """ | ||||
|     print("\n🚀 开始数据库迁移流程...") | ||||
|      | ||||
|     # 1. 检查数据库连接 | ||||
|     if not check_database_connection(): | ||||
|         print("❌ 数据库连接失败,请检查配置") | ||||
|         return False | ||||
|      | ||||
|     # 2. 备份数据库 | ||||
|     backup_database() | ||||
|      | ||||
|     # 3. 生成迁移文件 | ||||
|     if not run_command("python manage.py makemigrations", "生成迁移文件"): | ||||
|         print("❌ 生成迁移文件失败") | ||||
|         return False | ||||
|      | ||||
|     # 4. 显示迁移计划 | ||||
|     run_command("python manage.py showmigrations", "显示迁移状态", check_error=False) | ||||
|      | ||||
|     # 5. 执行迁移 | ||||
|     if not run_command("python manage.py migrate", "执行数据库迁移"): | ||||
|         print("❌ 数据库迁移失败") | ||||
|         return False | ||||
|      | ||||
|     # 6. 收集静态文件 | ||||
|     run_command("python manage.py collectstatic --noinput", "收集静态文件", check_error=False) | ||||
|      | ||||
|     print("\n🎉 数据库迁移完成!") | ||||
|     return True | ||||
|  | ||||
| def initialize_data(): | ||||
|     """ | ||||
|     初始化数据 | ||||
|     """ | ||||
|     print("\n📊 初始化系统数据...") | ||||
|      | ||||
|     # 初始化系统数据 | ||||
|     if not run_command("python manage.py init -y", "初始化系统数据"): | ||||
|         print("⚠️ 系统数据初始化失败,可能是因为数据已存在") | ||||
|      | ||||
|     # 初始化翻译服务数据 | ||||
|     if not run_command("python manage.py import_translation_services", "导入翻译服务配置"): | ||||
|         print("⚠️ 翻译服务配置导入失败") | ||||
|      | ||||
|     print("✅ 数据初始化完成") | ||||
|  | ||||
| def main(): | ||||
|     """ | ||||
|     主函数 | ||||
|     """ | ||||
|     print("🚀 Django项目数据库迁移和部署脚本") | ||||
|     print("=" * 60) | ||||
|      | ||||
|     # 检查manage.py是否存在 | ||||
|     if not os.path.exists("manage.py"): | ||||
|         print("❌ 未找到manage.py文件,请确保在Django项目根目录下运行此脚本") | ||||
|         sys.exit(1) | ||||
|      | ||||
|     # 询问用户是否继续 | ||||
|     response = input("\n是否继续执行数据库迁移?(y/N): ").lower().strip() | ||||
|     if response not in ['y', 'yes']: | ||||
|         print("❌ 用户取消操作") | ||||
|         sys.exit(0) | ||||
|      | ||||
|     try: | ||||
|         # 执行迁移 | ||||
|         if migrate_database(): | ||||
|             # 询问是否初始化数据 | ||||
|             response = input("\n是否初始化系统数据?(y/N): ").lower().strip() | ||||
|             if response in ['y', 'yes']: | ||||
|                 initialize_data() | ||||
|              | ||||
|             print("\n🎉 部署完成!") | ||||
|             print("📝 接下来可以启动服务:") | ||||
|             print("   python manage.py runserver 0.0.0.0:8000") | ||||
|         else: | ||||
|             print("\n❌ 迁移失败,请检查错误信息") | ||||
|             sys.exit(1) | ||||
|              | ||||
|     except KeyboardInterrupt: | ||||
|         print("\n❌ 用户中断操作") | ||||
|         sys.exit(1) | ||||
|     except Exception as e: | ||||
|         print(f"\n❌ 发生未预期的错误: {e}") | ||||
|         sys.exit(1) | ||||
|  | ||||
| if __name__ == "__main__": | ||||
|     main() | ||||
							
								
								
									
										80
									
								
								backend/migrate.bat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								backend/migrate.bat
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,80 @@ | ||||
| @echo off | ||||
| chcp 65001 >nul | ||||
| echo. | ||||
| echo ======================================== | ||||
| echo 🚀 Django数据库迁移脚本 | ||||
| echo ======================================== | ||||
| echo. | ||||
|  | ||||
| REM 检查manage.py是否存在 | ||||
| if not exist "manage.py" ( | ||||
|     echo ❌ 未找到manage.py文件 | ||||
|     echo 请确保在Django项目根目录下运行此脚本 | ||||
|     pause | ||||
|     exit /b 1 | ||||
| ) | ||||
|  | ||||
| echo 📋 开始数据库迁移流程... | ||||
| echo. | ||||
|  | ||||
| REM 1. 生成迁移文件 | ||||
| echo 🔄 步骤1: 生成迁移文件 | ||||
| echo ---------------------------------------- | ||||
| python manage.py makemigrations | ||||
| if errorlevel 1 ( | ||||
|     echo ❌ 生成迁移文件失败 | ||||
|     pause | ||||
|     exit /b 1 | ||||
| ) | ||||
| echo ✅ 迁移文件生成成功 | ||||
| echo. | ||||
|  | ||||
| REM 2. 显示迁移计划 | ||||
| echo 🔄 步骤2: 显示迁移状态 | ||||
| echo ---------------------------------------- | ||||
| python manage.py showmigrations | ||||
| echo. | ||||
|  | ||||
| REM 3. 执行迁移 | ||||
| echo 🔄 步骤3: 执行数据库迁移 | ||||
| echo ---------------------------------------- | ||||
| python manage.py migrate | ||||
| if errorlevel 1 ( | ||||
|     echo ❌ 数据库迁移失败 | ||||
|     pause | ||||
|     exit /b 1 | ||||
| ) | ||||
| echo ✅ 数据库迁移成功 | ||||
| echo. | ||||
|  | ||||
| REM 4. 询问是否初始化数据 | ||||
| set /p init_data="是否初始化系统数据?(y/N): " | ||||
| if /i "%init_data%"=="y" ( | ||||
|     echo 🔄 步骤4: 初始化系统数据 | ||||
|     echo ---------------------------------------- | ||||
|     python manage.py init -y | ||||
|     echo. | ||||
|      | ||||
|     echo 🔄 步骤5: 导入翻译服务配置 | ||||
|     echo ---------------------------------------- | ||||
|     python manage.py import_translation_services | ||||
|     echo. | ||||
| ) | ||||
|  | ||||
| REM 5. 收集静态文件(可选) | ||||
| set /p collect_static="是否收集静态文件?(y/N): " | ||||
| if /i "%collect_static%"=="y" ( | ||||
|     echo 🔄 收集静态文件 | ||||
|     echo ---------------------------------------- | ||||
|     python manage.py collectstatic --noinput | ||||
|     echo. | ||||
| ) | ||||
|  | ||||
| echo ======================================== | ||||
| echo 🎉 迁移完成! | ||||
| echo ======================================== | ||||
| echo. | ||||
| echo 📝 接下来可以启动服务: | ||||
| echo    python manage.py runserver 0.0.0.0:8000 | ||||
| echo. | ||||
| pause | ||||
							
								
								
									
										116
									
								
								backend/set_default_translate_route.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								backend/set_default_translate_route.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,116 @@ | ||||
| #!/usr/bin/env python | ||||
| # -*- coding: utf-8 -*- | ||||
| """ | ||||
| 一键设置“默认翻译线路”为指定值(默认 youDao)。 | ||||
| - 写入 SystemConfig:base.realtime_route / base.history_route | ||||
| - 执行后会在本进程内刷新系统配置缓存(dispatch.refresh_system_config), | ||||
|   但正在运行的后端服务进程仍需重启才能生效到线上接口返回。 | ||||
|  | ||||
| 使用示例: | ||||
|   # 使用默认 youDao 设置实时+历史两项 | ||||
|   python set_default_translate_route.py | ||||
|  | ||||
|   # 指定路由名称(需与 translation_service.service_type 一致,如 youDao、deepl、tengXun 等) | ||||
|   python set_default_translate_route.py --route youDao | ||||
|  | ||||
|   # 仅设置实时或历史 | ||||
|   python set_default_translate_route.py --only realtime --route youDao | ||||
|   python set_default_translate_route.py --only history --route youDao | ||||
| """ | ||||
| from __future__ import annotations | ||||
| import os | ||||
| import argparse | ||||
|  | ||||
| # 1) 配置 Django 环境 | ||||
| os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'application.settings') | ||||
|  | ||||
| import django  # noqa: E402 | ||||
|  | ||||
| django.setup() | ||||
|  | ||||
| from application import dispatch  # noqa: E402 | ||||
| from dvadmin.system.models import SystemConfig  # noqa: E402 | ||||
|  | ||||
|  | ||||
| def ensure_base_parent() -> SystemConfig: | ||||
|     base = SystemConfig.objects.filter(parent__isnull=True, key='base').first() | ||||
|     if not base: | ||||
|         base = SystemConfig.objects.create(key='base', title='基础配置') | ||||
|     return base | ||||
|  | ||||
|  | ||||
| def set_defaults(route: str, only: str | None = None) -> dict: | ||||
|     """写入默认路由配置。 | ||||
|  | ||||
|     :param route: 目标路由名(需与 translation_service.service_type 保持一致) | ||||
|     :param only:  None/"realtime"/"history" | ||||
|     :return: {'before': {'realtime': X, 'history': Y}, 'after': {...}} | ||||
|     """ | ||||
|     base = ensure_base_parent() | ||||
|  | ||||
|     # 读取当前值 | ||||
|     before_rt = dispatch.get_system_config_values('base.realtime_route') | ||||
|     before_hi = dispatch.get_system_config_values('base.history_route') | ||||
|  | ||||
|     keys = [] | ||||
|     if only is None: | ||||
|         keys = ['realtime_route', 'history_route'] | ||||
|     elif only == 'realtime': | ||||
|         keys = ['realtime_route'] | ||||
|     elif only == 'history': | ||||
|         keys = ['history_route'] | ||||
|     else: | ||||
|         raise ValueError('--only 仅支持 realtime/history') | ||||
|  | ||||
|     changed = False | ||||
|     for key in keys: | ||||
|         child = SystemConfig.objects.filter(parent=base, key=key).first() | ||||
|         if not child: | ||||
|             SystemConfig.objects.create(parent=base, key=key, title=key, value=route) | ||||
|             changed = True | ||||
|         elif child.value != route: | ||||
|             child.value = route | ||||
|             child.save() | ||||
|             changed = True | ||||
|  | ||||
|     if changed: | ||||
|         # 刷新系统配置缓存(仅当前脚本进程内);线上服务进程仍需重启 | ||||
|         dispatch.refresh_system_config() | ||||
|  | ||||
|     after_rt = dispatch.get_system_config_values('base.realtime_route') | ||||
|     after_hi = dispatch.get_system_config_values('base.history_route') | ||||
|  | ||||
|     return { | ||||
|         'before': {'realtime': before_rt, 'history': before_hi}, | ||||
|         'after': {'realtime': after_rt, 'history': after_hi}, | ||||
|         'changed': changed, | ||||
|     } | ||||
|  | ||||
|  | ||||
| def main(): | ||||
|     parser = argparse.ArgumentParser(description='设置系统默认翻译线路') | ||||
|     parser.add_argument('--route', default='youDao', help='要设置的默认路由名(默认 youDao)') | ||||
|     parser.add_argument('--only', choices=['realtime', 'history'], help='仅设置某一项(默认两项都设置)') | ||||
|     args = parser.parse_args() | ||||
|  | ||||
|     result = set_defaults(route=args.route, only=args.only) | ||||
|  | ||||
|     print('=== 设置完成 ===') | ||||
|     print(f"目标路由: {args.route}") | ||||
|     if args.only: | ||||
|         print(f"作用范围: 仅 {args.only}") | ||||
|     else: | ||||
|         print("作用范围: 实时 + 历史") | ||||
|     print('--- 变更前 ---') | ||||
|     print(f"  realtime: {result['before']['realtime']}") | ||||
|     print(f"  history : {result['before']['history']}") | ||||
|     print('--- 变更后 ---') | ||||
|     print(f"  realtime: {result['after']['realtime']}") | ||||
|     print(f"  history : {result['after']['history']}") | ||||
|     print(f"是否有变更: {result['changed']}") | ||||
|     print('\n提示: 若后端服务进程正在运行,请重启服务使接口返回的新默认值生效。') | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     main() | ||||
|  | ||||
							
								
								
									
										196
									
								
								backend/set_default_translate_routes.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										196
									
								
								backend/set_default_translate_routes.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,196 @@ | ||||
| #!/usr/bin/env python | ||||
| # -*- coding: utf-8 -*- | ||||
| """ | ||||
| 线上数据库默认翻译线路设置脚本 | ||||
| 用于设置系统配置中的默认翻译线路为 youDao | ||||
|  | ||||
| 使用方法: | ||||
| 1. 在 Django 项目的 backend 目录下执行 | ||||
| 2. python set_default_translate_routes.py | ||||
| 3. 或在虚拟环境中:.\.venv\Scripts\python.exe set_default_translate_routes.py | ||||
|  | ||||
| 功能: | ||||
| - 自动创建或更新 base.realtime_route = youDao | ||||
| - 自动创建或更新 base.history_route = youDao   | ||||
| - 刷新系统配置缓存 | ||||
| - 验证设置结果 | ||||
| """ | ||||
|  | ||||
| import os | ||||
| import sys | ||||
| import django | ||||
|  | ||||
| # 设置 Django 环境 | ||||
| os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'application.settings') | ||||
| django.setup() | ||||
|  | ||||
| from dvadmin.system.models import SystemConfig | ||||
| from application import dispatch | ||||
|  | ||||
|  | ||||
| def ensure_base_parent(): | ||||
|     """确保基础配置父级存在""" | ||||
|     base = SystemConfig.objects.filter(parent__isnull=True, key='base').first() | ||||
|     if not base: | ||||
|         base = SystemConfig.objects.create( | ||||
|             key='base',  | ||||
|             title='基础配置', | ||||
|             value=None, | ||||
|             sort=0, | ||||
|             status=True | ||||
|         ) | ||||
|         print(f"✅ 创建基础配置父级: {base.title}") | ||||
|     else: | ||||
|         print(f"✅ 基础配置父级已存在: {base.title}") | ||||
|     return base | ||||
|  | ||||
|  | ||||
| def set_translate_route_config(route_key, route_value, route_title): | ||||
|     """设置单个翻译线路配置""" | ||||
|     base = ensure_base_parent() | ||||
|      | ||||
|     # 查找现有配置 | ||||
|     config = SystemConfig.objects.filter(parent=base, key=route_key).first() | ||||
|      | ||||
|     if not config: | ||||
|         # 创建新配置 | ||||
|         config = SystemConfig.objects.create( | ||||
|             parent=base, | ||||
|             key=route_key, | ||||
|             title=route_title, | ||||
|             value=route_value, | ||||
|             sort=1, | ||||
|             status=True, | ||||
|             form_item_type=0,  # text 类型 | ||||
|             placeholder=f"请输入{route_title}" | ||||
|         ) | ||||
|         print(f"✅ 创建配置: {route_key} = {route_value}") | ||||
|         return True | ||||
|     else: | ||||
|         # 更新现有配置 | ||||
|         if config.value != route_value: | ||||
|             old_value = config.value | ||||
|             config.value = route_value | ||||
|             config.save() | ||||
|             print(f"✅ 更新配置: {route_key} = {route_value} (原值: {old_value})") | ||||
|             return True | ||||
|         else: | ||||
|             print(f"ℹ️  配置已是目标值: {route_key} = {route_value}") | ||||
|             return False | ||||
|  | ||||
|  | ||||
| def verify_translate_routes(): | ||||
|     """验证翻译线路配置""" | ||||
|     print("\n=== 验证配置结果 ===") | ||||
|      | ||||
|     real_time_route = dispatch.get_system_config_values('base.realtime_route') | ||||
|     history_route = dispatch.get_system_config_values('base.history_route') | ||||
|      | ||||
|     print(f"📋 实时翻译默认线路: {real_time_route}") | ||||
|     print(f"📋 历史翻译默认线路: {history_route}") | ||||
|      | ||||
|     # 验证是否为期望值 | ||||
|     success = True | ||||
|     if real_time_route != 'youDao': | ||||
|         print(f"❌ 实时翻译线路设置失败,期望: youDao,实际: {real_time_route}") | ||||
|         success = False | ||||
|      | ||||
|     if history_route != 'youDao': | ||||
|         print(f"❌ 历史翻译线路设置失败,期望: youDao,实际: {history_route}") | ||||
|         success = False | ||||
|      | ||||
|     if success: | ||||
|         print("✅ 所有翻译线路配置验证通过") | ||||
|      | ||||
|     return success | ||||
|  | ||||
|  | ||||
| def check_youdao_service(): | ||||
|     """检查有道翻译服务是否存在并启用""" | ||||
|     print("\n=== 检查有道翻译服务 ===") | ||||
|      | ||||
|     try: | ||||
|         from translate.models import TranslationService | ||||
|          | ||||
|         youdao_service = TranslationService.objects.filter(service_type='youDao').first() | ||||
|          | ||||
|         if not youdao_service: | ||||
|             print("⚠️  警告: 数据库中未找到 youDao 翻译服务") | ||||
|             print("   建议检查 translation_service 表中是否存在 service_type='youDao' 的记录") | ||||
|             return False | ||||
|          | ||||
|         if not youdao_service.is_active: | ||||
|             print(f"⚠️  警告: youDao 翻译服务已禁用") | ||||
|             print(f"   服务ID: {youdao_service.id}") | ||||
|             print(f"   中文名: {youdao_service.zhName}") | ||||
|             print(f"   建议启用该服务: is_active=True") | ||||
|             return False | ||||
|          | ||||
|         print(f"✅ youDao 翻译服务正常") | ||||
|         print(f"   服务ID: {youdao_service.id}") | ||||
|         print(f"   中文名: {youdao_service.zhName}") | ||||
|         print(f"   英文名: {youdao_service.enName}") | ||||
|         print(f"   状态: {'启用' if youdao_service.is_active else '禁用'}") | ||||
|          | ||||
|         return True | ||||
|          | ||||
|     except ImportError: | ||||
|         print("⚠️  无法导入 translate.models,跳过翻译服务检查") | ||||
|         return None | ||||
|  | ||||
|  | ||||
| def main(): | ||||
|     """主函数""" | ||||
|     print("🚀 开始设置默认翻译线路配置") | ||||
|     print("=" * 50) | ||||
|      | ||||
|     try: | ||||
|         # 设置翻译线路配置 | ||||
|         changed = False | ||||
|          | ||||
|         # 设置实时翻译默认线路 | ||||
|         if set_translate_route_config('realtime_route', 'youDao', '实时翻译默认线路'): | ||||
|             changed = True | ||||
|          | ||||
|         # 设置历史翻译默认线路   | ||||
|         if set_translate_route_config('history_route', 'youDao', '历史翻译默认线路'): | ||||
|             changed = True | ||||
|          | ||||
|         # 如果有变更,刷新系统配置缓存 | ||||
|         if changed: | ||||
|             print("\n🔄 刷新系统配置缓存...") | ||||
|             dispatch.refresh_system_config() | ||||
|             print("✅ 系统配置缓存已刷新") | ||||
|         else: | ||||
|             print("\n✅ 无需刷新缓存,配置已是最新") | ||||
|          | ||||
|         # 验证配置结果 | ||||
|         verify_success = verify_translate_routes() | ||||
|          | ||||
|         # 检查有道翻译服务 | ||||
|         service_check = check_youdao_service() | ||||
|          | ||||
|         print("\n" + "=" * 50) | ||||
|         if verify_success: | ||||
|             print("🎉 默认翻译线路配置设置成功!") | ||||
|             print("\n📝 后续步骤:") | ||||
|             print("1. 重启后端服务,使配置生效") | ||||
|             print("2. 访问 /api/get_default_translate_route_config 验证接口返回") | ||||
|             print("3. 清理客户端本地配置 (liangzi_data/session.db)") | ||||
|             print("4. 重启客户端应用验证默认线路") | ||||
|              | ||||
|             if service_check is False: | ||||
|                 print("\n⚠️  注意: 请确保 youDao 翻译服务已正确配置并启用") | ||||
|         else: | ||||
|             print("❌ 配置设置失败,请检查错误信息") | ||||
|             sys.exit(1) | ||||
|              | ||||
|     except Exception as e: | ||||
|         print(f"❌ 执行过程中发生错误: {e}") | ||||
|         import traceback | ||||
|         traceback.print_exc() | ||||
|         sys.exit(1) | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     main() | ||||
							
								
								
									
										47
									
								
								backend/set_translate_defaults.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								backend/set_translate_defaults.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | ||||
| #!/usr/bin/env python | ||||
| # -*- coding: utf-8 -*- | ||||
| """ | ||||
| 将系统默认翻译线路设置为 youDao(实时与历史),用于 Electron 首次初始化时作为默认值 | ||||
| """ | ||||
| import os | ||||
| import django | ||||
|  | ||||
| os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'application.settings') | ||||
| django.setup() | ||||
|  | ||||
| from dvadmin.system.models import SystemConfig | ||||
| from application import dispatch | ||||
|  | ||||
|  | ||||
| def ensure_base_parent(): | ||||
|     base = SystemConfig.objects.filter(parent__isnull=True, key='base').first() | ||||
|     if not base: | ||||
|         base = SystemConfig.objects.create(key='base', title='基础配置') | ||||
|     return base | ||||
|  | ||||
|  | ||||
| def set_default_routes(value='youDao'): | ||||
|     base = ensure_base_parent() | ||||
|     changed = False | ||||
|     for key in ['realtime_route', 'history_route']: | ||||
|         child = SystemConfig.objects.filter(parent=base, key=key).first() | ||||
|         if not child: | ||||
|             SystemConfig.objects.create(parent=base, key=key, title=key, value=value) | ||||
|             changed = True | ||||
|         else: | ||||
|             if child.value != value: | ||||
|                 child.value = value | ||||
|                 child.save() | ||||
|                 changed = True | ||||
|     if changed: | ||||
|         dispatch.refresh_system_config() | ||||
|     return ( | ||||
|         dispatch.get_system_config_values('base.realtime_route'), | ||||
|         dispatch.get_system_config_values('base.history_route'), | ||||
|     ) | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     real, hist = set_default_routes('youDao') | ||||
|     print('OK set defaults: ', real, hist) | ||||
|  | ||||
| @ -9,23 +9,32 @@ from .aggregate_translate import aggregate_translate | ||||
|  | ||||
|  | ||||
| def get_translate_text(source_lang,target_lang,translation_service,text,k_1,k_2): | ||||
|     print("service:",translation_service) | ||||
|     print(f"{translation_service}") | ||||
|     translate_text = "" | ||||
|     #  判断翻译服务 | ||||
|     if translation_service == "baidu": | ||||
|         translate_text = baidu_translate(text=text,target_lang=target_lang,app_id=k_1,app_key=k_2 ) | ||||
|         # translate_text = baidu_translate(text=text,target_lang=target_lang,app_id=k_1,app_key=k_2 ) | ||||
|         translate_text=aggregate_translate(text=text,source_lang=source_lang, target_lang=target_lang,platform="baidu_trans", api_key=k_1) | ||||
|     elif translation_service == "xiaoNiu": | ||||
|         translate_text = xiaoniu_translate(text=text, target_lang=target_lang, app_id=k_1,app_key=k_2) | ||||
|     elif translation_service == "huoShan": | ||||
|         translate_text = huoshan_translate(text=text, target_lang=target_lang, app_id=k_1,app_key=k_2) | ||||
|         # translate_text = huoshan_translate(text=text, target_lang=target_lang, app_id=k_1,app_key=k_2) | ||||
|         translate_text=aggregate_translate(text=text,source_lang=source_lang, target_lang=target_lang,platform="huoshan_trans", api_key=k_1) | ||||
|     elif translation_service == "youDao": | ||||
|         translate_text = youdao_translate(text=text, target_lang=target_lang, app_id=k_1, app_key=k_2) | ||||
|         # translate_text = youdao_translate(text=text, target_lang=target_lang, app_id=k_1, app_key=k_2) | ||||
|         translate_text=aggregate_translate(text=text,source_lang=source_lang, target_lang=target_lang,platform="youdao_trans", api_key=k_1) | ||||
|     elif translation_service == "tengXun": | ||||
|         translate_text = tencent_translate(text=text, target_lang=target_lang, app_id=k_1, app_key=k_2) | ||||
|     elif translation_service == "deepl": | ||||
|         translate_text = aggregate_translate(text=text,source_lang=source_lang, target_lang=target_lang,platform=translation_service, api_key=k_1) | ||||
|     elif translation_service=="deepseek": | ||||
|         translate_text = aggregate_translate(text=text, source_lang=source_lang, target_lang=target_lang,platform=translation_service, api_key=k_1) | ||||
|     elif translation_service=="google": | ||||
|         translate_text = aggregate_translate(text=text, source_lang=source_lang, target_lang=target_lang,platform="google_trans", api_key=k_1) | ||||
|     elif translation_service=="bing": | ||||
|         translate_text = aggregate_translate(text=text, source_lang=source_lang, target_lang=target_lang,platform="bing_trans", api_key=k_1) | ||||
|     elif translation_service=="chatGpt4o": | ||||
|         translate_text = aggregate_translate(text=text, source_lang=source_lang, target_lang=target_lang,platform="chatgpt-4o_trans", api_key=k_1) | ||||
|     # 调用 | ||||
|     print(translate_text) | ||||
|     return translate_text | ||||
		Reference in New Issue
	
	Block a user
	 unknown
					unknown