分类 其他 下的文章

自动删除B站直播的马赛克脚本

[scode type="green" size=""]需要自行安装浏览器油猴插件[/scode]

// ==UserScript==
// @name            Bilibili Live No Mosaic
// @description     删除直播间中的马赛克
// @version      2024-07-31
// @author       TongHui
// @match           *://*.bilibili.com/*
// @exclude         *://api.bilibili.com/*
// @exclude         *://api.*.bilibili.com/*
// @exclude         *://*.bilibili.com/api/*
// @exclude         *://member.bilibili.com/studio/bs-editor/*
// @exclude         *://t.bilibili.com/h5/dynamic/specification
// @exclude         *://bbq.bilibili.com/*
// @exclude         *://message.bilibili.com/pages/nav/header_sync
// @exclude         *://s1.hdslb.com/bfs/seed/jinkela/short/cols/iframe.html
// @exclude         *://open-live.bilibili.com/*
// @icon            https://cdn.jsdelivr.net/gh/the1812/Bilibili-Evolved@preview/images/logo-small.png
// @icon64          https://cdn.jsdelivr.net/gh/the1812/Bilibili-Evolved@preview/images/logo.png
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
     var timer=setInterval(()=>{
         var elementId = 'web-player-module-area-mask-panel';
         var element = document.getElementById(elementId);
         if (element) {
             element.parentNode.removeChild(element);
             clearInterval(timer);
             console.log('成功删除水印');
         }
     },1000)
})();

新建一个文件 test.sh,扩展名为 sh

#!/bin/bash
# 打印Hello World !
echo "Hello World !"

执行脚本

sh test.sh

变量声明

# 声明变量
your_name="Hello World"
# 使用变量 
$your_name

变量声明规范

  • 只包含字母、数字和下划线: 变量名可以包含字母(大小写敏感)、数字和下划线 \_,不能包含其他特殊字符。
  • 不能以数字开头: 变量名不能以数字开头,但可以包含数字。
  • 避免使用 Shell 关键字: 不要使用Shell的关键字(例如 if、then、else、fi、for、while 等)作为变量名,以免引起混淆。
  • 使用大写字母表示常量: 习惯上,常量的变量名通常使用大写字母,例如 PI=3.14
  • 避免使用特殊符号: 尽量避免在变量名中使用特殊符号,因为它们可能与 Shell 的语法产生冲突。
  • 避免使用空格: 变量名中不应该包含空格,因为空格通常用于分隔命令和参数。

传递参数

执行脚本的时候进行传参,脚本内获取参数的格式为 $n,n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数。**\$0** 为执行的文件名(包含文件路径)

数组声明

数组元素的下标由 0 开始 元素用"空格"符号分割开
my_array=(A B "C" D)
打印数组
echo "第一个元素为: ${my_array[0]}"
echo "第二个元素为: ${my_array[1]}"
echo "第三个元素为: ${my_array[2]}"
echo "第四个元素为: ${my_array[3]}"
# 打印内容
第一个元素为: A
第二个元素为: B
第三个元素为: C
第四个元素为: D
使用 @* 可以获取数组中的所有元素
my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D

echo "数组的元素为: ${my_array[*]}"
echo "数组的元素为: ${my_array[@]}"

windows执行脚本
@echo off
:start
setlocal

:: 设置API端点
set API_ENDPOINT=http://localhost:3000/demo
:: 设置轮询间隔(秒)
set INTERVAL=1

:loop
:: 发送GET请求并将响应保存到变量中
for /f %%i in ('curl -s %API_ENDPOINT%') do set response=%%i

:: 检查响应是否为true
if "%response%"=="true" (
    echo API返回了true,准备执行操作...
    rem 在这里执行您想要执行的操作
    goto endloop
) else (
    echo API没有返回true,等待 %INTERVAL% 秒后继续轮询。
    timeout /t %INTERVAL% >nul
    goto loop
)

:endloop
echo 循环结束,继续执行其他操作...
rem 在这里执行轮询之后要执行的其他操作

endlocal
timeout /t 5 >nul
goto start
liunx执行脚本
#!/bin/bash

# 无限循环
while true; do
    # 设置API端点
    API_ENDPOINT="http://localhost:3000/demo"
    # 设置轮询间隔(秒)
    INTERVAL=1

    # 发送GET请求并将响应保存到变量中
    response=$(curl -s $API_ENDPOINT)

    # 检查响应是否为true
    if [ "$response" = "true" ]; then
        echo "API返回了true,准备执行操作..."
        # 在这里执行您想要执行的操作
        echo "循环结束,继续执行其他操作..."
        # 在这里执行轮询之后要执行的其他操作

        sleep 5  # 等待5秒
        echo "重新执行"
        continue
    else
        echo "API没有返回true,等待 $INTERVAL 秒后继续轮询。"
        sleep $INTERVAL
    fi
done

在浏览器的快捷方式->属性->目标(内容后面追加注意有空格)

[scode type="red" size=""]谷歌浏览器数据不共享[/scode]

现在C盘创建ChromeDev文件夹 也就是后面 C:\ChromeDev 可以自定义
--disable-web-security --disable-features=SameSiteByDefaultCookies --user-data-dir=C:\ChromeDev

<!DOCTYPE html>
<html>
<head>
  <title>Div to Image with Width</title>
  <script src="https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script>
</head>
<body>
  <div id="content" style="width: 300px; border: 1px solid #000;">
    <h1>Hello, Div to Image!</h1>
    <p>This is a simple example.</p>
  </div>

  <button id="convertButton">Convert to Image</button>

  <script>
    const convertButton = document.getElementById('convertButton');
    const contentDiv = document.getElementById('content');

    convertButton.addEventListener('click', async () => {
      const contentWidth = contentDiv.offsetWidth; // Get the width of the content div

      const canvas = await html2canvas(contentDiv, {
        width: contentWidth, // Set the canvas width to match the content div's width
      });

      // Convert canvas to image
      const image = canvas.toDataURL('image/png');

      const a = document.createElement('a');
      a.href = image;
      a.download = 'content.png';
      a.click();
    });
  </script>
</body>
</html>

commit

用于说明 commit 的类别,常见类别如下:
  • feat:新增功能(feature)
  • fix:修复补丁(bug)
  • docs:修订文档,如 Readme, Change Log, Contribute 等
  • refactor:代码重构,未新增任何功能和修复任何 bug
  • style: 仅调整空格、格式缩进等(不改变代码逻辑的变动)
  • perf:优化相关,改善性能和体验的修改
  • test:测试用例的增加/修改
  • chore:非 src 和 test 的修改
  • merge:合并分支或冲突等
  • revert: 回滚到上一个版本
  • build:改变构建流程,新增依赖库、工具等(例如 webpack、maven 修改)
  • ci:自动化流程配置修改