修改翻译逻辑
This commit is contained in:
7
.idea/IOS__AI.iml
generated
Normal file
7
.idea/IOS__AI.iml
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module version="4">
|
||||
<component name="PyDocumentationSettings">
|
||||
<option name="format" value="PLAIN" />
|
||||
<option name="myDocStringFormat" value="Plain" />
|
||||
</component>
|
||||
</module>
|
||||
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@@ -3,5 +3,5 @@
|
||||
<component name="Black">
|
||||
<option name="sdkName" value="Python 3.12 (AI-IOS)" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12" project-jdk-type="Python SDK" />
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="IOSAI" project-jdk-type="Python SDK" />
|
||||
</project>
|
||||
@@ -14,7 +14,14 @@ anchorList: list[AnchorModel] = []
|
||||
# 线程锁
|
||||
anchorListLock = threading.Lock()
|
||||
# 打招呼数据
|
||||
prologueList: list[str] = []
|
||||
prologueList = {
|
||||
"Cantonese": ["你好", "你係邊個", "我好鍾意你", "我係你爸爸"],
|
||||
"English": ["Hello,", "Who are you?", "I like you.", "I'm your dad."],
|
||||
"Greek": ["Γεια σου,", "Ποιος είσαι;", "Μου αρέσεις.", "Είμαι ο μπαμπάς σου."],
|
||||
"Japanese": ["こんにちは", "あなたは誰ですか", "あなたが好きです", "私はあなたのパパです"],
|
||||
"Khmer": ["សួស្តី", "អ្នកជាអ្នកណា", "ខ្ញុំចូលចិត្តអ្នក", "ខ្ញុំគឺជាប៉ារបស់អ្នក"],
|
||||
"Malay": ["Hai,", "Siapakah kamu?", "Aku suka kamu,", "Aku adalah ayahmu."]
|
||||
}
|
||||
|
||||
# 评论数据
|
||||
commentList = []
|
||||
|
||||
@@ -337,27 +337,16 @@ def passAnchorData():
|
||||
try:
|
||||
LogManager.method_info("关注打招呼", "关注打招呼")
|
||||
data: Dict[str, Any] = request.get_json()
|
||||
|
||||
# 设备列表
|
||||
idList = data.get("deviceList", [])
|
||||
|
||||
# 主播列表
|
||||
acList = data.get("anchorList", [])
|
||||
Variables.commentList = data.get("comment")
|
||||
|
||||
isComment = data.get("isComment")
|
||||
|
||||
|
||||
LogManager.info(f"[INFO] 获取数据: {idList} {acList}")
|
||||
|
||||
AiUtils.save_aclist_flat_append(acList)
|
||||
|
||||
# 是否需要回复
|
||||
needReply = data.get("needReply", False)
|
||||
|
||||
# 是否需要进行翻译
|
||||
needTranslate = data.get("needTranslate", True)
|
||||
|
||||
# 获取打招呼数据
|
||||
ev.prologueList = data.get("prologueList", [])
|
||||
|
||||
@@ -369,7 +358,7 @@ def passAnchorData():
|
||||
event = threading.Event()
|
||||
# 启动脚本
|
||||
thread = threading.Thread(target=manager.safe_greetNewFollowers,
|
||||
args=(udid, needReply, needTranslate, isComment,event))
|
||||
args=(udid, needReply, isComment, event,))
|
||||
# 添加到线程管理
|
||||
ThreadManager.add(udid, thread, event)
|
||||
return ResultData(data="").toJson()
|
||||
|
||||
271
Utils/CountryEnum.py
Normal file
271
Utils/CountryEnum.py
Normal file
@@ -0,0 +1,271 @@
|
||||
class CountryLanguageMapper:
|
||||
|
||||
# 初始化一个字典,映射国家到语言代码
|
||||
country_to_language = {
|
||||
"中国大陆": "zh-CN",
|
||||
"台湾": "zh-TW",
|
||||
"香港": "zh-TW",
|
||||
"澳门": "zh-TW",
|
||||
"美国": "en",
|
||||
"英国": "en",
|
||||
"澳大利亚": "en",
|
||||
"日本": "ja",
|
||||
"韩国": "ko",
|
||||
"俄罗斯": "ru",
|
||||
"法国": "fr",
|
||||
"德国": "de",
|
||||
"意大利": "it",
|
||||
"西班牙": "es",
|
||||
"墨西哥": "es",
|
||||
"巴西": "pt",
|
||||
"葡萄牙": "pt",
|
||||
"印度": "hi",
|
||||
"泰国": "th",
|
||||
"越南": "vi",
|
||||
"马来西亚": "ms",
|
||||
"印度尼西亚": "id",
|
||||
"阿联酋": "ar",
|
||||
"沙特阿拉伯": "ar",
|
||||
"埃及": "ar",
|
||||
"以色列": "he",
|
||||
"缅甸": "my",
|
||||
"斯里兰卡": "ta",
|
||||
"巴基斯坦": "ur",
|
||||
"孟加拉国": "bn",
|
||||
"波兰": "pl",
|
||||
"荷兰": "nl",
|
||||
"罗马尼亚": "ro",
|
||||
"土耳其": "tr",
|
||||
"老挝": "lo",
|
||||
"乌克兰": "uk",
|
||||
"芬兰": "fi",
|
||||
"南非": "af",
|
||||
"阿尔巴尼亚": "sq",
|
||||
"安道尔": "ca",
|
||||
"安提瓜和巴布达": "en",
|
||||
"阿根廷": "es",
|
||||
"亚美尼亚": "hy",
|
||||
"奥地利": "de",
|
||||
"阿塞拜疆": "az",
|
||||
"巴哈马": "en",
|
||||
"巴林": "ar",
|
||||
"巴巴多斯": "en",
|
||||
"白俄罗斯": "be",
|
||||
"比利时": "fr",
|
||||
"伯利兹": "en",
|
||||
"贝宁": "fr",
|
||||
"不丹": "dz",
|
||||
"玻利维亚": "es",
|
||||
"波斯尼亚和黑塞哥维那": "bs",
|
||||
"博茨瓦纳": "en",
|
||||
"文莱": "ms",
|
||||
"保加利亚": "bg",
|
||||
"布基纳法索": "fr",
|
||||
"布隆迪": "fr",
|
||||
"柬埔寨": "km",
|
||||
"喀麦隆": "fr",
|
||||
"加拿大": "en",
|
||||
"佛得角": "pt",
|
||||
"开曼群岛": "en",
|
||||
"中非共和国": "fr",
|
||||
"乍得": "fr",
|
||||
"智利": "es",
|
||||
"中国": "zh-CN",
|
||||
"圣诞岛": "en",
|
||||
"科科斯群岛": "en",
|
||||
"哥伦比亚": "es",
|
||||
"科摩罗": "ar",
|
||||
"刚果": "fr",
|
||||
"库克群岛": "en",
|
||||
"哥斯达黎加": "es",
|
||||
"科特迪瓦": "fr",
|
||||
"克罗地亚": "hr",
|
||||
"古巴": "es",
|
||||
"库拉索": "nl",
|
||||
"塞浦路斯": "el",
|
||||
"捷克": "cs",
|
||||
"丹麦": "da",
|
||||
"吉布提": "fr",
|
||||
"多米尼克": "en",
|
||||
"多米尼加共和国": "es",
|
||||
"厄瓜多尔": "es",
|
||||
"萨尔瓦多": "es",
|
||||
"赤道几内亚": "es",
|
||||
"厄立特里亚": "ti",
|
||||
"爱沙尼亚": "et",
|
||||
"埃斯瓦蒂尼": "en",
|
||||
"埃塞俄比亚": "am",
|
||||
"福克兰群岛": "en",
|
||||
"法罗群岛": "fo",
|
||||
"斐济": "en",
|
||||
"法属圭亚那": "fr",
|
||||
"法属波利尼西亚": "fr",
|
||||
"法属南部领地": "fr",
|
||||
"加蓬": "fr",
|
||||
"冈比亚": "en",
|
||||
"格鲁吉亚": "ka",
|
||||
"加纳": "en",
|
||||
"直布罗陀": "en",
|
||||
"希腊": "el",
|
||||
"格陵兰": "kl",
|
||||
"格林纳达": "en",
|
||||
"瓜德罗普": "fr",
|
||||
"关岛": "en",
|
||||
"危地马拉": "es",
|
||||
"根西岛": "en",
|
||||
"几内亚": "fr",
|
||||
"几内亚比绍": "pt",
|
||||
"圭亚那": "en",
|
||||
"海地": "fr",
|
||||
"赫德岛和麦克唐纳群岛": "en",
|
||||
"梵蒂冈": "it",
|
||||
"洪都拉斯": "es",
|
||||
"中国香港特别行政区": "zh-TW",
|
||||
"匈牙利": "hu",
|
||||
"冰岛": "is",
|
||||
"伊朗": "fa",
|
||||
"伊拉克": "ar",
|
||||
"爱尔兰": "en",
|
||||
"曼岛": "en",
|
||||
"牙买加": "en",
|
||||
"泽西岛": "en",
|
||||
"约旦": "ar",
|
||||
"哈萨克斯坦": "kk",
|
||||
"肯尼亚": "en",
|
||||
"基里巴斯": "en",
|
||||
"朝鲜": "ko",
|
||||
"科威特": "ar",
|
||||
"吉尔吉斯斯坦": "ky",
|
||||
"拉脱维亚": "lv",
|
||||
"黎巴嫩": "ar",
|
||||
"莱索托": "en",
|
||||
"利比里亚": "en",
|
||||
"利比亚": "ar",
|
||||
"列支敦士登": "de",
|
||||
"立陶宛": "lt",
|
||||
"卢森堡": "fr",
|
||||
"中国澳门特别行政区": "zh-TW",
|
||||
"马达加斯加": "fr",
|
||||
"马拉维": "en",
|
||||
"马尔代夫": "dv",
|
||||
"马里": "fr",
|
||||
"马耳他": "mt",
|
||||
"马绍尔群岛": "en",
|
||||
"马提尼克": "fr",
|
||||
"毛里塔尼亚": "ar",
|
||||
"毛里求斯": "en",
|
||||
"马约特": "fr",
|
||||
"密克罗尼西亚": "en",
|
||||
"摩尔多瓦": "ro",
|
||||
"摩纳哥": "fr",
|
||||
"蒙古": "mn",
|
||||
"黑山": "sr",
|
||||
"蒙特塞拉特": "en",
|
||||
"摩洛哥": "ar",
|
||||
"莫桑比克": "pt",
|
||||
"纳米比亚": "en",
|
||||
"瑙鲁": "en",
|
||||
"尼泊尔": "ne",
|
||||
"新喀里多尼亚": "fr",
|
||||
"新西兰": "en",
|
||||
"尼加拉瓜": "es",
|
||||
"尼日尔": "fr",
|
||||
"尼日利亚": "en",
|
||||
"纽埃": "en",
|
||||
"诺福克岛": "en",
|
||||
"北马其顿": "mk",
|
||||
"北马里亚纳群岛": "en",
|
||||
"挪威": "no",
|
||||
"阿曼": "ar",
|
||||
"帕劳": "en",
|
||||
"巴勒斯坦": "ar",
|
||||
"巴拿马": "es",
|
||||
"巴布亚新几内亚": "en",
|
||||
"巴拉圭": "es",
|
||||
"秘鲁": "es",
|
||||
"菲律宾": "tl",
|
||||
"皮特凯恩群岛": "en",
|
||||
"波多黎各": "es",
|
||||
"卡塔尔": "ar",
|
||||
"留尼汪": "fr",
|
||||
"卢旺达": "rw",
|
||||
"圣巴泰勒米": "fr",
|
||||
"圣赫勒拿": "en",
|
||||
"圣基茨和尼维斯": "en",
|
||||
"圣卢西亚": "en",
|
||||
"法属圣马丁": "fr",
|
||||
"圣皮埃尔和密克隆": "fr",
|
||||
"圣文森特和格林纳丁斯": "en",
|
||||
"萨摩亚": "sm",
|
||||
"圣马力诺": "it",
|
||||
"圣多美和普林西比": "pt",
|
||||
"塞内加尔": "fr",
|
||||
"塞尔维亚": "sr",
|
||||
"塞舌尔": "fr",
|
||||
"塞拉利昂": "en",
|
||||
"新加坡": "zh-CN",
|
||||
"荷属圣马丁": "nl",
|
||||
"斯洛伐克": "sk",
|
||||
"斯洛文尼亚": "sl",
|
||||
"所罗门群岛": "en",
|
||||
"索马里": "so",
|
||||
"南乔治亚岛和南桑威奇群岛": "en",
|
||||
"南苏丹": "en",
|
||||
"苏丹": "ar",
|
||||
"苏里南": "nl",
|
||||
"斯瓦尔巴群岛和扬马延岛": "no",
|
||||
"瑞典": "sv",
|
||||
"瑞士": "de",
|
||||
"叙利亚": "ar",
|
||||
"台湾省": "zh-TW",
|
||||
"塔吉克斯坦": "tg",
|
||||
"坦桑尼亚": "sw",
|
||||
"东帝汶": "tet",
|
||||
"多哥": "fr",
|
||||
"托克劳": "en",
|
||||
"汤加": "to",
|
||||
"特立尼达和多巴哥": "en",
|
||||
"突尼斯": "ar",
|
||||
"土库曼斯坦": "tk",
|
||||
"特克斯和凯科斯群岛": "en",
|
||||
"图瓦卢": "en",
|
||||
"乌干达": "en",
|
||||
"美国本土外小岛屿": "en",
|
||||
"乌拉圭": "es",
|
||||
"乌兹别克斯坦": "uz",
|
||||
"瓦努阿图": "bi",
|
||||
"委内瑞拉": "es",
|
||||
"英属维尔京群岛": "en",
|
||||
"美属维尔京群岛": "en",
|
||||
"瓦利斯和富图纳": "fr",
|
||||
"西撒哈拉": "ar",
|
||||
"也门": "ar",
|
||||
"赞比亚": "en",
|
||||
"津巴布韦": "en",
|
||||
"阿富汗": "fa",
|
||||
"阿尔及利亚": "ar",
|
||||
"美属萨摩亚": "en",
|
||||
"安哥拉": "pt",
|
||||
"安圭拉": "en",
|
||||
"南极洲": "en",
|
||||
"百慕大": "en",
|
||||
"荷属加勒比区": "nl",
|
||||
"布韦岛": "no",
|
||||
"英属印度洋领地": "en",
|
||||
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def get_language_code(cls, country):
|
||||
return cls.country_to_language.get(country)
|
||||
|
||||
# 使用示例
|
||||
if __name__ == "__main__":
|
||||
mapper = CountryLanguageMapper()
|
||||
countries = ['英国', '美国', '日本', '未知国家']
|
||||
for country in countries:
|
||||
code = mapper.get_language_code(country)
|
||||
if code:
|
||||
print(f"{country} 对应的语言代码是 {code}")
|
||||
else:
|
||||
print(f"没有找到 {country} 对应的语言代码")
|
||||
BIN
resources/e5ab9d3c548302dca3b1383589ac43eedd41f24e/bgv.png
Normal file
BIN
resources/e5ab9d3c548302dca3b1383589ac43eedd41f24e/bgv.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.5 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 482 KiB |
@@ -10,6 +10,7 @@ from datetime import datetime
|
||||
from Entity import Variables
|
||||
from Utils.AiUtils import AiUtils
|
||||
from Utils.ControlUtils import ControlUtils
|
||||
from Utils.CountryEnum import CountryLanguageMapper
|
||||
from Utils.IOSAIStorage import IOSAIStorage
|
||||
from Utils.JsonUtils import JsonUtils
|
||||
from Utils.LogManager import LogManager
|
||||
@@ -59,6 +60,7 @@ class ScriptManager():
|
||||
while time.time() < deadline:
|
||||
if event.is_set():
|
||||
return True
|
||||
|
||||
event.wait(timeout=min(step, max(0, deadline - time.time())))
|
||||
return event.is_set()
|
||||
|
||||
@@ -432,11 +434,11 @@ class ScriptManager():
|
||||
关注打招呼以及回复主播消息
|
||||
"""
|
||||
|
||||
def safe_greetNewFollowers(self, udid, needReply, needTranslate, isComment, event):
|
||||
def safe_greetNewFollowers(self, udid, needReply, isComment, event):
|
||||
retries = 0
|
||||
while not event.is_set():
|
||||
try:
|
||||
self.greetNewFollowers(udid, needReply, needTranslate, isComment,event)
|
||||
self.greetNewFollowers(udid, needReply, isComment, event)
|
||||
|
||||
except Exception as e:
|
||||
retries += 1
|
||||
@@ -448,7 +450,7 @@ class ScriptManager():
|
||||
break
|
||||
LogManager.method_error("greetNewFollowers 重试次数耗尽,任务终止", "关注打招呼", udid)
|
||||
|
||||
def greetNewFollowers(self, udid, needReply, needTranslate, isComment, event):
|
||||
def greetNewFollowers(self, udid, needReply, isComment, event):
|
||||
|
||||
if self.check_stop(event, "init"): # [ADD]
|
||||
return
|
||||
@@ -459,10 +461,11 @@ class ScriptManager():
|
||||
print(f"是否要自动回复消息:{needReply}")
|
||||
|
||||
LogManager.method_info(f"是否要自动回复消息:{needReply}", "关注打招呼", udid)
|
||||
LogManager.method_info(f"是否需要进行翻译:{needTranslate}", "关注打招呼", udid)
|
||||
|
||||
# 先关闭Tik Tok
|
||||
ControlUtils.closeTikTok(session, udid)
|
||||
|
||||
|
||||
if self.interruptible_sleep(event, 1): # [ADD] 可中断等待
|
||||
return
|
||||
|
||||
@@ -704,10 +707,29 @@ class ScriptManager():
|
||||
print("打招呼的数据", ev.prologueList)
|
||||
LogManager.method_info(f"传递的打招呼的数据:{ev.prologueList}", "关注打招呼", udid)
|
||||
|
||||
# 准备打招呼的文案
|
||||
text = random.choice(ev.prologueList)
|
||||
|
||||
LogManager.method_info(f"取出打招呼的数据,{text}, 判断是否需要翻译:{needTranslate}", "关注打招呼",
|
||||
# 取出国家进行对应国家语言代码
|
||||
anchorCountry_code = CountryLanguageMapper.get_language_code(anchorCountry)
|
||||
|
||||
|
||||
|
||||
|
||||
# 判断对应的语言代码是否在传入的字典中
|
||||
if anchorCountry_code in ev.prologueList:
|
||||
# 进行原本的进行传入
|
||||
privateMessageList = ev.prologueList[anchorCountry_code]
|
||||
needTranslate = False
|
||||
|
||||
else:
|
||||
# 需要翻译
|
||||
privateMessageList = ev.prologueList['yolo']
|
||||
needTranslate = True # 使用yolo必须翻译
|
||||
|
||||
|
||||
# 准备打招呼的文案
|
||||
text = random.choice(privateMessageList)
|
||||
|
||||
LogManager.method_info(f"取出打招呼的数据,{text}", "关注打招呼",
|
||||
udid)
|
||||
|
||||
if needTranslate:
|
||||
|
||||
Reference in New Issue
Block a user