Tuchuanhuhuhu commited on
Commit
60a57c5
·
1 Parent(s): 2c7dccc

feat: 加快川虎Chat的启动速度,尤其在不理想的网络情况下

Browse files
ChuanhuChatbot.py CHANGED
@@ -44,7 +44,7 @@ with gr.Blocks(theme=small_and_beautiful_theme) as demo:
44
  with gr.Row(elem_id="chuanhu-header"):
45
  gr.HTML(get_html("header_title.html").format(
46
  app_title=CHUANHU_TITLE), elem_id="app-title")
47
- status_display = gr.Markdown(get_geoip(), elem_id="status-display")
48
  with gr.Row(elem_id="float-display"):
49
  user_info = gr.Markdown(
50
  value="getting user info...", elem_id="user-info")
 
44
  with gr.Row(elem_id="chuanhu-header"):
45
  gr.HTML(get_html("header_title.html").format(
46
  app_title=CHUANHU_TITLE), elem_id="app-title")
47
+ status_display = gr.Markdown(get_geoip, elem_id="status-display")
48
  with gr.Row(elem_id="float-display"):
49
  user_info = gr.Markdown(
50
  value="getting user info...", elem_id="user-info")
locale/en_US.json CHANGED
@@ -137,5 +137,6 @@
137
  "🔙 恢复默认网络设置": "🔙 Reset Network Settings",
138
  "🗑️ 删除最新对话": "🗑️ Delete latest dialog",
139
  "🗑️ 删除最旧对话": "🗑️ Delete oldest dialog",
140
- "🧹 新的对话": "🧹 New Dialogue"
 
141
  }
 
137
  "🔙 恢复默认网络设置": "🔙 Reset Network Settings",
138
  "🗑️ 删除最新对话": "🗑️ Delete latest dialog",
139
  "🗑️ 删除最旧对话": "🗑️ Delete oldest dialog",
140
+ "🧹 新的对话": "🧹 New Dialogue",
141
+ "正在获取IP地址信息,请稍候...": "Getting IP address information, please wait...",
142
  }
locale/ja_JP.json CHANGED
@@ -137,5 +137,6 @@
137
  "🔙 恢复默认网络设置": "🔙 ネットワーク設定のリセット",
138
  "🗑️ 删除最新对话": "🗑️ 最新の会話削除",
139
  "🗑️ 删除最旧对话": "🗑️ 最古の会話削除",
140
- "🧹 新的对话": "🧹 新しい会話"
 
141
  }
 
137
  "🔙 恢复默认网络设置": "🔙 ネットワーク設定のリセット",
138
  "🗑️ 删除最新对话": "🗑️ 最新の会話削除",
139
  "🗑️ 删除最旧对话": "🗑️ 最古の会話削除",
140
+ "🧹 新的对话": "🧹 新しい会話",
141
+ "正在获取IP地址信息,请稍候...": "IPアドレス情報を取得しています、しばらくお待ちください...",
142
  }
locale/ko_KR.json CHANGED
@@ -137,5 +137,6 @@
137
  "🔙 恢复默认网络设置": "🔙 네트워크 설정 초기화",
138
  "🗑️ 删除最新对话": "🗑️ 최신 대화 삭제",
139
  "🗑️ 删除最旧对话": "🗑️ 가장 오래된 대화 삭제",
140
- "🧹 新的对话": "🧹 새로운 대화"
 
141
  }
 
137
  "🔙 恢复默认网络设置": "🔙 네트워크 설정 초기화",
138
  "🗑️ 删除最新对话": "🗑️ 최신 대화 삭제",
139
  "🗑️ 删除最旧对话": "🗑️ 가장 오래된 대화 삭제",
140
+ "🧹 新的对话": "🧹 새로운 대화",
141
+ "正在获取IP地址信息,请稍候...": "IP 주소 정보를 가져오는 중입니다. 잠시만 기다려주세요...",
142
  }
locale/ru_RU.json CHANGED
@@ -137,5 +137,6 @@
137
  "🔙 恢复默认网络设置": "🔙 Восстановить настройки сети по умолчанию",
138
  "🗑️ 删除最新对话": "🗑️ Удалить последний диалог",
139
  "🗑️ 删除最旧对话": "🗑️ Удалить старейший диалог",
140
- "🧹 新的对话": "🧹 Новый диалог"
 
141
  }
 
137
  "🔙 恢复默认网络设置": "🔙 Восстановить настройки сети по умолчанию",
138
  "🗑️ 删除最新对话": "🗑️ Удалить последний диалог",
139
  "🗑️ 删除最旧对话": "🗑️ Удалить старейший диалог",
140
+ "🧹 新的对话": "🧹 Новый диалог",
141
+ "正在获取IP地址信息,请稍候...": "Получение информации об IP-адресе, пожалуйста, подождите...",
142
  }
locale/sv_SE.json CHANGED
@@ -137,5 +137,6 @@
137
  "🔙 恢复默认网络设置": "🔙 Återställ standardnätverksinställningar+",
138
  "🗑️ 删除最新对话": "🗑️ Ta bort senaste dialogen",
139
  "🗑️ 删除最旧对话": "🗑️ Ta bort äldsta dialogen",
140
- "🧹 新的对话": "🧹 Ny Dialog"
 
141
  }
 
137
  "🔙 恢复默认网络设置": "🔙 Återställ standardnätverksinställningar+",
138
  "🗑️ 删除最新对话": "🗑️ Ta bort senaste dialogen",
139
  "🗑️ 删除最旧对话": "🗑️ Ta bort äldsta dialogen",
140
+ "🧹 新的对话": "🧹 Ny Dialog",
141
+ "正在获取IP地址信息,请稍候...": "Hämtar IP-adressinformation, vänta...",
142
  }
locale/vi_VN.json CHANGED
@@ -137,5 +137,6 @@
137
  "🔙 恢复默认网络设置": "🔙 Khôi phục cài đặt mạng mặc định",
138
  "🗑️ 删除最新对话": "🗑️ Xóa cuộc trò chuyện mới nhất",
139
  "🗑️ 删除最旧对话": "🗑️ Xóa cuộc trò chuyện cũ nhất",
140
- "🧹 新的对话": "🧹 Cuộc trò chuyện mới"
 
141
  }
 
137
  "🔙 恢复默认网络设置": "🔙 Khôi phục cài đặt mạng mặc định",
138
  "🗑️ 删除最新对话": "🗑️ Xóa cuộc trò chuyện mới nhất",
139
  "🗑️ 删除最旧对话": "🗑️ Xóa cuộc trò chuyện cũ nhất",
140
+ "🧹 新的对话": "🧹 Cuộc trò chuyện mới",
141
+ "正在获取IP地址信息,请稍候...": "Đang lấy thông tin địa chỉ IP, vui lòng đợi...",
142
  }
modules/utils.py CHANGED
@@ -6,6 +6,7 @@ import commentjson as json
6
  import os
7
  import datetime
8
  import csv
 
9
  import requests
10
  import re
11
  import html
@@ -586,28 +587,53 @@ def replace_today(prompt):
586
  today = datetime.datetime.today().strftime("%Y-%m-%d")
587
  return prompt.replace("{current_date}", today)
588
 
 
 
589
 
590
  def get_geoip():
591
- try:
592
- with retrieve_proxy():
593
- response = requests.get("https://ipapi.co/json/", timeout=5)
594
- data = response.json()
595
- except:
596
- data = {"error": True, "reason": "连接ipapi失败"}
597
- if "error" in data.keys():
598
- logging.warning(f"无法获取IP地址信息。\n{data}")
599
- if data["reason"] == "RateLimited":
600
- return i18n("您的IP区域:未知。")
601
- else:
602
- return i18n("获取IP地理位置失败。原因:") + f"{data['reason']}" + i18n("。你仍然可以使用聊天功能。")
603
- else:
604
- country = data["country_name"]
605
- if country == "China":
606
- text = "**您的IP区域:中国。请立即检查代理设置,在不受支持的地区使用API可能导致账号被封禁。**"
 
 
 
 
 
 
 
 
 
607
  else:
608
- text = i18n("您的IP区域:") + f"{country}。"
609
- logging.info(text)
610
- return text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
611
 
612
 
613
  def find_n(lst, max_num):
 
6
  import os
7
  import datetime
8
  import csv
9
+ import threading
10
  import requests
11
  import re
12
  import html
 
587
  today = datetime.datetime.today().strftime("%Y-%m-%d")
588
  return prompt.replace("{current_date}", today)
589
 
590
+ SERVER_GEO_IP_MSG = None
591
+ FETCHING_IP = False
592
 
593
  def get_geoip():
594
+ global SERVER_GEO_IP_MSG, FETCHING_IP
595
+
596
+ # 如果已经获取了IP信息,则直接返回
597
+ if SERVER_GEO_IP_MSG is not None:
598
+ return SERVER_GEO_IP_MSG
599
+
600
+ # 如果正在获取IP信息,则返回等待消息
601
+ if FETCHING_IP:
602
+ return i18n("IP地址信息正在获取中,请稍候...")
603
+
604
+ # 定义一个内部函数用于在新线程中执行IP信息的获取
605
+ def fetch_ip():
606
+ global SERVER_GEO_IP_MSG, FETCHING_IP
607
+ try:
608
+ with retrieve_proxy():
609
+ response = requests.get("https://ipapi.co/json/", timeout=5)
610
+ data = response.json()
611
+ except:
612
+ data = {"error": True, "reason": "连接ipapi失败"}
613
+ if "error" in data.keys():
614
+ logging.warning(f"无法获取IP地址信息。\n{data}")
615
+ if data["reason"] == "RateLimited":
616
+ SERVER_GEO_IP_MSG = i18n("您的IP区域:未知。")
617
+ else:
618
+ SERVER_GEO_IP_MSG = i18n("获取IP地理位置失败。原因:") + f"{data['reason']}" + i18n("。你仍然可以使用聊天功能。")
619
  else:
620
+ country = data["country_name"]
621
+ if country == "China":
622
+ SERVER_GEO_IP_MSG = "**您的IP区域:中国。请立即检查代理设置,在不受支持的地区使用API可能导致账号被封禁。**"
623
+ else:
624
+ SERVER_GEO_IP_MSG = i18n("您的IP区域:") + f"{country}。"
625
+ logging.info(SERVER_GEO_IP_MSG)
626
+ FETCHING_IP = False
627
+
628
+ # 设置正在获取IP信息的标志
629
+ FETCHING_IP = True
630
+
631
+ # 启动一个新线程来获取IP信息
632
+ thread = threading.Thread(target=fetch_ip)
633
+ thread.start()
634
+
635
+ # 返回一个默认消息,真正的IP信息将由新线程更新
636
+ return i18n("正在获取IP地址信息,请稍候...")
637
 
638
 
639
  def find_n(lst, max_num):