diff --git a/.idea/IOS__AI.iml b/.idea/IOS__AI.iml
new file mode 100644
index 0000000..ec63674
--- /dev/null
+++ b/.idea/IOS__AI.iml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index a37b124..20aef6e 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -3,5 +3,5 @@
-
+
\ No newline at end of file
diff --git a/Entity/Variables.py b/Entity/Variables.py
index 7ca00a3..8f42e26 100644
--- a/Entity/Variables.py
+++ b/Entity/Variables.py
@@ -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 = []
diff --git a/Module/FlaskService.py b/Module/FlaskService.py
index 7e74809..f79ab93 100644
--- a/Module/FlaskService.py
+++ b/Module/FlaskService.py
@@ -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()
diff --git a/Utils/CountryEnum.py b/Utils/CountryEnum.py
new file mode 100644
index 0000000..69f2fe2
--- /dev/null
+++ b/Utils/CountryEnum.py
@@ -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} 对应的语言代码")
\ No newline at end of file
diff --git a/resources/e5ab9d3c548302dca3b1383589ac43eedd41f24e/bgv.png b/resources/e5ab9d3c548302dca3b1383589ac43eedd41f24e/bgv.png
new file mode 100644
index 0000000..ef6c940
Binary files /dev/null and b/resources/e5ab9d3c548302dca3b1383589ac43eedd41f24e/bgv.png differ
diff --git a/resources/e5ab9d3c548302dca3b1383589ac43eedd41f24e/bgv_comment.png b/resources/e5ab9d3c548302dca3b1383589ac43eedd41f24e/bgv_comment.png
new file mode 100644
index 0000000..30c015c
Binary files /dev/null and b/resources/e5ab9d3c548302dca3b1383589ac43eedd41f24e/bgv_comment.png differ
diff --git a/script/ScriptManager.py b/script/ScriptManager.py
index 78de124..0331e0e 100644
--- a/script/ScriptManager.py
+++ b/script/ScriptManager.py
@@ -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: