安装插件 Replace Rules

设置插件

  // settings.json
"replacerules.rules": {
    "1_去除所有空格": {
        "find": "[  \\t]", 
        "replace": "",
        "isRegex": true
    },
    "2_去除所有空行": {
        "find": "^\\s*\\n", 
        "replace": "",
        "isRegex": true
    },
    "3_直角引号统一初始化": {
        // 先把所有乱七八糟的单/双直角引号全部打碎,统一和英文双引一起处理
        "find": "[『』「」]", 
        "replace": "\"",  
        "isRegex": true
    },
    "4_英文双引精准配对": {
        // 核心修正:捕获每行内任意成对出现的双引号,强制规范为前“后”
        "find": "\"([^\"]+?)\"", 
        "replace": "“$1”",
        "isRegex": true
    },
    "5_英文单引精准配对": {
        // 同理,精准捕获行内成对出现的单引号,规范为前‘后’
        "find": "'([^']+?)'",
        "replace": "‘$1’",
        "isRegex": true
    },
    "6_智能修复单边漏网之鱼_左": {
        // 针对文字左侧被误伤或落单的反引号,强行修正为左引号
        "find": "”(?=[\\u4e00-\\u9fa5\\w])",
        "replace": "“",
        "isRegex": true
    },
    "7_智能修复单边漏网之鱼_右": {
        // 针对文字右侧、或者紧跟在标点(如。,、?!)后面的左引号,强行修正为右引号
        "find": "“(?=[。,、?!…])|(?<=[\\u4e00-\\u9fa5\\w])“",
        "replace": "”",
        "isRegex": true
    },
    "8_段首精准缩进2字符": {
        "find": "^(?=\\S)", 
        "replace": "  ",    
        "isRegex": true
    },
    "9_中文左引号替换英文引号": {
        "find": "“", 
        "replace": "\"",    
        "isRegex": false
    },
    "10_中文右引号替换英文引号": {
        "find": "”", 
        "replace": "\"",    
        "isRegex": false
    },
    "11_英文引号替换中文引号": {
        "find": "\"(.*?)\"", 
        "replace": "“$1”",    
        "isRegex": true
    },
    "12_全角转半角": {
        "find": [
            // 全角大写字母 A-Z
            "A","B","C","D","E","F","G","H","I","J","K","L","M",
            "N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
            // 全角小写字母 a-z
            "a","b","c","d","e","f","g","h","i","j","k","l","m",
            "n","o","p","q","r","s","t","u","v","w","x","y","z",
            // 全角数字 0-9
            "0","1","2","3","4","5","6","7","8","9",
            // 全角符号(对应 ASCII 可打印字符)
            "!",""","#","$","%","&","'","(",")","*","+",",","-",".","/",
            ":",";","<","=",">","?","@",
            "[","\","]","^","_","`",
            "{","|","}","~",
            // 全角空格
            " "
        ],
        "replace": [
            // 半角大写
            "A","B","C","D","E","F","G","H","I","J","K","L","M",
            "N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
            // 半角小写
            "a","b","c","d","e","f","g","h","i","j","k","l","m",
            "n","o","p","q","r","s","t","u","v","w","x","y","z",
            // 半角数字
            "0","1","2","3","4","5","6","7","8","9",
            // 半角符号
            "!","\"","#","$","%","&","'","(",")","*","+",",","-",".","/",
            ":",";","<","=",">","?","@",
            "[","\\","]","^","_","`",
            "{","|","}","~",
            // 半角空格
            " "
        ]
     }
},
"replacerules.rulesets": {
    "全语境标点与文章一键净化": {
        "rules": [
            "1_去除所有空格",
            "2_去除所有空行",
            "3_直角引号统一初始化",
            "4_英文双引精准配对",
            "5_英文单引精准配对",
            "6_智能修复单边漏网之鱼_左",
            "7_智能修复单边漏网之鱼_右",
            "8_段首精准缩进2字符",
            "9_中文左引号替换英文引号",
            "10_中文右引号替换英文引号",
            "11_英文引号替换中文引号",
            "12_全角转半角"
        ]
    }
},

给特定网站开放下载权限
‌操作步骤‌:打开目标下载网站,点击地址栏左侧的锁形/「i」信息图标,选择「网站设置」,找到「不安全内容」选项,将行为从「阻止」改为「允许」,刷新网页后重新下载即可。

‌批量配置‌:在地址栏输入chrome://settings/content/insecureContent,

在 「允许显示不安全内容」, 点击「添加」,

输入指定域名(如[*.]example.com),该域名下的所有下载都不会被拦截。

vi /usr/lib/lua/luci/view/sysauth.htm
<!-- 登录前 一键网络唤醒按钮 -->
<%
-- 在这里执行唤醒命令
if luci.http.formvalue("wake") then
    luci.sys.call("/usr/bin/etherwake -D -i 'br-lan' -b 'D8:5E:D3:6A:EA:5C' > /dev/null 2>&1")
end
%>

<div style="text-align:center; margin:20px auto; max-width:320px;">
    <form method="post" style="margin:0;">
        <button 
            type="submit" 
            name="wake" 
            value="wake"
            style="
                background:#007bff; 
                color:white; 
                border:none; 
                padding:12px 24px; 
                border-radius:6px; 
                font-size:16px; 
                cursor:pointer;
                width:100%;
                font-weight:bold;
            ">
            🖥️ 一键开机(网络唤醒)
        </button>
    </form>
</div>
<br>

使用 docker compose 安装rustdesk

mkdir /etc/rustdesk && touch /etc/rustdesk/docker-compose.yml && cd /etc/rustdesk
# docker-compose.yml 内容

networks:
  rustdesk-net:
    external: false

services:
  hbbs:
    container_name: hbbs
    ports:
      - 21115:21115
      - 21118:21118
      - 21116:21116
      - 21116:21116/udp
    image: rustdesk/rustdesk-server
    command: hbbs 
    volumes:
      - /etc/rustdesk:/root
    networks:
      - rustdesk-net
    depends_on:
      - hbbr
    restart: unless-stopped
    deploy:
      resources:
        limits:
          memory: 64M

  hbbr:
    container_name: hbbr
    ports:
      - 21117:21117
      - 21119:21119
    image: rustdesk/rustdesk-server
    command: hbbr
    volumes:
      - /etc/rustdesk:/root
    networks:
      - rustdesk-net
    restart: unless-stopped
    deploy:
      resources:
        limits:
          memory: 64M

启动服务

docker-compose up -d

up:启动服务。
-d:让服务在后台运行(detached mode)。

验证服务运行情况

运行以下命令查看容器是否正常启动:

docker-compose ps

停止并移除服务

如果你不再需要运行这些服务,可以通过以下命令停止并移除容器:

docker-compose down

该命令会停止容器并删除相关的网络和容器,但不会删除数据卷。如果你想删除数据卷并完全清除环境,可以运行:

docker-compose down --volumes

下载客户端

下载rustdesk客户端,在文件名后面接上-host=<ip或者域名>,key=</etc/rustdesk/id_ed25519.pub的内容>
并试着连接即可。

其他注意事项

防火墙需要开放如下端口:

# 需要开放如下端口
# TCP(21115, 21116, 21117, 21118, 21119)
# UDP(21116)

# 对于 Ubuntu/Debian 系统,使用 ufw 命令来管理防火墙。
ufw allow 21115:21119/tcp
ufw allow 21116/udp
ufw enable


# 对于 CentOS/RHEL/Fedora 系统,使用 firewalld 命令
firewall-cmd --permanent --add-port=21115-21119/tcp
firewall-cmd --permanent --add-port=21116/udp
firewall-cmd --reload
# 查看开放端口
firewall-cmd --list-ports


# 对于 Alpine Linux 和其他系统,iptables 通常是默认工具
iptables -A INPUT -p tcp --dport 21115:21119 -j ACCEPT
iptables -A INPUT -p udp --dport 21116 -j ACCEPT
/etc/init.d/iptables save

使用 docker 安装

或者直接使用docker

sudo docker image pull rustdesk/rustdesk-server
sudo docker run --name hbbr -p 21117:21117 -p 21119:21119 -v /etc/rustdesk/:/root -td  --restart=always   rustdesk/rustdesk-server hbbr
sudo docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v /etc/rustdesk/:/root -td  --restart=always  rustdesk/rustdesk-server hbbs 

要编辑 MP3 文件的标签(如标题、艺术家、专辑等),可以使用 Python 中的 mutagen 库。mutagen 是一个处理音频元数据的库,支持 MP3、FLAC、AAC 等多种格式。

安装 mutagen 库

如果你还没有安装这个库,可以通过以下命令来安装:

pip install mutagen

编辑 MP3 标签的示例代码

下面是一个编辑 MP3 标签的 Python 代码示例:

from mutagen.easyid3 import EasyID3
from mutagen.id3 import ID3, TIT2, TPE1, TALB, TDRC

def edit_mp3_tags(file_path, title=None, artist=None, album=None, year=None):
    # 加载MP3文件的ID3标签
    try:
        audio = EasyID3(file_path)
    except mutagen.id3.ID3NoHeaderError:
        # 如果文件没有ID3标签,创建新的标签
        audio = mutagen.File(file_path, easy=True)
        audio.add_tags()
    
    # 编辑标签信息
    if title:
        audio['title'] = title
    if artist:
        audio['artist'] = artist
    if album:
        audio['album'] = album
    if year:
        audio['date'] = year
    
    # 保存标签
    audio.save()

# 调用示例
file_path = 'example.mp3'
edit_mp3_tags(file_path, title="新歌名", artist="新艺术家", album="新专辑", year="2024")

解释:

  • EasyID3 是一个简化的接口,可以直接通过键(如 title、artist 等)访问常见的标签。
  • 如果 MP3 文件没有 ID3 标签,代码会为它创建一个新的标签。
  • 你可以通过 edit_mp3_tags 函数修改 MP3 文件的各种元数据。

你可以根据自己的需求修改这些代码来批量处理文件或设置其他类型的标签。