BASH脚本

分别用于早上和晚上调整CPU频率:

早上(2.16GHz):

#!/bin/sh

# 早上(6:00)设置CPU调度模式为性能模式
echo "performance" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
echo "performance" > /sys/devices/system/cpu/cpufreq/policy1/scaling_governor
echo "2160000" > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed
echo "2160000" > /sys/devices/system/cpu/cpufreq/policy1/scaling_setspeed

# 电池百分比显示
battery_capacity=$(cat /sys/class/power_supply/BAT0/capacity)
echo "早上CPU频率调整完成,电池百分比: $battery_capacity%"

晚上(818494Hz):

#!/bin/sh

# 晚上(23:00)设置CPU调度模式为省电模式
echo "powersave" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
echo "powersave" > /sys/devices/system/cpu/cpufreq/policy1/scaling_governor
echo "818494" > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed
echo "818494" > /sys/devices/system/cpu/cpufreq/policy1/scaling_setspeed

# 电池百分比显示
battery_capacity=$(cat /sys/class/power_supply/BAT0/capacity)
echo "晚上CPU频率调整完成,电池百分比: $battery_capacity%"

添加定时任务

crontab -e
0 6 * * * /path/to/morning_cpu.sh
0 23 * * * /path/to/evening_cpu.sh

这样,早上和晚上的时候,CPU频率将分别调整为2.16GHz和818494Hz。

网络

Bridge 网络

Docker 使用 Bridge 网络时,会创建docker0 网桥,用于连接容器,然后 docker0 通过 NAT 转发访问外部网络,具体细节在这里就不赘述了。
当容器进行映射时,Docker 会自动添加 DNAT 进行转发,实现访问宿主机端口的时候,将流量转发到容器内部。

在普通宿主机中使用 Docker Bridge 网络没有任何问题,但是,如果宿主机是网关,或者 Openwrt 的时候,WAN 口也能轻松访问容器暴露出来的端口,带来很大的安全问题。

WAN 口访问的控制
所以核心问题是阻止 WAN 口访问,此前也有大佬 LEAN 采用阻止 Docker 操作 iptables的方案,这个方法简单粗暴,Docker 就不会添加 DNAT 转发,当然不存在端口暴露问题,但是带来的问题也有不少,有几率存在没有给 docker0 做 SNAT 导致整个 bridge 网络下的容器都无法联网,实现下来还有其他一些奇奇怪怪的问题。

对于这种问题,Docker 官方的这篇文档给出了解决方案
下面就针对 Openwrt 来实现访问控制:

## 新建 DOCKER-MAN 自定义链
iptables -N DOCKER-MAN
# 挟持 DOCKER-USER 转到 DOCKER-MAN 自定义链
iptables -I DOCKER-USER -j DOCKER-MAN

# 若流量来自 br-lan 放行,目的是 `LAN` 口可以访问容暴露的端口
iptables -A DOCKER-MAN -i br-lan -o docker0 -j RETURN
# 阻止所有新建以及无效的连接。
iptables -A DOCKER-MAN -m conntrack --ctstate NEW,INVALID -o docker0 -j DROP
# 接受容器主动访问的流量,目的是容器能够联网。
iptables -A DOCKER-MAN -m conntrack --ctstate ESTABLISHED,RELATED -o docker0 -j RETURN
iptables -A DOCKER-MAN -j RETURN

这样一来,LAN 口是可以访问容器暴露的端口,对与其他接口,容器主动访问不受限制,而外面是无法直接访问容器的,做到了单项访问。

到这里,又有问题来了,如果我有一个容器比如 qBittorrent,暴露的端口就是希望从外部(公司)等管理的,这样一来就无法访问了,当然也有解决方案:

在 DOCKER-MAN 自定义链接加入对 172.17.0.2 (需要放行的容器ip) 的放行

iptables -I DOCKER-MAN -d 172.17.0.2 -o docker0 -j RETURN

这样一来,这个容器就可以被正常访问了

最后一个问题,Bridge 网络下面的 ip 地址不是固定的,每次重启 Docker daemon 都有可能改变容器的 ip
这样手动操作起来就相对比较麻烦了,所以在 luci-app-dockerman中加入了访问控制选项,可以轻松实现对容器的访问控制

Macvlan 网络

Macvlan 网络的真的是好处多多,有兴趣的同学自己翻阅资料查看,使用 macvlan 网络就基本和虚拟机的桥接模式类似,而且不存在 Bridge 网络的端口暴露的风险,在 Openwrt 下使用 macvlan 网络最大的问题就是无法上网的问题。

这里讲一个简单的方案,首先通过 Docker 新建 macvlan 网络

docker network create -d macvlan \
    --subnet=192.168.3.0/24 --gateway=92.168.3.1 \
    -o parent=br-lan \
    -o macvlan_mode=bridge \
    macnet

请注意这里的subnet不要和其他接口冲突(若要使用同网段后面会讲),parent使用br-lan,然后在 Openwrt 上创建 macvlan 设备

ip link add link br-lan docker_mac0 type macvlan mode bridge
ip link set docker_mac0 up
接下来 Openwrt 中添加接口,你也可以在 luci 中添加

uci set network.docker_mac0=interface
uci set network.docker_mac0.ifname=docker_mac0
uci set network.docker_mac0.proto=static
uci set network.docker_mac0.ipaddr=192.168.3.1
uci set network.docker_mac0.netmask=255.255.255.0
uci commit network
将这个接口加入到防火墙中的 LAN zone

uci set firewall.@zone[0].network="br-lan docker_mac0"
uci commit firewall

至此,Docker macvlan 网络就可以正常使用了,这个步骤相对比较简单,但是网络重启或者 Openwrt 重启的时候就会失效,解决这个问题,已经在 luci-app-dockerman 实现,当创建 macvlan 网络时,dockerman 会自动做好这些工作,网络重启也会自动添加,删除网络,则会自动删除创建的 macvlan 网络。

Macvlan 进阶

有些老哥觉得用这个方案 macvlan 网络,使用的是与 LAN 不同的网段,访问容器会存在转发。
解决这个其实很简单,禁用 br-lan 的 DHCP, 同时开启 docker_mac0 的 DHCP 就可以,这样路由器下的所有主机和容器内的所有主机都在同一个网段之下了。
所以,如果你开始就想用这个进阶方案的话,从创建 macvlan 网络的时候就应该规划好自己偏好的网段。

好了,分享就这么多,感谢捧场

出处

Openwrt 下 Docker 网络食用方法

闲来无事 打算亲自给手上的SM-J3109编译一次lineageos

Google如何编译并参考了一下博客之后(参考链接会放在最后)

折腾了三天终于是编译成功了

首先 需要一台装了Ubuntu系统的电脑(虚拟机也可以 但是还是建议电脑)

根据Ubuntu版本安装所需要的包

 For Ubuntu 23.10 (mantic), install libncurses5 from 23.04 (lunar) as follows:
    
    wget http://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.4-2_amd64.deb && sudo dpkg -i libtinfo5_6.4-2_amd64.deb && rm -f libtinfo5_6.4-2_amd64.deb
    wget http://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libncurses5_6.4-2_amd64.deb && sudo dpkg -i libncurses5_6.4-2_amd64.deb && rm -f libncurses5_6.4-2_amd64.deb
    
    While for Ubuntu versions older than 23.10 (mantic), simply install:
    
    lib32ncurses5-dev libncurses5 libncurses5-dev
    
    Additionally, for Ubuntu versions older than 20.04 (focal), install also:
    
    libwxgtk3.0-dev
    
    While for Ubuntu versions older than 16.04 (xenial), install:
    
    libwxgtk2.8-dev

我的Ubuntu版本是22.04 所以运行

    sudo apt update &&
    sudo apt install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev  python-is-python3
    #下面根据Ubuntu版本安装所需的包
    sudo apt isntall lib32ncurses5-dev libncurses5 libncurses5-dev

接下来创建编译目录并下载所需要的repo工具添加到环境变量中

    mkdir -p ~/bin
    mkdir -p ~/android/lineage
    #可以直连Google的直接执行就好
    curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    chmod a+x ~/bin/repo
    #如果是在网络环境不好就从清华源下载repo镜像
    curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
    chmod a+x ~/bin/repo

添加~/bin目录到环境变量(Ubuntu22.04中已经自动添加了,这里是做演示)

    sudo vim ~/.profile
    #复制下面的代码 粘贴 保存并退出
    # set PATH so it includes user's private bin if it exists
    if [ -d "$HOME/bin" ] ; then
        PATH="$HOME/bin:$PATH"
    fi
    #然后执行
    soucre ~/.profile

接下来配置git

    git config --global user.email "[email protected]"
    git config --global user.name "Your Name"

由于其大小,一些存储库配置为lfs或Large File Storage。为了确保您的发行版为此做好准备,请运行:

    git lfs install

开启编译缓存(加快反复编译的速度)

    vim ~/.bashrc
    #复制下面的代码
    export USE_CCACHE=1
    export CCACHE_EXEC=/usr/bin/ccache
    #保存后ccache设定最大缓存容量
    ccache -M 50G

初始化LineageOS源代码存储库

    cd ~/android/lineage
    repo init -u https://github.com/LineageOS/android.git -b lineage-17.1 --git-lfs
    #同样的网络环境不好可以使用清华源镜像
    repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git -b lineage-17.1 --git-lfs

开始下载源代码

    #有代理的话直接拉取即可(否则先配置清华源镜像)
    repo sync
    #配置清华源镜像
    mkdir ~/android/lineage/.repo/manifests/ 
    vim   ~/android/lineage/.repo/manifests/default.xml
    将
    
      <remote  name="github"
               fetch=".."
               review="review.lineageos.org" />
    
    改成
    
      <remote  name="github"
               fetch="https://github.com/" />
    
      <remote  name="lineage"
               fetch="https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/"
               review="review.lineageos.org" />
    将
    
      <remote  name="aosp"
               fetch="https://android.googlesource.com"
    改成
    
      <remote  name="aosp"
               fetch="https://mirrors.tuna.tsinghua.edu.cn/git/AOSP"
    将
    
      <default revision="..."
               remote="github"
    改成
    
      <default revision="..."
               remote="lineage"

配置好镜像仓库后拉取源代码

repo sync

J3LTECEC尚未进入LineageOS官方储存库,状态是unofficial,这里需要手动修改要下载的储存库。!(必须有代理才可以哦,不然会出现拉取失败的情况)

    mkdir -p ~/android/lineage/.repo/local_manifests/
    vim ~/android/lineage/.repo/local_manifests/roomservice.xml
    #复制粘贴下面的内容 
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
      <project path="vendor/samsung"                 remote="github" name="Galaxy-MSM8916/proprietary_vendor_samsung"                revision="lineage-17.1" />
      <project path="device/samsung/j3-common"       remote="github" name="Galaxy-MSM8916/android_device_samsung_j3-common"          revision="lineage-17.1" />
      <project path="device/samsung/j3ltectc"        remote="github" name="Galaxy-MSM8916/android_device_samsung_j3ltectc"           revision="lineage-17.1" />
      <project path="device/samsung/msm8916-common"  remote="github" name="Galaxy-MSM8916/android_device_samsung_msm8916-common"     revision="lineage-17.1" />
      <project path="device/samsung/qcom-common"     remote="github" name="LineageOS/android_device_samsung_qcom-common"             revision="lineage-17.1" />
      <project path="hardware/samsung"               remote="github" name="LineageOS/android_hardware_samsung"                       revision="lineage-17.1" />
      <project path="kernel/samsung/msm8916"         remote="github" name="Galaxy-MSM8916/android_kernel_samsung_msm8916"            revision="lineage-17.1" />      
</manifest>

因为这并非lineageOS官方库,所以没有网络代理的话

只能手动git拉取项目文件了(这里使用的是我搭建的github镜像站)

    #拉取私有驱动
    cd ~/android/lineage/vendor/samsung
    git clone -b lineage-17.1 https://git.gtian.cf/Galaxy-MSM8916/proprietary_vendor_samsung.git
    mv proprietary_vendor_samsung/j3-common . 
    mv proprietary_vendor_samsung/j3ltectc . 
    mv proprietary_vendor_samsung/msm8916-common .
    rm -rf proprietary_vendor_samsung
    
    #拉取android_device_samsung_qcom-common
    cd ~/android/lineage/device/samsung/qcom-common
    git clone -b lineage-17.1 https://git.gtian.cf/LineageOS/android_device_samsung_qcom-common.git
    mv android_device_samsung_qcom-common/* .
    rm -rf android_device_samsung_qcom-common
    
    #拉取android_device_samsung_msm8916-common
    cd ~/android/lineage/device/samsung/msm8916-common
    git clone -b lineage-17.1 https://git.gtian.cf/Galaxy-MSM8916/android_device_samsung_msm8916-common.git
    mv android_device_samsung_msm8916-common/* .
    rm -rf android_device_samsung_msm8916-common
    
    #拉取android_device_samsung_j3-common
    cd ~/android/lineage/device/samsung/j3-common
    git clone -b lineage-17.1 https://git.gtian.cf/Galaxy-MSM8916/android_device_samsung_j3-common.git
    mv android_device_samsung_j3-common/* .
    rm -rf android_device_samsung_j3-common
    
    #拉取android_device_samsung_j3ltectc
    cd ~/android/lineage/device/samsung/j3ltectc
    git clone -b lineage-17.1 https://git.gtian.cf/Galaxy-MSM8916/android_device_samsung_j3ltectc.git
    mv android_device_samsung_j3-common/* .
    rm -rf android_device_samsung_j3-common
    
    #拉取android_hardware_samsung
    cd ~/android/lineage/hardware_samsung
    git clone -b lineage-17.1 https://git.gtian.cf/LineageOS/android_hardware_samsung.git
    mv android_hardware_samsung/* .
    rm -rf android_hardware_samsung
    
    #拉取android_kernel_samsung_msm8916
    cd ~/android/lineage/device/kernel/samsung/msm8916
    git clone -b lineage-17.1 https://git.gtian.cf/Galaxy-MSM8916/android_kernel_samsung_msm8916.git
    mv android_kernel_samsung_msm8916/* .
    rm -rf android_kernel_samsung_msm8916

开始编译ROM以及核心

    source build/envsetup.sh
    breakfast j3ltectc
    croot
    brunch j3ltectc

编译成功之后 打包好的ROM和boot.img在~/android/lineage/out/target/product

参考链接:

https://ivonblog.com/posts/build-lineageos-20-sony-xperia-5-ii/

https://wiki.lineageos.org/devices/s3ve3gds/build

FSCARMEN:

wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh && bash menu.sh
  • 日常维护 warp

P3TERX:

wget -O /usr/bin/warp https://raw.githubusercontent.com/P3TERX/warp.sh/main/warp.sh &&chmod +x /usr/bin/warp && warp menu
  • 日常维护 bash warp.sh

WARP-GO:

wget -N https://raw.githubusercontent.com/fscarmen/warp/main/warp-go.sh && bash warp-go.sh
  • 日常维护 warp-go

MISAKA:

wget -N https://gitlab.com/Misaka-blog/warp-script/-/raw/main/warp.sh && bash warp.sh
  • 日常维护 bash warp.sh

YGKKK

wget -N --no-check-certificate https://gitlab.com/rwkgyg/CFwarp/raw/main/CFwarp.sh && bash CFwarp.sh  
  • 日常维护 cf

修改X-UI配置文件 添加WARP出口 解锁CHATGPT与流媒体


    {
    "api": {
        "services": [
          "HandlerService",
          "LoggerService",
          "StatsService"
        ],
        "tag": "api"
      },
      "inbounds": [
        {
          "listen": "127.0.0.1",
          "port": 62789,
          "protocol": "dokodemo-door",
          "settings": {
            "address": "127.0.0.1"
          },
          "tag": "api"
        }
      ],  
     "policy": {
        "system": {
          "statsInboundDownlink": true,
          "statsInboundUplink": true
        },
         "levels": {
          "0": {
            "handshake": 2,
            "connIdle": 120,
            "uplinkOnly": 1,
            "downlinkOnly": 1
          }
        }
      },
    "outbounds": [
    {
    "protocol": "blackhole",
    "tag": "blocked"
    },
    {
    "protocol": "freedom",
    "tag": "direct"
    },
    {
    "tag": "ip4", 
    "protocol": "freedom",
    "settings": {
    "domainStrategy": "UseIPv4"
    }
    },
    {
    "tag": "ip6",
    "protocol": "freedom",
    "settings": {
    "domainStrategy": "UseIPv6" 
    }
    },
    {
    "tag": "socks5-warp",
    "protocol": "socks",
    "settings": {
    "servers": [
    {
    "address": "127.0.0.1",
    "port": 40000 
    }
    ]
    }      
    },
    {
    "tag":"xray-wg-warp",
    "protocol":"wireguard",
    "settings":{
    "secretKey":"aJkrp4MMgL/Oi2bO4Fww9J8aqAW1ojeOZ22RK0nXYWY=",
    "address":[
    "172.16.0.2/32",
    "2606:4700:110:891c:6ee2:7df4:5e99:b7cf/128"
    ],
    "peers":[
    {
    "publicKey":"bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=",
    "allowedIPs": [
    "0.0.0.0/0",
    "::/0"
    ],
    "endpoint":"engage.cloudflareclient.com:2408"
    }
    ],
    "reserved":[230,25,169]
    }
    }
    ],
    "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
    {
            "inboundTag": [
              "api"
            ],
            "outboundTag": "api",
            "type": "field"
          },
        {
              "type": "field",
              "port": "443",
              "network": "udp",
              "outboundTag": "blocked"
                },
           {
            "type": "field",
            "domain": [
              "www.gstatic.com"
            ],
            "outboundTag": "direct"
          },
          {
            "ip": [
              "geoip:cn",
              "geoip:private"
            ],
            "outboundTag": "blocked",
            "type": "field"
          },
          {
            "outboundTag": "blocked",
            "protocol": [
              "bittorrent"
            ],
            "type": "field"
          },
    {
    "type":"field",
    "outboundTag":"xray-wg-warp",
    "domain":[
    "openai.com","ip.sb"
    ]
    },
    {
    "type": "field",
    "outboundTag": "socks5-warp", 
    "domain": [
    "yg kkk"
    ]
    },
    {
    "type": "field",
    "outboundTag": "ip6",
    "domain": [
    "yg kkk"
    ]
    },
    {
    "type": "field",
    "outboundTag": "ip4",
    "domain": [
    "yg kkk"
    ]
    },
    {
    "type": "field",
    "outboundTag": "direct",
    "network": "udp,tcp"
    }
    ]
    },
    "stats": {}
    }

X-UI

bash <(curl -Ls https://raw.githubusercontent.com/FranzKafkaYu/x-ui/master/install.sh)

X-UI for ygkkk

wget -N https://gitlab.com/rwkgyg/x-ui-yg/raw/main/install.sh && bash install.sh

v2ray for 233boy

bash <(curl -s -L https://git.io/v2ray.sh)  

备用bash <(curl -sL https://233v2.com/v2.sh)

配置环境

系统环境: Ubuntu-22.04-amd64
用户: root

(可选)国内主机换清华源

    sudo sed -i "s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
    
    sudo sed -i "s@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list

修复libssl.so.1.1: cannot open shared object file

由于Ubuntu 22.04 默认使用openssl3.0.* ,但大多为Ubuntu生成的可执行文件依赖openssl 1.1

    wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz &&  tar xvf openssl-1.1.1q.tar.gz && cd openssl-1.1.1q && apt install -y perl gcc make && ./config && make &&  make install  && echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/local/lib" >> /etc/profile  && source /etc/profile

更新并获取所需软件包

 apt-get update && apt-get upgrade -y  &&  apt install python3-dev  python3-pip ffmpeg nodejs  -y && pip3 install biliup quickjs certifi
    
    mkdir /root/biliup && cd /root/biliup 
    
    wget -O biliupR.tar.xz https://github.com/biliup/biliup-rs/releases/download/$(curl -Ls "https://api.github.com/repos/biliup/biliup-rs/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')/biliupR-$(curl -Ls "https://api.github.com/repos/biliup/biliup-rs/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')-x86_64-linux.tar.xz && tar -xvf biliupR.tar.xz && mv -fb ./biliupR*/* ./  && rm -rf ./biliupR*

    vim config.toml   #粘贴下面配置文件 自行修改
# 选择全局默认上传插件,Noop为不上传,但会执行后处理,可选bili_web,biliup-rs
    #uploader = "Noop"
    # 选择全局默认的下载插件,默认为stream-gears。可选ffmpeg与stream-gears。
    #downloader= "ffmpeg"
    # b站上传线路选择,默认为自动模式,目前可手动切换为bda2, kodo, ws, qn, cos, cos-internal(支持腾讯云内网免流+提速)
    lines = "AUTO"
    # 单文件并发上传数,未达到带宽上限时增大此值可提高上传速度
    threads = 3
    # 录像单文件大小限制,单位Byte,超过此大小分段下载
    file_size = 2621440000
    # 录像单文件时间限制,格式'00:00:00'(时分秒),超过此大小分段下载,如需使用大小分段请注释此字段
    #segment_time = '00:50:00'
    filtering_threshold = 20 # 小于此大小的视频文件将会被过滤删除,单位MB
    # 如遇到斗鱼录制卡顿可以尝试切换线路,tct-h5(备用线路5),ali-h5(备用线路6),akm-h5(主线路1)
    #douyucdn = "tct-h5"
    # 如遇到虎牙录制卡顿可以尝试切换线路,AL, HW, TX, WS
    #huyacdn = "AL"
    # 自定义录播文件名模板, 支持变量 {streamer}:你在配置里设置的直播间名 %Y-%m-%d %H_%M_%S:创建文件的时间, {room_title}:当场直播间标题
    # 如果上传文件,文件名必须包含设定的模板名。其次,如果没有定义时间,文件分片可能会互相覆盖,所以推荐设置时间来避免分段文件名重复。
    #filename_prefix = '{streamer}%Y-%m-%d %H_%M_%S{room_title}'
    # 哔哩哔哩直播流协议.可选 stream(Flv)、hls
    #bili_protocol = "stream"
    # 哔哩哔哩直播优选CDN
    #bili_perfCDN = "cn-gotcha01"
    # 哔哩哔哩直播强制原画(仅限HLS流的 cn-gotcha01 CDN)
    #bili_forceScoure = false
    # 自定义哔哩哔哩直播api
    #bili_liveapi = "https://api.live.bilibili.com"
    # CDN自动Fallback开关,默认为开启
    #bili_cdn_fallback = true
    # 检测到主播下播后延迟再次检测,单位:秒,避免特殊情况提早启动上传导致漏录
    delay = 10
    # 检测间隔时间,单位:秒
    event_loop_interval = 40
    # 相同平台检测间隔,单位:秒。不同平台的链接是并发的,不受此参数影响
    checker_sleep = 15
    # 线程池1大小,负责download事件
    pool1_size = 3
    # 线程池2大小,处理除download事件外所有其他事件
    pool2_size = 3
    # 检测源码文件变化间隔,单位:秒,检测源码到变化后,程序会在空闲时自动重启
    check_sourcecode = 15
    #------YouTube------#
    ### 设置偏好的YouTube下载封装格式
    ### 请务必记得安装ffmpeg
    ### 支持同时添加多个编码,自动优选指定编码格式里最好的画质/音质版本。
    ### 视频:其中avc编码最高可以下载到1080p的内容,vp9最高可以下载到4k以及很少部分8k内容,av01画质不是所有视频都有,但是大部分8k视频的8k画质只有av01编码。
    ### 音频:其中opus编码最高48KHz采样,mp4a(AAC)最高44.1KHz采样,理论上来说opus音质会更好一些。
    ### 如需指定封装格式,请按以下推荐设置。mp4:avc+mp4a;av01+mp4a. mkv:vp9+mp4a,avc+opus. webm:av01+opus;vp9+opus.
    #youtube_prefer_vcodec = "av01|vp9|avc" ### 可用av01,vp9,avc
    #youtube_prefer_acodec = "opus|mp4a" ### 可用opus,mp4a
    ### 设置偏好的YouTube下载最高纵向分辨率
    ### 最高纵向分辨率,也就是xxxxP.如果youtube_prefer_format指定为mp4,将最高只能下载1080p的视频。
    #youtube_max_resolution = "440" 
    ### 限制单个视频的最大大小。
    ### 注意:此参数优先级高于分辨率设置,并且不包括音频部分的大小,仅仅只是视频部分的大小。
    ### 如果某个视频实在没有低于此大小的分辨率版本,将会选择最低画质的版本下载。
    #youtube_max_videosize = "5G"  ###参考格式,例如100M,5G,10G。
    
    [user]
    # 如需要录制抖音请在此填入cookie需要__ac_nonce与__ac_signature的值
    douyin_cookie = '__ac_nonce=123456; __ac_signature=123456;'
    # 如录制Twitch时遇见视频流中广告过多的情况,可尝试在此填入cookie,可以大幅减少视频流中的twitch广告(经测试需要在该Cookie所属账号开了TwitchTurbo会员才有用),该cookie有过期风险,cookie过期后会导致无法获取到直播流
    # twitch_cookie获取方式:在浏览器中打开Twitch.tv,F12调出控制台,在控制台中执行:document.cookie.split("; ").find(item=>item.startsWith("auth-token="))?.split("=")[1]
    # twitch_cookie需要在downloader= "ffmpeg"时候才会生效
    #twitch_cookie = 'asdiouo2h987r23hf2893fh923y7'
    # Netscape 格式的 Cookies 文本路径
    #youtube_cookie = 'cookiejar.txt'
    
    # 最小配置示例
    [streamers."星际2Stats拔本神族天梯第一视角"]
    url = ["https://www.twitch.tv/kimdaeyeob3"]
    
    # 完整可选配置示例
    [streamers."星际2INnoVation吕布卫星人族天梯第一视角"]
    url = [
      "https://www.twitch.tv/innovation_s2",
      "https://www.panda.tv/1160340"
    ]
    title = "{title}第一视角%Y-%m-%d{streamers}" # 自定义标题的时间格式, {title}代表当场直播间标题 {streamers}代表在本config里面设置的主播名称
    tid = 171 # 投稿分区码,171为电子竞技分区
    copyright = 2 # 1为自制
    # cover_path = "/cover/up.jpg"
    # 支持strftime, {title},{streamers}占位符。
    description = """
    视频简介: {title} %Y-%m-%d %H:%M:%S{streamers}
    ---
    Powered By biliup - Github: https://github.com/ForgQi/biliup"""
    dynamic = "#空间动态#"
    # dtime = 14_400 # 设置延时发布时间,距离提交大于2小时,格式为时间戳
    uploader = "biliup-rs"  # 覆盖全局默认上传插件,Noop为不上传,但会执行后处理
    #filename_prefix = '{streamer}%Y-%m-%d %H_%M_%S{room_title}'  # 覆盖全局自定义录播文件命名规则
    user_cookie = "cookies.json" # 使用指定的账号上传
    tags = [ "biliup", "视频标签" ]
    # 上传完成后,将按自定义顺序执行自定义操作
    #postprocessor = [
    #    {run = "echo hello!"}, # 执行任意命令,等同于在shell中运行,视频文件路径作为标准输入传入
    #    {mv = "backup/"}, # 移动文件到backup目录下
    #    {run = "python3 path/to/mail.py"}, # 执行一个 Python 脚本,可以用来发送邮件等。自动发信通知脚本示例 https://biliup.github.io/biliup/Guide.html#%E4%B8%8A%E4%BC%A0%E5%AE%8C%E6%88%90%E5%90%8E%E5%8F%91%E9%80%81%E9%82%AE%E4%BB%B6%E9%80%9A%E7%9F%A5
    #    {run = "sh ./run.sh"} # 执行一个shell脚本,用途多样,主要调用系统内的cli工具。自动上传网盘脚本示例 https://gist.github.com/UVJkiNTQ/ae4282e8f9fe4e45b3144b57605b4178
    ##    'rm',  # 删除文件,为默认操作
    #]
    
    # 日志输出配置
    [LOGGING.formatters.verbose]
    format = "%(asctime)s %(filename)s[line:%(lineno)d](Pid:%(process)d Tname:%(threadName)s) %(levelname)s %(message)s"
    datefmt = "%Y-%m-%d %H:%M:%S"
    
    [LOGGING.formatters.simple]
    format = "%(filename)s%(lineno)d[%(levelname)s]Tname:%(threadName)s %(message)s"
    
    [LOGGING.handlers.console]
    level = "DEBUG"
    class = "logging.StreamHandler"
    formatter = "simple"
    stream = "ext://sys.stdout"
    
    [LOGGING.handlers.file]
    level = "DEBUG"
    class = "biliup.common.log.SafeRotatingFileHandler"
    when = "W0"
    interval = 1
    backupCount = 1
    filename = "ds_update.log"
    formatter = "verbose"
    
    [LOGGING.root]
    handlers = [ "console" ]
    level = "INFO"
    
    [LOGGING.loggers.biliup]
    handlers = [ "file" ]
    level = "INFO"

biliup开启边录边传

echo n | pip3 uninstall biliup #查找biliup所在位置
    
    cd path to biliup
    
    vim handler.py
    输入 / def modify(self, url): 回车 定位到modify模块
    将  if self.url_status[url] == 2:
          return logger.debug('正在上传稍后下载')
          注释(在句首加#)

使用biliup-rs配置cookies.json 并启动biliup

    ./biliup login                                                      #选择扫码登录
    biliup start

一些命令

    ps -A | grep biliup                                           #查看进程是否启动成功
    
    biliup start                                                        #启动
    
    biliup stop                                                       #退出
    
    biliup restart                                                      #重启
    
    biliup --version                                                #查看版本
    
    biliup -h                                                             #显示帮助以查看更多选项
    
    biliup --http start                                                 #启动 web ui, 默认 0.0.0.0:19159。 可使用-H及-P选项配置。考虑到安全性,建议指定本地地址配合web server或者添加验证。
    
    biliup --config ./config.yaml start                      #指定配置文件路径
    
    pip3 install --upgrade biliup                            #升级biliup
    
    #biliup-rs:
    biliup help upload
    USAGE:
        biliup.exe upload [OPTIONS] [VIDEO_PATH]...
    
    ARGS:
        <VIDEO_PATH>...                                       需要上传的视频路径,若指定配置文件投稿不需要此参数
    
    OPTIONS:
        -c, --config <FILE>                                     Sets a custom config file
            --copyright <COPYRIGHT>                 是否转载 1 原创 2 转载 [default: 1]
            --cover <COVER>                                视频封面 
            --desc <DESC>                                       视频简介
            --dtime <DTIME>                                   延时发布时间,距离提交大于4小时,格式为10位时间戳
            --dynamic <DYNAMIC>                         空间动态 
        -h, --help                                                    Print help information
        -l, --line <LINE>                                        上传线路,支持kodo, bda2, qn, ws
            --limit <LIMIT>                                      单视频文件最大并发数 [default: 3]
            --source <SOURCE>                              是转载来源 
            --tag <TAG>                                          视频标签
            --tid <TID>                                          投稿分区 [default: 171]
            --title <TITLE>                                       视频标题