Skip to content

Commit

Permalink
过滤新增 弹幕过滤前后缀,用于直播间直接聊天而不触发LLM;删减违禁词
Browse files Browse the repository at this point in the history
  • Loading branch information
Ikaros-521 committed Dec 23, 2023
1 parent affa61c commit 038e9a6
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 32 deletions.
4 changes: 4 additions & 0 deletions config.json
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,10 @@
"filter": {
"before_must_str": [],
"after_must_str": [],
"before_filter_str": [
"#"
],
"after_filter_str": [],
"badwords_path": "data/badwords.txt",
"bad_pinyin_path": "data/违禁拼音.txt",
"max_len": 80,
Expand Down
4 changes: 4 additions & 0 deletions config.json.bak
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,10 @@
"filter": {
"before_must_str": [],
"after_must_str": [],
"before_filter_str": [
"#"
],
"after_filter_str": [],
"badwords_path": "data/badwords.txt",
"bad_pinyin_path": "data/违禁拼音.txt",
"max_len": 80,
Expand Down
24 changes: 0 additions & 24 deletions data/badwords.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3907,7 +3907,6 @@ bili_
郭永平
监狱
雅照
摸你
色區
学自联
購金
Expand Down Expand Up @@ -4100,10 +4099,8 @@ bili_
淫亵
毛氵去
氯噻嗪
发票
波推
罗志军
身寸
斯大林
白烂
制服狩
Expand Down Expand Up @@ -4162,12 +4159,8 @@ bili_
赣您娘
姚增科
塞你娘
八老
焦焕成
带链
左轮
土共
开奖
华主席
女死囚
公寓
Expand All @@ -4184,7 +4177,6 @@ bili_
小電影
穴口
淫驴屯
法人
去她妈
耿飚
淫驢屯
Expand Down Expand Up @@ -4264,7 +4256,6 @@ bili_
禽兽
宋美龄
正見網
林果
陈润儿
寂寞女
學生妹
Expand All @@ -4279,7 +4270,6 @@ bili_
李老师
联系寇
李希
肉香
雷春美
嗎個
赵海青
Expand Down Expand Up @@ -4504,7 +4494,6 @@ bili_
果子冰
日九城
渣波波
删号
操操
法抡功
氰化汞
Expand Down Expand Up @@ -4937,20 +4926,15 @@ bili_
林慎立
一党
低制
隐形
劲舞团
北高联
毛你妈
淫魔
幼男
地奈德
人也
赖昌星
神泪
阀伦
臧独
功友
笨蛋
狭义道
买春
启蒙派
Expand Down Expand Up @@ -5067,7 +5051,6 @@ bili_
白军
杜学芳
反动
四川
性情
淫荡
毛阳具
Expand Down Expand Up @@ -5118,7 +5101,6 @@ bili_
毛精液
夜情
达賴
捐献
要射了
几八
唐捷
Expand Down Expand Up @@ -5206,7 +5188,6 @@ bili_
搜神记
江棋生
潮吹
色狼
亚洲
納粹
大鸡巴
Expand Down Expand Up @@ -5440,7 +5421,6 @@ bili_
温云松
小黑豹
赵南
昏迷
毛龟头
宏象
户口本
Expand Down Expand Up @@ -5476,15 +5456,13 @@ bili_
海洛因
温加宝
真相
教养院
長瀨
胡玉敏
尸体
轩辕剑
洗腦班
亞情
网星
假证
受虐狂
津瑞
Expand Down Expand Up @@ -5589,7 +5567,6 @@ bili_
吳桂賢
發輪
操嫩穴
哭么
乖乖水
氰化物
小嫩雞
Expand Down Expand Up @@ -5722,7 +5699,6 @@ bili_
华岳
江戲子
外卦
过机
发论功
五毛党
色书库
Expand Down
22 changes: 17 additions & 5 deletions utils/my_handle.py
Original file line number Diff line number Diff line change
Expand Up @@ -777,7 +777,17 @@ def comment_check_and_replace(self, content):
Returns:
str: 处理完毕后的弹幕内容/None
"""
# 判断弹幕是否以xx起始,如果不是则返回
# 判断弹幕是否以xx起始,如果是则返回None
if My_handle.config.get("filter")["before_filter_str"] and any(
content.startswith(prefix) for prefix in My_handle.config.get("filter")["before_filter_str"]):
return None

# 判断弹幕是否以xx结尾,如果是则返回None
if My_handle.config.get("filter")["after_filter_str"] and any(
content.endswith(prefix) for prefix in My_handle.config.get("filter")["after_filter_str"]):
return None

# 判断弹幕是否以xx起始,如果不是则返回None
if My_handle.config.get("filter")["before_must_str"] and not any(
content.startswith(prefix) for prefix in My_handle.config.get("filter")["before_must_str"]):
return None
Expand All @@ -787,7 +797,7 @@ def comment_check_and_replace(self, content):
content = content[len(prefix):] # 删除匹配的开头
break

# 判断弹幕是否以xx结尾,如果不是则返回
# 判断弹幕是否以xx结尾,如果不是则返回None
if My_handle.config.get("filter")["after_must_str"] and not any(
content.endswith(prefix) for prefix in My_handle.config.get("filter")["after_must_str"]):
return None
Expand Down Expand Up @@ -1370,13 +1380,18 @@ def comment_handle(self, data):
user_name = data["username"]
content = data["content"]

# 输出当前用户发送的弹幕消息
logging.info(f"[{user_name}]: {content}")

# 记录数据库
if My_handle.config.get("database", "comment_enable"):
insert_data_sql = '''
INSERT INTO danmu (username, content, ts) VALUES (?, ?, ?)
'''
self.db.execute(insert_data_sql, (user_name, content, datetime.now()))



# 合并字符串末尾连续的* 主要针对获取不到用户名的情况
user_name = My_handle.common.merge_consecutive_asterisks(user_name)

Expand All @@ -1386,9 +1401,6 @@ def comment_handle(self, data):
if self.integral_handle("crud", data):
return

# 输出当前用户发送的弹幕消息
logging.info(f"[{user_name}]: {content}")

"""
用户名也得过滤一下,防止炸弹人
"""
Expand Down
10 changes: 7 additions & 3 deletions webui.py
Original file line number Diff line number Diff line change
Expand Up @@ -440,6 +440,8 @@ def common_textarea_handle(content):
# 过滤
config_data["filter"]["before_must_str"] = common_textarea_handle(textarea_filter_before_must_str.value)
config_data["filter"]["after_must_str"] = common_textarea_handle(textarea_filter_after_must_str.value)
config_data["filter"]["before_filter_str"] = common_textarea_handle(textarea_filter_before_filter_str.value)
config_data["filter"]["after_filter_str"] = common_textarea_handle(textarea_filter_after_filter_str.value)
config_data["filter"]["badwords_path"] = input_filter_badwords_path.value
config_data["filter"]["bad_pinyin_path"] = input_filter_bad_pinyin_path.value
config_data["filter"]["max_len"] = int(input_filter_max_len.value)
Expand Down Expand Up @@ -1203,9 +1205,11 @@ def common_textarea_handle(content):
input_local_qa_audio_similarity = ui.input(label='音频最低相似度', placeholder='最低音频匹配相似度,就是说用户发送的内容和本地音频库中音频文件名的最低相似度。\n低了就会被当做一般弹幕处理', value=config.get("local_qa", "audio", "similarity")).style("width:200px;")
with ui.card().style(card_css):
ui.label('过滤')
with ui.grid(columns=2):
textarea_filter_before_must_str = ui.textarea(label='弹幕前缀', placeholder='弹幕过滤,必须携带的触发前缀字符串(任一)\n例如:配置#,那么就需要发送:#你好', value=textarea_data_change(config.get("filter", "before_must_str"))).style("width:400px;")
textarea_filter_after_must_str = ui.textarea(label='弹幕后缀', placeholder='弹幕过滤,必须携带的触发后缀字符串(任一)\n例如:配置。那么就需要发送:你好。', value=textarea_data_change(config.get("filter", "before_must_str"))).style("width:400px;")
with ui.grid(columns=4):
textarea_filter_before_must_str = ui.textarea(label='弹幕触发前缀', placeholder='前缀必须携带其中任一字符串才能触发\n例如:配置#,那么这个会触发:#你好', value=textarea_data_change(config.get("filter", "before_must_str"))).style("width:300px;")
textarea_filter_after_must_str = ui.textarea(label='弹幕触发后缀', placeholder='后缀必须携带其中任一字符串才能触发\n例如:配置。那么这个会触发:你好。', value=textarea_data_change(config.get("filter", "before_must_str"))).style("width:300px;")
textarea_filter_before_filter_str = ui.textarea(label='弹幕过滤前缀', placeholder='当前缀为其中任一字符串时,弹幕会被过滤\n例如:配置#,那么这个会被过滤:#你好', value=textarea_data_change(config.get("filter", "before_filter_str"))).style("width:300px;")
textarea_filter_after_filter_str = ui.textarea(label='弹幕过滤后缀', placeholder='当后缀为其中任一字符串时,弹幕会被过滤\n例如:配置#,那么这个会被过滤:你好#', value=textarea_data_change(config.get("filter", "before_filter_str"))).style("width:300px;")
with ui.grid(columns=4):
input_filter_badwords_path = ui.input(label='违禁词路径', placeholder='本地违禁词数据路径(你如果不需要,可以清空文件内容)', value=config.get("filter", "badwords_path")).style("width:200px;")
input_filter_bad_pinyin_path = ui.input(label='违禁拼音路径', placeholder='本地违禁拼音数据路径(你如果不需要,可以清空文件内容)', value=config.get("filter", "bad_pinyin_path")).style("width:200px;")
Expand Down

0 comments on commit 038e9a6

Please sign in to comment.