admin
2025-04-02 91b7ec2b67d74e4d2e41c857232414feb3cb7bfd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import os
import random
import re
 
import setting
 
 
def replace_img_with_alt(html_text):
    """
    将HTML中的所有<img>标签替换为其alt属性内容
    如果没有alt属性,则替换为空字符串或指定默认值
    """
    pattern = r'<img\b[^>]*\balt=(["\'])(.*?)\1[^>]*>|<img\b[^>]*>'
 
    def replacement(match):
        if match.group(2):  # 如果匹配到alt属性
            return match.group(2)  # 返回alt属性内容
        return ''  # 没有alt属性则替换为空
 
    return re.sub(pattern, replacement, html_text, flags=re.IGNORECASE).strip()
 
 
def get_like_conditions():
    """
    获取点赞的条件
    :return:[正则表达式,...]
    """
    condition_str = setting.get_like_conditions()
    return [x.split("#")[0] for x in condition_str.split("\n") if x]
 
 
def get_comment_templates():
    """
    获取评论模版
    :return:[(匹配的正则, 评论的内容)]
    """
    condition_str = setting.get_comment_templates()
    return [(x.split("#")[0], x.split("#")[1]) for x in condition_str.split("\n") if x]
 
 
def __get_common_emojis():
    comment_emojis = setting.get_common_emojis()
    if comment_emojis:
        return re.findall("\[.*?\]", comment_emojis)
    return []
 
 
def __load_content(content_template, nick_name, comment_content):
    """
    加载内容
    :param content_template:
    :param nick_name:
    :param comment_content:
    :return:
    """
    # 替换表情
    pattern = r'【([\d-]+)】'
 
    def replacement_emojis(match):
        match_str = match.group(1)
        if match_str:
            start = 0
            end = 0
            if match_str.find("-") >= 0:
                sts = match_str.split("-")
                if sts[0]:
                    start = int(sts[0])
                if sts[1]:
                    end = int(sts[1])
            else:
                start = int(match_str)
                end = int(match_str)
            if start == 0 and end == 0:
                return ""
            count = random.randint(start, end)
            result_str = ""
            common_emojis = __get_common_emojis()
            for i in range(count):
                result_str += common_emojis[random.randint(0, len(common_emojis) - 1)]
            return result_str  # 返回alt属性内容
        return ''  # 没有alt属性则替换为空
 
    result = re.sub(pattern, replacement_emojis, content_template, flags=re.IGNORECASE).strip()
 
    comment_emojis = re.findall(r"\[.*?\]", comment_content)
    last_emoji = ""
    if comment_emojis:
        last_emoji = comment_emojis[-1]
    # 替换昵称与原内容
    result = result.replace("【昵称】", nick_name).replace("【内容】", comment_content).replace("【最后一个表情】", last_emoji)
    # 替换最后一个表情
    return result
 
 
def load_content(content_template, nick_name, comment_content):
    """
    加载内容
    :param content_template:
    :param nick_name:
    :param comment_content:
    :return:
    """
    # 替换表情
    pattern = r'\{(.*?)\}'
 
    def replacement_express(match):
        match_str = match.group(1)
        if match_str:
            # 替换或者表达式
            if match_str.find("|") >= 0:
                sts = match_str.split("|")
                return sts[random.randint(0, len(sts)-1)]
            return match_str
        return ''
 
    result = re.sub(pattern, replacement_express, content_template, flags=re.IGNORECASE).strip()
    # 替换最后一个表情
    return __load_content(result, nick_name, comment_content)
 
 
if __name__ == "__main__":
    print(os.getcwd())
    st = "{是的,你的观点很赞|好吧[爱心]|谢谢[抱拳]|是的[强]|确实可能有些不对[裂开]}"
    comment_emojis = load_content(st,"昵称","评论内容本身")
    print(comment_emojis)