Files
bili-sync/configuration.html

38 lines
34 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-Hans" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>配置说明 | bili-sync</title>
<meta name="description" content="由 Rust & Tokio 驱动的哔哩哔哩同步工具">
<meta name="generator" content="VitePress v1.2.3">
<link rel="preload stylesheet" href="/assets/style.C1nXIPB-.css" as="style">
<script type="module" src="/assets/chunks/metadata.ffcab0ab.js"></script>
<script type="module" src="/assets/app.2qaO5HJc.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/framework.Bsyxd66g.js">
<link rel="modulepreload" href="/assets/chunks/theme.BbeQe9Cr.js">
<link rel="modulepreload" href="/assets/configuration.md.CsuuCUAn.lean.js">
<link rel="icon" type="image/svg+xml" href="/icon.svg">
<link rel="icon" type="image/png" href="/icon.png">
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-d8b57b2d><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c8291ffa></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c8291ffa> Skip to content </a><!--]--><!----><header class="VPNav" data-v-d8b57b2d data-v-7ad780c2><div class="VPNavBar has-sidebar top" data-v-7ad780c2 data-v-844edcde><div class="wrapper" data-v-844edcde><div class="container" data-v-844edcde><div class="title" data-v-844edcde><div class="VPNavBarTitle has-sidebar" data-v-844edcde data-v-0ad69264><a class="title" href="/" data-v-0ad69264><!--[--><!--]--><!----><span data-v-0ad69264>bili-sync</span><!--[--><!--]--></a></div></div><div class="content" data-v-844edcde><div class="content-body" data-v-844edcde><!--[--><!--]--><div class="VPNavBarSearch search" data-v-844edcde><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-844edcde data-v-f732b5d0><span id="main-nav-aria-label" class="visually-hidden" data-v-f732b5d0>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/" tabindex="0" data-v-f732b5d0 data-v-08fbf4b6><!--[--><span data-v-08fbf4b6>主页</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-f732b5d0 data-v-af5898d3><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-af5898d3><span class="text" data-v-af5898d3><!----><span data-v-af5898d3>v2.11.0</span><span class="vpi-chevron-down text-icon" data-v-af5898d3></span></span></button><div class="menu" data-v-af5898d3><div class="VPMenu" data-v-af5898d3 data-v-e42ed9b3><div class="items" data-v-e42ed9b3><!--[--><!--[--><div class="VPMenuLink" data-v-e42ed9b3 data-v-f51f088d><a class="VPLink link vp-external-link-icon" href="https://github.com/amtoaer/bili-sync/releases" target="_blank" rel="noreferrer" data-v-f51f088d><!--[-->程序更新<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-e42ed9b3 data-v-f51f088d><a class="VPLink link vp-external-link-icon" href="https://github.com/search?q=repo:amtoaer/bili-sync+docs&amp;type=commits" target="_blank" rel="noreferrer" data-v-f51f088d><!--[-->文档更新<!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-844edcde data-v-283b26e9><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="切换到深色模式" aria-checked="false" data-v-283b26e9 data-v-7df97737 data-v-b4ccac88><span class="check" data-v-b4ccac88><span class="icon" data-v-b4ccac88><!--[--><span class="vpi-sun sun" data-v-7df97737></span><span class="vpi-moon moon" data-v-7df97737></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-844edcde data-v-ef6192dc data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/amtoaer/bili-sync" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-358b6670><span class="vpi-social-github" /></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-844edcde data-v-8e87c032 data-v-af5898d3><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-af5898d3><span class="vpi-more-horizontal icon" data-v-af5898d3></span></button><div class="menu" data-v-af5898d3><div class="VPMenu" data-v-af5898d3 data-v-e42ed9b3><!----><!--[--><!--[--><!----><div class="group" data-v-8e87c032><div class="item appearance" data-v-8e87c032><p class="label" data-v-8e87c032>主题</p><div class="appearance-action" data-v-8e87c032><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="切换到深色模式" aria-checked="false" data-v-8e87c032 data-v-7df97737 data-v-b4ccac88><span class="check" data-v-b4ccac88><span class="icon" data-v-b4ccac88><!--[--><span class="vpi-sun sun" data-v-7df97737></span><span class="vpi-moon moon" data-v-7df97737></span><!--]--></span></span></button></div></div></div><div class="group" data-v-8e87c032><div class="item social-links" data-v-8e87c032><div class="VPSocialLinks social-links-list" data-v-8e87c032 data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/amtoaer/bili-sync" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-358b6670><span class="vpi-social-github" /></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-844edcde data-v-6bee1efd><span class="container" data-v-6bee1efd><span class="top" data-v-6bee1efd></span><span class="middle" data-v-6bee1efd></span><span class="bottom" data-v-6bee1efd></span></span></button></div></div></div></div><div class="divider" data-v-844edcde><div class="divider-line" data-v-844edcde></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-d8b57b2d data-v-2488c25a><div class="container" data-v-2488c25a><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-2488c25a><span class="vpi-align-left menu-icon" data-v-2488c25a></span><span class="menu-text" data-v-2488c25a>菜单</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-2488c25a data-v-883964e0><button data-v-883964e0>回到顶部</button><!----></div></div></div><aside class="VPSidebar" data-v-d8b57b2d data-v-4871f9f5><div class="curtain" data-v-4871f9f5></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-4871f9f5><span class="visually-hidden" id="sidebar-aria-label" data-v-4871f9f5> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-4871f9f5><section class="VPSidebarItem level-0" data-v-4871f9f5 data-v-c24f735a><div class="item" role="button" tabindex="0" data-v-c24f735a><div class="indicator" data-v-c24f735a></div><h2 class="text" data-v-c24f735a>简介</h2><!----></div><div class="items" data-v-c24f735a><!--[--><div class="VPSidebarItem level-1 is-link" data-v-c24f735a data-v-c24f735a><div class="item" data-v-c24f735a><div class="indicator" data-v-c24f735a></div><a class="VPLink link link" href="/introduction" data-v-c24f735a><!--[--><p class="text" data-v-c24f735a>什么是 bili-sync</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c24f735a data-v-c24f735a><div class="item" data-v-c24f735a><div class="indicator" data-v-c24f735a></div><a class="VPLink link link" href="/quick-start" data-v-c24f735a><!--[--><p class="text" data-v-c24f735a>快速开始</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-4871f9f5><section class="VPSidebarItem level-0 has-active" data-v-4871f9f5 data-v-c24f735a><div class="item" role="button" tabindex="0" data-v-c24f735a><div class="indicator" data-v-c24f735a></div><h2 class="text" data-v-c24f735a>细节</h2><!----></div><div class="items" data-v-c24f735a><!--[--><div class="VPSidebarItem level-1 is-link" data-v-c24f735a data-v-c24f735a><div class="item" data-v-c24f735a><div class="indicator" data-v-c24f735a></div><a class="VPLink link link" href="/configuration" data-v-c24f735a><!--[--><p class="text" data-v-c24f735a>配置说明</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c24f735a data-v-c24f735a><div class="item" data-v-c24f735a><div class="indicator" data-v-c24f735a></div><a class="VPLink link link" href="/args" data-v-c24f735a><!--[--><p class="text" data-v-c24f735a>命令行参数</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c24f735a data-v-c24f735a><div class="item" data-v-c24f735a><div class="indicator" data-v-c24f735a></div><a class="VPLink link link" href="/design" data-v-c24f735a><!--[--><p class="text" data-v-c24f735a>工作原理</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-4871f9f5><section class="VPSidebarItem level-0" data-v-4871f9f5 data-v-c24f735a><div class="item" role="button" tabindex="0" data-v-c24f735a><div class="indicator" data-v-c24f735a></div><h2 class="text" data-v-c24f735a>参考</h2><!----></div><div class="items" data-v-c24f735a><!--[--><div class="VPSidebarItem level-1 is-link" data-v-c24f735a data-v-c24f735a><div class="item" data-v-c24f735a><div class="indicator" data-v-c24f735a></div><a class="VPLink link link" href="/favorite" data-v-c24f735a><!--[--><p class="text" data-v-c24f735a>获取收藏夹信息</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c24f735a data-v-c24f735a><div class="item" data-v-c24f735a><div class="indicator" data-v-c24f735a></div><a class="VPLink link link" href="/collection" data-v-c24f735a><!--[--><p class="text" data-v-c24f735a>获取合集/列表信息</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c24f735a data-v-c24f735a><div class="item" data-v-c24f735a><div class="indicator" data-v-c24f735a></div><a class="VPLink link link" href="/submission" data-v-c24f735a><!--[--><p class="text" data-v-c24f735a>获取用户投稿信息</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-4871f9f5><section class="VPSidebarItem level-0" data-v-4871f9f5 data-v-c24f735a><div class="item" role="button" tabindex="0" data-v-c24f735a><div class="indicator" data-v-c24f735a></div><h2 class="text" data-v-c24f735a>其它</h2><!----></div><div class="items" data-v-c24f735a><!--[--><div class="VPSidebarItem level-1 is-link" data-v-c24f735a data-v-c24f735a><div class="item" data-v-c24f735a><div class="indicator" data-v-c24f735a></div><a class="VPLink link link" href="/question" data-v-c24f735a><!--[--><p class="text" data-v-c24f735a>常见问题</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-c24f735a data-v-c24f735a><div class="item" data-v-c24f735a><div class="indicator" data-v-c24f735a></div><a class="VPLink link link" href="/frontend" data-v-c24f735a><!--[--><p class="text" data-v-c24f735a>管理页</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-d8b57b2d data-v-9a6c75ad><div class="VPDoc has-sidebar has-aside" data-v-9a6c75ad data-v-e6f2a212><!--[--><!--]--><div class="container" data-v-e6f2a212><div class="aside" data-v-e6f2a212><div class="aside-curtain" data-v-e6f2a212></div><div class="aside-container" data-v-e6f2a212><div class="aside-content" data-v-e6f2a212><div class="VPDocAside" data-v-e6f2a212 data-v-cb998dce><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-cb998dce data-v-f610f197><div class="content" data-v-f610f197><div class="outline-marker" data-v-f610f197></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-f610f197>页面导航</div><ul class="VPDocOutlineItem root" data-v-f610f197 data-v-53c99d69><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-cb998dce></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-e6f2a212><div class="content-container" data-v-e6f2a212><!--[--><!--]--><main class="main" data-v-e6f2a212><div style="position:relative;" class="vp-doc _configuration" data-v-e6f2a212><div><h1 id="配置说明" tabindex="-1">配置说明 <a class="header-anchor" href="#配置说明" aria-label="Permalink to &quot;配置说明&quot;"></a></h1><h2 id="基本设置" tabindex="-1">基本设置 <a class="header-anchor" href="#基本设置" aria-label="Permalink to &quot;基本设置&quot;"></a></h2><h3 id="绑定地址" tabindex="-1">绑定地址 <a class="header-anchor" href="#绑定地址" aria-label="Permalink to &quot;绑定地址&quot;"></a></h3><p>程序 Web Server 监听的地址,程序启动时会监听该地址,成功后可通过 <code>http://${bind_address}</code> 访问管理页。</p><p>该配置会在程序重启时生效。</p><h3 id="同步间隔-秒" tabindex="-1">同步间隔(秒) <a class="header-anchor" href="#同步间隔-秒" aria-label="Permalink to &quot;同步间隔(秒)&quot;"></a></h3><p>表示程序每次执行扫描下载的间隔时间,单位为秒。</p><h3 id="视频名称模板、分页名称模板" tabindex="-1">视频名称模板、分页名称模板 <a class="header-anchor" href="#视频名称模板、分页名称模板" aria-label="Permalink to &quot;视频名称模板、分页名称模板&quot;"></a></h3><p>视频名称模板(<code>video_name</code>)和分页名称模板(<code>page_name</code>)用于设置下载文件的命名规则。对于所有下载的内容,将会维持如下的目录结构:</p><ol><li><p>单页视频:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">├──</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> {video_name}</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">│  </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ├──</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> {page_name}.mp4</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">│  </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ├──</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> {page_name}.nfo</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">│  </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> └──</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> {page_name}-poster.jpg</span></span></code></pre></div></li><li><p>多页视频:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">├──</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> {video_name}</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">│  </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ├──</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> poster.jpg</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">│  </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ├──</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Season</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">│  </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> │  </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ├──</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> {page_name}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> -</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> S01E01.mp4</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">│  </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> │  </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ├──</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> {page_name}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> -</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> S01E01.nfo</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">│  </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> │  </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ├──</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> {page_name}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> -</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> S01E01-thumb.jpg</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">│  </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> │  </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ├──</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> {page_name}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> -</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> S01E02.mp4</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">│  </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> │  </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ├──</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> {page_name}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> -</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> S01E02.nfo</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">│  </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> │  </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> └──</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> {page_name}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> -</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> S01E02-thumb.jpg</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">│  </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> └──</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tvshow.nfo</span></span></code></pre></div></li></ol><p>这两个模板参数会在运行时解析,其中用 <code>{{ }}</code> 包裹的模板变量会被动态替换为对应的内容。</p><p>对于 <code>video_name</code>,支持设置 bvid视频编号、title视频标题、upper_nameup 主名称、upper_midup 主 id、pubtime视频发布时间、fav_time视频收藏时间</p><p>对于 <code>page_name</code>,除支持 video 的全部参数外,还支持 ptitle分 P 标题、pid分 P 页号)。</p><p>为了解决文件名可能过长的问题,程序为模板引入了 <code>truncate</code> 函数。如 <code>{{ truncate title 10 }}</code> 表示截取 <code>title</code> 的前 10 个字符。</p><div class="tip custom-block github-alert"><p class="custom-block-title">TIP</p><p></p><ol><li>仅收藏夹视频会区分 <code>fav_time</code><code>pubtime</code>,其它类型下载两者的取值是完全相同的;</li><li><code>fav_time</code><code>pubtime</code> 的格式受<a href="#时间格式">时间格式</a>控制。</li></ol></div><p>此外,<code>video_name</code><code>page_name</code> 还支持使用路径分割符,如 <code>{{ upper_mid }}/{{ title }}_{{ pubtime }}</code> 表示视频会根据 UP 主 id 将视频分到不同的文件夹中。</p><p>推荐仅在 <code>video_name</code> 中使用路径分割符,暂不清楚在 <code>page_name</code> 中使用路径分割符导致分页存储到子文件夹后是否还能被媒体服务器正确识别。</p><div class="caution custom-block github-alert"><p class="custom-block-title">CAUTION</p><p><strong>路径分隔符</strong>在不同平台定义不同Windows 下为 <code>\</code>MacOS 和 Linux 下为 <code>/</code></p></div><h3 id="up-主头像保存路径" tabindex="-1">UP 主头像保存路径 <a class="header-anchor" href="#up-主头像保存路径" aria-label="Permalink to &quot;UP 主头像保存路径&quot;"></a></h3><p>UP 主头像和信息的保存位置。对于使用 Emby、Jellyfin 媒体服务器的用户,需确保此处路径指向 Emby、Jellyfin 配置中的 <code>/metadata/people/</code> 才能够正常在媒体服务器中显示 UP 主的头像。</p><h3 id="时间格式" tabindex="-1">时间格式 <a class="header-anchor" href="#时间格式" aria-label="Permalink to &quot;时间格式&quot;"></a></h3><p>用于设置 <code>fav_time</code><code>pubtime</code> 在视频名称模板、分页名称模板中使用时的显示格式,支持的格式符号可以参考 <a href="https://docs.rs/chrono/latest/chrono/format/strftime/index.html" target="_blank" rel="noreferrer">chrono strftime 文档</a></p><h3 id="后端-api-认证-token" tabindex="-1">后端 API 认证 Token <a class="header-anchor" href="#后端-api-认证-token" aria-label="Permalink to &quot;后端 API 认证 Token&quot;"></a></h3><p>表示调用程序管理 API 需要的身份凭据,程序会对 API 请求进行身份验证,身份验证不通过会拒绝访问。</p><p>在修改该 Token 后需要对应修改前端保存的 Token才能正常访问管理页面。</p><h3 id="启动-cdn-排序" tabindex="-1">启动 CDN 排序 <a class="header-anchor" href="#启动-cdn-排序" aria-label="Permalink to &quot;启动 CDN 排序&quot;"></a></h3><p>一般情况下b 站会为视频、音频流提供一个 baseUrl 与多个 backupUrl程序默认会按照 baseUrl -&gt; backupUrl 的顺序请求,依次尝试下载。</p><p>如果启用 CDN 排序,那么程序不再使用默认顺序,而是将所有 url 放到一起统一排序来决定请求顺序。排序优先级从高到低为:</p><ol><li>服务商 CDN<code>upos-sz-mirrorxxxx.bilivideo.com</code></li><li>自建 CDN<code>cn-xxxx-dx-v-xxxx.bilivideo.com</code></li><li>MCDN<code>xxxx.mcdn.bilivideo.com</code></li><li>PCDN<code>xxxx.v1d.szbdyd.com</code></li></ol><p>这会让程序优先请求质量更高的 CDN可能会提高下载速度并增加成功率但效果因地区、网络环境而异。</p><h2 id="b-站认证" tabindex="-1">B 站认证 <a class="header-anchor" href="#b-站认证" aria-label="Permalink to &quot;B 站认证&quot;"></a></h2><p>哔哩哔哩账号的身份凭据,请参考<a href="https://nemo2011.github.io/bilibili-api/#/get-credential" target="_blank" rel="noreferrer">凭据获取流程</a>获取并对应填写,后续 bili-sync 会在必要时自动刷新身份凭据,不再需要手动管理。</p><p>推荐使用匿名窗口获取,避免潜在的冲突。</p><h2 id="视频质量" tabindex="-1">视频质量 <a class="header-anchor" href="#视频质量" aria-label="Permalink to &quot;视频质量&quot;"></a></h2><p>该页配置大部分都是显而易见的,仅对视频编码格式偏好进行说明。</p><h3 id="视频编码格式偏好" tabindex="-1">视频编码格式偏好 <a class="header-anchor" href="#视频编码格式偏好" aria-label="Permalink to &quot;视频编码格式偏好&quot;"></a></h3><p>这是 bili-sync 选择视频编码的优先级顺序,优先级按顺序从高到低。此处对编码格式做一个简单说明:</p><ul><li><p>AVC 又称 H.264,是目前使用最广泛的视频编码格式,绝大部分设备可以使用硬件解码播放该格式的视频(也因此播放普遍流畅),但是同等画质下视频体积较大。</p></li><li><p>HEV(C) 又称 H.265,与 AV1 都是新一代的视频编码格式。这两种编码相比 AVC 有更好的压缩率,同等画质下视频体积更小,但由于相对较新,硬件解码支持不如 AVC 广泛。如果你的播放设备不支持则只能使用软件解码播放,这种情况下可能导致播放卡顿、机器发热等问题。</p></li></ul><p>建议查阅自己常用播放设备对这三种编码的硬件解码支持情况以选择合适的编码格式,如果硬件支持 HEV 或 AV1那么可以将其优先级调高。</p><p>而如果你的设备不支持,或者单纯懒得查询,那么推荐将 AVC 放在第一位以获得最好的兼容性。</p><h2 id="弹幕渲染" tabindex="-1">弹幕渲染 <a class="header-anchor" href="#弹幕渲染" aria-label="Permalink to &quot;弹幕渲染&quot;"></a></h2><p>弹幕的设置选项,用于设置下载弹幕的样式,几乎全部取自<a href="https://github.com/gwy15/danmu2ass" target="_blank" rel="noreferrer">上游仓库</a></p><h3 id="弹幕持续时间-秒" tabindex="-1">弹幕持续时间(秒) <a class="header-anchor" href="#弹幕持续时间-秒" aria-label="Permalink to &quot;弹幕持续时间(秒)&quot;"></a></h3><p>弹幕在屏幕上的持续时间,单位为秒。</p><h3 id="字体" tabindex="-1">字体 <a class="header-anchor" href="#字体" aria-label="Permalink to &quot;字体&quot;"></a></h3><p>弹幕使用的字体。</p><h3 id="字体大小" tabindex="-1">字体大小 <a class="header-anchor" href="#字体大小" aria-label="Permalink to &quot;字体大小&quot;"></a></h3><p>弹幕的字体大小。</p><h3 id="宽度比例" tabindex="-1">宽度比例 <a class="header-anchor" href="#宽度比例" aria-label="Permalink to &quot;宽度比例&quot;"></a></h3><p>计算弹幕宽度的比例,为避免重叠可以调大这个数值。</p><h3 id="水平间距" tabindex="-1">水平间距 <a class="header-anchor" href="#水平间距" aria-label="Permalink to &quot;水平间距&quot;"></a></h3><p>两条弹幕之间最小的水平距离。</p><h3 id="轨道大小" tabindex="-1">轨道大小 <a class="header-anchor" href="#轨道大小" aria-label="Permalink to &quot;轨道大小&quot;"></a></h3><p>弹幕所占据的高度,即“行高度/行间距”。</p><h3 id="滚动弹幕高度百分比" tabindex="-1">滚动弹幕高度百分比 <a class="header-anchor" href="#滚动弹幕高度百分比" aria-label="Permalink to &quot;滚动弹幕高度百分比&quot;"></a></h3><p>屏幕上滚动弹幕最多高度百分比。</p><h3 id="底部弹幕高度百分比" tabindex="-1">底部弹幕高度百分比 <a class="header-anchor" href="#底部弹幕高度百分比" aria-label="Permalink to &quot;底部弹幕高度百分比&quot;"></a></h3><p>屏幕上底部弹幕最多高度百分比。</p><h3 id="透明度-0-255" tabindex="-1">透明度0-255 <a class="header-anchor" href="#透明度-0-255" aria-label="Permalink to &quot;透明度0-255&quot;"></a></h3><p>透明度,取值范围为 0-255。实际透明度百分比为 <code>透明度 / 255</code></p><h3 id="描边宽度" tabindex="-1">描边宽度 <a class="header-anchor" href="#描边宽度" aria-label="Permalink to &quot;描边宽度&quot;"></a></h3><p>弹幕的描边宽度。</p><h3 id="时间偏移-秒" tabindex="-1">时间偏移(秒) <a class="header-anchor" href="#时间偏移-秒" aria-label="Permalink to &quot;时间偏移(秒)&quot;"></a></h3><p>时间轴偏移,&gt;0 会让弹幕延后,&lt;0 会让弹幕提前,单位为秒。</p><h3 id="粗体显示" tabindex="-1">粗体显示 <a class="header-anchor" href="#粗体显示" aria-label="Permalink to &quot;粗体显示&quot;"></a></h3><p>弹幕是否加粗。</p><h2 id="高级设置" tabindex="-1">高级设置 <a class="header-anchor" href="#高级设置" aria-label="Permalink to &quot;高级设置&quot;"></a></h2><p>该页主要用于调整程序的请求与下载行为。</p><div class="tip custom-block github-alert"><p class="custom-block-title">TIP</p><p></p><ol><li>一般来说,视频、分页的并发数不需要过大;</li><li>请求频率限制可以根据网络环境和 api 请求频率进行调整,如果经常遇到风控可以优先调小该值。</li></ol></div><h3 id="视频并发数、分页并发数" tabindex="-1">视频并发数、分页并发数 <a class="header-anchor" href="#视频并发数、分页并发数" aria-label="Permalink to &quot;视频并发数、分页并发数&quot;"></a></h3><p>视频并发数video和分页并发数page是控制 bili-sync 视频下载任务并发度的配置项。</p><p>程序的处理逻辑是严格从上到下的,即程序会首先并发处理多个 video每个 video 内再并发处理多个 page程序的并发度可以简单衡量为 <code>video * page</code>(很多 video 都只有单个 page实际会更接近 <code>video * 1</code><code>video</code><code>page</code> 两个参数就是控制此处的,调节这两个参数可以宏观上控制程序的并发度。</p><h3 id="nfo-时间类型" tabindex="-1">NFO 时间类型 <a class="header-anchor" href="#nfo-时间类型" aria-label="Permalink to &quot;NFO 时间类型&quot;"></a></h3><p>表示在视频 NFO 文件中使用的时间类型,可选值为收藏时间和发布时间。</p><p>仅收藏夹视频会对这两项进行区分,其它类型的视频这两者取值完全相同。</p><h3 id="请求频率限制" tabindex="-1">请求频率限制 <a class="header-anchor" href="#请求频率限制" aria-label="Permalink to &quot;请求频率限制&quot;"></a></h3><p>每个执行的任务内部都会发起若干 api 请求以获取信息,这些请求的整体频率受到请求频率的限制,使用漏桶算法实现。超过这个频率的请求会被暂时阻塞,直到漏桶中有空间为止。</p><p>时间间隔(毫秒)与限制请求数共同表明的意思时:程序在每个时间间隔内最多允许多少个请求。调节这一项可以从微观上控制程序的并行度,同时也是最直接、最显著的控制 api 请求频率的方法。</p><p>据观察 b 站风控限制大多集中在主站,因此目前请求频率限制仅作用于主站的各类请求,如请求各类视频列表、视频信息、获取流下载地址等,对实际的视频、图片下载过程不做限制。</p><h3 id="单文件分块下载" tabindex="-1">单文件分块下载 <a class="header-anchor" href="#单文件分块下载" aria-label="Permalink to &quot;单文件分块下载&quot;"></a></h3><p>单文件分块下载是指将单个视频文件分成多个小块进行下载,这可能有助于提高下载速度。</p><p>程序会首先为这个文件预分配空间,接着将文件分成若干个大小相同的块,为每个块启动单独的异步任务并行下载。</p><h4 id="下载分块数" tabindex="-1">下载分块数 <a class="header-anchor" href="#下载分块数" aria-label="Permalink to &quot;下载分块数&quot;"></a></h4><p>表示单个文件分成多少个小块,默认值为 4。</p><h4 id="启动分块下载的文件大小阈值-字节" tabindex="-1">启动分块下载的文件大小阈值(字节) <a class="header-anchor" href="#启动分块下载的文件大小阈值-字节" aria-label="Permalink to &quot;启动分块下载的文件大小阈值(字节)&quot;"></a></h4><p>表示当单个文件大小超过多少字节时,才会启动分块下载。默认值为 2097152020 MB</p><p>如果文件过小,分块成本可能会超过分块下载带来的收益,因此使用该阈值决定下载策略。</p></div></div></main><footer class="VPDocFooter" data-v-e6f2a212 data-v-5941af80><!--[--><!--]--><div class="edit-info" data-v-5941af80><!----><div class="last-updated" data-v-5941af80><p class="VPLastUpdated" data-v-5941af80 data-v-19a7ae4e>上次更新于: <time datetime="2026-03-26T12:39:41.000Z" data-v-19a7ae4e></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-5941af80><span class="visually-hidden" id="doc-footer-aria-label" data-v-5941af80>Pager</span><div class="pager" data-v-5941af80><a class="VPLink link pager-link prev" href="/quick-start" data-v-5941af80><!--[--><span class="desc" data-v-5941af80>上一页</span><span class="title" data-v-5941af80>快速开始</span><!--]--></a></div><div class="pager" data-v-5941af80><a class="VPLink link pager-link next" href="/args" data-v-5941af80><!--[--><span class="desc" data-v-5941af80>下一页</span><span class="title" data-v-5941af80>命令行参数</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
</body>
</html>