Skip to main content
用九宫格来刷B站耶
  1. Blog/

用九宫格来刷B站耶

· loading · loading · ·
IT IT Linux Guide
Table of Contents

效果展示
#

设备边播放边录制有点吃力,所以看起来有丝丝卡顿。效果就是可以同时刷n个视频。

准备工作
#

要实现“九宫格刷 B 站”,我们需要准备以下工具:

  • 视频地址列表
  • 播放器:推荐用 revda 的 dmlive,直接用 mpv 的 yt-dlp 也可以,后者看不到弹幕。
  • 并行工具,推荐用 parallel
  • mpv 需要配置自动退出脚本,不然会同一个视频循环播放。

获取视频播放列表
#

推荐使用这个优秀的插件导出收藏夹列表:
👉 AHCorn / Bilibili-Favlist-Export

该插件导出的文件是 CSV,其中第二列就是我们所需的视频 URL。

hyprscroller配置
#

我们需要用到该hyprland插件提供的 grid模式,虽然作者已经不再维护该插件,但咱找到了个还在 活跃的分支,通过以下命令可以设定 grid 模式的行为,使窗口按下图顺序出现,且不会自动抢焦点:
hyprctl dispatch scroller:setmodemodifier end,nofocus,auto:3

同时推荐下两项配置:

  • plugin:scroller:overview_scale_content 0

    缩放会带来额外性能消耗,建议临时关闭。

  • windowrulev2 = plugin:scroller:columnwidth one,workspace:2

    让窗口自动填满宽度。可以全局设置,也可以像咱一样为特定工作区单独设置。

mpv自动退出
#

~  cat ~/.config/mpv/scripts/quit_d.lua
mp.register_event("end-file", function(event)
    if event.reason == "eof" then
        local pos = mp.get_property_number("playlist-pos", 0)
        local count = mp.get_property_number("playlist-count", 0)
        if pos == count - 1 then
            mp.msg.info("Last file finished, quitting mpv")
            mp.command("quit")
        end
    end
end)

Play耶
#

准备完成后,就可以开始一次性刷多个视频啦。
下面是一个简单的流程:先根据 CSV 生成可执行的 fish 脚本,在播放后自动记录已看视频。

# played记录看完的视频, 避免每次重新跑
for i in (csvtk cut -f 2 稍后.csv)
    echo dmlive -u \"$i\"\;\; echo \"$i\" \>\> played >> play.fish
end

> head play.fish
dmlive -u url;; echo url >> played
dmlive -u https://www.bilibili.com/video/BV1am5vzMEtH;; echo https://www.bilibili.com/video/BV1am5vzMEtH >> played
dmlive -u https://www.bilibili.com/video/BV1xQCxBdEUW;; echo https://www.bilibili.com/video/BV1xQCxBdEUW >> played
dmlive -u https://www.bilibili.com/video/BV1XpBgYHE1i;; echo https://www.bilibili.com/video/BV1XpBgYHE1i >> played
dmlive -u https://www.bilibili.com/video/BV1hYWnz9E3u;; echo https://www.bilibili.com/video/BV1hYWnz9E3u >> played
dmlive -u https://www.bilibili.com/video/BV1S7C1BSEmq;; echo https://www.bilibili.com/video/BV1S7C1BSEmq >> played
dmlive -u https://www.bilibili.com/video/BV13kSoYLE8H;; echo https://www.bilibili.com/video/BV13kSoYLE8H >> played
dmlive -u https://www.bilibili.com/video/BV1UEtdzREai;; echo https://www.bilibili.com/video/BV1UEtdzREai >> played


#播放
grep -v -F -f played play.fish|parallel -j 8

小建议:最好保持聚焦在最上面的窗口,不然新生成的窗口会有点怪,会变成类似这样的情况。