大家好,好久不见,我是某昨。
众所周知,叔叔在今年的某个时间点悄悄地关闭了分P投稿的入口,目前唯一的分P投稿入口就只有投稿工具和旧版的手机客户端了。由于叔叔在去年某个时候增加的1000粉限制,普通用户本就不能投稿分P;但这次的全量化则是针对所有用户的一击重锤。
由此,sswa 诞生了。sswa 是在 biliup-rs 的基础上进行开发的,为的是符合我个人以及身边一些其他用户的投稿需求。sswa 支持的首要分区为官延区,一切与该分区投稿相关的功能均以最高优先级开发。
ToC
协议相关
biliup-rs
以 MIT
协议开源。与之相对,sswa
以 Apache-2.0
协议开源,但其中任意涉及到与 biliup-rs
相关的部分遵循 MIT
协议。为不违反原协议,这个涉及的范围非常广泛。
后续 sswa
可能会将协议修改为 Rust
社区中更常用的 Apache-MIT
双协议。
下载
sswa
仍然处于开发阶段,因此暂时不提供 Release
包下载,但用户可以通过下载 GitHub Action
构建的 nightly
版本体验该工具的功能。
需要注意的是,下载 nightly
构建需要用户在 GitHub
已登录状态下进行。
首先,进入项目的 Actions。项目的 Actions
页为 [https://github.com/Yesterday17/sswa/actions](https://github.com/Yesterday17/sswa/actions)
,点击进入即可。如下图所示:
然后,点击最上方的 Workflow
。例如上图就是点击 skip levels
。最后将滚动条拉到页面底部,就可以看到不同平台的构建了。
所有构建均只支持 64 位操作系统,需要 32 位版本的可以手动构建。Linux
构建提供了 GLIBC
和 MUSL
两个版本,可以按需选择。
登录
此处以 Windows
为例,以 me
的身份登录。
会提示需要打开链接登录,在对应的链接中完成登录就可以了。
配置文件
sswa
是为重复投稿设计的,因此存在配置和模板的概念。配置所处的目录可以通过以下命令获得:
这条命令会输出 sswa 使用的配置文件目录,此后对配置文件的修改都需要在该目录中进行,简称为 $HOME
。
全局配置
全局配置文件存储在 $HOME/config.toml
,内容如下:
通过指定 line
参数,可以手动选择一条投稿线路,供后续使用。建议不使用该项,这样每次投稿前都会对可用的线路进行测速,并选择最优线路投稿。
通过指定 default-user
,我们可以省略后续的一些参数。由于上文中登录使用的是 me
,因此这里也填写 me
。
scale-cover
则是自动生成合适大小封面的一个参数。当设置为 true
时,sswa
会针对原图生成适合作为 bilibili
封面的图片。我个人投稿一般会打开这个选项,但它毕竟会对封面图片作一定修改,所以默认值为 false
。
模板配置
模板配置存储在 $HOME/templates
目录下,须命名为 模板名.toml
。一个样例模板内容如下:
模板解析
sswa
的模板功能基于 [TinyTemplate](https://github.com/bheisler/TinyTemplate)
修改而来,支持变量、条件语句等。目前除 default-user
之外的所有字段均已支持模板字符串。
变量
嵌入变量的格式为 {{变量名}}
。如上文中的 {{ s7i }}
。sswa
自带了部分系统变量,以 $
字符开头,如下表所示:
变量名 | 说明 |
$config_root | sswa 配置文件的根目录 |
$file_name | 第一个投稿视频的文件名(包含后缀名) |
$file_stem | 第一个投稿视频的文件名(不包含后缀名) |
$file_pwd | 第一个投稿视频所在的目录 |
一个使用了较多变量的例子如下:
去除空字符(Trim)
上文中的 {{
、}}
、{%
和 %}
旁边有一个字符 -
,这个字符就是用来去除空字符的。空字符包括空格、换行、制表符等,-
字符在哪一侧,就去除哪一侧的空字符。
以下面的模板为例,假设 s7i
的内容为 s7i
,则输出的内容为 s7i123
。如果没有 -
,输出的内容则是 s7i 123
。-
去除了 <空格>123
字符串中靠近 {{ s7i }}
部分的空字符。
语句
语句以 {%
开始,%}
结束。条件语句包括 {% if <condition> %}
,{% else %}
和 {% endif %}
。
如下文中的 dynamic-text
就使用了 s7i
变量。当该变量存在时,动态的文本为 私は妻の(s7i的内容)を愛しています。
简单投稿
对于基本的投稿,可以通过以下命令完成。
当模板中存在变量时,sswa
会提示用户输入变量。所有变量均输入完成后,会向用户展示投稿内容,并要求用户复核。
复核通过后,sswa
会对视频和封面进行上传,之后要做的就只有等待了。
变量文件
通过命令行的提示输入变量内容固然可取,但一旦出现问题,所有的内容就需要重新输入一遍,有点麻烦。所以 sswa
支持通过变量文件的方式指定变量的内容,并通过 -f
指定变量文件的路径。
简单格式
变量文件的简单格式是以行为单位的 key=value
格式。如下例:
以 #
开头的行是注释,不会被解析;普通的变量行则是 key=value
的形式进行解析,value
部分的 \n
会被替换成换行。
参数 --quote
用于控制 value
部分单双引号的处理行为。当未指定时,value
部分的成堆引号将会被移除,以保持和旧版 env
行为的一致。
JSON 格式
当变量文件的第一个字符为 {
时,会以 JSON
格式进行解析。JSON
格式下的变量不会被作任何特殊处理。
增加分P
对使用了 sswa
投稿的视频,如果投稿用户的粉丝数量在 1000
以上,即可通过网页端添加分P。但其他情况下,分P是无法增加的。因此 sswa
提供了添加分P 的功能。命令如下:
其中的 <视频ID>
使用 av
号或 BV
号均可。