清朝云资源网

作者: 清朝云

  • Core-ai-power:WordPress文章AI摘要插件

    前言

    之前介绍过用tianliAPI添加文章AI摘要,那个要花钱今天分享给大家一个免费的。

    介绍

    Core AI Power是由lovestu开发的一款WordPress AI增强插件。旨在为WordPress提供一些AI功能。

    目前提供的主要功能是,AI内容摘要。

    目前接入的API是免费的文心一言,所有WordPress网站,都可以快速接入。

    对比tianliAPI的好处是可以指定给某个文章使用AI摘要并且使用文心一言的免费API。

    截图

    2f63dcec624b2c2d1f5ddf730ae7a8ef.webp

    下载地址

    lz.svg
    来源:蓝奏云

  • 利用redis降低数据库查询次数

    前言

    因为之前安装了WPOPT,里面有个功能就是能够在控制台查看MYSQL查询次数以及页面创建的时间,之前一直都是高达四十几次的查询次数。

    所以就决定安装redis将数据库查询次数降低下来。

    重要提醒

    如果服务器内有两个WordPress程序,请先将其中一个WordPress程序的数据库表开头从wp_改为其他的,否则会出现相互干扰的情况。

    教程

    本教材基于宝塔面板教学,特别方便。

    1.首先到宝塔面板的软件商店找到redis 并且安装。

    9fa2c3d321562efb3498db592e424e83.webp

    2.找到PHP版本,并且安装redis 扩展。

    3d04672dd2f785f1aa2f76646dca37ff.webp

    3.WordPress后台搜索并安装Redis Object Cache 。

    3adbf97922206267ace6df7181d7f09e.webp

    4.设置插件启用对象存储,如出现下图则表示启用成功。

    c95c182f16ba5610b62096a435825e33.webp

    5.最后看一下MYSQL的查询次数。

    cc3b14c90753f9b1d10563994d6fe833.webp

    只有2次查询次数,刷新了几次最多也就是15左右,大部分都是个位数,效果相当给力。

  • WordPress添加彩色文本渐变框

    前言

    CoreNext主题自带的编辑器增强内有标星面板,但是颜色有点少,所以找了个教程给WordPress添加彩色文本渐变框。

    教程

    1.首先将如下代码添加到CoreNext子主题的function.php 中,如果其他主题也有子主题一样操作。

     add_action('after_wp_tiny_mce', 'bolo_after_wp_tiny_mce');
     function bolo_after_wp_tiny_mce($mce_settings) {
     ?>
     <script type="text/javascript"> 
     QTags.addButton( 'z_mhz', '迷幻紫', '<div id="zm_mhz">迷幻紫</div>\n', "" );
     QTags.addButton( 'z_xgh', '西瓜红', '<div id="zm_xgh">西瓜红</div>\n', "" );
     QTags.addButton( 'z_tkzj', '天空之境', '<div id="zm_tkzj">天空之境</div>\n', "" );
     QTags.addButton( 'z_xyz', '小宇宙', '<div id="zm_xyz">小宇宙</div>\n', "" );
     QTags.addButton( 'z_gll', '橄榄绿', '<div id="zm_gll">橄榄绿</div>\n', "" );
     QTags.addButton( 'z_xty', '小太阳', '<div id="zm_xty">小太阳</div>\n', "" );
     QTags.addButton( 'z_yyz', '优雅紫', '<div id="zm_yyz">优雅紫</div>\n', "" );
     QTags.addButton( 'z_szh', '深邃黑', '<div id="zm_szh">深邃黑</div>\n', "" );
     QTags.addButton( 'z_wbk', '无边框', '<div id="zm_wbk">无边框</div>\n', "" ); 
     function bolo_QTnextpage_arg1() {
     }
     </script>
     <?php
     }

    2.将如下CSS代码添加到CoreNext子主题的CSS文件夹中的main.css中

    /*渐变框区块*/
    #zm_mhz,#zm_xgh,#zm_tkzj,#zm_xyz,#zm_gll ,#zm_xty,#zm_yyz,#zm_szh,#zm_wbk{
      /*圆角值,在此定义*/
      border-radius: 8px;
    }
    /*迷幻紫*/
    #zm_mhz{
        color: #555555;
        overflow: hidden;
        margin: 10px 0;
        padding: 15px 15px 15px 35px;
        /*border-radius: 10px;*/
        box-shadow: 6px 0 12px -5px rgb(190, 196, 252), -6px 0 12px -5px rgb(189, 196, 252);
        background-color: #8EC5FC;
        background-image: linear-gradient(62deg,#8EC5FC 0%,#E0C3FC 100%);
        background-image: -webkit-linear-gradient(62deg,#8EC5FC 0%,#E0C3FC 100%);
    }
    /*西瓜红*/
    #zm_xgh{
          color: #555555;
        overflow: hidden;
        margin: 10px 0;
        padding: 15px 15px 15px 35px;
        /*border-radius: 10px;*/
        box-shadow: 6px 0 12px -5px rgb(255, 176, 172), -6px 0 12px -5px rgb(255, 161, 174);
        background-color: #ff9a8b66;
        background-image: linear-gradient(220deg,#FF9A8B 0%,#ff6a8838 55%,#FF99AC 100%);
        background-image: -webkit-linear-gradient(220deg,#ff9a8b7a 0%,#ff6a88ab 55%,#ff99ac82 100%);
    }
    /*华为P30 天空之境*/
    #zm_tkzj {
        color: #555555;
        overflow: hidden;
        margin: 10px 0;
        padding: 15px 15px 15px 35px;
        /*border-radius: 10px;*/
        box-shadow: 6px 0 12px -5px rgb(253, 223, 234), -6px 0 12px -5px rgb(215, 240, 243);
        background-color: #FFDEE9;
        background-image: linear-gradient(0deg,#ffdee9c4 0%,#b5fffc8f 100%);
        background-image: -webkit-linear-gradient(0deg,#ffdee9c4 0%,#b5fffc8f 100%);
    }
    /*小宇宙*/
    #zm_xyz {
        color: #eeeeee;
        overflow: hidden;
        margin: 10px 0;
        padding: 15px 15px 15px 35px;
        /*border-radius: 10px;*/
        box-shadow: 6px 0 12px -5px rgb(12, 85, 141), -6px 0 12px -5px rgba(10, 58, 93, 0);
        background-image: radial-gradient( circle 263px at 100.2% 3%, rgba(12,85,141,1) 31.1%, rgba(205,181,93,1) 36.4%, rgba(244,102,90,1) 50.9%, rgba(199,206,187,1) 60.7%, rgba(249,140,69,1) 72.5%, rgba(12,73,116,1) 72.6% );
    }
    /*橄榄绿*/
    #zm_gll {
        color: #eeeeee;
        overflow: hidden;
        margin: 10px 0;
        padding: 15px 15px 15px 35px;
        /*border-radius: 10px;*/
        box-shadow: 6px 0 12px -5px rgb(68, 110, 92), -6px 0 12px -5px rgb(204, 212, 163);
        background-image: linear-gradient( 102deg, rgba(68,110,92,1) 17.4%, rgba(107,156,120,1) 49.3%, rgba(154,183,130,1) 83.4%, rgba(247,237,191,1) 110.3% );
    }
    /*小太阳*/
    #zm_xty {
        color: #ffffff;
        overflow: hidden;
        margin: 10px 0;
        padding: 15px 15px 15px 35px;
         /*border-radius: 10px; */
        box-shadow: 6px 0 12px -5px rgb(253, 223, 234), -6px 0 12px -5px rgb(215, 240, 243);
        background-image: radial-gradient( circle farthest-corner at -8.9% 51.2%, rgba(255,124,0,1) 0%, rgba(255,124,0,1) 15.9%, rgba(255,163,77,1) 15.9%, rgba(255,163,77,1) 24.4%, rgba(19,30,37,1) 24.5%, rgba(19,30,37,1) 66% );
    }
    /*优雅紫*/
    #zm_yyz {
      color: #ffffff;
        overflow: hidden;
        margin: 10px 0;
        padding: 15px 15px 15px 35px;
        /*border-radius: 10px;*/
        box-shadow: 6px 0 12px -5px rgb(175, 160, 208), -6px 0 12px -5px rgba(177, 161, 207, 0);
        background-image: radial-gradient( circle farthest-corner at 10% 20%, rgba(95,117,227,1) 0%, rgba(188,167,205,1) 90% );
    }
    /*深邃黑*/
    #zm_szh {
      color: #c7c7c7;
        overflow: hidden;
        margin: 10px 0;
        padding: 15px 15px 15px 35px;
        /*border-radius: 5px;*/
        box-shadow: 6px 0 12px -5px rgb(155, 170, 185), -6px 0 12px -5px rgba(177, 161, 207, 0);
        background-image: radial-gradient( circle farthest-corner at 10% 20%, rgba(0,0,0,1) 0%, rgba(64,64,64,1) 90.2% );
    }
    /*无边框*/
    #zm_wbk {
        color: #000000;
        overflow: hidden;
        margin: 10px 0;
        padding: 15px 15px 15px 35px;
    }
    #zm_xyz a , #zm_gll a{
       color: #eeeeee;
    }
    #zm_szh a{
      color: #c7c7c7;  
    }
    #zm_xty a, #zm_yyz a{
      color: #ffffff;
    }

    3.现在就可以在编辑器内添加如下代码使用效果了。

    <div id="zm_mhz">迷幻紫</div>
    <div id="zm_xgh">西瓜红</div>
    <div id="zm_tkzj">天空之境</div>
    <div id="zm_xyz">小宇宙</div>
    <div id="zm_gll">橄榄绿</div>
    <div id="zm_xty">小太阳</div>
    <div id="zm_yyz">优雅紫</div>
    <div id="zm_szh">深邃黑</div>
    <div id="zm_wbk">无边框</div>

    演示

    4de222ec15ffb023ed6518671316a68e.webp

    参考

  • 08月06日,星期二, 每天60秒读懂全世界!

    百度热搜新闻

    新闻来源:百度热搜榜

    1. 国乒女团横扫埃及 晋级8强 8月5日,奥运乒乓球女子团体赛首轮比赛,由孙颖莎、陈梦、王曼昱、王艺迪(P卡)组成的国乒女团,以3-0战胜埃及队成功晋级。

    2. 平衡木掉木不断 奥运会体操女子平衡木决赛,中国选手周雅琴获得银牌。比赛中大批选手出现掉下器械的失误,美国名将拜尔斯也掉下了器械,引发关注。

    3. 上半年外贸运行稳中有进 今年上半年,外贸运行稳中有进,货物贸易展现较强韧性和市场活力,确实呈现量增、质优、份额稳的特点。

    4. 全红婵陈芋汐晋级十米台决赛 北京时间8月5日晚,巴黎奥运会跳水项目女子10米台半决赛在巴黎水上运动中心进行。中国选手全红婵、陈芋汐排名前两位晋级决赛。

    5. 郑钦文无缘成闭幕式旗手 据北青体育报道,创造历史获得奥运网球女单金牌的郑钦文,已经离开巴黎备战接下来的比赛,无缘成为奥运会闭幕式的女旗手。

    6. 女子铁饼决赛冯彬摘银 北京时间8月6日凌晨,在巴黎奥运会女子铁饼决赛中,中国选手冯彬发挥出色获得一枚银牌。

    7. HPV疫苗降价至一杯奶茶钱

    8. 甘肃天水推出房屋以旧换新?不实 近日,甘肃天水市秦州区民警发现网络上有“房子以旧换新服务”相关视频,经查,当地并无该政策,系发布者为了推销新楼盘编造谣言。

    9. 张佳宁回应被暗恋专业户 8月5日,在《私藏浪漫》见面会上,张佳宁回应“被暗恋专业户”称号:自己的长相能更让普通女孩有代入感。

    10. 肖若腾 揣进兜的金牌没了

    —- 百度热搜新闻 End —-

    知乎新闻

    新闻来源:知乎日榜

    标题: 线列步兵战术为何在欧洲流行了上百年?
    链接: https://daily.zhihu.com/story/9774335
    ———————-
    标题: 我们身上每个细胞的 DNA 都一样吗?
    链接: https://daily.zhihu.com/story/9774332
    ———————-
    标题: 甲骨文发现百年仍有大半未破译,破译难点在哪?
    链接: https://daily.zhihu.com/story/9774338
    ———————-
    标题: 什么是「系外行星」,有哪些有效的搜寻方法和著名的系外行星?
    链接: https://daily.zhihu.com/story/9774344
    ———————-
    标题: 瞎扯 · 如何正确地吐槽
    链接: https://daily.zhihu.com/story/9774348
    ———————-

    —- 知乎新闻 End —-

    IT之家新闻

    新闻来源:ITHome之家科技新闻

    标题: 小米王化辟谣 MIUI 体验总负责人金凡离职:他在闭关,年内出关
    发布时间: 2024-08-05T13:42:04.84
    新闻简介: 近期有消息称小米集团手机部副总裁、MIUI 体验总负责人金凡将离开小米,或者不再负责 MIUI(澎湃 OS)的业务。
    ———————-
    标题: 罗永浩称俞敏洪“铁公鸡”,消息称交个朋友紧急通知下架相关视频
    发布时间: 2024-08-05T10:52:33.13
    新闻简介: 据三言 Pro 报道,最近有网传图片显示,交个朋友公司 8 月 3 日晚向其授权的切片账号发出紧急通知,要求在 8 月 3 日 24 点前下架所有涉及罗永浩谈论俞敏洪的负面视频,否则将取消授权。这是因为近期出现了大量关于罗永浩批评俞敏洪的负面评论。
    ———————-
    标题: 苹果秋季新品曝光:2024 款 M4 芯片 MacBook Pro、Mac mini 和 iMac 将至
    发布时间: 2024-08-05T07:57:13.643
    新闻简介: 据彭博社记者马克・古尔曼(Mark Gurman)最新报道,苹果计划在今年晚些时候推出搭载 M4 芯片的新款 MacBook Pro、Mac mini 和 iMac。此外,MacBook Air、Mac Studio 和 Mac Pro 将在 2025 年升级至 M4 芯片。
    ———————-
    标题: 特斯拉刹车门终审判决:李女士判赔增至 7 万,鉴定机构称车辆制动系统正常有效无故障
    发布时间: 2024-08-05T10:44:07.647
    新闻简介: 近日,特斯拉与西安李女士(上海车展事件核心成员之一)的名誉权侵权案件迎来二审判决,李女士应赔偿特斯拉的金额由一审的 2000 元调整至 70000 元。
    ———————-
    标题: 2024 年《财富》世界 500 强排行榜揭晓:沃尔玛第 1、华为 103、比亚迪 143、小米 397
    发布时间: 2024-08-05T12:49:33.043
    新闻简介: 沃尔玛连续第11年成为全球最大公司,亚马逊重回第二,中国国家电网继续位列第三,排在第四和第五位的分别是沙特阿美和中国石化。
    ———————-
    标题: 电动车电池电梯爆燃致当事人死亡,销售者判赔 101 万元
    发布时间: 2024-08-05T17:29:04.6
    新闻简介: 小伙伴们可能还记得网上一条热传视频:一男子提着电动车电池进电梯,电池突然爆燃,火光吞没轿厢。男子从轿厢里被救出后,全身已烧黑。目前广州海珠区法院披露了这一案件的详情和审理结果:涉案爆炸电池属于非法二次加工改装电池,销售者张某的举证,不足以证明其销售的电池符合质量标准,应当承担相应责任。一审法院判决销售者张某对本次事故承担 70% 责任,陈某本人承担 30% 责任,张某应向陈某亲属赔偿 101 万余元。张某不服一审判决,向广州市中级人民法院上诉。二审法院判决驳回上诉,维持原判。
    ———————-
    标题: 5288 元起,华为 nova Flip 小折叠手机开启预售:6.88mm 厚度、后置 50MP 悬停自拍
    发布时间: 2024-08-05T19:36:47.493
    新闻简介: 据“华为终端”官方微博,华为 nova Flip 小折叠手机价格目前已正式公布,该机将于今晚 8 点 30 分开启预售,售 5288 元起。
    ———————-
    标题: 小米米家充气宝 2 Pro 上架:45 秒急速补气,众筹价 259 元
    发布时间: 2024-08-05T16:25:52.36
    新闻简介: 米家充气宝 2 Pro 黑色现已上架小米有品,众筹价 259 元,活动时间为 8 月 7 日 10:00-8 月 14 日 10:00。
    ———————-
    标题: 凯迪拉克一 4S 老店关门“跑路”:员工全部失业,未退车主押金致集体维权
    发布时间: 2024-08-05T09:53:15.877
    新闻简介: 在中国市场,凯迪拉克的运营由上汽通用负责。河南旭龙凯威是凯迪拉克在河南郑州的经销商,属于在河南经营 10 余年的 4S 老店。
    ———————-
    标题: 烈日下的外卖小哥:日均工作超 10 小时才能“月入过万”、部分骑手“从未见过高温津贴”
    发布时间: 2024-08-05T17:12:52.527
    新闻简介: 8 月以来,全国多地发布高温预警,“烧烤模式”下不少城市最高气温达到 40 度,但即便如此,外卖小哥仍顶着烈日穿梭在城市之间。媒体“蓝鲸新闻”采访了上海、江苏、浙江、广东、福建等地外卖小哥,对他们在极端高温天的收入情况进行调查,其中有不少外卖小哥声称他们日均跑单超 10 小时才能月入过万,而在高温补贴方面,目前仍有不少外卖骑手的高温津贴无法落实,不同地区不同平台之间的补贴力度也是层次不齐,报道称在不同地区,不同平台,众包或者专送的高温津贴都不同,有的地区甚至没有高温津贴。
    ———————-
    标题: 比亚迪王朝全新 MPV 车型再曝谍照,有望命名为“周”
    发布时间: 2024-08-05T14:07:44.557
    新闻简介: 从图中可以看到,该车采用了修长车身,尾灯为细长设计。此前爆料显示,这台车是一台王朝系列中大型 MPV,它的车身长度超过 5 米,轴距超过 3 米,主打 7 座布局。
    ———————-
    标题: 首位华人诺贝尔物理学奖得主李政道逝世,享年 98 岁
    发布时间: 2024-08-05T16:17:44.27
    新闻简介: 据中国新闻周刊报道,从中国科学院高能物理研究所处获悉,著名华人物理学家、诺贝尔物理学奖获得者李政道去世,享年 98 岁。此外,澎湃新闻从王垂林等多位李政道教授友人方面确认了这一消息,李政道因病医治无效,于美国时间 8 月 4 日在旧金山逝世,享年 98 岁。
    ———————-

    —- IT之家新闻 End —-

  • 给博客右下角添加一个弹簧人物


    共计 610 个字符,预计需要花费 2 分钟才能阅读完成。

    由于时不时会有人问本博客右下角人物如何添加,这里还是稍微介绍一下。其实这是一个开源的项目,开源项目地址:sakana

    使用起来也非常简单,如果使用的是 wordpress,那么找到主题编辑器,在 footer.php 添加如下代码即可:

    <div class="sakana-box"></div>
    
    <script src="https://cdn.jsdelivr.net/npm/sakana"></script>
    <script>
        // 启动
        const sakana = Sakana.init({
          el:         '.sakana-box',     // 启动元素 node 或 选择器
          scale:      .5,                // 缩放倍数
          canSwitchCharacter: true,      // 允许换角色
          inertia:    0.01,              // 惯性
          decay:      0.97,              // 衰减
          r:          -20,                // 启动角度
          y:          10,                // 启动高度
          scale:      0.5,                 // 缩放倍数
          translateY: 0,                 // 位移高度
        });
    </script>
    
    <style>
        html .sakana-box{
            z-index: 80;
            position: fixed;
            right: 0;
            bottom: 0;
            transform-origin: 100% 100%; /* 从右下开始变换 */
        }
    </style>

    以上是本博客使用到的参数,由于弹簧弹跳太快限制了一下,不然晃眼睛。此外需要注意的是,如果弹簧人物加载缓慢,可以将 js 文件下载到本地。

    嘘,点击底座还可以切换人物哦!

    Tips:清朝云网络工作室

  • Ubuntu 在线更新内核


    共计 853 个字符,预计需要花费 3 分钟才能阅读完成。

    之前想着离线更新内核,但是根据网上下载了内核的安装包,发现安装新的内核会牵扯到其他软件的更新问题,比如说安装新版本的内核需要 libc6 版本 >= 2.38 等等,确实有点麻烦。

    后来了解到 Mainline, 它是一个用于在 Ubuntu 系统上安装最新 Linux 内核的工具。并且,它由 Ubuntu 的主线内核团队维护,使用户能够轻松地获取和安装由 Ubuntu 内核团队构建和测试的最新主线内核版本。

    如果需要更新 v6.8.4 内核,执行如下脚本即可:

    wget https://raw.gitcode.com/pimlie/ubuntu-mainline-kernel.sh/blobs/c53cb4ca20dac34349d691ccb872e826953ccbdd/ubuntu-mainline-kernel.sh
    #wget https://github.com/pimlie/ubuntu-mainline-kernel.sh/raw/master/ubuntu-mainline-kernel.sh
    
    sudo install ubuntu-mainline-kernel.sh /usr/local/bin/
    
    sudo ubuntu-mainline-kernel.sh -i v6.8.4
    
    sudo update-grub
    
    sudo reboot

    如果重启后没有使用新的内核进入,那么还需要编辑文件 /etc/default/grub,将 GRUB_TIMEOUT_STYLE 选项注释,并将 GRUB_TIMEOUT 改为 30。

    #GRUB_TIMEOUT_STYLE=hidden
    GRUB_TIMEOUT=30

    然后执行:

    sudo update-grub
    
    sudo reboot

    重启后进入 ubuntu 高级设置。

    Ubuntu 在线更新内核

    />

    这里可以选择内核进入系统。

    Ubuntu 在线更新内核

    />

    当然最方便的还是设置默认使用哪个内核,上图中从 0 开始排序,然后编辑文件 /etc/default/grub,修改 GRUB_DEFAULT 的值。

    GRUB_DEFAULT=0

    然后执行:

    sudo update-grub
    
    sudo reboot

    Tips:清朝云网络工作室

  • Mysql 左连接、右连接与全连接的区别


    共计 1870 个字符,预计需要花费 5 分钟才能阅读完成。

    创建表并插入数据

    1. 创建 employees

    CREATE TABLE employees (
        employee_id INT PRIMARY KEY,
        name VARCHAR(50),
        department_id INT
    );

    2. 创建 departments

    CREATE TABLE departments (
        department_id INT PRIMARY KEY,
        department_name VARCHAR(50)
    );

    3. 插入示例数据

    INSERT INTO employees (employee_id, name, department_id) VALUES
    (1, 'Alice', 1),
    (2, 'Bob', 2),
    (3, 'Charlie', NULL),
    (4, 'David', 3);
    
    INSERT INTO departments (department_id, department_name) VALUES
    (1, 'HR'),
    (2, 'Finance'),
    (4, 'Engineering');

    测试

    1. LEFT JOIN

    SELECT e.employee_id, e.name, e.department_id, d.department_name
    FROM employees e
    LEFT JOIN departments d ON e.department_id = d.department_id;

    结果:

    +-------------+---------+--------------+----------------+
    | employee_id | name    | department_id| department_name|
    +-------------+---------+--------------+----------------+
    | 1           | Alice   | 1            | HR             |
    | 2           | Bob     | 2            | Finance        |
    | 3           | Charlie | NULL         | NULL           |
    | 4           | David   | 3            | NULL           |
    +-------------+---------+--------------+----------------+

    2. RIGHT JOIN

    SELECT e.employee_id, e.name, e.department_id, d.department_name
    FROM employees e
    RIGHT JOIN departments d ON e.department_id = d.department_id;

    结果:

    +-------------+---------+--------------+----------------+
    | employee_id | name    | department_id| department_name|
    +-------------+---------+--------------+----------------+
    | 1           | Alice   | 1            | HR             |
    | 2           | Bob     | 2            | Finance        |
    | NULL        | NULL    | NULL         | Engineering    |
    +-------------+---------+--------------+----------------+

    3. FULL JOIN(通过 UNION 实现)

    SELECT e.employee_id, e.name, e.department_id, d.department_name
    FROM employees e
    LEFT JOIN departments d ON e.department_id = d.department_id
    UNION
    SELECT e.employee_id, e.name, e.department_id, d.department_name
    FROM employees e
    RIGHT JOIN departments d ON e.department_id = d.department_id;

    结果:

    +-------------+---------+--------------+----------------+
    | employee_id | name    | department_id| department_name|
    +-------------+---------+--------------+----------------+
    | 1           | Alice   | 1            | HR             |
    | 2           | Bob     | 2            | Finance        |
    | 3           | Charlie | NULL         | NULL           |
    | 4           | David   | 3            | NULL           |
    | NULL        | NULL    | NULL         | Engineering    |
    +-------------+---------+--------------+----------------+

    Tips:清朝云网络工作室

  • 分享一下自建音乐服务器更新音乐的方案


    共计 2189 个字符,预计需要花费 6 分钟才能阅读完成。

    之前搭建了 Navidrome 服务器,不了解的可以看这篇文章 Docker 搭建音乐服务器 Navidrome。并且之前的方案一直是使用开心版的酷我音乐下载歌曲,下好以后放在指定目录,再通过 windows 上的 musictag 软件刮削歌词和封面,再通过 syncthing 进行文件同步,再重启 Navidrome。

    然而,偶尔听见一首喜欢的歌,想要下载放到音乐服务器上,都需要这样操作有点麻烦。还有一点更重要的是,刮削需要通过 windows 软件来操作有点麻烦。于是我现在的方案就是,通过 aria2 进行下载到指定目录,再通过 music-tag-web 进行手动刮削即可。

    当然,需要下载的文件哪里来呢?答案是通过两个 tg 机器人配合,Let’s Music 机器人可以获得想要下载的文件,TgFileurl 可以将 tg 文件转发得到 http 连接。

    还有有问题的小明又问了,我连 aria2 图形界面我也不想打开,又要怎么办?这个时候就用到了 webhook,先将脚本放在服务器上,通过传递文件名给脚本,让脚本发起 aria2 的 rpc 请求。具体如何搭建 webhook,请看 Docker 搭建 webhook – 调用接口即可运行本地脚本

    配置文件:

    - id: aria2
      execute-command: "/hooks/aria2.sh"
      command-working-directory: "/hooks/"
      include-command-out-in-response-on-error: true
      pass-arguments-to-command: 
      - source: url
        name: url

    脚本内容:

    #!/bin/bash
    set -x
    url=$1
    
    # 这个可以通过 ariang 页面,f12 获取 
    curl -d "{\"jsonrpc\":\"2.0\",\"method\":\"aria2.addUri\",\"id\":\"QXJpYU5nXzE3MTk5Nzc4XDFfMC41MDg4MjcxMjQzMzIyMDU2\",\"params\":[\"token:123456\",[\"${url}\"],{}]}" https://xxx.com/jsonrpc
    
    # 等下载完重启服务器
    sleep 10
    docker restart navidrome

    这样的话只需要获取到 mp3 的 http 链接,然后调用 webhook,将 http 地址当作 url 传递即可。

    然后整体的 docker-compose 文件如下:

    version: '3.1'
    services:
      navidrome:
        image: deluan/navidrome:0.51.1
        container_name: navidrome
        ports:
          - 4533:4533
        environment:
          - ND_LOGLEVEL=info
        volumes:
          - /home/docker/navidrome/data:/data
          - /home/docker/navidrome/music:/music
        restart: always
      aria2:
        image: superng6/aria2:webui-latest
        container_name: aria2
        environment:
          - SECRET=123456
          - CACHE=512M
        ports:
          - "32516:32516"
          - "32516:32516/udp"
          - "6800:6800"
          - "8080:8080"
        volumes:
          - /home/docker/aria2/config:/config
          - /home/docker/aria2/downloads:/downloads
          - /home/docker/navidrome/music/mp3:/downloads/mp3
      music-tag:
        image: xhongc/music_tag_web:2.1.1
        container_name: music-tag
        restart: always
        ports:
          - "8002:8002"
        volumes:
          - /home/docker/music-tag/data:/app/data
          - /home/docker/navidrome/music/mp3:/app/media
      webhook:
        container_name: webhook
        image: hausen1012/webhook
        ports:
          - 9000:9000
        volumes:
          - /home/docker/webhook/config:/etc/webhook
          - /home/docker/webhook/hooks:/hooks
          - /usr/bin/docker:/usr/bin/docker
          - /run/docker.sock:/var/run/docker.sock
        command: ["-verbose", "-hooks=/etc/webhook/hooks.yaml", "-hotreload"]

    对了 music-tag-web 需要激活 v2 版本才有自动刮削功能,有需要的可以支持一下作者,这款软件还是挺好用的。否则可能需要手动刮削,不过即使不手动,下载好使用音流同步一下也是能听的,只不过没有歌词而已。

    至于一些细节问题,可以自行处理。比如设置反代,还有 aria2 的远程调用需要的密码,设置下载的文件夹等等。其实还可以通过 filebrowser 来进行文件管理,现在我就是这么干的。

    Tips:清朝云网络工作室

  • Linux 磁盘加密和自动挂载


    共计 1579 个字符,预计需要花费 4 分钟才能阅读完成。

    1. 描述

    LUKS(Linux Unified Key Setup)是一个标准,定义了在Linux系统上进行磁盘加密的格式和规范。

    cryptsetup 是一个实现了 LUKS 标准的工具,用于在 linux 系统上管理磁盘加密。它能够创建、管理和解锁加密的磁盘分区或整个硬盘。主要功能包括设置加密选项、创建加密设备映射、打开和关闭加密设备等。

    使用 cryptsetup 对分区进行加密后,该加密分区无法直接挂载到文件系统上使用,因为操作系统无法直接识别和处理加密数据。相反,需要通过 cryptsetup 工具创建一个解密的映射,将其映射到 /dev/mapper 目录下的一个设备节点上。

    2. 安装cryptsetup

    centos:

    yum install cryptsetup -y

    debian系:

    apt install cryptsetup -y

    3. 创建加密磁盘

    假设需要加密的磁盘分区为 /dev/sdb1

    sudo cryptsetup luksFormat /dev/sdb1

    将看到以下输出:

    WARNING: Device /dev/sdb1 already contains a 'ext4' superblock signature.
    
    WARNING!
    ========
    This will overwrite data on /dev/sdb1 irrevocably.
    
    Are you sure? (Type uppercase yes): YES

    需要输入 YES 并回车。

    然后系统将提示输入一个新的 LUKS 密钥并确认。

    Enter passphrase for /dev/sdb1: 
    Verify passphrase:

    4. 打开加密设备

    sudo cryptsetup open /dev/sdb1 mydevice

    这里会提示需要输入密钥。完成以后,将会在 /dev/mapper 下创建一个映射 /dev/mapper/mydevice

    5. 格式化设备

    如果是第一次对硬盘进行加密,那么需要进行格式化才能使用,对于已经加密过的硬盘,直接下一步挂载即可。

    sudo mkfs.ext4 /dev/mapper/mydevice

    6. 挂载设备

    sudo mount /dev/mapper/mydevice /mnt

    7. 取消挂载并关闭加密设备

    首先需要取消挂载文件系统:

    sudo umount /mnt

    然后关闭加密设备:

    sudo cryptsetup close mydevice

    可以使用如下命令确认是否成功:

    # 查看已挂载的文件系统
    mount | grep /mnt
    
    # 查看已打开的加密设备
    sudo cryptsetup status mydevice

    8. 开机自动解密和挂载

    生成随机字符串,写入文件:

    sudo dd if=/dev/urandom bs=1 count=1024 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev > /root/.luks_pass

    设置文件权限,只允许 root 读写:

    sudo chmod 600 /root/.luks_pass

    设置开机自动解密 luks 分区:

    $ vim /etc/crypttab
    # <name>  <device>      <password> <options>
    mydevice    /dev/sdb1       /root/.luks_pass
    
    # 还可以使用分区的 uuid. lsbid
    #mydevice    UUID=xxxx      /root/.luks_pass

    把密码添加到luks加密中,这一步必须执行才能使密码生效:

    # 系统将向指定的 LUKS 加密分区(/dev/sdb1)添加一个额外的解密密钥
    sudo cryptsetup luksAddKey /dev/sdb1 /root/.luks_pass

    设置挂载点:

    $ vim /etc/fstab
    #配置新的home挂载信息
    /dev/mapper/mydevice        /mnt   ext4    defaults        0       0

    查看加密设备:

    sudo cryptsetup status mydevice

    Tips:清朝云网络工作室

  • 用 Chatgpt 整了个发送请求的 Bot


    共计 203 个字符,预计需要花费 1 分钟才能阅读完成。

    由于使用了webhook,但其实比如做一些操作还需要传递特定的参数,这个时候还需要去复制对应的 url 拼接参数,现在搞个tgbot就可以直接交互使用了。

    先获取一个音乐文件。

    用 Chatgpt 整了个发送请求的 Bot

    />

    再获取对应的url。

    用 Chatgpt 整了个发送请求的 Bot

    />

    再将url发给自己的机器人,机器人获取到链接以后,请求webhook。

    用 Chatgpt 整了个发送请求的 Bot

    />

    之后就可以看见文件下载到服务器。

    用 Chatgpt 整了个发送请求的 Bot

    />

    音流同步一下就能看见音乐了。

    用 Chatgpt 整了个发送请求的 Bot

    />

    当然了,如果有时间的话,可以去 music-tag-web 页面给音乐刮削一下歌词封面等。

    用 Chatgpt 整了个发送请求的 Bot

    />

    Tips:清朝云网络工作室