pull file
Some checks failed
CodeQL / Analyze (csharp) (push) Has been cancelled
Close Stale Issues / close_stale_issues (push) Has been cancelled
repo-sync / repo-sync (push) Has been cancelled
auto-deploy-tencent-scf / pre-check (push) Has been cancelled
auto-deploy-tencent-scf / deploy serverless (push) Has been cancelled
18
.config/dotnet-tools.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"version": 1,
|
||||
"isRoot": true,
|
||||
"tools": {
|
||||
"csharpier": {
|
||||
"version": "1.0.3",
|
||||
"commands": [
|
||||
"csharpier"
|
||||
]
|
||||
},
|
||||
"husky": {
|
||||
"version": "0.7.2",
|
||||
"commands": [
|
||||
"husky"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
15
.dockerignore
Normal file
@@ -0,0 +1,15 @@
|
||||
# .dockerignore
|
||||
|
||||
.git
|
||||
.gitattributes
|
||||
.gitignore
|
||||
.github
|
||||
|
||||
.editorconfig
|
||||
|
||||
README.md
|
||||
|
||||
Dockerfile
|
||||
|
||||
[b|B]in
|
||||
[O|o]bj
|
||||
260
.editorconfig
Normal file
@@ -0,0 +1,260 @@
|
||||
# EditorConfig is awesome: https://EditorConfig.org
|
||||
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
# Default settings:
|
||||
# A newline ending every file
|
||||
# Use CRLF line break
|
||||
# Use 4 spaces as indentation
|
||||
[*]
|
||||
end_of_line = lf
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
# Json config files
|
||||
[*.json]
|
||||
indent_size = 2
|
||||
|
||||
# Yaml config files
|
||||
[*.{yml,yaml}]
|
||||
indent_size = 2
|
||||
|
||||
# Xml project files
|
||||
[*.{csproj,vcxproj,vcxproj.filters,proj,nativeproj,locproj}]
|
||||
indent_size = 2
|
||||
|
||||
# Xml config files
|
||||
[*.{props,targets,config,nuspec}]
|
||||
indent_size = 2
|
||||
|
||||
# c# 文件
|
||||
[*.cs]
|
||||
|
||||
#### Core EditorConfig 选项 ####
|
||||
|
||||
# 缩进和间距
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
tab_width = 4
|
||||
|
||||
# 新行首选项
|
||||
end_of_line = lf
|
||||
insert_final_newline = false
|
||||
|
||||
#### .NET 编码约定 ####
|
||||
|
||||
# 组织 Using
|
||||
dotnet_separate_import_directive_groups = false
|
||||
dotnet_sort_system_directives_first = false
|
||||
file_header_template = unset
|
||||
|
||||
# this. 和 Me. 首选项
|
||||
dotnet_style_qualification_for_event = false
|
||||
dotnet_style_qualification_for_field = false
|
||||
dotnet_style_qualification_for_method = false
|
||||
dotnet_style_qualification_for_property = false
|
||||
|
||||
# 语言关键字与 bcl 类型首选项
|
||||
dotnet_style_predefined_type_for_locals_parameters_members = true
|
||||
dotnet_style_predefined_type_for_member_access = true
|
||||
|
||||
# 括号首选项
|
||||
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
|
||||
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
|
||||
dotnet_style_parentheses_in_other_operators = never_if_unnecessary
|
||||
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity
|
||||
|
||||
# 修饰符首选项
|
||||
dotnet_style_require_accessibility_modifiers = for_non_interface_members
|
||||
|
||||
# 表达式级首选项
|
||||
dotnet_style_coalesce_expression = true
|
||||
dotnet_style_collection_initializer = true
|
||||
dotnet_style_explicit_tuple_names = true
|
||||
dotnet_style_namespace_match_folder = true
|
||||
dotnet_style_null_propagation = true
|
||||
dotnet_style_object_initializer = true
|
||||
dotnet_style_operator_placement_when_wrapping = beginning_of_line
|
||||
dotnet_style_prefer_auto_properties = true
|
||||
dotnet_style_prefer_collection_expression = when_types_loosely_match
|
||||
dotnet_style_prefer_compound_assignment = true
|
||||
dotnet_style_prefer_conditional_expression_over_assignment = true
|
||||
dotnet_style_prefer_conditional_expression_over_return = true
|
||||
dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed
|
||||
dotnet_style_prefer_inferred_anonymous_type_member_names = true
|
||||
dotnet_style_prefer_inferred_tuple_names = true
|
||||
dotnet_style_prefer_is_null_check_over_reference_equality_method = true
|
||||
dotnet_style_prefer_simplified_boolean_expressions = true
|
||||
dotnet_style_prefer_simplified_interpolation = true
|
||||
|
||||
# 字段首选项
|
||||
dotnet_style_readonly_field = true
|
||||
|
||||
# 参数首选项
|
||||
dotnet_code_quality_unused_parameters = all
|
||||
|
||||
# 禁止显示首选项
|
||||
dotnet_remove_unnecessary_suppression_exclusions = none
|
||||
|
||||
# 新行首选项
|
||||
dotnet_style_allow_multiple_blank_lines_experimental = true
|
||||
dotnet_style_allow_statement_immediately_after_block_experimental = true
|
||||
|
||||
#### c# 编码约定 ####
|
||||
|
||||
# var 首选项
|
||||
csharp_style_var_elsewhere = false
|
||||
csharp_style_var_for_built_in_types = false
|
||||
csharp_style_var_when_type_is_apparent = true
|
||||
|
||||
# Expression-bodied 成员
|
||||
csharp_style_expression_bodied_accessors = true
|
||||
csharp_style_expression_bodied_constructors = false
|
||||
csharp_style_expression_bodied_indexers = true
|
||||
csharp_style_expression_bodied_lambdas = true
|
||||
csharp_style_expression_bodied_local_functions = false
|
||||
csharp_style_expression_bodied_methods = true
|
||||
csharp_style_expression_bodied_operators = false
|
||||
csharp_style_expression_bodied_properties = true
|
||||
|
||||
# 模式匹配首选项
|
||||
csharp_style_pattern_matching_over_as_with_null_check = true
|
||||
csharp_style_pattern_matching_over_is_with_cast_check = true
|
||||
csharp_style_prefer_extended_property_pattern = true
|
||||
csharp_style_prefer_not_pattern = true
|
||||
csharp_style_prefer_pattern_matching = true
|
||||
csharp_style_prefer_switch_expression = true
|
||||
|
||||
# Null 检查首选项
|
||||
csharp_style_conditional_delegate_call = true
|
||||
|
||||
# 修饰符首选项
|
||||
csharp_prefer_static_local_function = true
|
||||
csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async
|
||||
csharp_style_prefer_readonly_struct = true
|
||||
csharp_style_prefer_readonly_struct_member = true
|
||||
|
||||
# 代码块首选项
|
||||
csharp_prefer_braces = when_multiline
|
||||
csharp_prefer_simple_using_statement = true
|
||||
csharp_style_namespace_declarations = file_scoped
|
||||
csharp_style_prefer_method_group_conversion = true
|
||||
csharp_style_prefer_primary_constructors = true
|
||||
csharp_style_prefer_top_level_statements = true
|
||||
|
||||
# 表达式级首选项
|
||||
csharp_prefer_simple_default_expression = true
|
||||
csharp_style_deconstructed_variable_declaration = true
|
||||
csharp_style_implicit_object_creation_when_type_is_apparent = true
|
||||
csharp_style_inlined_variable_declaration = true
|
||||
csharp_style_prefer_index_operator = true
|
||||
csharp_style_prefer_local_over_anonymous_function = true
|
||||
csharp_style_prefer_null_check_over_type_check = true
|
||||
csharp_style_prefer_range_operator = true
|
||||
csharp_style_prefer_tuple_swap = true
|
||||
csharp_style_prefer_utf8_string_literals = true
|
||||
csharp_style_throw_expression = true
|
||||
csharp_style_unused_value_assignment_preference = discard_variable
|
||||
csharp_style_unused_value_expression_statement_preference = discard_variable
|
||||
|
||||
# "using" 指令首选项
|
||||
csharp_using_directive_placement = outside_namespace
|
||||
|
||||
# 新行首选项
|
||||
csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true
|
||||
csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true
|
||||
csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = true
|
||||
csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true
|
||||
csharp_style_allow_embedded_statements_on_same_line_experimental = true
|
||||
|
||||
#### C# 格式规则 ####
|
||||
|
||||
# 新行首选项
|
||||
csharp_new_line_before_catch = true
|
||||
csharp_new_line_before_else = true
|
||||
csharp_new_line_before_finally = true
|
||||
csharp_new_line_before_members_in_anonymous_types = true
|
||||
csharp_new_line_before_members_in_object_initializers = true
|
||||
csharp_new_line_before_open_brace = all
|
||||
csharp_new_line_between_query_expression_clauses = true
|
||||
|
||||
# 缩进首选项
|
||||
csharp_indent_block_contents = true
|
||||
csharp_indent_braces = false
|
||||
csharp_indent_case_contents = true
|
||||
csharp_indent_case_contents_when_block = true
|
||||
csharp_indent_labels = one_less_than_current
|
||||
csharp_indent_switch_labels = true
|
||||
|
||||
# 空格键首选项
|
||||
csharp_space_after_cast = false
|
||||
csharp_space_after_colon_in_inheritance_clause = true
|
||||
csharp_space_after_comma = true
|
||||
csharp_space_after_dot = false
|
||||
csharp_space_after_keywords_in_control_flow_statements = true
|
||||
csharp_space_after_semicolon_in_for_statement = true
|
||||
csharp_space_around_binary_operators = before_and_after
|
||||
csharp_space_around_declaration_statements = false
|
||||
csharp_space_before_colon_in_inheritance_clause = true
|
||||
csharp_space_before_comma = false
|
||||
csharp_space_before_dot = false
|
||||
csharp_space_before_open_square_brackets = false
|
||||
csharp_space_before_semicolon_in_for_statement = false
|
||||
csharp_space_between_empty_square_brackets = false
|
||||
csharp_space_between_method_call_empty_parameter_list_parentheses = false
|
||||
csharp_space_between_method_call_name_and_opening_parenthesis = false
|
||||
csharp_space_between_method_call_parameter_list_parentheses = false
|
||||
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
|
||||
csharp_space_between_method_declaration_name_and_open_parenthesis = false
|
||||
csharp_space_between_method_declaration_parameter_list_parentheses = false
|
||||
csharp_space_between_parentheses = false
|
||||
csharp_space_between_square_brackets = false
|
||||
|
||||
# 包装首选项
|
||||
csharp_preserve_single_line_blocks = true
|
||||
csharp_preserve_single_line_statements = true
|
||||
|
||||
#### 命名样式 ####
|
||||
|
||||
# 命名规则
|
||||
|
||||
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
|
||||
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
|
||||
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
|
||||
|
||||
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
|
||||
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
|
||||
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
|
||||
|
||||
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
|
||||
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
|
||||
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
|
||||
|
||||
# 符号规范
|
||||
|
||||
dotnet_naming_symbols.interface.applicable_kinds = interface
|
||||
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
|
||||
dotnet_naming_symbols.interface.required_modifiers =
|
||||
|
||||
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
|
||||
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
|
||||
dotnet_naming_symbols.types.required_modifiers =
|
||||
|
||||
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
|
||||
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
|
||||
dotnet_naming_symbols.non_field_members.required_modifiers =
|
||||
|
||||
# 命名样式
|
||||
|
||||
dotnet_naming_style.pascal_case.required_prefix =
|
||||
dotnet_naming_style.pascal_case.required_suffix =
|
||||
dotnet_naming_style.pascal_case.word_separator =
|
||||
dotnet_naming_style.pascal_case.capitalization = pascal_case
|
||||
|
||||
dotnet_naming_style.begins_with_i.required_prefix = I
|
||||
dotnet_naming_style.begins_with_i.required_suffix =
|
||||
dotnet_naming_style.begins_with_i.word_separator =
|
||||
dotnet_naming_style.begins_with_i.capitalization = pascal_case
|
||||
63
.github/ISSUE_TEMPLATE/bug-report----.md
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
---
|
||||
name: Bug report(缺陷)
|
||||
about: 缺陷或异常
|
||||
title: "【Bug】<请在标题中清晰地概述你要反馈的异常或缺陷>"
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!-- 请完整填写如下信息 -->
|
||||
<!-- 勾选项可以在提交之后,进行勾选 -->
|
||||
|
||||
### 版本
|
||||
|
||||
BiliTool版本号:`x.x.x`
|
||||
|
||||
### 确认
|
||||
|
||||
- [ ] 是的,我已搜索并确认,没有其他相同的议题
|
||||
- [ ] 是的,我确认,已尝试升级到最新版,但未解决
|
||||
|
||||
### 服务器架构
|
||||
|
||||
- [ ] x64
|
||||
- [ ] arm64
|
||||
- [ ] arm
|
||||
- [ ] 其他(请在下面补充)
|
||||
|
||||
### 服务器系统
|
||||
|
||||
- [ ] Windows
|
||||
- [ ] macOS
|
||||
- [ ] Linux
|
||||
- [ ] Debian
|
||||
- [ ] Ubuntu
|
||||
- [ ] Windows
|
||||
- [ ] Alpine
|
||||
- [ ] Centos
|
||||
- [ ] 其他(请在下面补充)
|
||||
|
||||
### 选择的BiliTool运行模式
|
||||
|
||||
- [ ] docker
|
||||
- [ ] podman
|
||||
- [ ] 下载的Release包
|
||||
- [ ] 其他(请在下面补充)
|
||||
|
||||
### 问题描述
|
||||
|
||||
<!-- 请在下方清晰的描述所您所遇到的问题 -->
|
||||
<这里>
|
||||
|
||||
### 日志信息
|
||||
|
||||
<!-- 请在下方贴出Debug级别的日志信息,以便更高效的确定和解决问题 -->
|
||||
|
||||
<details>
|
||||
|
||||
```
|
||||
<这里>
|
||||
```
|
||||
|
||||
</details>
|
||||
93
.github/ISSUE_TEMPLATE/bug-report-qinglong----.md
vendored
Normal file
@@ -0,0 +1,93 @@
|
||||
---
|
||||
name: 【QingLong】Bug report(缺陷)
|
||||
about: 缺陷或异常(青龙专属)
|
||||
title: "【Bug】【青龙】<请在标题中清晰地概述你要反馈的异常或缺陷>"
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!-- 请完整填写如下信息 -->
|
||||
<!-- 勾选项可以在提交之后,进行勾选 -->
|
||||
|
||||
### 版本
|
||||
|
||||
BiliTool版本号:`x.x.x`
|
||||
|
||||
青龙版本号:`x.x.x`
|
||||
|
||||
### 确认
|
||||
|
||||
- [ ] 是的,我已搜索并确认,没有其他相同的议题
|
||||
- [ ] 是的,我确认,已尝试升级bilitool到最新版,但未解决
|
||||
- [ ] 是的,我确认,已尝试升级青龙到最新版,但未解决
|
||||
|
||||
### 服务器架构
|
||||
|
||||
- [ ] x64
|
||||
- [ ] arm64
|
||||
- [ ] arm
|
||||
- [ ] 其他(请在下面补充)
|
||||
|
||||
### 服务器系统
|
||||
|
||||
- [ ] Windows
|
||||
- [ ] macOS
|
||||
- [ ] Linux
|
||||
- [ ] Debian
|
||||
- [ ] Ubuntu
|
||||
- [ ] Windows
|
||||
- [ ] Alpine
|
||||
- [ ] Centos
|
||||
- [ ] 其他(请在下面补充)
|
||||
|
||||
### 青龙容器类型
|
||||
|
||||
- [ ] Docker
|
||||
- [ ] Podman
|
||||
- [ ] 其他(请在下面补充)
|
||||
|
||||
### 青龙镜像
|
||||
|
||||
- [ ] whyour/qinglong:latest(Alpine)
|
||||
- [ ] whyour/qinglong:debian(Debian)
|
||||
|
||||
### 选择的BiliTool运行模式
|
||||
|
||||
- [ ] dotnet
|
||||
- [ ] bilitool
|
||||
|
||||
### 如果是青龙拉库相关bug,请贴出拉库方式截图
|
||||
|
||||
- [ ] 否
|
||||
- [ ] 是,截图如下
|
||||
|
||||
### 如果是缺失文件相关bug,请贴出容器内文件路径信息
|
||||
|
||||
- [ ] 否
|
||||
- [ ] 是,信息如下
|
||||
|
||||
查看方式参考文档:[提示文件不存在或路径异常怎么排查](https://github.com/RayWangQvQ/BiliBiliToolPro/blob/main/qinglong/README.md#43-提示文件不存在或路径异常怎么排查)
|
||||
|
||||
BiliTool仓库文件路径:`<粘贴路径>`
|
||||
|
||||
脚本文件路径:`<粘贴路径>`
|
||||
|
||||
<这里贴截图>
|
||||
|
||||
### 问题描述
|
||||
|
||||
<!-- 请在下方清晰的描述所您所遇到的问题 -->
|
||||
<这里>
|
||||
|
||||
### 日志信息
|
||||
|
||||
<!-- 请在下方贴出Debug级别的日志信息,以便更高效的确定和解决问题 -->
|
||||
|
||||
<details>
|
||||
|
||||
```
|
||||
<这里>
|
||||
```
|
||||
|
||||
</details>
|
||||
21
.github/ISSUE_TEMPLATE/feature-request----.md
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
name: Feature request(建议)
|
||||
about: 建议或需求
|
||||
title: "【建议】<请在标题中清晰地概述你的建议>"
|
||||
labels: 建议/enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!-- 请完整填写如下信息 -->
|
||||
<!-- 勾选项可以在提交之后,进行勾选 -->
|
||||
|
||||
### 确认
|
||||
|
||||
- [ ] 是的,我已搜索并确认,没有其他相同的议题
|
||||
|
||||
### 建议内容
|
||||
|
||||
<!-- 请清晰的描述您的需求或建议 -->
|
||||
<!-- 如果可以,请描述您认为可行的解决方案 -->
|
||||
<这里>
|
||||
18
.github/ISSUE_TEMPLATE/other----.md
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
---
|
||||
name: Other(其他)
|
||||
about: 既不是Bug也不是建议的或不能确定的其他议题
|
||||
title: "【其他】<请在标题中清晰地概述内容>"
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
### 确认
|
||||
|
||||
- [ ] 是的,我确认要选Other,因为我的内容既不是Bug,也不是Feature
|
||||
- [ ] 是的,我已搜索并确认,没有其他相同的议题
|
||||
|
||||
### 描述
|
||||
|
||||
<!-- 请在下方清晰的描述您的内容 -->
|
||||
<这里>
|
||||
5
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<!-- 请详细描述你要PR的内容 -->
|
||||
|
||||
### 内容
|
||||
|
||||
<请描述您将贡献的内容>
|
||||
6
.github/pull.yml
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
version: "1"
|
||||
rules: # Array of rules
|
||||
- base: main # Required. Target branch
|
||||
upstream: RayWangQvQ:main # Required. Must be in the same fork network.
|
||||
mergeMethod: hardreset # Optional, one of [none, merge, squash, rebase, hardreset], Default: hardreset.
|
||||
mergeUnstable: true # Optional, merge pull request even when the mergeable_state is not clean. Default: true
|
||||
54
.github/workflows/auto-deploy-tencent-scf.yml
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
# https://github.com/June1991/serverless-express
|
||||
|
||||
name: auto-deploy-tencent-scf
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "0 2 * * 1,3,5" # 每周一、三、五的10点
|
||||
|
||||
env:
|
||||
IsAutoDeployTencentScf: ${{ secrets.IS_AUTO_DEPLOY_TENCENT_SCF }} # 是否开启自动部署云函数
|
||||
|
||||
jobs:
|
||||
pre-check:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
result: ${{ steps.check.outputs.result }} # 不能直接传递secrets的值,否则会被skip,需要转一下
|
||||
steps:
|
||||
- id: check
|
||||
run: |
|
||||
[ ${{ github.event_name }} == 'workflow_dispatch' -o true == "${{ env.IsAutoDeployTencentScf }}" ] && echo "result=开启" >> $GITHUB_OUTPUT || echo "result=关闭" >> $GITHUB_OUTPUT
|
||||
|
||||
deploy:
|
||||
name: deploy serverless
|
||||
runs-on: ubuntu-latest
|
||||
needs: pre-check
|
||||
# if: env.IsAutoDeployTencentScf=='true' # 这里job.if读取不到env或secrets,很坑...但是发现可以读到needs的outputs值
|
||||
if: needs.pre-check.outputs.result=='开启'
|
||||
steps:
|
||||
- name: clone local repository
|
||||
uses: actions/checkout@v3
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16.x
|
||||
- name: install serverless
|
||||
run: npm i -g serverless-cloud-framework
|
||||
- name: deploy serverless
|
||||
run: |
|
||||
cd ./tencentScf
|
||||
echo "开始配置云函数:"
|
||||
echo "$Tencent_Serverless_Yml"
|
||||
[ -z "$Tencent_Serverless_Yml" ] && echo "未配置serverless.yml,使用默认值" || echo "$Tencent_Serverless_Yml" > serverless.yml
|
||||
echo "开始发布项目"
|
||||
chmod +x publish.sh
|
||||
./publish.sh
|
||||
echo "开始部署到云函数"
|
||||
scf deploy
|
||||
env: # 环境变量
|
||||
STAGE: dev #您的部署环境
|
||||
SERVERLESS_PLATFORM_VENDOR: tencent # serverless海外默认为aws部署,配置为腾讯部署
|
||||
TENCENT_SECRET_ID: ${{ secrets.TENCENT_SECRET_ID }} # 您的腾讯云账号sercret ID
|
||||
TENCENT_SECRET_KEY: ${{ secrets.TENCENT_SECRET_KEY }} # 您的腾讯云账号sercret key
|
||||
Tencent_Serverless_Yml: ${{ secrets.TENCENT_SERVERLESS_YML }} # 云函数配置(区域、环境变量、触发器等)
|
||||
78
.github/workflows/codeql-analysis.yml
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
#
|
||||
# ******** NOTE ********
|
||||
# We have attempted to detect the languages in your repository. Please check
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, develop, release/* ]
|
||||
paths:
|
||||
- '**/*.js'
|
||||
- '**/*.cs'
|
||||
- '**/*.cshtml'
|
||||
- '**/*.csproj'
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ main, develop ]
|
||||
paths:
|
||||
- '**/*.js'
|
||||
- '**/*.cs'
|
||||
- '**/*.cshtml'
|
||||
- '**/*.csproj'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'csharp' ]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
||||
# Learn more about CodeQL language support at https://git.io/codeql-language-support
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
13
.github/workflows/no-toxic-comments.yml
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
name: Check Toxic Comments
|
||||
on: [issue_comment, pull_request_review]
|
||||
|
||||
jobs:
|
||||
toxic_check:
|
||||
runs-on: ubuntu-latest
|
||||
name: Safe space
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Safe space - action step
|
||||
uses: charliegerard/safe-space@master
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
87
.github/workflows/publish-image.yml
vendored
Normal file
@@ -0,0 +1,87 @@
|
||||
name: Publish image
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
autoWithLatestTag:
|
||||
description: 'Auto Add Latest Tag'
|
||||
required: true
|
||||
default: true
|
||||
type: boolean
|
||||
release:
|
||||
types: [created]
|
||||
|
||||
env:
|
||||
DOCKERHUB_USERNAME : ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
DOCKERHUB_PASSWORD : ${{ secrets.DOCKERHUB_PASSWORD }}
|
||||
GHCR_USERNAME: ${{ github.repository_owner }}
|
||||
GHCR_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
|
||||
DOCKER_IMG_NAME: "zai7lou/bili_tool_web"
|
||||
GHC_IMG_NAME: "ghcr.io/raywangqvq/bili_tool_web"
|
||||
|
||||
jobs:
|
||||
PublishImage:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: GetTargetVersion
|
||||
id: getTargetVersion
|
||||
run: |
|
||||
TargetVersion=""
|
||||
if [ "${{ github.event.release.tag_name }}" ] ; then
|
||||
TargetVersion=${{ github.event.release.tag_name }}
|
||||
else
|
||||
TargetVersion=$(grep -oP '(?<=<Version>).*?(?=<\/Version>)' ./common.props)
|
||||
fi
|
||||
echo "TargetVersion: $TargetVersion"
|
||||
echo "TargetVersion=$TargetVersion" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ env.DOCKERHUB_USERNAME }}
|
||||
password: ${{ env.DOCKERHUB_PASSWORD }}
|
||||
|
||||
- name: Log in to ghcr
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ env.GHCR_USERNAME }}
|
||||
password: ${{ env.GHCR_PASSWORD }}
|
||||
|
||||
- name: Generate tags
|
||||
id: tags
|
||||
run: |
|
||||
targetVersion="${{ steps.getTargetVersion.outputs.TargetVersion }}"
|
||||
dockerTagWithVersion="${{ env.DOCKER_IMG_NAME }}:$targetVersion"
|
||||
ghcrTagWithVersion="${{ env.GHC_IMG_NAME }}:$targetVersion"
|
||||
dockerTagWithLatest=""
|
||||
ghcrTagWithLatest=""
|
||||
if [ "${{ github.event.inputs.autoWithLatestTag }}" == "true" ] || [ ${{ github.event.release.created_at }} ]; then
|
||||
dockerTagWithLatest="${{ env.DOCKER_IMG_NAME }}:latest"
|
||||
ghcrTagWithLatest="${{ env.GHC_IMG_NAME }}:latest"
|
||||
fi
|
||||
echo "dockerTagWithVersion=$dockerTagWithVersion" >> $GITHUB_OUTPUT
|
||||
echo "ghcrTagWithVersion=$ghcrTagWithVersion" >> $GITHUB_OUTPUT
|
||||
echo "dockerTagWithLatest=$dockerTagWithLatest" >> $GITHUB_OUTPUT
|
||||
echo "ghcrTagWithLatest=$ghcrTagWithLatest" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: true
|
||||
tags: |
|
||||
${{ steps.tags.outputs.dockerTagWithVersion }}
|
||||
${{ steps.tags.outputs.ghcrTagWithVersion }}
|
||||
${{ steps.tags.outputs.dockerTagWithLatest }}
|
||||
${{ steps.tags.outputs.ghcrTagWithLatest }}
|
||||
45
.github/workflows/publish-release.yml
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
name: Publish release
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
discussions: write
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Publish Release
|
||||
if: ${{ github.repository == 'RayWangQvQ/BiliBiliToolPro' }}
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup .NET Core
|
||||
uses: actions/setup-dotnet@v3
|
||||
with:
|
||||
dotnet-version: '8.0.x'
|
||||
|
||||
- name: Publish and Zip Release
|
||||
run: |
|
||||
cd ./scripts
|
||||
chmod +x ./publish.sh
|
||||
./publish.sh --runtime all
|
||||
|
||||
- name: Read Version
|
||||
id: version
|
||||
run: echo "version=$(cat ./src/Ray.BiliBiliTool.Console/bin/Publish/version.txt)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Create Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
files: './src/Ray.BiliBiliTool.Console/bin/Publish/*.zip'
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
name: "BiliBiliToolPro-V${{ steps.version.outputs.version }}"
|
||||
tag_name: ${{ steps.version.outputs.version }}
|
||||
body_path: './src/Ray.BiliBiliTool.Console/bin/Publish/release_notes.md'
|
||||
discussion_category_name: Announcements
|
||||
generate_release_notes: true
|
||||
fail_on_unmatched_files: true
|
||||
28
.github/workflows/repo-sync.yml
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
# 自动同步上游仓库
|
||||
|
||||
name: repo-sync
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '0 1 * * 1,3,5'
|
||||
# UTC时区,比我们东八区早8小时,上面示例为:每周一、三、五的9点。
|
||||
|
||||
jobs:
|
||||
repo-sync:
|
||||
if: ${{ github.repository != 'RayWangQvQ/BiliBiliToolPro' }}
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: repo-sync
|
||||
uses: repo-sync/github-sync@v2
|
||||
with:
|
||||
source_repo: "https://github.com/RayWangQvQ/BiliBiliToolPro.git"
|
||||
source_branch: "main"
|
||||
destination_branch: "main"
|
||||
sync_tags: "true"
|
||||
github_token: ${{ secrets.PAT }}
|
||||
25
.github/workflows/stale-issues.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
name: Close Stale Issues
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 8 * * *" # 每天的 00:00 运行
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
close_stale_issues:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Close Stale Issues
|
||||
uses: actions/stale@v5
|
||||
with:
|
||||
days-before-stale: 3 # 3 天不活跃后标记Stale
|
||||
days-before-close: 3 # 标记Stale后3天不活跃则关闭问题
|
||||
stale-issue-label: "Stale" # 标记为 "Stale" 的问题
|
||||
stale-issue-message: "🕸️ This has been inactive for 3 days, please confirm if it still needs attention~~" # Comment added
|
||||
close-issue-message: "🚫 This has been inactive for too long and is now closed, feel free to reopen it if needed!" # Comment added
|
||||
only-labels: "needs-more-info" # 只处理标签为 "help wanted" 的问题
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
30
.github/workflows/tag.yml
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
name: Tag
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types:
|
||||
- closed
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
tag:
|
||||
name: add tag
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Get current version
|
||||
id: current_version
|
||||
run: |
|
||||
version=$(grep -oP '(?<=<Version>).*?(?=<\/Version>)' ./common.props)
|
||||
echo "Curent version: $version"
|
||||
echo "current_version=$version" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Tag and push
|
||||
run: |
|
||||
new_tag="${{ steps.current_version.outputs.current_version }}"
|
||||
git tag -f "$new_tag"
|
||||
git push -f origin "$new_tag"
|
||||
19
.github/workflows/verify-pr.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
name: VerifyPR
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [opened, edited]
|
||||
|
||||
jobs:
|
||||
checkTargetBranch:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: Vankka/pr-target-branch-action@v3
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
target: main
|
||||
change-to: develop
|
||||
exclude: RayWangQvQ/BiliBiliToolPro:develop
|
||||
comment: |
|
||||
Your PR was set to `main`, but PRs should be sent to `develop`
|
||||
The base branch of this PR has been automatically changed to `develop`, please check that there are no merge conflicts.
|
||||
382
.gitignore
vendored
Normal file
@@ -0,0 +1,382 @@
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
##
|
||||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||
|
||||
# User-specific files
|
||||
*.rsuser
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Mono auto generated files
|
||||
mono_crash.*
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
x64/
|
||||
x86/
|
||||
[Aa][Rr][Mm]/
|
||||
[Aa][Rr][Mm]64/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
[Ll]og/
|
||||
[Ll]ogs/
|
||||
|
||||
# Visual Studio 2015/2017 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# Visual Studio 2017 auto generated files
|
||||
Generated\ Files/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUnit
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
nunit-*.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# Benchmark Results
|
||||
BenchmarkDotNet.Artifacts/
|
||||
|
||||
# .NET Core
|
||||
project.lock.json
|
||||
project.fragment.lock.json
|
||||
artifacts/
|
||||
|
||||
# StyleCop
|
||||
StyleCopReport.xml
|
||||
|
||||
# Files built by Visual Studio
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_h.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.iobj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.ipdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*_wpftmp.csproj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
*.VC.VC.opendb
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# Visual Studio Trace Files
|
||||
*.e2e
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# JustCode is a .NET coding add-in
|
||||
.JustCode
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# AxoCover is a Code Coverage Tool
|
||||
.axoCover/*
|
||||
!.axoCover/settings.json
|
||||
|
||||
# Visual Studio code coverage results
|
||||
*.coverage
|
||||
*.coveragexml
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||
# but database connection strings (with potential passwords) will be unencrypted
|
||||
*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||
# in these scripts will be unencrypted
|
||||
PublishScripts/
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# NuGet Symbol Packages
|
||||
*.snupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/[Pp]ackages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/[Pp]ackages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/[Pp]ackages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignorable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directories and files
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
Package.StoreAssociation.xml
|
||||
_pkginfo.txt
|
||||
*.appx
|
||||
*.appxbundle
|
||||
*.appxupload
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!?*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.jfm
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
orleans.codegen.cs
|
||||
|
||||
# Including strong name files can present a security risk
|
||||
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||
#*.snk
|
||||
|
||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||
#bower_components/
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
ServiceFabricBackup/
|
||||
*.rptproj.bak
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
*.ndf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
*.rptproj.rsuser
|
||||
*- [Bb]ackup.rdl
|
||||
*- [Bb]ackup ([0-9]).rdl
|
||||
*- [Bb]ackup ([0-9][0-9]).rdl
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
node_modules/
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||
*.vbw
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
paket-files/
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
|
||||
# CodeRush personal settings
|
||||
.cr/personal
|
||||
|
||||
# Python Tools for Visual Studio (PTVS)
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# Cake - Uncomment if you are using it
|
||||
# tools/**
|
||||
# !tools/packages.config
|
||||
|
||||
# Tabs Studio
|
||||
*.tss
|
||||
|
||||
# Telerik's JustMock configuration file
|
||||
*.jmconfig
|
||||
|
||||
# BizTalk build output
|
||||
*.btp.cs
|
||||
*.btm.cs
|
||||
*.odx.cs
|
||||
*.xsd.cs
|
||||
|
||||
# OpenCover UI analysis results
|
||||
OpenCover/
|
||||
|
||||
# Azure Stream Analytics local run output
|
||||
ASALocalRun/
|
||||
|
||||
# MSBuild Binary and Structured Log
|
||||
*.binlog
|
||||
|
||||
# NVidia Nsight GPU debugger configuration file
|
||||
*.nvuser
|
||||
|
||||
# MFractors (Xamarin productivity tool) working folder
|
||||
.mfractor/
|
||||
|
||||
# Local History for Visual Studio
|
||||
.localhistory/
|
||||
|
||||
# BeatPulse healthcheck temp database
|
||||
healthchecksdb
|
||||
|
||||
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
||||
MigrationBackup/
|
||||
|
||||
# Ionide (cross platform F# VS Code tools) working folder
|
||||
.ionide/
|
||||
|
||||
#
|
||||
.idea/
|
||||
tencentScf/.env
|
||||
.obsidian
|
||||
|
||||
# vs code
|
||||
.vscode
|
||||
|
||||
# krew
|
||||
krew/bilipro
|
||||
krew/cmd/kubectl-bilipro
|
||||
krew/kustomization.yaml
|
||||
bilipro
|
||||
krew/pkg/utils/fixtures
|
||||
kustomization.yaml
|
||||
|
||||
# cookie config
|
||||
**/Ray.BiliBiliTool.Console/cookies.json
|
||||
**/Ray.BiliBiliTool.Web/config/cookies.json
|
||||
|
||||
# ut
|
||||
coveragereport
|
||||
|
||||
# bruno
|
||||
bruno/.env
|
||||
|
||||
# db
|
||||
src/**/BiliBiliTool.db*
|
||||
5
.husky/pre-commit
Normal file
@@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
echo "This is pre commit"
|
||||
dotnet husky run --group pre-commit
|
||||
27
.husky/task-runner.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"$schema": "https://alirezanet.github.io/Husky.Net/schema.json",
|
||||
"tasks": [
|
||||
{
|
||||
"name": "welcome-message-example",
|
||||
"command": "bash",
|
||||
"args": [ "-c", "echo Husky.Net is awesome!" ],
|
||||
"windows": {
|
||||
"command": "cmd",
|
||||
"args": ["/c", "echo Husky.Net is awesome!" ]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "csharpier-install",
|
||||
"group": "pre-commit",
|
||||
"command": "dotnet",
|
||||
"args": [ "tool", "install", "csharpier" ]
|
||||
},
|
||||
{
|
||||
"name": "csharpier-fotmat",
|
||||
"group": "pre-commit",
|
||||
"command": "dotnet",
|
||||
"args": [ "csharpier", "format", "${staged}" ],
|
||||
"include": [ "**/*.cs" ]
|
||||
}
|
||||
]
|
||||
}
|
||||
218
CHANGELOG.md
Normal file
@@ -0,0 +1,218 @@
|
||||
## 3.8.2
|
||||
- Fix[#1026]: 更新文档
|
||||
## 3.8.1
|
||||
- Fix[#1005]: 更新文档
|
||||
## 3.8.0
|
||||
- Feature: 使推送的更版本号信息更简洁
|
||||
- Fix[#998]: 修复企业微信 App 推送缺少 access_token 问题
|
||||
- Fix[#996]: 修复 Server 酱推送标题不能为空的问题
|
||||
- Fix[#669]: 企业微信默认消息类型从 markdown 改为 text
|
||||
## 3.7.0
|
||||
- Fix[#989]: 修复钉钉推送标题不能为空的问题
|
||||
## 3.6.0
|
||||
- Feature[#961]: Web 项目新增推送功能
|
||||
- Feature[#961]: 升级 Serilog Pkg
|
||||
- Feature: 使用中心化包管理
|
||||
## 3.5.0
|
||||
- Feature[#924]: 新增 Sqlite 配置源
|
||||
- Feature[#924]: 新增在线配置页
|
||||
- Feature[#924]: 根据任务拆分配置
|
||||
- Feature[#924]: 实现开启、关闭任务功能
|
||||
- Feature[#924]: 实现修改 Cron 定时时间功能
|
||||
- Feature: 定时任务页改为默认50条
|
||||
- Feature: 更新配置文档
|
||||
## 3.4.0
|
||||
- Feature: 优化登录失败时的提示信息
|
||||
- Feature: 更新推送的文档说明
|
||||
## 3.3.0
|
||||
- Feature[#935]: Web 新增登录功能
|
||||
- Feature[#935]: Web 新增修改密码功能
|
||||
- Feature[#935]: 更新文档
|
||||
- Feature: 更新开源协议为 GNU GPLv3
|
||||
- Feature: 拆分原本的 Daily 任务
|
||||
- Doc: 更新文档
|
||||
- Feature: 升级 csharpier
|
||||
- Feature: 变更默认数据库文件位置到 /app/config 下
|
||||
## 3.2.0
|
||||
- Fix: 修复大会员大积分签到任务
|
||||
- Fix: 修复大会员大积分的签到和浏览追番频道任务
|
||||
- Feature[#901]: 实现大会员大积分的浏览影视频道页任务
|
||||
- Feature[#921]: 新增大会员大积分的观看剧集 bruno 信息
|
||||
- Feature: 鉴权不再兼容老版本青龙(老版本需要手动添加 bili cookie)
|
||||
- Feature: 修复 warnings
|
||||
- Feature: 移除无用的using
|
||||
- Fix: 修复 VerifyPR CI/CD 流水线
|
||||
- Feature: README 添加 Trending 信息
|
||||
## 3.1.0
|
||||
- Feature[#842]: 对接青龙新的 OpenAPI,实现青龙版 Bili 登录后自动存储 Cookie
|
||||
- Feature[#842]: 兼容老版本青龙的文件鉴权方式
|
||||
- Feature[#842]: 新增新版青龙添加鉴权的说明文档
|
||||
- Feature[#820]: 更新文档解决配置文件边缘场景下的刷新问题
|
||||
- Fix[#863]: 修复青龙尝试修复异常任务
|
||||
- Fix[#879]: 移除文档内过期的加速器地址
|
||||
- Feature: 开启 Nullable 特性,在编译阶段检查潜在的 NullReferenceException 问题
|
||||
- Feature: 临时取消 Null warning
|
||||
- Fix: Bruno 脚本错误
|
||||
- Fix: 尝试修复发布包时 CI/CD 丢失 change log 问题
|
||||
## 3.0.0
|
||||
- Feature[#884]: 上线 bili_tool_web
|
||||
- Fix[#875]: 青龙检测 dotnet 版本只需要大于等于 8.0
|
||||
- Fix[#876]: 升级 VipBigPoint 接口,解决风控
|
||||
- Fix[#881]: 升级 LiveLottery 接口,解决风控
|
||||
## 2.2.2
|
||||
- Code refactor
|
||||
- Integration Husky.Net and CSharpier
|
||||
## 2.2.1
|
||||
- Fix[#847]: DefaultRequestHeaders can not be null or empty with dotnet 8
|
||||
- Fix[#849]: Temporary disable PublishTrimmed
|
||||
## 2.2.0
|
||||
- Migrate from dotnet 6.0 to dotnet 8.0
|
||||
- Add Bruno to document the APIs
|
||||
- Fix[#824]: Log cookie when qinglong save env failed
|
||||
- Fix[#648]: Set DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 in qinglong to ignore random "Couldn't find a valid ICU package" issue
|
||||
## 2.1.3
|
||||
- Code refactor
|
||||
- Fix[#791]:修复VipBigPoint任务异常导致终止的问题
|
||||
## 2.1.2
|
||||
- Feature: enhancement CICD scripts
|
||||
- Fix[#728]: compatible with qinglong history versions
|
||||
## 2.1.1
|
||||
- Feature: listen ctrl+c at the very beginning
|
||||
- Fix: fix qinglong read cron error
|
||||
## 2.1.0
|
||||
- Feature[#691]: 重构并优化基于qinglong的部署方式,尝试解决偶发的安装失败的问题
|
||||
- Feature[#670]: 新增针对App的AppUserAgent配置项,用于解决大会员大积分异常问题
|
||||
- Fix: 修复CICD发布脚本错误
|
||||
## 2.0.5
|
||||
- Fix[#260]: 再次尝试修复大会员大积分“账号风险”异常
|
||||
## 2.0.4
|
||||
- Fix: 尝试修复大会员大积分“账号风险”异常
|
||||
- Feature:为agent api创建集成测试
|
||||
## 2.0.3
|
||||
- PR[#641]:实现浏览会员购页面与观看正片内容功能
|
||||
- PR[#685]:部分修复大积分功能
|
||||
- Fix:更新过于老旧的UserAgent
|
||||
- Fix:更新排行榜api
|
||||
## 2.0.2
|
||||
- PR[#617]:增加专栏投币功能与领取大会员经验的功能
|
||||
## 2.0.1
|
||||
- PR[#539]:更新文档
|
||||
- PR[#557]:修复直播接口权限不足问题
|
||||
## 2.0.0
|
||||
- Feature[#513]:将基础组件和抽象迁移到nuget包中
|
||||
- Fix[#543]:修复部分Api调用报“访问权限不足”
|
||||
## 1.0.3
|
||||
- Fix #486 : fix release zip error
|
||||
## 1.0.2
|
||||
- Fix #484 : fix read dic config error
|
||||
- Merge PR #472 : add reverse proxy host for telegram notification
|
||||
- Merge PR #483 : update login field for entrypoint
|
||||
## 1.0.1
|
||||
- Fix #463 : do not trust user's ck config
|
||||
- Feature #460 : publish single file when release
|
||||
- Feature: use new scripts for gh actions's release
|
||||
- Feature #473 : let user input when there is no target task in configs
|
||||
## 1.0.0
|
||||
- Feature: Enable asynchronous
|
||||
- Fix #344 : Support `Ctrl + C` to trigger exit event
|
||||
- Fix #451 : Rebuild cookie factory pattern and fix bug of donating coin
|
||||
- Featur: Replace AOP from MethodBoundaryAspect.Fody to Rougamo.Fody, to fix async exception
|
||||
- Merge PR #448 : Fix typo
|
||||
- Fix #446 : Change id type from int to long
|
||||
## 0.4.6
|
||||
- Fix: ck list init empty error
|
||||
- Feature #440 : use 'apk add' to install dotnet in qinglong
|
||||
## 0.4.5
|
||||
- Fix #423 : Change int to string to avoid overflow exception
|
||||
## 0.4.4
|
||||
- Fix #228 : Try to fix sharing video error
|
||||
- Feature: Change default docker image from dockerhub to github
|
||||
## 0.4.3
|
||||
- Feature #419 : Add a auto shell script for installing with docker
|
||||
- Feature #396 : Publish docker image to GitHub pkg
|
||||
## 0.4.2
|
||||
- Merfe PRs #425 #426 #427 : Enhancement docker things, thx @zclkkk
|
||||
## 0.4.1
|
||||
- Merge PR #418 : Fix search video api's error, thx @catlair
|
||||
## 0.4.0
|
||||
- 合并PR( #381 #383 ),新增直播间挂机功能,感谢@bakapiano
|
||||
## 0.3.2
|
||||
- Fix( #358 ),获取auth时兼容老版青龙文件路径
|
||||
- Fix( #364 ),兼容青龙异形response数据类型
|
||||
- Fix( #366 #361 ),修复一些低级bug
|
||||
- Feature( #359 ),兼容读取不到`$QL_DIR`的情况
|
||||
## 0.3.1
|
||||
- Fix( #260 ),在需要的时候encode cookie
|
||||
- 更新文档
|
||||
## 0.3.0
|
||||
- hotfix docker build error
|
||||
- 合并PR(#341),新增krew部署,感谢@chenliu1993
|
||||
- 合并PR(##348),更新文档,感谢@jexjws
|
||||
- 合并PR(#350),修改请求header错误的bug,感谢@catlair
|
||||
- 合并PR(#353),新增python扫码登录的feature(仅针对青龙),感谢@AFUL1991
|
||||
- Feature(#351):重构并新增了扫码登录功能,使之适用于各种部署平台
|
||||
## 0.2.2
|
||||
- 新增`podman`部署教程
|
||||
- 合并PR(#264),腾讯云定时任务补充新增的大会员大积分任务,感谢@layui0320
|
||||
- 合并PR(#262),更新docker的entry.sh,感谢@syrinka
|
||||
- 合并PR(#308 #312),新增Chart部署,感谢@chenliu1993
|
||||
- 合并PR(#309)新增lv6后开启白嫖模式的配置(多账号时可以实现不足lv6的继续投币,达到lv6的开始白嫖),感谢@cluom
|
||||
- 优化青龙安装dotnet的脚本,改为使用官方`dotnet-install.sh`脚本安装(之前测试网络不通,后发现--no-cdn可以)
|
||||
- 优化青龙的执行脚本,提取公共部分,并且在执行前会尝试安装一次dotnet,会清理一次缓存
|
||||
## 0.2.1
|
||||
- 合并PR(#253、#257),更新文档(@layui0320)
|
||||
- 合并PR(#256),重构docker运行是cron构建方式,并优化读取环境变量的方式(@syrinka)
|
||||
- Feature(#65):新增TG推送配置并使用代理功能
|
||||
- Feature(#240):新增gotify推送
|
||||
- Feature(#259):大会员状态改为枚举类型,当非会员时自动跳过大积分任务
|
||||
- Feature:更新、优化docker部署文档
|
||||
## 0.2.0
|
||||
- 新增大会员大积分任务
|
||||
## 0.1.2
|
||||
- 修复`auto-close-pr.yml`分支错误的bug
|
||||
- 【#107】新增自动检测并关闭长时无状态issues的actions:no-response.yml
|
||||
- 【#73】【#105】【#108】更新、纠正文档内容
|
||||
- HostConfiguration,删除了CommandLine配置源,推荐只使用环境变量,同时更新青龙shell脚本内配置
|
||||
- 【#169】领取大会员福利任务更改为每日都尝试执行
|
||||
- 青龙拉库兼容大小写问题
|
||||
- 【#197】合并PR,新增了阅读漫画功能到每日任务中(@ChanceLuo)
|
||||
## 0.1.1
|
||||
- 【#54】优化青龙shell脚本读取仓库目录方式,解决青龙新老版本切换导致出现多个repo目录的bug
|
||||
- 【#82】【#85】合并外部PR,更新了文档
|
||||
- 感谢`JetBrain`提供免费的证书支持
|
||||
## 0.1.0
|
||||
- 【#62】`codeql-analysis.yml`可以指定检查的文件类型
|
||||
- 【#61】`publish-image.yml`手动打镜像时支持指定是否打latest的tag
|
||||
- 【#32】新增企业微信的应用推送,实现微信接受推送消息
|
||||
- 优化日志格式
|
||||
## 0.0.9
|
||||
- 【#47】青龙安装`dotnet`环境,支持arm架构服务器
|
||||
## 0.0.8
|
||||
- 【#55】新增日志推送端:`Microsoft Teams`
|
||||
- 【#27】更新README
|
||||
## 0.0.7
|
||||
- 【#44】兼容青龙最新版本(v2.12.0),修复因青龙调整目录结构导致的bug
|
||||
- 更新`publish-image.yml`,只有`release`时才打`latest tag`,手动运行时不打`latest tag`
|
||||
## 0.0.6
|
||||
- 更新docker镜像的构建
|
||||
- 【#12】新增配置`Notification:IsSingleAccountSingleNotify`,支持开启每个账号单独推送消息
|
||||
- publish-release.yml新增手动输入tag功能
|
||||
## 0.0.5
|
||||
- 优化推送日志,在标题中显示运行的任务名称
|
||||
- 新增`CodeQL`workflows,用于检测代码
|
||||
- 新增`Publish image`workflows,用于发布镜像
|
||||
- 新增`no-toxic-comments.yml`,用于检测评论
|
||||
- 更新`auto-close-pr.yml`,用于修正PR的目标到`develop`
|
||||
## 0.0.4
|
||||
- 【#15】修复`Actions`部署到腾讯云函数时的偶发异常
|
||||
## 0.0.3
|
||||
- 【#16】修复银瓜子兑换硬币bug
|
||||
- 【#18】修改[青龙面板](https://github.com/whyour/qinglong)以`Production`环境运行
|
||||
- [青龙面板](https://github.com/whyour/qinglong)新增拉取dev先行版功能
|
||||
## 0.0.2
|
||||
- 更新文档
|
||||
- 天选抽奖新增黑名单功能
|
||||
- 批量取关新增白名单功能
|
||||
## 0.0.1
|
||||
- 重启项目
|
||||
- 支持[青龙面板](https://github.com/whyour/qinglong)部署
|
||||
80
Directory.Packages.props
Normal file
@@ -0,0 +1,80 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<!-- Microsoft Extensions -->
|
||||
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.2" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="8.0.0" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.1" />
|
||||
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
|
||||
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.2" />
|
||||
<PackageVersion Include="Microsoft.Extensions.FileProviders.Physical" Version="8.0.0" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="8.0.1" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Http" Version="8.0.1" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="8.0.18" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Logging" Version="8.0.1" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.3" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="8.0.1" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Options" Version="8.0.2" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" />
|
||||
<!-- Entity Framework -->
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="8.0.18" />
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Abstractions" Version="8.0.18" />
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.18" />
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="8.0.18" />
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="8.0.18" />
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.18" />
|
||||
<PackageVersion Include="Microsoft.Data.Sqlite" Version="8.0.18" />
|
||||
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.2" />
|
||||
<PackageVersion Include="EFCore.NamingConventions" Version="8.0.3" />
|
||||
<!-- ASP.NET Core -->
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.18" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="8.0.18" />
|
||||
<!-- Serilog -->
|
||||
<PackageVersion Include="Serilog" Version="4.3.0" />
|
||||
<PackageVersion Include="Serilog.AspNetCore" Version="8.0.3" />
|
||||
<PackageVersion Include="Serilog.Extensions.Hosting" Version="8.0.0" />
|
||||
<PackageVersion Include="Serilog.Extensions.Logging" Version="8.0.0" />
|
||||
<PackageVersion Include="Serilog.Settings.Configuration" Version="8.0.4" />
|
||||
<PackageVersion Include="Serilog.Sinks.Console" Version="6.0.0" />
|
||||
<PackageVersion Include="Serilog.Sinks.Debug" Version="3.0.0" />
|
||||
<PackageVersion Include="Serilog.Sinks.File" Version="6.0.0" />
|
||||
<PackageVersion Include="Serilog.Sinks.SQLite.Microsoft" Version="1.0.0" />
|
||||
<!-- Ray Serilog Sinks -->
|
||||
<PackageVersion Include="Ray.Serilog.Sinks.CoolPushBatched" Version="0.1.5" />
|
||||
<PackageVersion Include="Ray.Serilog.Sinks.DingTalkBatched" Version="0.1.5" />
|
||||
<PackageVersion Include="Ray.Serilog.Sinks.GotifyBatched" Version="0.1.5" />
|
||||
<PackageVersion Include="Ray.Serilog.Sinks.MicrosoftTeamsBatched" Version="0.1.5" />
|
||||
<PackageVersion Include="Ray.Serilog.Sinks.OtherApiBatched" Version="0.1.5" />
|
||||
<PackageVersion Include="Ray.Serilog.Sinks.PushPlusBatched" Version="0.1.5" />
|
||||
<PackageVersion Include="Ray.Serilog.Sinks.ServerChanBatched" Version="0.1.5" />
|
||||
<PackageVersion Include="Ray.Serilog.Sinks.TelegramBatched" Version="0.1.5" />
|
||||
<PackageVersion Include="Ray.Serilog.Sinks.WorkWeiXinAppBatched" Version="0.1.5" />
|
||||
<PackageVersion Include="Ray.Serilog.Sinks.WorkWeiXinBatched" Version="0.1.5" />
|
||||
<!-- Quartz -->
|
||||
<PackageVersion Include="Quartz" Version="3.14.0" />
|
||||
<PackageVersion Include="Quartz.AspNetCore" Version="3.14.0" />
|
||||
<PackageVersion Include="Quartz.Serialization.SystemTextJson" Version="3.14.0" />
|
||||
<PackageVersion Include="AppAny.Quartz.EntityFrameworkCore.Migrations.SQLite" Version="0.5.1" />
|
||||
<PackageVersion Include="CronExpressionDescriptor" Version="2.44.0" />
|
||||
<!-- Other packages - 修复版本兼容性问题 -->
|
||||
<PackageVersion Include="Ray.Infrastructure" Version="0.0.26" />
|
||||
<PackageVersion Include="Scrutor" Version="6.1.0" />
|
||||
<PackageVersion Include="WebApiClientCore" Version="2.1.5" />
|
||||
<PackageVersion Include="QRCoder" Version="1.6.0" />
|
||||
<PackageVersion Include="MudBlazor" Version="8.6.0" />
|
||||
<PackageVersion Include="Swashbuckle.AspNetCore" Version="8.1.4" />
|
||||
<PackageVersion Include="Rougamo.Fody" Version="5.0.1" />
|
||||
<PackageVersion Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.21.0" />
|
||||
<!-- Test packages -->
|
||||
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
|
||||
<PackageVersion Include="xunit" Version="2.9.3" />
|
||||
<PackageVersion Include="xunit.runner.visualstudio" Version="3.0.1" />
|
||||
<PackageVersion Include="coverlet.collector" Version="6.0.4" />
|
||||
<PackageVersion Include="FluentAssertions" Version="8.5.0" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
38
Dockerfile
Normal file
@@ -0,0 +1,38 @@
|
||||
#See https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/docker/building-net-docker-images
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
|
||||
WORKDIR /app
|
||||
EXPOSE 8080
|
||||
|
||||
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
|
||||
WORKDIR /code
|
||||
|
||||
COPY ["Directory.Packages.props", "./"]
|
||||
COPY ["src/Ray.BiliBiliTool.Web/Ray.BiliBiliTool.Web.csproj", "src/Ray.BiliBiliTool.Web/"]
|
||||
COPY ["src/Ray.BiliBiliTool.Web.Client/Ray.BiliBiliTool.Web.Client.csproj", "src/Ray.BiliBiliTool.Web.Client/"]
|
||||
COPY ["src/Ray.BiliBiliTool.Application/Ray.BiliBiliTool.Application.csproj", "src/Ray.BiliBiliTool.Application/"]
|
||||
COPY ["src/Ray.BiliBiliTool.Application.Contracts/Ray.BiliBiliTool.Application.Contracts.csproj", "src/Ray.BiliBiliTool.Application.Contracts/"]
|
||||
COPY ["src/Ray.BiliBiliTool.Domain/Ray.BiliBiliTool.Domain.csproj", "src/Ray.BiliBiliTool.Domain/"]
|
||||
COPY ["src/Ray.BiliBiliTool.DomainService/Ray.BiliBiliTool.DomainService.csproj", "src/Ray.BiliBiliTool.DomainService/"]
|
||||
COPY ["src/Ray.BiliBiliTool.Config/Ray.BiliBiliTool.Config.csproj", "src/Ray.BiliBiliTool.Config/"]
|
||||
COPY ["src/Ray.BiliBiliTool.Agent/Ray.BiliBiliTool.Agent.csproj", "src/Ray.BiliBiliTool.Agent/"]
|
||||
COPY ["src/Ray.BiliBiliTool.Infrastructure/Ray.BiliBiliTool.Infrastructure.csproj", "src/Ray.BiliBiliTool.Infrastructure/"]
|
||||
COPY ["src/Ray.BiliBiliTool.Infrastructure.EF/Ray.BiliBiliTool.Infrastructure.EF.csproj", "src/Ray.BiliBiliTool.Infrastructure.EF/"]
|
||||
COPY ["src/BlazingQuartz.Core/BlazingQuartz.Core.csproj", "src/BlazingQuartz.Core/"]
|
||||
COPY ["src/BlazingQuartz.Jobs/BlazingQuartz.Jobs.csproj", "src/BlazingQuartz.Jobs/"]
|
||||
COPY ["src/BlazingQuartz.Jobs.Abstractions/BlazingQuartz.Jobs.Abstractions.csproj", "src/BlazingQuartz.Jobs.Abstractions/"]
|
||||
|
||||
RUN dotnet restore "src/Ray.BiliBiliTool.Web/Ray.BiliBiliTool.Web.csproj"
|
||||
COPY . .
|
||||
WORKDIR "/code/src/Ray.BiliBiliTool.Web"
|
||||
RUN dotnet build "Ray.BiliBiliTool.Web.csproj" -c Release -o /app/build
|
||||
|
||||
FROM build AS publish
|
||||
RUN dotnet publish "Ray.BiliBiliTool.Web.csproj" -c Release -o /app/publish
|
||||
|
||||
FROM base AS final
|
||||
WORKDIR /app
|
||||
COPY --from=publish /app/publish .
|
||||
COPY docker/entrypoint.sh /app/entrypoint.sh
|
||||
RUN rm -rf /var/lib/apt/lists/* \
|
||||
&& chmod +x /app/entrypoint.sh
|
||||
ENTRYPOINT ["/app/entrypoint.sh"]
|
||||
674
LICENSE
Normal file
@@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<https://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
276
README.md
Normal file
@@ -0,0 +1,276 @@
|
||||

|
||||
|
||||
<div align="center">
|
||||
|
||||
<h1 align="center">
|
||||
|
||||
BiliTool
|
||||
|
||||
</h1>
|
||||
|
||||
[](https://github.com/RayWangQvQ/BiliBiliToolPro/stargazers)
|
||||
[](https://github.com/RayWangQvQ/BiliBiliToolPro/network)
|
||||
[](https://github.com/RayWangQvQ/BiliBiliToolPro/issues)
|
||||
[](https://github.com/RayWangQvQ/BiliBiliToolPro/graphs/contributors)
|
||||
[](https://github.com/RayWangQvQ/BiliBiliToolPro/releases)
|
||||
[](https://github.com/RayWangQvQ/BiliBiliToolPro/releases)
|
||||
[](https://github.com/RayWangQvQ/BiliBiliToolPro/blob/main/LICENSE)
|
||||
|
||||
<a href="https://trendshift.io/repositories/3329" target="_blank">
|
||||
<img src="https://trendshift.io/api/badge/repositories/3329" alt="RayWangQvQ%2FBiliBiliToolPro | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
**BiliTool 是一个自动执行任务的工具,当我们忘记做某项任务时,它会像一个贴心小助手,按照我们预先吩咐它的命令,在指定频率、时间范围内帮助我们完成计划的任务。**
|
||||
|
||||
**BiliTool is an automated task execution tool that acts as a helpful assistant, following pre-configured commands to complete planned tasks within specified frequencies and timeframes when we forget to do them.**
|
||||
|
||||
主要功能如下:
|
||||
|
||||
- **扫码登录,自动更新cookie**
|
||||
- **每日获取满额升级经验(登录、投币、点赞、分享视频)(支持指定up主)**
|
||||
- **直播间挂机**
|
||||
- **每天漫画签到**
|
||||
- **每天直播签到**
|
||||
- **直播中心银瓜子兑换为硬币**
|
||||
- **每月领取大会员赠送的 5 张 B 币券和福利(忘记或者不领就浪费了哦)**
|
||||
- **每月领取大会员漫画福利**
|
||||
- **月底在 B 币券过期前进行充电(支持指定想要支持的up主,如果没有喜欢的up,也可以为自己充个电啊,做个用爱为自己发电的人~)**
|
||||
- **直播中心天选时刻自动参与抽奖**
|
||||
- **批量取关**
|
||||
- **大会员大积分任务**
|
||||
- **支持多账号**
|
||||
- **理论上支持所有远端的日志推送(默认支持推送到Telegram、企业微信、钉钉、PushPlus、Server酱、酷推,另外也支持自定义推送到任意api)**
|
||||
---
|
||||
[目录]
|
||||
|
||||
<!-- TOC depthFrom:2 -->
|
||||
|
||||
- [1. 如何使用](#1-如何使用)
|
||||
- [1.1. 部署 BiliTool](#11-部署-bilitool)
|
||||
- [1.1.1. 方案一:免费在线容器](#111-方案一免费在线容器)
|
||||
- [1.1.2. 方式二:青龙](#112-方式二青龙)
|
||||
- [1.1.3. 方式三:Docker 或 Podman 运行](#113-方式三docker-或-podman-运行)
|
||||
- [1.1.4. 方式四:下载程序包到本地或服务器运行](#114-方式四下载程序包到本地或服务器运行)
|
||||
- [1.1.5. 方式五:Chart部署](#115-方式五chart部署)
|
||||
- [1.2. 消息推送(可选)](#12-消息推送可选)
|
||||
- [2. 功能任务说明](#2-功能任务说明)
|
||||
- [3. 个性化自定义配置](#3-个性化自定义配置)
|
||||
- [4. 多账号支持](#4-多账号支持)
|
||||
- [5. 常见问题](#5-常见问题)
|
||||
- [6. 版本发布及更新](#6-版本发布及更新)
|
||||
- [7. 成为开源贡献成员](#7-成为开源贡献成员)
|
||||
- [7.1. 贡献代码](#71-贡献代码)
|
||||
- [7.2. 贡献文档](#72-贡献文档)
|
||||
- [8. 捐赠支持](#8-捐赠支持)
|
||||
- [9. 其他](#9-其他)
|
||||
|
||||
<!-- /TOC -->
|
||||
|
||||
---
|
||||
**Github 仓库地址:[RayWangQvQ/BiliBiliToolPro](https://github.com/RayWangQvQ/BiliBiliToolPro)**
|
||||
|
||||
**注意:**
|
||||
|
||||
- **本应用仅用于学习和测试,作者本人并不对其负责,请于运行测试完成后自行删除,请勿滥用!**
|
||||
- **所有代码都是开源且透明的,任何人均可查看,程序不会保存或滥用任何用户的个人信息**
|
||||
- **应用内几乎所有功能都开放了配置(如任务开关、日期、id等),详细信息可阅读配置文档**
|
||||
|
||||
运行图示:
|
||||
|
||||
<p align="center">
|
||||
<img src="docs/imgs/web-schedules.png" alt="运行图示" width="800" />
|
||||
<br/>
|
||||
<img src="docs/imgs/web-schedules-log.png" alt="运行日志" width="800" />
|
||||
<br/>
|
||||
<img src="docs/imgs/web-configs.png" alt="运行日志" width="800" />
|
||||
<br/>
|
||||
</p>
|
||||
|
||||
## 1. 如何使用
|
||||
|
||||
BiliTool 实现自动完成任务的原理,是通过调用一系列开放的api实现的。
|
||||
|
||||
**要使用 BiliTool,很简单,按照下面教程部署完成,运行后扫码登录即可。**
|
||||
|
||||
### 1.1. 部署 BiliTool
|
||||
|
||||
支持多种部署方式,以下选择任一适合自己的方式即可。
|
||||
|
||||
#### 1.1.1. 方案一:免费在线容器
|
||||
|
||||
有很多平台会提供一定免费额度的在线容器,基于官方镜像,部署 BiliTool 很容易。
|
||||
|
||||
以下以 ClawCloud 为例,其他平台操作类似:
|
||||
|
||||
[>>ClawCloud 部署教程](docs/claw-cloud.md)
|
||||
|
||||
#### 1.1.2. 方式二:青龙
|
||||
|
||||
[>>青龙部署教程](qinglong/README.md)
|
||||
|
||||
#### 1.1.3. 方式三:Docker 或 Podman 运行
|
||||
|
||||
[>>Docker 部署说明](docker/README.md)
|
||||
|
||||
[>>Podman 部署说明](podman/README.md)
|
||||
|
||||
#### 1.1.4. 方式四:下载程序包到本地或服务器运行
|
||||
|
||||
[>>本地部署说明](docs/runInLocal.md)
|
||||
|
||||
#### 1.1.5. 方式五:Chart部署
|
||||
|
||||
[>>Chart部署说明](helm/README.md)
|
||||
|
||||
### 1.2. 消息推送(可选)
|
||||
|
||||
如果配置了推送,执行成功后,指定的接收端会收到推送消息,推送效果如下所示:
|
||||
|
||||
<p align="center">
|
||||
<img src="docs/imgs/push-tg.png" alt="Telegram推送图示" width="300">
|
||||
</p>
|
||||
|
||||
目前默认支持**Telegram推送、PushPlus推送、企业微信应用推送、企业微信推送、钉钉推送、Microsoft Teams推送、Server酱推送和酷推QQ推送**(以上顺序即为个人推荐的排序),如果需要推送到其他端,也可以配置为任意的可以接受消息的Api地址,关于如何配置推送请详见下面的**个性化自定义配置**章节。
|
||||
|
||||
推送配置见:[confifuration](/docs/configuration.md)
|
||||
|
||||
## 2. 功能任务说明
|
||||
|
||||
这里的**任务**是指一组功能的集合,是工具每次运行的最小单位。
|
||||
|
||||
任务列表如下:
|
||||
|
||||
|
||||
| 任务名 | Code | 功能 | 推荐运行频率 |
|
||||
| :--------: | :-------------: | :-----------------------------------------------------------------------------------------------: | :--------------: |
|
||||
| 扫码登录 | Login | 使用app扫码登录,用于第一次运行时初始化cookie,或cookie过期时的更新。不同平台会将cookie存储到不同地方 | 手动 |
|
||||
| 每日任务 | Daily | 完成每日任务获取满额65点经验(登录、观看视频、分享视频、投币),快速升级Lv6 | 每天一次 |
|
||||
| 天选时刻抽奖 | LiveLottery | 直播中心天选时刻抽奖,大部分抽奖都需要关注主播,介意的不要开启 | 每天0-4次 |
|
||||
| 批量取关 | UnfollowBatched | 批量取关指定分组下的所有关注(主要用于清理天选抽奖而产生的关注) | 手动运行 |
|
||||
| 大会员大积分 | VipBigPoint | 大会员大积分任务(签到、浏览、观看) | 每天一次,建议凌晨 |
|
||||
| 直播间挂机 | LiveFansMedal | 直播间挂机 | 每天一次 |
|
||||
| 漫画任务 | Manga | 漫画签到、阅读 | 每天一次 |
|
||||
| 领取大会员漫画权益 | MangaPrivilege | 领取大会员的漫画权益 | 每天一次 |
|
||||
| 银瓜子兑换硬币 | Silver2Coin | 使用银瓜子换取硬币 | 每天一次 |
|
||||
| 免费B币券充电 | Charge | 大会员每31天可免费领取一张5B币券,可用于给除自己以外的UP充电 | 每天一次 |
|
||||
| 领取大会员福利 | VipPrivilege | 领取大会员福利 | 每天一次 |
|
||||
| 测试Cookie | Test | 测试Cookie是否正常 | 手动运行 |
|
||||
|
||||
|
||||
## 3. 个性化自定义配置
|
||||
|
||||
[>>点击查看配置说明文档](docs/configuration.md)
|
||||
|
||||
## 4. 多账号支持
|
||||
|
||||
部署成功后,直接去运行扫码登录任务,扫码成功后,应用会自动更新或添加cookie。
|
||||
|
||||
青龙平台会添加环境变量里,Key 为 `Ray_BiliBiliCookies__0`、`Ray_BiliBiliCookies__1`、`Ray_BiliBiliCookies__2`...
|
||||
|
||||
其他平台默认会添加到名为cookies.json的账号配置文件中:
|
||||
```
|
||||
{
|
||||
"BiliBiliCookies": [
|
||||
"cookie1",
|
||||
"cookie2",
|
||||
"...",
|
||||
],
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
## 5. 常见问题
|
||||
|
||||
[>>点击查看常见问题文档](docs/questions.md)
|
||||
|
||||
[Issues(议题)](https://github.com/RayWangQvQ/BiliBiliToolPro/issues)板块可以用来提交**Bug**和**建议**;
|
||||
|
||||
[Discussions(讨论)](https://github.com/RayWangQvQ/BiliBiliToolPro/discussions)板块可以用来**提问**和**讨论**。
|
||||
|
||||
大部分问题其实都可以在文档、议题和讨论中找到答案。
|
||||
|
||||
所以如果你有疑问,
|
||||
|
||||
* 请先确认是否可以通过升级到最新版本解决
|
||||
* 然后搜索文档(特别是配置说明文档和常见问题文档)、议题和讨论,查看是否已有其他人遇到相同问题、是否已有解决方案
|
||||
|
||||
如果确认还未解决,可以自己提交 Issue,或发布 Discussions 与大家一起探讨,我会尽快确认并解决。
|
||||
|
||||
(关于如何正确的提交Issue,请详见**常见问题文档**)。
|
||||
|
||||
## 6. 版本发布及更新
|
||||
|
||||
当前正处于稳定的迭代开发中,详细待更新和计划内容可参见 [Projects](https://github.com/RayWangQvQ/BiliBiliToolPro/projects) 和 [Issues](https://github.com/RayWangQvQ/BiliBiliToolPro/issues) 。
|
||||
|
||||
想要有重要更新时收到通知的话,可以把仓库右上角的`Star`按钮点亮。
|
||||
|
||||
## 7. 成为开源贡献成员
|
||||
|
||||
### 7.1. 贡献代码
|
||||
|
||||
如果你有好的想法,欢迎向仓库贡献你的代码,贡献步骤:
|
||||
|
||||
* 搜索查看 Issue,确定是否已有人提过同类问题
|
||||
* 对于不确定的主题,为避免code结束后PR不被接受,可以先新建 Issue,描述问题或建议,讨论清楚后再动手编码
|
||||
* 如果确认自己可以解决,请 Fork 仓库后,在**develop 分支**进行编码开发,完成后**提交 PR 到 develop 分支**
|
||||
|
||||
我会尽快进行代码审核,测试成功后会合并入 main 主分支,提前感谢您的贡献。
|
||||
|
||||
### 7.2. 贡献文档
|
||||
|
||||
文档部分由于我个人精力有限(写文档比写代码累多了),所以有些地方写的很简略,甚至有遗漏和错别字,不能贡献代码的朋友也欢迎来一起维护文档,欢迎 PR 来纠正我,一样都算是对开源做贡献了。
|
||||
|
||||
## 8. 捐赠支持
|
||||
|
||||
个人维护开源不易
|
||||
|
||||
如果觉得我写的程序对你小有帮助
|
||||
|
||||
或者,就是单纯的想集资给我买瓶霸王增发液
|
||||
|
||||
那么下面的赞赏码可以扫一扫啦
|
||||
|
||||
(赞赏时记得留下【昵称】和【留言】~ 另外我发现很多留言想要进群或者加好友的,一定一定要记得留下微信号哈,微信赞赏页面是看不到微信号的)
|
||||
|
||||
**☟☟☟ 扫码自动赞赏 1 元:☟☟☟**
|
||||
|
||||

|
||||
|
||||
> 项目中的优先支持的UP主的配置项,默认是作者的 UpId (只是作为了 JSON 配置文件的默认值,代码是干净的),需要更改的话,直接修改相应配置即可(secrets或环境变量等各种方式都行)。
|
||||
当然,不改的话,也算是另一种捐赠支持作者的方式啦。
|
||||
|
||||
感谢支持~
|
||||
|
||||
## 9. 其他
|
||||
|
||||
`API`参考:
|
||||
|
||||
- [www.bilibili.com](https://www.bilibili.com/)
|
||||
|
||||
- [SocialSisterYi/bilibili-API-collect](https://github.com/SocialSisterYi/bilibili-API-collect)
|
||||
|
||||
- [JunzhouLiu/BILIBILI-HELPER](https://github.com/JunzhouLiu/BILIBILI-HELPER)
|
||||
|
||||
❤️Thanks to `JetBrains` for the free certificate support:
|
||||
|
||||
<p align="center">
|
||||
<img src="https://resources.jetbrains.com/storage/products/company/brand/logos/ReSharper.svg" alt="ReSharper logo" width="200">
|
||||
</p>
|
||||
|
||||
❤️Thanks to [YxVM](https://yxvm.com/aff.php?aff=668) & [NodeSeekDev](https://github.com/NodeSeekDev/NodeSupport) for sponsoring the server for testing support:
|
||||
|
||||
<p align="center">
|
||||
<a href="https://yxvm.com/aff.php?aff=668">
|
||||
<img src="docs/imgs/node-support.png" alt="YxVm logo" width="200">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
❤️Thanks to [DartNode](https://dartnode.com?aff=FriskyGopher833) for sponsoring the server for testing support:
|
||||
|
||||
[](https://dartnode.com "Powered by DartNode - Free VPS for Open Source")
|
||||
|
||||
❤️Thank you for your star to this project:
|
||||
|
||||
[](https://www.star-history.com/#RayWangQvQ/BiliBiliToolPro&Date)
|
||||
294
Ray.BiliBiliTool.sln
Normal file
@@ -0,0 +1,294 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.0.32112.339
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UI", "UI", "{38736647-2196-417E-8519-C48A012A63D9}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Application", "Application", "{98051127-2868-4F5C-9B2C-2150975E05F3}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Domain", "Domain", "{120917DC-474C-448B-9EBB-1B3BA3A20B9D}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{AF21E067-3307-4E7F-8CE8-C695E6B61876}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{E9BDDCBE-A57D-4E3B-8252-708088386ADF}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ray.BiliBiliTool.Console", "src\Ray.BiliBiliTool.Console\Ray.BiliBiliTool.Console.csproj", "{DB227D60-0737-45C2-8CEA-F55FDA711301}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConfigTest", "test\ConfigTest\ConfigTest.csproj", "{114D45C8-E4BB-47EE-89AC-BD1DC6FA3BAD}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LogTest", "test\LogTest\LogTest.csproj", "{2039BF6A-5EC4-439C-8D2E-77313075843A}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Infrastructure", "Infrastructure", "{110D3D21-8E9B-45AB-9667-6DA1DB3862AC}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ray.BiliBiliTool.Infrastructure", "src\Ray.BiliBiliTool.Infrastructure\Ray.BiliBiliTool.Infrastructure.csproj", "{7188698C-0A9A-43B2-B3E2-5136B14FDE13}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ray.BiliBiliTool.Application", "src\Ray.BiliBiliTool.Application\Ray.BiliBiliTool.Application.csproj", "{3388A58D-91CC-4875-A29F-3E6FC3B44BF5}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ray.BiliBiliTool.Application.Contracts", "src\Ray.BiliBiliTool.Application.Contracts\Ray.BiliBiliTool.Application.Contracts.csproj", "{B6AEDD60-9C06-4391-9171-65EBD5E9D77A}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ray.BiliBiliTool.Agent", "src\Ray.BiliBiliTool.Agent\Ray.BiliBiliTool.Agent.csproj", "{D5F9FBCE-31BE-4E80-93E2-183CF029431F}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ray.BiliBiliTool.Config", "src\Ray.BiliBiliTool.Config\Ray.BiliBiliTool.Config.csproj", "{191C48BD-5CB5-42CA-B394-7A4A9BFA6275}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ray.BiliBiliTool.DomainService", "src\Ray.BiliBiliTool.DomainService\Ray.BiliBiliTool.DomainService.csproj", "{7105652A-B1C1-4F9E-BA38-8034BC8B26B4}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F3DE0D72-426B-4AD9-B3ED-3343CF4223F1}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
.dockerignore = .dockerignore
|
||||
.editorconfig = .editorconfig
|
||||
.gitignore = .gitignore
|
||||
CHANGELOG.md = CHANGELOG.md
|
||||
common.props = common.props
|
||||
Dockerfile = Dockerfile
|
||||
LICENSE = LICENSE
|
||||
README.md = README.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{73DD457B-E06E-45ED-A6BA-7E3C02F8BDF1}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
.github\pull.yml = .github\pull.yml
|
||||
.github\PULL_REQUEST_TEMPLATE.md = .github\PULL_REQUEST_TEMPLATE.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{61613EF4-3644-42D4-A620-70547291FB38}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
.github\workflows\auto-close-pr.yml = .github\workflows\auto-close-pr.yml
|
||||
.github\workflows\auto-deploy-tencent-scf.yml = .github\workflows\auto-deploy-tencent-scf.yml
|
||||
.github\workflows\codeql-analysis.yml = .github\workflows\codeql-analysis.yml
|
||||
.github\workflows\publish-image.yml = .github\workflows\publish-image.yml
|
||||
.github\workflows\publish-release.yml = .github\workflows\publish-release.yml
|
||||
.github\workflows\repo-sync.yml = .github\workflows\repo-sync.yml
|
||||
.github\workflows\tag.yml = .github\workflows\tag.yml
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docker", "docker", "{A93210FD-27B6-40E4-B08D-391F96CA2754}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
docker\README.md = docker\README.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sample", "sample", "{2F1CB892-336C-4672-8A0A-FBAEB4B9EA8A}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
docker\sample\docker-compose.yml = docker\sample\docker-compose.yml
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{C0173851-1515-4BE1-A018-84E0B64A6877}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
docs\configuration.md = docs\configuration.md
|
||||
docs\donate-list.md = docs\donate-list.md
|
||||
docs\questions.md = docs\questions.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tencentScf", "tencentScf", "{DD86F293-AE70-46CF-837C-8870D8F51237}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
tencentScf\bootstrap = tencentScf\bootstrap
|
||||
tencentScf\index.sh = tencentScf\index.sh
|
||||
tencentScf\publish.bat = tencentScf\publish.bat
|
||||
tencentScf\publish.sh = tencentScf\publish.sh
|
||||
tencentScf\README.md = tencentScf\README.md
|
||||
tencentScf\serverless.yml = tencentScf\serverless.yml
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "qinglong", "qinglong", "{1C6CC38A-A5D5-41EF-9072-70AEEEA211F7}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
qinglong\dotnet-install.sh = qinglong\dotnet-install.sh
|
||||
qinglong\extra.sh = qinglong\extra.sh
|
||||
qinglong\ray-dotnet-install.sh = qinglong\ray-dotnet-install.sh
|
||||
qinglong\README.md = qinglong\README.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DefaultTasks", "DefaultTasks", "{DE60A16C-CA3B-45E9-8A9D-0E91ACEBDEE0}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
qinglong\DefaultTasks\bili_dev_task_daily.sh = qinglong\DefaultTasks\bili_dev_task_daily.sh
|
||||
qinglong\DefaultTasks\bili_dev_task_liveLottery.sh = qinglong\DefaultTasks\bili_dev_task_liveLottery.sh
|
||||
qinglong\DefaultTasks\bili_dev_task_test.sh = qinglong\DefaultTasks\bili_dev_task_test.sh
|
||||
qinglong\DefaultTasks\bili_dev_task_unfollowBatched.sh = qinglong\DefaultTasks\bili_dev_task_unfollowBatched.sh
|
||||
qinglong\DefaultTasks\bili_task_daily.sh = qinglong\DefaultTasks\bili_task_daily.sh
|
||||
qinglong\DefaultTasks\bili_task_liveLottery.sh = qinglong\DefaultTasks\bili_task_liveLottery.sh
|
||||
qinglong\DefaultTasks\bili_task_test.sh = qinglong\DefaultTasks\bili_task_test.sh
|
||||
qinglong\DefaultTasks\bili_task_unfollowBatched.sh = qinglong\DefaultTasks\bili_task_unfollowBatched.sh
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ISSUE_TEMPLATE", "ISSUE_TEMPLATE", "{830361B7-BCC1-4853-879A-761B0FD86826}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
.github\ISSUE_TEMPLATE\bug-report----.md = .github\ISSUE_TEMPLATE\bug-report----.md
|
||||
.github\ISSUE_TEMPLATE\bug-report-qinglong----.md = .github\ISSUE_TEMPLATE\bug-report-qinglong----.md
|
||||
.github\ISSUE_TEMPLATE\feature-request----.md = .github\ISSUE_TEMPLATE\feature-request----.md
|
||||
.github\ISSUE_TEMPLATE\other----.md = .github\ISSUE_TEMPLATE\other----.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BiliAgentTest", "test\BiliAgentTest\BiliAgentTest.csproj", "{F6B8ED3A-5428-4D26-8172-8B41FBF0C4CF}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{75A9CC5C-DF92-4D72-A14C-625AA902855B}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
docker\build\buildImage.cmd = docker\build\buildImage.cmd
|
||||
docker\build\buildImage_amd64.cmd = docker\build\buildImage_amd64.cmd
|
||||
docker\build\buildImage_arm64.cmd = docker\build\buildImage_arm64.cmd
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AppServiceTest", "test\AppServiceTest\AppServiceTest.csproj", "{1D9DFF34-71EA-44AE-85B0-1F10C9BA0D81}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DomainServiceTest", "test\DomainServiceTest\DomainServiceTest.csproj", "{26B21C30-7358-4E7B-A73E-2272F10A6CA8}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InfrastructureTest", "test\InfrastructureTest\InfrastructureTest.csproj", "{90C1DB73-B3DB-4BE5-AD1A-5248FE47860E}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ray.BiliBiliTool.Agent.FunctionalTests", "test\Ray.BiliBiliTool.Agent.FunctionalTests\Ray.BiliBiliTool.Agent.FunctionalTests.csproj", "{16F315CF-056A-4B08-8C3C-A3177EA3CBB9}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{2B5FD099-CC28-4FBC-9F20-F20300C5DFD2}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
scripts\clean.cmd = scripts\clean.cmd
|
||||
scripts\publish.bat = scripts\publish.bat
|
||||
scripts\publish.ps1 = scripts\publish.ps1
|
||||
scripts\publish.sh = scripts\publish.sh
|
||||
scripts\ut.ps1 = scripts\ut.ps1
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ray.BiliBiliTool.Web.Client", "src\Ray.BiliBiliTool.Web.Client\Ray.BiliBiliTool.Web.Client.csproj", "{5772E00F-271F-4B25-8B10-A3C24D8D3E10}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ray.BiliBiliTool.Web", "src\Ray.BiliBiliTool.Web\Ray.BiliBiliTool.Web.csproj", "{189F1FF4-2BFA-4F91-A6B2-00D00AC2910C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlazingQuartz.Core", "src\BlazingQuartz.Core\BlazingQuartz.Core.csproj", "{C947CA59-157C-47F0-A842-7912FACDADA7}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlazingQuartz.Jobs.Abstractions", "src\BlazingQuartz.Jobs.Abstractions\BlazingQuartz.Jobs.Abstractions.csproj", "{5792B0A0-A3F5-461D-AD44-8E8778298BE4}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlazingQuartz.Jobs", "src\BlazingQuartz.Jobs\BlazingQuartz.Jobs.csproj", "{1F93A755-60A6-4B14-A522-633A732F3B91}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ray.BiliBiliTool.Domain", "src\Ray.BiliBiliTool.Domain\Ray.BiliBiliTool.Domain.csproj", "{C1334E67-CCF9-4F5B-9C1F-B9516A8270AB}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ray.BiliBiliTool.Infrastructure.EF", "src\Ray.BiliBiliTool.Infrastructure.EF\Ray.BiliBiliTool.Infrastructure.EF.csproj", "{59583288-CE93-42A4-AC9F-67DE347A02A1}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{DB227D60-0737-45C2-8CEA-F55FDA711301}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{DB227D60-0737-45C2-8CEA-F55FDA711301}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DB227D60-0737-45C2-8CEA-F55FDA711301}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DB227D60-0737-45C2-8CEA-F55FDA711301}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{114D45C8-E4BB-47EE-89AC-BD1DC6FA3BAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{114D45C8-E4BB-47EE-89AC-BD1DC6FA3BAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{114D45C8-E4BB-47EE-89AC-BD1DC6FA3BAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{114D45C8-E4BB-47EE-89AC-BD1DC6FA3BAD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2039BF6A-5EC4-439C-8D2E-77313075843A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2039BF6A-5EC4-439C-8D2E-77313075843A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2039BF6A-5EC4-439C-8D2E-77313075843A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2039BF6A-5EC4-439C-8D2E-77313075843A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7188698C-0A9A-43B2-B3E2-5136B14FDE13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7188698C-0A9A-43B2-B3E2-5136B14FDE13}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7188698C-0A9A-43B2-B3E2-5136B14FDE13}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7188698C-0A9A-43B2-B3E2-5136B14FDE13}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3388A58D-91CC-4875-A29F-3E6FC3B44BF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3388A58D-91CC-4875-A29F-3E6FC3B44BF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3388A58D-91CC-4875-A29F-3E6FC3B44BF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3388A58D-91CC-4875-A29F-3E6FC3B44BF5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B6AEDD60-9C06-4391-9171-65EBD5E9D77A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B6AEDD60-9C06-4391-9171-65EBD5E9D77A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B6AEDD60-9C06-4391-9171-65EBD5E9D77A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B6AEDD60-9C06-4391-9171-65EBD5E9D77A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D5F9FBCE-31BE-4E80-93E2-183CF029431F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D5F9FBCE-31BE-4E80-93E2-183CF029431F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D5F9FBCE-31BE-4E80-93E2-183CF029431F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D5F9FBCE-31BE-4E80-93E2-183CF029431F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{191C48BD-5CB5-42CA-B394-7A4A9BFA6275}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{191C48BD-5CB5-42CA-B394-7A4A9BFA6275}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{191C48BD-5CB5-42CA-B394-7A4A9BFA6275}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{191C48BD-5CB5-42CA-B394-7A4A9BFA6275}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7105652A-B1C1-4F9E-BA38-8034BC8B26B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7105652A-B1C1-4F9E-BA38-8034BC8B26B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7105652A-B1C1-4F9E-BA38-8034BC8B26B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7105652A-B1C1-4F9E-BA38-8034BC8B26B4}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F6B8ED3A-5428-4D26-8172-8B41FBF0C4CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F6B8ED3A-5428-4D26-8172-8B41FBF0C4CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F6B8ED3A-5428-4D26-8172-8B41FBF0C4CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F6B8ED3A-5428-4D26-8172-8B41FBF0C4CF}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1D9DFF34-71EA-44AE-85B0-1F10C9BA0D81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1D9DFF34-71EA-44AE-85B0-1F10C9BA0D81}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1D9DFF34-71EA-44AE-85B0-1F10C9BA0D81}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1D9DFF34-71EA-44AE-85B0-1F10C9BA0D81}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{26B21C30-7358-4E7B-A73E-2272F10A6CA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{26B21C30-7358-4E7B-A73E-2272F10A6CA8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{26B21C30-7358-4E7B-A73E-2272F10A6CA8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{26B21C30-7358-4E7B-A73E-2272F10A6CA8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{90C1DB73-B3DB-4BE5-AD1A-5248FE47860E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{90C1DB73-B3DB-4BE5-AD1A-5248FE47860E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{90C1DB73-B3DB-4BE5-AD1A-5248FE47860E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{90C1DB73-B3DB-4BE5-AD1A-5248FE47860E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{16F315CF-056A-4B08-8C3C-A3177EA3CBB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{16F315CF-056A-4B08-8C3C-A3177EA3CBB9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{16F315CF-056A-4B08-8C3C-A3177EA3CBB9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{16F315CF-056A-4B08-8C3C-A3177EA3CBB9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{5772E00F-271F-4B25-8B10-A3C24D8D3E10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{5772E00F-271F-4B25-8B10-A3C24D8D3E10}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{5772E00F-271F-4B25-8B10-A3C24D8D3E10}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{5772E00F-271F-4B25-8B10-A3C24D8D3E10}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{189F1FF4-2BFA-4F91-A6B2-00D00AC2910C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{189F1FF4-2BFA-4F91-A6B2-00D00AC2910C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{189F1FF4-2BFA-4F91-A6B2-00D00AC2910C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{189F1FF4-2BFA-4F91-A6B2-00D00AC2910C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C947CA59-157C-47F0-A842-7912FACDADA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C947CA59-157C-47F0-A842-7912FACDADA7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C947CA59-157C-47F0-A842-7912FACDADA7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C947CA59-157C-47F0-A842-7912FACDADA7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{5792B0A0-A3F5-461D-AD44-8E8778298BE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{5792B0A0-A3F5-461D-AD44-8E8778298BE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{5792B0A0-A3F5-461D-AD44-8E8778298BE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{5792B0A0-A3F5-461D-AD44-8E8778298BE4}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1F93A755-60A6-4B14-A522-633A732F3B91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1F93A755-60A6-4B14-A522-633A732F3B91}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1F93A755-60A6-4B14-A522-633A732F3B91}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1F93A755-60A6-4B14-A522-633A732F3B91}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C1334E67-CCF9-4F5B-9C1F-B9516A8270AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C1334E67-CCF9-4F5B-9C1F-B9516A8270AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C1334E67-CCF9-4F5B-9C1F-B9516A8270AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C1334E67-CCF9-4F5B-9C1F-B9516A8270AB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{59583288-CE93-42A4-AC9F-67DE347A02A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{59583288-CE93-42A4-AC9F-67DE347A02A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{59583288-CE93-42A4-AC9F-67DE347A02A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{59583288-CE93-42A4-AC9F-67DE347A02A1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{38736647-2196-417E-8519-C48A012A63D9} = {AF21E067-3307-4E7F-8CE8-C695E6B61876}
|
||||
{98051127-2868-4F5C-9B2C-2150975E05F3} = {AF21E067-3307-4E7F-8CE8-C695E6B61876}
|
||||
{120917DC-474C-448B-9EBB-1B3BA3A20B9D} = {AF21E067-3307-4E7F-8CE8-C695E6B61876}
|
||||
{DB227D60-0737-45C2-8CEA-F55FDA711301} = {38736647-2196-417E-8519-C48A012A63D9}
|
||||
{114D45C8-E4BB-47EE-89AC-BD1DC6FA3BAD} = {E9BDDCBE-A57D-4E3B-8252-708088386ADF}
|
||||
{2039BF6A-5EC4-439C-8D2E-77313075843A} = {E9BDDCBE-A57D-4E3B-8252-708088386ADF}
|
||||
{110D3D21-8E9B-45AB-9667-6DA1DB3862AC} = {AF21E067-3307-4E7F-8CE8-C695E6B61876}
|
||||
{7188698C-0A9A-43B2-B3E2-5136B14FDE13} = {110D3D21-8E9B-45AB-9667-6DA1DB3862AC}
|
||||
{3388A58D-91CC-4875-A29F-3E6FC3B44BF5} = {98051127-2868-4F5C-9B2C-2150975E05F3}
|
||||
{B6AEDD60-9C06-4391-9171-65EBD5E9D77A} = {98051127-2868-4F5C-9B2C-2150975E05F3}
|
||||
{D5F9FBCE-31BE-4E80-93E2-183CF029431F} = {120917DC-474C-448B-9EBB-1B3BA3A20B9D}
|
||||
{191C48BD-5CB5-42CA-B394-7A4A9BFA6275} = {120917DC-474C-448B-9EBB-1B3BA3A20B9D}
|
||||
{7105652A-B1C1-4F9E-BA38-8034BC8B26B4} = {120917DC-474C-448B-9EBB-1B3BA3A20B9D}
|
||||
{73DD457B-E06E-45ED-A6BA-7E3C02F8BDF1} = {F3DE0D72-426B-4AD9-B3ED-3343CF4223F1}
|
||||
{61613EF4-3644-42D4-A620-70547291FB38} = {73DD457B-E06E-45ED-A6BA-7E3C02F8BDF1}
|
||||
{A93210FD-27B6-40E4-B08D-391F96CA2754} = {F3DE0D72-426B-4AD9-B3ED-3343CF4223F1}
|
||||
{2F1CB892-336C-4672-8A0A-FBAEB4B9EA8A} = {A93210FD-27B6-40E4-B08D-391F96CA2754}
|
||||
{DD86F293-AE70-46CF-837C-8870D8F51237} = {F3DE0D72-426B-4AD9-B3ED-3343CF4223F1}
|
||||
{1C6CC38A-A5D5-41EF-9072-70AEEEA211F7} = {F3DE0D72-426B-4AD9-B3ED-3343CF4223F1}
|
||||
{DE60A16C-CA3B-45E9-8A9D-0E91ACEBDEE0} = {1C6CC38A-A5D5-41EF-9072-70AEEEA211F7}
|
||||
{830361B7-BCC1-4853-879A-761B0FD86826} = {73DD457B-E06E-45ED-A6BA-7E3C02F8BDF1}
|
||||
{F6B8ED3A-5428-4D26-8172-8B41FBF0C4CF} = {E9BDDCBE-A57D-4E3B-8252-708088386ADF}
|
||||
{75A9CC5C-DF92-4D72-A14C-625AA902855B} = {A93210FD-27B6-40E4-B08D-391F96CA2754}
|
||||
{1D9DFF34-71EA-44AE-85B0-1F10C9BA0D81} = {E9BDDCBE-A57D-4E3B-8252-708088386ADF}
|
||||
{26B21C30-7358-4E7B-A73E-2272F10A6CA8} = {E9BDDCBE-A57D-4E3B-8252-708088386ADF}
|
||||
{90C1DB73-B3DB-4BE5-AD1A-5248FE47860E} = {E9BDDCBE-A57D-4E3B-8252-708088386ADF}
|
||||
{16F315CF-056A-4B08-8C3C-A3177EA3CBB9} = {E9BDDCBE-A57D-4E3B-8252-708088386ADF}
|
||||
{2B5FD099-CC28-4FBC-9F20-F20300C5DFD2} = {F3DE0D72-426B-4AD9-B3ED-3343CF4223F1}
|
||||
{5772E00F-271F-4B25-8B10-A3C24D8D3E10} = {38736647-2196-417E-8519-C48A012A63D9}
|
||||
{189F1FF4-2BFA-4F91-A6B2-00D00AC2910C} = {38736647-2196-417E-8519-C48A012A63D9}
|
||||
{C947CA59-157C-47F0-A842-7912FACDADA7} = {98051127-2868-4F5C-9B2C-2150975E05F3}
|
||||
{5792B0A0-A3F5-461D-AD44-8E8778298BE4} = {98051127-2868-4F5C-9B2C-2150975E05F3}
|
||||
{1F93A755-60A6-4B14-A522-633A732F3B91} = {98051127-2868-4F5C-9B2C-2150975E05F3}
|
||||
{C1334E67-CCF9-4F5B-9C1F-B9516A8270AB} = {120917DC-474C-448B-9EBB-1B3BA3A20B9D}
|
||||
{59583288-CE93-42A4-AC9F-67DE347A02A1} = {110D3D21-8E9B-45AB-9667-6DA1DB3862AC}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {197319DA-1148-4A99-847C-8B270B6A29AB}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
8
bruno/.env.sample
Normal file
@@ -0,0 +1,8 @@
|
||||
phone=
|
||||
pwd=
|
||||
mid=
|
||||
buvid=
|
||||
csrf=
|
||||
access_key=
|
||||
cookieStr=
|
||||
device_id=
|
||||
3
bruno/api.bilibili.com/x/space/folder.bru
Normal file
@@ -0,0 +1,3 @@
|
||||
meta {
|
||||
name: space
|
||||
}
|
||||
42
bruno/api.bilibili.com/x/space/wbi-acc-info.bru
Normal file
@@ -0,0 +1,42 @@
|
||||
meta {
|
||||
name: wbi-acc-info
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
get {
|
||||
url: https://api.bilibili.com/x/space/wbi/acc/info?mid=23947287&token&platform=web&web_location=1550101&dm_img_list=[]&dm_img_str=V2ViR0wgMS4wIChPcGVuR0wgRVMgMi4wIENocm9taXVtKQ&dm_cover_img_str=QU5HTEUgKEFNRCwgQU1EIFJhZGVvbihUTSkgR3JhcGhpY3MgKDB4MDAwMDE2MzgpIERpcmVjdDNEMTEgdnNfNV8wIHBzXzVfMCwgRDNEMTEpR29vZ2xlIEluYy4gKEFNRC&dm_img_inter={"ds":[],"wh":[5563,4171,107],"of":[66,132,66]}&w_webid=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzcG1faWQiOiIzMzMuMTM4NyIsImJ1dmlkIjoiQ0VGODNDQjAtMzY2NC0zNDU4LTI5RTctRTJFOENCQjY0NzlCNjU2MjFpbmZvYyIsInVzZXJfYWdlbnQiOiJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTM3LjAuMC4wIFNhZmFyaS81MzcuMzYgRWRnLzEzNy4wLjAuMCIsImJ1dmlkX2ZwIjoiMDNjNGYyNWQyZTlmMDZkNjU4NzJlMmVhNTdiMjJmMzkiLCJiaWxpX3RpY2tldCI6ImV5SmhiR2NpT2lKSVV6STFOaUlzSW10cFpDSTZJbk13TXlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKbGVIQWlPakUzTkRjM01qYzVORGdzSW1saGRDSTZNVGMwTnpRMk9EWTRPQ3dpY0d4MElqb3RNWDAuQmVkeFFPX3VZMllldFVFb0FvWE5hellBNzFTTkdhc0JtSkNnaFFsVy1iTSIsImNyZWF0ZWRfYXQiOjE3NDc0Njg4NDEsInR0bCI6ODY0MDAsInVybCI6Ii8yMzk0NzI4NyIsInJlc3VsdCI6MCwiaXNzIjoiZ2FpYSIsImlhdCI6MTc0NzQ2ODg0MX0.IhLw1v9Auwys4SFZ7PFaTXgkVqodmz67ZdVPORbnmcw3rxirilDqngVFpr3AYjUQ8hx-gmGTrMgeus12QE4zn9ql-wjTRKzbi9G2WEzDKEwHMNBKVIepaSZqHYIbKBwWsjqdEL9paDeRDpPiZ37YJ4YMKNsFfEP2yC_4ke2_KS2cgfSaaOhaXtXfEZortr_KvKWhY3gtJKC77HqEerZEID5hda8oqCTxZbb7gV7DDuncJ803K9H5ezWn-8a-y3eSdpbBB8Td5-u8At9mhHVgrKcODM7gi-Lhbnb86m7p4yyBoPs_iucDQJSGvs9Lijio57bL60Qm6_mIz0p49rzFWA&w_rid=160dcf0623b0733688e8940d2f6763e3&wts=1747468845
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
mid: 23947287
|
||||
token:
|
||||
platform: web
|
||||
web_location: 1550101
|
||||
dm_img_list: []
|
||||
dm_img_str: V2ViR0wgMS4wIChPcGVuR0wgRVMgMi4wIENocm9taXVtKQ
|
||||
dm_cover_img_str: QU5HTEUgKEFNRCwgQU1EIFJhZGVvbihUTSkgR3JhcGhpY3MgKDB4MDAwMDE2MzgpIERpcmVjdDNEMTEgdnNfNV8wIHBzXzVfMCwgRDNEMTEpR29vZ2xlIEluYy4gKEFNRC
|
||||
dm_img_inter: {"ds":[],"wh":[5563,4171,107],"of":[66,132,66]}
|
||||
w_webid: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzcG1faWQiOiIzMzMuMTM4NyIsImJ1dmlkIjoiQ0VGODNDQjAtMzY2NC0zNDU4LTI5RTctRTJFOENCQjY0NzlCNjU2MjFpbmZvYyIsInVzZXJfYWdlbnQiOiJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTM3LjAuMC4wIFNhZmFyaS81MzcuMzYgRWRnLzEzNy4wLjAuMCIsImJ1dmlkX2ZwIjoiMDNjNGYyNWQyZTlmMDZkNjU4NzJlMmVhNTdiMjJmMzkiLCJiaWxpX3RpY2tldCI6ImV5SmhiR2NpT2lKSVV6STFOaUlzSW10cFpDSTZJbk13TXlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKbGVIQWlPakUzTkRjM01qYzVORGdzSW1saGRDSTZNVGMwTnpRMk9EWTRPQ3dpY0d4MElqb3RNWDAuQmVkeFFPX3VZMllldFVFb0FvWE5hellBNzFTTkdhc0JtSkNnaFFsVy1iTSIsImNyZWF0ZWRfYXQiOjE3NDc0Njg4NDEsInR0bCI6ODY0MDAsInVybCI6Ii8yMzk0NzI4NyIsInJlc3VsdCI6MCwiaXNzIjoiZ2FpYSIsImlhdCI6MTc0NzQ2ODg0MX0.IhLw1v9Auwys4SFZ7PFaTXgkVqodmz67ZdVPORbnmcw3rxirilDqngVFpr3AYjUQ8hx-gmGTrMgeus12QE4zn9ql-wjTRKzbi9G2WEzDKEwHMNBKVIepaSZqHYIbKBwWsjqdEL9paDeRDpPiZ37YJ4YMKNsFfEP2yC_4ke2_KS2cgfSaaOhaXtXfEZortr_KvKWhY3gtJKC77HqEerZEID5hda8oqCTxZbb7gV7DDuncJ803K9H5ezWn-8a-y3eSdpbBB8Td5-u8At9mhHVgrKcODM7gi-Lhbnb86m7p4yyBoPs_iucDQJSGvs9Lijio57bL60Qm6_mIz0p49rzFWA
|
||||
w_rid: 160dcf0623b0733688e8940d2f6763e3
|
||||
wts: 1747468845
|
||||
}
|
||||
|
||||
headers {
|
||||
accept: */*
|
||||
accept-language: en
|
||||
dnt: 1
|
||||
origin: https://space.bilibili.com
|
||||
priority: u=1, i
|
||||
referer: https://space.bilibili.com/23947287
|
||||
sec-ch-ua: "Microsoft Edge";v="137", "Chromium";v="137", "Not/A)Brand";v="24"
|
||||
sec-ch-ua-mobile: ?0
|
||||
sec-ch-ua-platform: "Windows"
|
||||
sec-fetch-dest: empty
|
||||
sec-fetch-mode: cors
|
||||
sec-fetch-site: same-site
|
||||
user-agent: {{user-agent}}
|
||||
Cookie: {{cookieStr}}
|
||||
}
|
||||
3
bruno/api.bilibili.com/x/vip/folder.bru
Normal file
@@ -0,0 +1,3 @@
|
||||
meta {
|
||||
name: vip
|
||||
}
|
||||
3
bruno/api.bilibili.com/x/vip/vip_center/folder.bru
Normal file
@@ -0,0 +1,3 @@
|
||||
meta {
|
||||
name: vip_center
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
meta {
|
||||
name: sign_in
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
meta {
|
||||
name: three_days_sign
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
get {
|
||||
url: https://api.bilibili.com/x/vip/vip_center/sign_in/three_days_sign?access_key={{access_key}}&appkey={{appKey}}&build=8451100&csrf={{csrf}}&device=phone&disable_rcmd=0&mobi_app=android&platform=android&statistics={"appId":1,"platform":3,"version":"8.45.1","abtest":""}&t=1748747431084&ts=1748747431&web_location=666.146&sign=e95c76f976aed346f84cdc7098f8c35e
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
access_key: {{access_key}}
|
||||
appkey: {{appKey}}
|
||||
build: 8451100
|
||||
csrf: {{csrf}}
|
||||
device: phone
|
||||
disable_rcmd: 0
|
||||
mobi_app: android
|
||||
platform: android
|
||||
statistics: {"appId":1,"platform":3,"version":"8.45.1","abtest":""}
|
||||
t: 1748747431084
|
||||
ts: 1748747431
|
||||
web_location: 666.146
|
||||
sign: e95c76f976aed346f84cdc7098f8c35e
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: api.bilibili.com
|
||||
Cookie: {{cookieStr}}
|
||||
accept: application/json, text/plain, */*
|
||||
bili-http-engine: ignet
|
||||
buvid: {{buvid}}
|
||||
native_api_from: h5
|
||||
referer: https://big.bilibili.com/mobile/index
|
||||
user-agent: {{user-agent}}
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-metadata-legal-region: CN
|
||||
x-bili-mid: {{mid}}
|
||||
x-bili-net-bin: DQAAgL8gAQ
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDg3NzU1OTksImlhdCI6MTc0ODc0NjQ5OSwiYnV2aWQiOiJYVUE1NjUxQTlFREY3Mzg3MTUzQTk0NUNERTk2Q0FEQ0I2MDAwIn0.k0x2o3e2Q3W-6Wzc56IhbLgSjDKTaAuUV9om7K213fI
|
||||
x-bili-trace-id: 25ad3d0de58f794c18d1a884fc683bc4:18d1a884fc683bc4:0:0
|
||||
}
|
||||
|
||||
docs {
|
||||
Response sample:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"big_point": {
|
||||
"point": 405,
|
||||
"expire_point": 0,
|
||||
"expire_time": 0,
|
||||
"expire_days": 0
|
||||
},
|
||||
"three_day_sign": {
|
||||
"previous_vip_status": 0,
|
||||
"vip_status": 1,
|
||||
"day": 5,
|
||||
"signed": false,
|
||||
"count": 2,
|
||||
"has_coupon": false,
|
||||
"countdown": 0,
|
||||
"icon": "",
|
||||
"score": 5,
|
||||
"vip_score": 5,
|
||||
"explain": "",
|
||||
"exp_value": 3,
|
||||
"received_coupon": false,
|
||||
"day1_icon": "https://i0.hdslb.com/bfs/activity-plat/static/4cefecc6742f8995a6bd22402a6d0b8b/day1_icon.png",
|
||||
"day2_icon": "https://i0.hdslb.com/bfs/activity-plat/static/4cefecc6742f8995a6bd22402a6d0b8b/day2_icon.png",
|
||||
"day3_icon": "https://i0.hdslb.com/bfs/activity-plat/static/4cefecc6742f8995a6bd22402a6d0b8b/day3_icon.png",
|
||||
"day3_icon_vip": "https://i0.hdslb.com/bfs/activity-plat/static/4cefecc6742f8995a6bd22402a6d0b8b/day3_icon_vip.png",
|
||||
"day3_win_img": "https://i0.hdslb.com/bfs/activity-plat/static/4cefecc6742f8995a6bd22402a6d0b8b/day3_win_img.png",
|
||||
"day3_win_img_vip": "https://i0.hdslb.com/bfs/activity-plat/static/4cefecc6742f8995a6bd22402a6d0b8b/day3_win_img_vip.png",
|
||||
"day3_icon_received": "https://i0.hdslb.com/bfs/activity-plat/static/4cefecc6742f8995a6bd22402a6d0b8b/day3_icon_received.png",
|
||||
"day3_icon_vip_received": "https://i0.hdslb.com/bfs/activity-plat/static/4cefecc6742f8995a6bd22402a6d0b8b/day3_icon_vip_received.png",
|
||||
"duration": 7
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
}
|
||||
3
bruno/api.bilibili.com/x/vip/web/folder.bru
Normal file
@@ -0,0 +1,3 @@
|
||||
meta {
|
||||
name: web
|
||||
}
|
||||
3
bruno/api.bilibili.com/x/vip/web/vip_center/folder.bru
Normal file
@@ -0,0 +1,3 @@
|
||||
meta {
|
||||
name: vip_center
|
||||
}
|
||||
2805
bruno/api.bilibili.com/x/vip/web/vip_center/modules.bru
Normal file
2024
bruno/api.bilibili.com/x/vip/web/vip_center/v2.bru
Normal file
48
bruno/app.bilibili.com/folder.bru
Normal file
@@ -0,0 +1,48 @@
|
||||
meta {
|
||||
name: app.bilibili.com
|
||||
}
|
||||
|
||||
script:pre-request {
|
||||
const CryptoJS = require('crypto-js');
|
||||
|
||||
console.log("start");
|
||||
|
||||
const md5 = (str) => CryptoJS.MD5(str).toString(CryptoJS.enc.Hex);
|
||||
|
||||
const replacePlaceholders = (body) => {
|
||||
for (const key in body) {
|
||||
if (typeof body[key] === 'string') {
|
||||
// Check if value contains {{}} placeholders
|
||||
const matches = body[key].match(/{{(.*?)}}/g);
|
||||
if (matches) {
|
||||
matches.forEach(match => {
|
||||
const placeholder = match.slice(2, -2); // Remove the {{ and }}
|
||||
const value = bru.getEnvVar(placeholder);
|
||||
body[key] = body[key].replace(match, value);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function appSign(params, appkey, appsec) {
|
||||
params.appkey = appkey;
|
||||
delete body.sign;
|
||||
const sortedKeys = Object.keys(params).sort();
|
||||
const sortedParams = sortedKeys.map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`).join('&');
|
||||
console.log(sortedParams);
|
||||
return md5(sortedParams + appsec);
|
||||
}
|
||||
|
||||
const body = req.getBody();
|
||||
|
||||
if (body && body.hasOwnProperty('sign')) {
|
||||
replacePlaceholders(body);
|
||||
const sign = appSign(body, bru.getEnvVar("appKey"), bru.getEnvVar("appSec"));
|
||||
console.log("calculate sign:" + sign);
|
||||
|
||||
body.sign = sign;
|
||||
}
|
||||
|
||||
req.setBody(body);
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
meta {
|
||||
name: receive
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
post {
|
||||
url: https://app.bilibili.com/pgc/activity/deliver/material/receive
|
||||
body: formUrlEncoded
|
||||
auth: none
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: api.bilibili.com
|
||||
buvid: {{buvid}}
|
||||
fp_local: {{device_id}}
|
||||
fp_remote: {{device_id}}
|
||||
session_id: e04d2e05
|
||||
env: prod
|
||||
app-key: android64
|
||||
user-agent: {{user-agent}}
|
||||
x-bili-trace-id: 0564afa825e0e1ec59164fe59367755a:59164fe59367755a:0:0
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-mid: {{mid}}
|
||||
x-bili-aurora-zone:
|
||||
x-bili-gaia-vtoken:
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzU3NzI2NDcsImlhdCI6MTczNTc0MzU0NywiYnV2aWQiOiJYVzcyNEQxNzI0Njg3MTlDQzI1NjA1REIyNDI0NzhEMkUxMjE5In0.eafhpooLoe2q6cA45_Xrgq1VO-y490pxP5gwJ4qm_ik
|
||||
bili-http-engine: cronet
|
||||
Cookie: {{cookieStr}}
|
||||
}
|
||||
|
||||
body:form-urlencoded {
|
||||
activity_code:
|
||||
appkey: {{appKey}}
|
||||
build: {{build}}
|
||||
c_locale: zh_CN
|
||||
channel: bili
|
||||
disable_rcmd: 0
|
||||
ep_id: 328482
|
||||
from_spmid: activity.h5.0.0
|
||||
mobi_app: android
|
||||
platform: android
|
||||
s_locale: zh_CN
|
||||
season_id: 12548
|
||||
spmid: united.player-video-detail.0.0
|
||||
statistics: {"appId":1,"platform":3,"version":"7.72.0","abtest":""}
|
||||
ts: 1736179521
|
||||
sign: 132d2532467ef649a925aece247cdb4b
|
||||
access_key: {{access_key}}
|
||||
}
|
||||
|
||||
docs {
|
||||
终端:APP
|
||||
|
||||
作用:开始大会员赚大积分任务-观看剧集内容
|
||||
|
||||
入口:
|
||||
- 我的->会员中心->赚大积分->查看8项任务,点击“观看剧集内容”,选择视频后触发
|
||||
|
||||
传入剧集的id,会返回task_id和token,用于标识该次观看任务
|
||||
|
||||
该sample的视频为《让子弹飞》
|
||||
|
||||
完整的观看剧集内容任务调用接口如下:
|
||||
|
||||
- 领取:app.bilibili.com/pgc/activity/score/task/receive/v2
|
||||
- 开始:app.bilibili.com/pgc/activity/deliver/material/receive
|
||||
- 上报完成:app.bilibili.com/pgc/activity/deliver/task/complete
|
||||
|
||||
Response Sample:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"data": {
|
||||
"closeType": "close_win",
|
||||
"container": [],
|
||||
"showTime": "",
|
||||
"watch_count_down_cfg": {
|
||||
"action": "url",
|
||||
"closeType": "close_win",
|
||||
"complete_status_desc": "大积分已到账",
|
||||
"complete_status_jump_url": "https://big.bilibili.com/mobile/bigPoint?navhide=1&closable=1",
|
||||
"count_down_status_desc": "看${time}获大积分",
|
||||
"login": true,
|
||||
"milliseconds": 600000,
|
||||
"pause_status_desc": "计时暂停",
|
||||
"showTime": "ENTER",
|
||||
"task_id": "4320003",
|
||||
"token": "67ba5888e7"
|
||||
}
|
||||
},
|
||||
"message": "success"
|
||||
}
|
||||
```
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
meta {
|
||||
name: complete-ogv
|
||||
type: http
|
||||
seq: 2
|
||||
}
|
||||
|
||||
post {
|
||||
url: https://app.bilibili.com/pgc/activity/deliver/task/complete
|
||||
body: formUrlEncoded
|
||||
auth: none
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: api.bilibili.com
|
||||
buvid: {{buvid}}
|
||||
fp_local: {{device_id}}
|
||||
fp_remote: {{device_id}}
|
||||
session_id: e04d2e05
|
||||
env: prod
|
||||
app-key: android64
|
||||
user-agent: {{user-agent}}
|
||||
x-bili-trace-id: a301946d9621645a707b40973f67755c:707b40973f67755c:0:0
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-mid: {{mid}}
|
||||
x-bili-aurora-zone:
|
||||
x-bili-gaia-vtoken:
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzU3NzI2NDcsImlhdCI6MTczNTc0MzU0NywiYnV2aWQiOiJYVzcyNEQxNzI0Njg3MTlDQzI1NjA1REIyNDI0NzhEMkUxMjE5In0.eafhpooLoe2q6cA45_Xrgq1VO-y490pxP5gwJ4qm_ik
|
||||
bili-http-engine: cronet
|
||||
Cookie: {{cookieStr}}
|
||||
}
|
||||
|
||||
body:form-urlencoded {
|
||||
build: {{build}}
|
||||
c_locale: zh_CN
|
||||
channel: bili
|
||||
disable_rcmd: 0
|
||||
mobi_app: android
|
||||
platform: android
|
||||
s_locale: zh_CN
|
||||
statistics: {{statistics}}
|
||||
access_key: {{access_key}}
|
||||
ts: 1735744760
|
||||
sign: 2292d647d9b3f6dbd2f99b5a90cbddaf
|
||||
appkey: {{appKey}}
|
||||
task_id: 4320003
|
||||
task_sign: 95cbef871100151e526fa5580534a364
|
||||
timestamp: 1748884714621
|
||||
token: 67ba5888e7
|
||||
}
|
||||
|
||||
docs {
|
||||
终端:APP
|
||||
|
||||
作用:上报完成大会员赚大积分任务-观看剧集内容
|
||||
|
||||
入口:
|
||||
- 我的->会员中心->赚大积分->查看8项任务,点击“观看剧集内容”,挑选视频,观看10分钟后,自动触发
|
||||
|
||||
传入剧集的id,会返回task_id和token,用于标识该次观看任务
|
||||
|
||||
task_sign必传,与sign的生成方式相同。即,先排除掉task_sign和sign,生成签名后赋值给task_sign,然后在签名一次得到sign
|
||||
|
||||
且只能调用成功一次,第二次及之后会返回400
|
||||
|
||||
完整的观看剧集内容任务调用接口如下:
|
||||
|
||||
- 领取:app.bilibili.com/pgc/activity/score/task/receive/v2
|
||||
- 开始:app.bilibili.com/pgc/activity/deliver/material/receive
|
||||
- 上报完成:app.bilibili.com/pgc/activity/deliver/task/complete
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
meta {
|
||||
name: complete
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
post {
|
||||
url: https://app.bilibili.com/pgc/activity/deliver/task/complete
|
||||
body: formUrlEncoded
|
||||
auth: none
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: api.bilibili.com
|
||||
buvid: {{buvid}}
|
||||
fp_local: {{device_id}}
|
||||
fp_remote: {{device_id}}
|
||||
session_id: e04d2e05
|
||||
env: prod
|
||||
app-key: android64
|
||||
user-agent: {{user-agent}}
|
||||
x-bili-trace-id: a301946d9621645a707b40973f67755c:707b40973f67755c:0:0
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-mid: {{mid}}
|
||||
x-bili-aurora-zone:
|
||||
x-bili-gaia-vtoken:
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzU3NzI2NDcsImlhdCI6MTczNTc0MzU0NywiYnV2aWQiOiJYVzcyNEQxNzI0Njg3MTlDQzI1NjA1REIyNDI0NzhEMkUxMjE5In0.eafhpooLoe2q6cA45_Xrgq1VO-y490pxP5gwJ4qm_ik
|
||||
bili-http-engine: cronet
|
||||
Cookie: {{cookieStr}}
|
||||
}
|
||||
|
||||
body:form-urlencoded {
|
||||
build: {{build}}
|
||||
c_locale: zh_CN
|
||||
channel: bili
|
||||
disable_rcmd: 0
|
||||
mobi_app: android
|
||||
platform: android
|
||||
s_locale: zh_CN
|
||||
statistics: {{statistics}}
|
||||
access_key: {{access_key}}
|
||||
ts: 1735744760
|
||||
sign: 2292d647d9b3f6dbd2f99b5a90cbddaf
|
||||
appkey: {{appKey}}
|
||||
position: tv_channel
|
||||
win_id: bigscore-filmtab
|
||||
}
|
||||
|
||||
docs {
|
||||
终端:APP
|
||||
|
||||
作用:上报完成大会员赚大积分任务-浏览追番频道页、浏览影视频道页(观看剧集内容接口相同,但入参不同,在另一个接口)
|
||||
|
||||
入口:
|
||||
- 我的->会员中心->赚大积分->查看8项任务,点击跳转后,自动触发
|
||||
|
||||
完整的观看剧集内容任务调用接口如下:
|
||||
|
||||
- 领取:app.bilibili.com/pgc/activity/score/task/receive/v2
|
||||
- 上报完成:app.bilibili.com/pgc/activity/deliver/task/complete
|
||||
|
||||
入参position:
|
||||
|
||||
- animatetab: jp_channel
|
||||
- filmtab: tv_channel
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
meta {
|
||||
name: dressbuyamount
|
||||
type: http
|
||||
seq: 3
|
||||
}
|
||||
|
||||
post {
|
||||
url: https://api.bilibili.com/pgc/activity/score/task/receive/v2
|
||||
body: formUrlEncoded
|
||||
auth: none
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: api.bilibili.com
|
||||
Cookie: {{cookieStr}}
|
||||
native_api_from: h5
|
||||
buvid: {{buvid}}
|
||||
accept: application/json, text/plain, */*
|
||||
referer: https://big.bilibili.com/mobile/bigPoint/task
|
||||
user-agent: {{user-agent}}
|
||||
x-bili-trace-id: 39dab959605906ee420167e8af677533:420167e8af677533:0:0
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-mid: {{mid}}
|
||||
x-bili-aurora-zone:
|
||||
x-bili-gaia-vtoken:
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzU3NjI4NDksImlhdCI6MTczNTczMzc0OSwiYnV2aWQiOiJYVzcyNEQxNzI0Njg3MTlDQzI1NjA1REIyNDI0NzhEMkUxMjE5In0.EIrjYHrmFeTJXZjxsWki_ZloVvL9IK_aDgpqslMASy0
|
||||
bili-http-engine: cronet
|
||||
}
|
||||
|
||||
body:form-urlencoded {
|
||||
access_key: {{access_key}}
|
||||
appKey: {{appKey}}
|
||||
appkey: {{appKey}}
|
||||
bili_local_id: {{device_id}}
|
||||
build: 7720200
|
||||
buvid: {{buvid}}
|
||||
channel: yingyongbao
|
||||
containerName: AbstractWebActivity
|
||||
csrf: {{csrf}}
|
||||
device: phone
|
||||
deviceId: f9abaee74692f9e9
|
||||
deviceName: samsungNexus
|
||||
devicePlatform: Android10samsungNexus
|
||||
device_id: {{device_id}}
|
||||
device_name: samsungNexus
|
||||
device_platform: Android10samsungNexus
|
||||
disable_rcmd: 0
|
||||
fingerprint: {{device_id}}
|
||||
isPad: false
|
||||
localFingerprint: {{device_id}}
|
||||
local_id: {{buvid}}
|
||||
mobi_app: android
|
||||
modelName: Nexus
|
||||
networkState: 2
|
||||
networkstate: 2
|
||||
osVer: 10
|
||||
platform: android
|
||||
sessionID: 92c5ad7a
|
||||
statistics: {"appId":1,"platform":3,"version":"7.72.0","abtest":""}
|
||||
statusBarHeight: 77
|
||||
taskCode: dressbuyamount
|
||||
ts: 1735734245
|
||||
sign: 293cc4d525cf41cfb8adb69f42185ec0:
|
||||
}
|
||||
|
||||
docs {
|
||||
终端:APP
|
||||
|
||||
作用:领取大会员赚大积分任务-购买指定装扮商品
|
||||
|
||||
入口:
|
||||
- 我的->会员中心->赚大积分->查看8项任务->领取任务
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
meta {
|
||||
name: ogvwatchnew
|
||||
type: http
|
||||
seq: 4
|
||||
}
|
||||
|
||||
post {
|
||||
url: https://app.bilibili.com/pgc/activity/score/task/receive/v2
|
||||
body: formUrlEncoded
|
||||
auth: none
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: api.bilibili.com
|
||||
Cookie: {{cookieStr}}
|
||||
native_api_from: h5
|
||||
buvid: {{buvid}}
|
||||
accept: application/json, text/plain, */*
|
||||
referer: https://big.bilibili.com/mobile/bigPoint/task
|
||||
user-agent: {{user-agent}}
|
||||
x-bili-trace-id: 9e3ed57f35a83d4edb8160805867752f:db8160805867752f:0:0
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-mid: {{mid}}
|
||||
x-bili-aurora-zone:
|
||||
x-bili-gaia-vtoken:
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzU3NjE2NjQsImlhdCI6MTczNTczMjU2NCwiYnV2aWQiOiJYVzcyNEQxNzI0Njg3MTlDQzI1NjA1REIyNDI0NzhEMkUxMjE5In0.YVtwH53dLJ1l6n6aFcvwNZ4MBkgnBPtxE8UfD7u9J4I
|
||||
bili-http-engine: cronet
|
||||
}
|
||||
|
||||
body:form-urlencoded {
|
||||
access_key: {{access_key}}
|
||||
appKey: {{appKey}}
|
||||
appkey: {{appKey}}
|
||||
bili_local_id: {{device_id}}
|
||||
build: 7720200
|
||||
buvid: {{buvid}}
|
||||
channel: yingyongbao
|
||||
containerName: AbstractWebActivity
|
||||
csrf: {{csrf}}
|
||||
device: phone
|
||||
deviceId: f9abaee74692f9e9
|
||||
deviceName: samsungNexus
|
||||
devicePlatform: Android10samsungNexus
|
||||
device_id: {{device_id}}
|
||||
device_name: samsungNexus
|
||||
device_platform: Android10samsungNexus
|
||||
disable_rcmd: 0
|
||||
fingerprint: {{device_id}}
|
||||
isPad: false
|
||||
localFingerprint: {{device_id}}
|
||||
local_id: {{buvid}}
|
||||
mobi_app: android
|
||||
modelName: Nexus
|
||||
networkState: 2
|
||||
networkstate: 2
|
||||
osVer: 10
|
||||
platform: android
|
||||
sessionID: 120548f6
|
||||
statistics: {"appId":1,"platform":3,"version":"7.72.0","abtest":""}
|
||||
statusBarHeight: 77
|
||||
taskCode: ogvwatchnew
|
||||
ts: 1735733021
|
||||
sign: 5cc38f578700cfdb506f7e489abdf442:
|
||||
}
|
||||
|
||||
docs {
|
||||
终端:APP
|
||||
|
||||
作用:领取大会员赚大积分任务-观看剧集内容
|
||||
|
||||
入口:
|
||||
- 我的->会员中心->赚大积分->查看8项任务->领取任务
|
||||
|
||||
完整的观看剧集内容任务调用接口如下:
|
||||
|
||||
- 领取:app.bilibili.com/pgc/activity/score/task/receive/v2
|
||||
- 开始:app.bilibili.com/pgc/activity/deliver/material/receive
|
||||
- 上报完成:app.bilibili.com/pgc/activity/deliver/task/complete
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
meta {
|
||||
name: tvodbuy
|
||||
type: http
|
||||
seq: 2
|
||||
}
|
||||
|
||||
post {
|
||||
url: https://api.bilibili.com/pgc/activity/score/task/receive/v2
|
||||
body: formUrlEncoded
|
||||
auth: none
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: api.bilibili.com
|
||||
Cookie: {{cookieStr}}
|
||||
native_api_from: h5
|
||||
buvid: {{buvid}}
|
||||
accept: application/json, text/plain, */*
|
||||
referer: https://big.bilibili.com/mobile/bigPoint/task
|
||||
user-agent: {{user-agent}}
|
||||
x-bili-trace-id: 39dab959605906ee420167e8af677533:420167e8af677533:0:0
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-mid: {{mid}}
|
||||
x-bili-aurora-zone:
|
||||
x-bili-gaia-vtoken:
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzU3NjI4NDksImlhdCI6MTczNTczMzc0OSwiYnV2aWQiOiJYVzcyNEQxNzI0Njg3MTlDQzI1NjA1REIyNDI0NzhEMkUxMjE5In0.EIrjYHrmFeTJXZjxsWki_ZloVvL9IK_aDgpqslMASy0
|
||||
bili-http-engine: cronet
|
||||
}
|
||||
|
||||
body:form-urlencoded {
|
||||
access_key: {{access_key}}
|
||||
appKey: {{appKey}}
|
||||
appkey: {{appKey}}
|
||||
bili_local_id: {{device_id}}
|
||||
build: 7720200
|
||||
buvid: {{buvid}}
|
||||
channel: yingyongbao
|
||||
containerName: AbstractWebActivity
|
||||
csrf: {{csrf}}
|
||||
device: phone
|
||||
deviceId: f9abaee74692f9e9
|
||||
deviceName: samsungNexus
|
||||
devicePlatform: Android10samsungNexus
|
||||
device_id: {{device_id}}
|
||||
device_name: samsungNexus
|
||||
device_platform: Android10samsungNexus
|
||||
disable_rcmd: 0
|
||||
fingerprint: {{device_id}}
|
||||
isPad: false
|
||||
localFingerprint: {{device_id}}
|
||||
local_id: {{buvid}}
|
||||
mobi_app: android
|
||||
modelName: Nexus
|
||||
networkState: 2
|
||||
networkstate: 2
|
||||
osVer: 10
|
||||
platform: android
|
||||
sessionID: 92c5ad7a
|
||||
statistics: {"appId":1,"platform":3,"version":"7.72.0","abtest":""}
|
||||
statusBarHeight: 77
|
||||
taskCode: tvodbuy
|
||||
ts: 1735734245
|
||||
sign: 293cc4d525cf41cfb8adb69f42185ec0:
|
||||
}
|
||||
|
||||
docs {
|
||||
终端:APP
|
||||
|
||||
作用:领取大会员赚大积分任务-购买单点付费影片
|
||||
|
||||
入口:
|
||||
- 我的->会员中心->赚大积分->查看8项任务->领取任务
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
meta {
|
||||
name: vipmallbuy
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
post {
|
||||
url: https://app.bilibili.com/pgc/activity/score/task/receive/v2
|
||||
body: formUrlEncoded
|
||||
auth: none
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: api.bilibili.com
|
||||
Cookie: {{cookieStr}}
|
||||
native_api_from: h5
|
||||
buvid: {{buvid}}
|
||||
accept: application/json, text/plain, */*
|
||||
referer: https://big.bilibili.com/mobile/bigPoint/task
|
||||
user-agent: {{user-agent}}
|
||||
x-bili-trace-id: 9e3ed57f35a83d4edb8160805867752f:db8160805867752f:0:0
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-mid: {{mid}}
|
||||
x-bili-aurora-zone:
|
||||
x-bili-gaia-vtoken:
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzU3NjE2NjQsImlhdCI6MTczNTczMjU2NCwiYnV2aWQiOiJYVzcyNEQxNzI0Njg3MTlDQzI1NjA1REIyNDI0NzhEMkUxMjE5In0.YVtwH53dLJ1l6n6aFcvwNZ4MBkgnBPtxE8UfD7u9J4I
|
||||
bili-http-engine: cronet
|
||||
}
|
||||
|
||||
body:form-urlencoded {
|
||||
access_key: {{access_key}}
|
||||
appKey: {{appKey}}
|
||||
appkey: {{appKey}}
|
||||
bili_local_id: {{device_id}}
|
||||
build: 7720200
|
||||
buvid: {{buvid}}
|
||||
channel: yingyongbao
|
||||
containerName: AbstractWebActivity
|
||||
csrf: {{csrf}}
|
||||
device: phone
|
||||
deviceId: f9abaee74692f9e9
|
||||
deviceName: samsungNexus
|
||||
devicePlatform: Android10samsungNexus
|
||||
device_id: {{device_id}}
|
||||
device_name: samsungNexus
|
||||
device_platform: Android10samsungNexus
|
||||
disable_rcmd: 0
|
||||
fingerprint: {{device_id}}
|
||||
isPad: false
|
||||
localFingerprint: {{device_id}}
|
||||
local_id: {{buvid}}
|
||||
mobi_app: android
|
||||
modelName: Nexus
|
||||
networkState: 2
|
||||
networkstate: 2
|
||||
osVer: 10
|
||||
platform: android
|
||||
sessionID: 120548f6
|
||||
statistics: {"appId":1,"platform":3,"version":"7.72.0","abtest":""}
|
||||
statusBarHeight: 77
|
||||
taskCode: vipmallbuy
|
||||
ts: 1735733021
|
||||
sign: 5cc38f578700cfdb506f7e489abdf442:
|
||||
}
|
||||
|
||||
docs {
|
||||
终端:APP
|
||||
|
||||
作用:领取大会员赚大积分任务-购买指定会员购商品
|
||||
|
||||
入口:
|
||||
- 我的->会员中心->赚大积分->查看8项任务->领取任务
|
||||
}
|
||||
76
bruno/app.bilibili.com/x/report/heartbeat/mobile/end.bru
Normal file
@@ -0,0 +1,76 @@
|
||||
meta {
|
||||
name: end
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
post {
|
||||
url: https://app.bilibili.com/x/report/heartbeat/mobile
|
||||
body: formUrlEncoded
|
||||
auth: none
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: api.bilibili.com
|
||||
buvid: {{buvid}}
|
||||
fp_local: {{device_id}}
|
||||
fp_remote: {{device_id}}
|
||||
session_id: e04d2e05
|
||||
env: prod
|
||||
app-key: android64
|
||||
user-agent: {{user-agent}}
|
||||
x-bili-trace-id: 2c64470432d0c5346a475a449467755d:6a475a449467755d:0:0
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-mid: {{mid}}
|
||||
x-bili-aurora-zone:
|
||||
x-bili-gaia-vtoken:
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzU3NzI2NDcsImlhdCI6MTczNTc0MzU0NywiYnV2aWQiOiJYVzcyNEQxNzI0Njg3MTlDQzI1NjA1REIyNDI0NzhEMkUxMjE5In0.eafhpooLoe2q6cA45_Xrgq1VO-y490pxP5gwJ4qm_ik
|
||||
bili-http-engine: cronet
|
||||
}
|
||||
|
||||
body:form-urlencoded {
|
||||
access_key: {{access_key}}
|
||||
actual_played_time: 548
|
||||
aid: 726710400
|
||||
appkey: {{appKey}}
|
||||
auto_play: 99
|
||||
build: 7720200
|
||||
c_locale: zh_CN
|
||||
channel: yingyongbao
|
||||
cid: 785731972
|
||||
disable_rcmd: 0
|
||||
epid: 511578
|
||||
epid_status: 13
|
||||
extra: {"from_outer_spmid":"activity.h5.0.0"}
|
||||
from: 12
|
||||
from_spmid: united.player-video-detail.player.continue
|
||||
last_play_progress_time: 638
|
||||
list_play_time: 0
|
||||
max_play_progress_time: 638
|
||||
mid: {{mid}}
|
||||
miniplayer_play_time: 0
|
||||
mobi_app: android
|
||||
network_type: 1
|
||||
paused_time: 0
|
||||
platform: android
|
||||
play_mode: 1
|
||||
play_status: 1
|
||||
play_type:
|
||||
played_time: 548
|
||||
quality: 64
|
||||
report_flow_data:
|
||||
s_locale: zh_CN
|
||||
session: 2edcb8dc8ff0b6f13dd685a23aff692b72bf2869
|
||||
sid: 41410
|
||||
spmid: united.player-video-detail.0.0
|
||||
start_ts: 1735744223
|
||||
statistics: {"appId":1,"platform":3,"version":"7.72.0","abtest":""}
|
||||
sub_type: 1
|
||||
total_time: 548
|
||||
track_id:
|
||||
ts: 1735744771
|
||||
type: 4
|
||||
user_status: 1
|
||||
video_duration: 1450
|
||||
sign: 1021d178fb342c0c48617d3692c97d46
|
||||
}
|
||||
76
bruno/app.bilibili.com/x/report/heartbeat/mobile/start.bru
Normal file
@@ -0,0 +1,76 @@
|
||||
meta {
|
||||
name: start
|
||||
type: http
|
||||
seq: 2
|
||||
}
|
||||
|
||||
post {
|
||||
url: https://app.bilibili.com/x/report/heartbeat/mobile
|
||||
body: formUrlEncoded
|
||||
auth: none
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: api.bilibili.com
|
||||
buvid: {{buvid}}
|
||||
fp_local: {{device_id}}
|
||||
fp_remote: {{device_id}}
|
||||
session_id: e04d2e05
|
||||
env: prod
|
||||
app-key: android64
|
||||
user-agent: {{user-agent}}
|
||||
x-bili-trace-id: 8fcda5ac30f6510905b2834bbb67755a:05b2834bbb67755a:0:0
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-mid: {{mid}}
|
||||
x-bili-aurora-zone:
|
||||
x-bili-gaia-vtoken:
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzU3NzI2NDcsImlhdCI6MTczNTc0MzU0NywiYnV2aWQiOiJYVzcyNEQxNzI0Njg3MTlDQzI1NjA1REIyNDI0NzhEMkUxMjE5In0.eafhpooLoe2q6cA45_Xrgq1VO-y490pxP5gwJ4qm_ik
|
||||
bili-http-engine: cronet
|
||||
}
|
||||
|
||||
body:form-urlencoded {
|
||||
access_key: {{access_key}}
|
||||
actual_played_time: 0
|
||||
aid: 726710400
|
||||
appkey: {{appKey}}
|
||||
auto_play: 99
|
||||
build: 7720200
|
||||
c_locale: zh_CN
|
||||
channel: yingyongbao
|
||||
cid: 785731972
|
||||
disable_rcmd: 0
|
||||
epid: 511578
|
||||
epid_status: 13
|
||||
extra: {"from_outer_spmid":"activity.h5.0.0"}
|
||||
from: 12
|
||||
from_spmid: united.player-video-detail.player.continue
|
||||
last_play_progress_time: 0
|
||||
list_play_time: 0
|
||||
max_play_progress_time: 0
|
||||
mid: {{mid}}
|
||||
miniplayer_play_time: 0
|
||||
mobi_app: android
|
||||
network_type: 1
|
||||
paused_time: 0
|
||||
platform: android
|
||||
play_mode: 1
|
||||
play_status: 1
|
||||
play_type:
|
||||
played_time: 0
|
||||
quality: 64
|
||||
report_flow_data:
|
||||
s_locale: zh_CN
|
||||
session: 2edcb8dc8ff0b6f13dd685a23aff692b72bf2869
|
||||
sid: 41410
|
||||
spmid: united.player-video-detail.0.0
|
||||
start_ts: 0
|
||||
statistics: {"appId":1,"platform":3,"version":"7.72.0","abtest":""}
|
||||
sub_type: 1
|
||||
total_time: 0
|
||||
track_id:
|
||||
ts: 1735744223
|
||||
type: 4
|
||||
user_status: 1
|
||||
video_duration: 1450
|
||||
sign: 37b0acd3bab7b40a082ce510041a0a2b
|
||||
}
|
||||
40
bruno/big.bilibili.com/pgc/activity/score/task/sign.bru
Normal file
@@ -0,0 +1,40 @@
|
||||
meta {
|
||||
name: sign
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
post {
|
||||
url: https://api.bilibili.com/pgc/activity/score/task/sign
|
||||
body: formUrlEncoded
|
||||
auth: none
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: api.bilibili.com
|
||||
Cookie: {{cookieStr}}
|
||||
native_api_from: h5
|
||||
buvid: {{buvid}}
|
||||
accept: application/json, text/plain, */*
|
||||
referer: https://big.bilibili.com/mobile/index?exp_symbol=release_version&oflAb=1
|
||||
user-agent: {{user-agent}}
|
||||
x-bili-trace-id: 9c642fae280ce80077653eef826774e3:77653eef826774e3:0:0
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-mid: {{mid}}
|
||||
x-bili-aurora-zone:
|
||||
x-bili-gaia-vtoken:
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzU3MzgxMTEsImlhdCI6MTczNTcwOTAxMSwiYnV2aWQiOiJYVzcyNEQxNzI0Njg3MTlDQzI1NjA1REIyNDI0NzhEMkUxMjE5In0.J28IlxZ6SjllQEQkq_OvFUiRYAEL2VhQG_WWBcmNppE
|
||||
bili-http-engine: cronet
|
||||
}
|
||||
|
||||
body:form-urlencoded {
|
||||
access_key: {{access_key}}
|
||||
appkey: {{appKey}}
|
||||
csrf: {{csrf}}
|
||||
disable_rcmd: 0
|
||||
mobi_app: android
|
||||
platform: android
|
||||
statistics: {"appId":1,"platform":3,"version":"7.72.0","abtest":""}
|
||||
ts: 1735713546
|
||||
sign: aeaeff881a147dd5cd2c6e24df9dc21b
|
||||
}
|
||||
41
bruno/big.bilibili.com/x/vip/experience/add.bru
Normal file
@@ -0,0 +1,41 @@
|
||||
meta {
|
||||
name: add
|
||||
type: http
|
||||
seq: 2
|
||||
}
|
||||
|
||||
post {
|
||||
url: https://big.bilibili.com/x/vip/experience/add
|
||||
body: formUrlEncoded
|
||||
auth: none
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: api.bilibili.com
|
||||
Cookie: {{cookieStr}}
|
||||
native_api_from: h5
|
||||
buvid: {{buvid}}
|
||||
accept: application/json, text/plain, */*
|
||||
referer: https://big.bilibili.com/mobile/index?exp_symbol=release_version&oflAb=1
|
||||
user-agent: {{user-agent}}
|
||||
x-bili-trace-id: 46656ec97cb019beac1da03fd56774d6:ac1da03fd56774d6:0:0
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-mid: {{mid}}
|
||||
x-bili-aurora-zone:
|
||||
x-bili-gaia-vtoken:
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzU3MzgxMTEsImlhdCI6MTczNTcwOTAxMSwiYnV2aWQiOiJYVzcyNEQxNzI0Njg3MTlDQzI1NjA1REIyNDI0NzhEMkUxMjE5In0.J28IlxZ6SjllQEQkq_OvFUiRYAEL2VhQG_WWBcmNppE
|
||||
bili-http-engine: cronet
|
||||
}
|
||||
|
||||
body:form-urlencoded {
|
||||
access_key: {{access_key}}
|
||||
appkey: {{appKey}}
|
||||
buvid: {{buvid}}
|
||||
csrf: {{csrf}}
|
||||
disable_rcmd: 0
|
||||
mobi_app: android
|
||||
platform: android
|
||||
statistics: {"appId":1,"platform":3,"version":"7.72.0","abtest":""}
|
||||
ts: 1735710395
|
||||
sign: 694521e34b88ec0593a8cc3edbc4e117
|
||||
}
|
||||
9
bruno/bruno.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"version": "1",
|
||||
"name": "Bili",
|
||||
"type": "collection",
|
||||
"ignore": [
|
||||
"node_modules",
|
||||
".git"
|
||||
]
|
||||
}
|
||||
16
bruno/environments/default.bru
Normal file
@@ -0,0 +1,16 @@
|
||||
vars {
|
||||
phone: {{process.env.phone}}
|
||||
pwd: {{process.env.pwd}}
|
||||
mid: {{process.env.mid}}
|
||||
buvid: {{process.env.buvid}}
|
||||
csrf: {{process.env.csrf}}
|
||||
appKey: 1d8b6e7d45233436
|
||||
access_key: {{process.env.access_key}}
|
||||
cookieStr: {{process.env.cookieStr}}
|
||||
user-agent: Mozilla/5.0 (Linux; Android 10; Nexus Build/KOT49H; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.186 Mobile Safari/537.36 os/android model/Nexus build/7720200 osVer/10 sdkInt/29 network/2 BiliApp/7720200 mobi_app/android channel/yingyongbao Buvid/{{buvid}} sessionID/92c5ad7a innerVer/7720210 c_locale/zh_CN s_locale/zh_CN disable_rcmd/0 7.72.0 os/android model/Nexus mobi_app/android build/7720200 channel/yingyongbao innerVer/7720210 osVer/10 network/2
|
||||
device_id: {{process.env.device_id}}
|
||||
user-agent-simple: Mozilla/5.0 (Linux; Android 12; SM-S9080 Build/V417IR; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/91.0.4472.114 Mobile Safari/537.36 os/android model/SM-S9080 build/7760700 osVer/12 sdkInt/32 network/2 BiliApp/7760700 mobi_app/android channel/bili innerVer/7760710 c_locale/zh_CN s_locale/zh_CN disable_rcmd/0 7.76.0 os/android model/SM-S9080 mobi_app/android build/7760700 channel/bili innerVer/7760710 osVer/12 network/2
|
||||
appSec: 560c52ccd288fed045859ed18bffd973
|
||||
build: 8451100
|
||||
statistics: {"appId":1,"platform":3,"version":"8.45.1","abtest":""}
|
||||
}
|
||||
314
bruno/mall.bilibili.com/combine.bru
Normal file
@@ -0,0 +1,314 @@
|
||||
meta {
|
||||
name: combine
|
||||
type: http
|
||||
seq: 2
|
||||
}
|
||||
|
||||
get {
|
||||
url: https://mall.bilibili.com/x/vip_point/task/combine?access_key={{access_key}}&appKey={{appKey}}&bili_local_id=910f57d9d7feaf6928e592860452d06b202505211207597aa9050a2e5c31f431&brand=Samsung&build={{build}}&buvid={{buvid}}&channel=bili&containerName=AbstractWebActivity&csrf={{csrf}}&device=phone&deviceId={{device_id}}&deviceName=SamsungSM-A5560&devicePlatform=Android12SamsungSM-A5560&device_id={{device_id}}&device_name=SamsungSM-A5560&device_platform=Android12SamsungSM-A5560&disable_rcmd=0&fingerprint=910f57d9d7feaf6928e592860452d06b202505211207597aa9050a2e5c31f431&isPad=false&localFingerprint=910f57d9d7feaf6928e592860452d06b202505211207597aa9050a2e5c31f431&local_id=XUA5651A9EDF7387153A945CDE96CADCB6000&mobi_app=android&modelName=SM-A5560&networkState=2&networkstate=2&osVer=12&platform=android&sessionID=01db4bc0&statistics={"appId":1,"platform":3,"version":"8.45.1","abtest":""}&statusBarHeight=72&ts=1748764069&sign=de7e2667157cccf4af3def524b6796e0
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
access_key: {{access_key}}
|
||||
appKey: {{appKey}}
|
||||
bili_local_id: 910f57d9d7feaf6928e592860452d06b202505211207597aa9050a2e5c31f431
|
||||
brand: Samsung
|
||||
build: {{build}}
|
||||
buvid: {{buvid}}
|
||||
channel: bili
|
||||
containerName: AbstractWebActivity
|
||||
csrf: {{csrf}}
|
||||
device: phone
|
||||
deviceId: {{device_id}}
|
||||
deviceName: SamsungSM-A5560
|
||||
devicePlatform: Android12SamsungSM-A5560
|
||||
device_id: {{device_id}}
|
||||
device_name: SamsungSM-A5560
|
||||
device_platform: Android12SamsungSM-A5560
|
||||
disable_rcmd: 0
|
||||
fingerprint: 910f57d9d7feaf6928e592860452d06b202505211207597aa9050a2e5c31f431
|
||||
isPad: false
|
||||
localFingerprint: 910f57d9d7feaf6928e592860452d06b202505211207597aa9050a2e5c31f431
|
||||
local_id: XUA5651A9EDF7387153A945CDE96CADCB6000
|
||||
mobi_app: android
|
||||
modelName: SM-A5560
|
||||
networkState: 2
|
||||
networkstate: 2
|
||||
osVer: 12
|
||||
platform: android
|
||||
sessionID: 01db4bc0
|
||||
statistics: {"appId":1,"platform":3,"version":"8.45.1","abtest":""}
|
||||
statusBarHeight: 72
|
||||
ts: 1748764069
|
||||
sign: de7e2667157cccf4af3def524b6796e0
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: api.bilibili.com
|
||||
Cookie: {{cookieStr}}
|
||||
accept: application/json, text/plain, */*
|
||||
bili-http-engine: ignet
|
||||
buvid: {{buvid}}
|
||||
content-type: application/json
|
||||
native_api_from: h5
|
||||
referer: https://big.bilibili.com/mobile/bigPoint/task
|
||||
user-agent: {{user-agent}}
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-metadata-legal-region: CN
|
||||
x-bili-mid: 341688380
|
||||
x-bili-net-bin: DQAAgL8gAQ
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDg3NzU1OTksImlhdCI6MTc0ODc0NjQ5OSwiYnV2aWQiOiJYVUE1NjUxQTlFREY3Mzg3MTUzQTk0NUNERTk2Q0FEQ0I2MDAwIn0.k0x2o3e2Q3W-6Wzc56IhbLgSjDKTaAuUV9om7K213fI
|
||||
x-bili-trace-id: d605d9f1dc3818a42f3a22b5c4683c05:2f3a22b5c4683c05:0:0
|
||||
}
|
||||
|
||||
docs {
|
||||
终端:APP
|
||||
|
||||
作用:获取大会员赚大积分的任务列表
|
||||
|
||||
入口:
|
||||
- 我的->会员中心->赚大积分->查看8项任务
|
||||
|
||||
Response sample:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"vip_info": {
|
||||
"type": 2,
|
||||
"status": 1,
|
||||
"due_date": 1779033600000,
|
||||
"vip_pay_type": 0,
|
||||
"label": {
|
||||
"path": "http://i0.hdslb.com/bfs/vip/label_annual.png",
|
||||
"text_color": "",
|
||||
"bg_style": 0,
|
||||
"bg_color": "",
|
||||
"border_color": "",
|
||||
"use_img_label": false,
|
||||
"img_label_uri_hans": "",
|
||||
"img_label_uri_hant": "",
|
||||
"img_label_uri_hans_static": "",
|
||||
"img_label_uri_hant_static": ""
|
||||
},
|
||||
"start_time": 1657418210,
|
||||
"paid_type": 0,
|
||||
"mid": 341688380,
|
||||
"role": 3,
|
||||
"tv_vip_status": 0,
|
||||
"tv_vip_pay_type": 0,
|
||||
"tv_due_date": 0,
|
||||
"vip_recent_time": 1747398345
|
||||
},
|
||||
"point_info": {
|
||||
"point": 415,
|
||||
"expire_point": 0,
|
||||
"expire_time": 0,
|
||||
"expire_days": 0
|
||||
},
|
||||
"task_info": {
|
||||
"modules": [{
|
||||
"module_title": "福利任务",
|
||||
"common_task_item": [{
|
||||
"task_code": "bonus",
|
||||
"state": 3,
|
||||
"title": "大会员福利大积分",
|
||||
"icon": "https://i0.hdslb.com/bfs/activity-plat/static/20220607/b66bfe4ccfd6bed05bdb54008ff5c7aa/IbtMl6R3yt.png",
|
||||
"subtitle": "大会员/年度大会员\u003cbr /\u003e\u003cspan class=\"active\"\u003e+100/200大积分",
|
||||
"explain": "在期大会员可领取100大积分,在期年度大会员可领取200大积分,每人限领1次。如当身份为大会员时已领取过本任务大积分,则后续成为年度大会员也无法补领取差值大积分。",
|
||||
"vip_limit": 1,
|
||||
"complete_times": 1,
|
||||
"max_times": 1,
|
||||
"recall_num": 0
|
||||
}]
|
||||
}, {
|
||||
"module_title": "体验任务",
|
||||
"common_task_item": [{
|
||||
"task_code": "privilege",
|
||||
"state": 3,
|
||||
"title": "浏览大会员权益页面",
|
||||
"icon": "https://i0.hdslb.com/bfs/activity-plat/static/20220607/b66bfe4ccfd6bed05bdb54008ff5c7aa/IbtMl6R3yt.png",
|
||||
"subtitle": "\u003cspan class=\"active\"\u003e+50大积分\u003c/span\u003e",
|
||||
"explain": "从本任务入口跳转至大会员权益页,浏览后可得50大积分,每人限完成1次。",
|
||||
"link": "https://big.bilibili.com/mobile/rights?closable=1\u0026navhide=1",
|
||||
"vip_limit": 0,
|
||||
"complete_times": 1,
|
||||
"max_times": 1,
|
||||
"recall_num": 0
|
||||
}]
|
||||
}, {
|
||||
"module_title": "日常任务",
|
||||
"module_sub_title": "截止至06-01 23:59:59",
|
||||
"common_task_item": [{
|
||||
"task_code": "dress-view",
|
||||
"state": 1,
|
||||
"title": "浏览装扮商城主页",
|
||||
"icon": "https://i0.hdslb.com/bfs/activity-plat/static/20230316/b66bfe4ccfd6bed05bdb54008ff5c7aa/d8FFfwIwFC.png",
|
||||
"subtitle": "\u003cspan class=\"active\"\u003e+10大积分\u003c/span\u003e",
|
||||
"explain": "从本任务入口跳转至装扮商城主页即可完成任务,每人限完成1次。",
|
||||
"link": "https://www.bilibili.com/h5/mall/home?f_source=vip\u0026navhide=1",
|
||||
"vip_limit": 1,
|
||||
"complete_times": 0,
|
||||
"max_times": 1,
|
||||
"recall_num": 0
|
||||
}, {
|
||||
"task_code": "vipmallview",
|
||||
"state": 1,
|
||||
"title": "浏览会员购页面10秒",
|
||||
"icon": "https://i0.hdslb.com/bfs/activity-plat/static/20220613/b66bfe4ccfd6bed05bdb54008ff5c7aa/RnlARrUdOY.png",
|
||||
"subtitle": "\u003cspan class=\"active\"\u003e+10大积分\u003c/span\u003e",
|
||||
"explain": "从本任务入口跳转至会员购页面,并连续浏览页面达10秒可得10大积分,每天可完成1次。如浏览过程中离开会员购页面则中断计时,任务判定失败,需重新从本任务入口再次跳转。",
|
||||
"link": "bilibili://mall/home?msource=member_integral_browse\u0026action=browse_all\u0026eventId=hevent_oy4b7h3epeb\u0026eventTime=10\u0026showCountDown=2\u0026taskName1=%E6%B5%8F%E8%A7%8810%E7%A7%92\u0026taskName1Placeholder=%E6%B5%8F%E8%A7%88%25ss\u0026taskName2=%E5%BE%97%E7%A7%AF%E5%88%86\u0026taskEndText=%E4%BB%BB%E5%8A%A1%E5%AE%8C%E6%88%90",
|
||||
"vip_limit": 1,
|
||||
"complete_times": 0,
|
||||
"max_times": 1,
|
||||
"recall_num": 0
|
||||
}, {
|
||||
"task_code": "vipmallbuy",
|
||||
"state": 0,
|
||||
"title": "购买指定会员购商品",
|
||||
"icon": "https://i0.hdslb.com/bfs/activity-plat/static/20220613/b66bfe4ccfd6bed05bdb54008ff5c7aa/RnlARrUdOY.png",
|
||||
"subtitle": "实付1元\u003cspan class=\"active\"\u003e+10大积分\u003c/span\u003e,当前0/2000",
|
||||
"explain": "领取本任务后,当天内购买会员购商品的首笔订单(除魔力赏/一番赏/票务/先行预定订单外)可获得大积分,每实付1元+10大积分,每天上限2000大积分。本任务不支持先行购买后补领取大积分。如用户通过购买会员购商品获得了本任务大积分,后续将购买的商品退款,则同时会扣除当时获得的任务大积分。如购买商品获得大积分后的当天内产生退款,则大积分扣除后,当天无法再完成此任务。",
|
||||
"link": "bilibili://mall/home?msource=member_integral_buy",
|
||||
"vip_limit": 1,
|
||||
"complete_times": 0,
|
||||
"max_times": 20000,
|
||||
"recall_num": 0
|
||||
}, {
|
||||
"task_code": "animatetab",
|
||||
"state": 1,
|
||||
"title": "浏览追番频道页10秒",
|
||||
"icon": "https://i0.hdslb.com/bfs/activity-plat/static/20220607/b66bfe4ccfd6bed05bdb54008ff5c7aa/uOwc1tuJwm.png",
|
||||
"subtitle": "\u003cspan class=\"active\"\u003e+10大积分\u003c/span\u003e",
|
||||
"explain": "从本任务入口跳转至追番频道页,并连续浏览页面达10秒可得10大积分,每天可完成1次。如浏览过程中离开追番频道页则中断计时,任务判定失败,需重新从本任务入口再次跳转。",
|
||||
"link": "bilibili://home?bottom_tab_id=home\u0026tab_id=bangumi\u0026vip_task_countdown=10000\u0026win_id=bigscore-animatetab",
|
||||
"vip_limit": 1,
|
||||
"complete_times": 0,
|
||||
"max_times": 1,
|
||||
"recall_num": 0
|
||||
}, {
|
||||
"task_code": "filmtab",
|
||||
"state": 1,
|
||||
"title": "浏览影视频道页10秒",
|
||||
"icon": "https://i0.hdslb.com/bfs/activity-plat/static/20220607/b66bfe4ccfd6bed05bdb54008ff5c7aa/bWPJRBuMh3.png",
|
||||
"subtitle": "\u003cspan class=\"active\"\u003e+10大积分\u003c/span\u003e",
|
||||
"explain": "从本任务入口跳转至影视频道页,并连续浏览页面达10秒可得10大积分,每天可完成1次。如浏览过程中离开影视频道页则中断计时,任务判定失败,需重新从本任务入口再次跳转。",
|
||||
"link": "bilibili://home?bottom_tab_id=home\u0026tab_id=bilibili://pgc/cinema-tab\u0026vip_task_countdown=10000\u0026win_id=bigscore-filmtab",
|
||||
"vip_limit": 1,
|
||||
"complete_times": 0,
|
||||
"max_times": 1,
|
||||
"recall_num": 0
|
||||
}, {
|
||||
"task_code": "ogvwatchnew",
|
||||
"state": 0,
|
||||
"title": "观看剧集内容",
|
||||
"icon": "https://i0.hdslb.com/bfs/activity-plat/static/20220607/b66bfe4ccfd6bed05bdb54008ff5c7aa/6prGo240Md.png",
|
||||
"subtitle": "观看任一剧集达10分钟\u003cspan class=\"active\"\u003e+40大积分\u003c/span\u003e",
|
||||
"explain": "领取本任务后,当天内单次观看番剧/国创/电影/电视剧/综艺/纪录片的任一视频的连续时长达到10分钟可得40大积分。单次观看行为需连续达10分钟,切换至其他视频内容会导致观看时长重新计数。仅大陆版手机端APP可领取、可完成任务。",
|
||||
"link": "https://www.bilibili.com/blackboard/activity-NUbGzdNJpz.html?msource=jifen",
|
||||
"vip_limit": 1,
|
||||
"complete_times": 0,
|
||||
"max_times": 1,
|
||||
"recall_num": 0
|
||||
}, {
|
||||
"task_code": "tvodbuy",
|
||||
"state": 0,
|
||||
"title": "购买单点付费影片",
|
||||
"icon": "https://i0.hdslb.com/bfs/activity-plat/static/20220607/b66bfe4ccfd6bed05bdb54008ff5c7aa/6prGo240Md.png",
|
||||
"subtitle": "会员特价/独家付费任意影片\u003cbr /\u003e\u003cspan class=\"active\"\u003e+70大积分\u003c/span\u003e",
|
||||
"explain": "领取本任务后,当天内购买任意1部会员特价/独家付费的影片可得70大积分,每天上限70大积分。",
|
||||
"link": "https://www.bilibili.com/blackboard/activity-F6sCMq4w92.html?msource=jifen",
|
||||
"vip_limit": 1,
|
||||
"complete_times": 0,
|
||||
"max_times": 1,
|
||||
"recall_num": 0
|
||||
}, {
|
||||
"task_code": "dressbuyamount",
|
||||
"state": 0,
|
||||
"title": "购买指定装扮商品",
|
||||
"icon": "https://i0.hdslb.com/bfs/activity-plat/static/20230316/b66bfe4ccfd6bed05bdb54008ff5c7aa/d8FFfwIwFC.png",
|
||||
"subtitle": "实付1元\u003cspan class=\"active\"\u003e+10大积分\u003c/span\u003e,当前0/1000",
|
||||
"explain": "领取本任务后,当天内购买装扮商城商品的订单(除装扮赏/祈愿/数字藏品订单外)可获得大积分,每实付1元+10大积分,每天上限1000大积分。本任务不支持先行购买后补领取大积分。",
|
||||
"link": "https://www.bilibili.com/h5/mall/home?navhide=1\u0026f_source=vip\u0026from=vipzx.shop",
|
||||
"vip_limit": 1,
|
||||
"complete_times": 0,
|
||||
"max_times": 10000,
|
||||
"recall_num": 0
|
||||
}]
|
||||
}],
|
||||
"sing_task_item": {
|
||||
"histories": [{
|
||||
"day": "2025-05-26",
|
||||
"signed": false,
|
||||
"score": 0
|
||||
}, {
|
||||
"day": "2025-05-27",
|
||||
"signed": false,
|
||||
"score": 0
|
||||
}, {
|
||||
"day": "2025-05-28",
|
||||
"signed": false,
|
||||
"score": 0
|
||||
}, {
|
||||
"day": "2025-05-29",
|
||||
"signed": false,
|
||||
"score": 0
|
||||
}, {
|
||||
"day": "2025-05-30",
|
||||
"signed": false,
|
||||
"score": 0
|
||||
}, {
|
||||
"day": "2025-05-31",
|
||||
"signed": false,
|
||||
"score": 0
|
||||
}, {
|
||||
"day": "2025-06-01",
|
||||
"signed": false,
|
||||
"score": 5,
|
||||
"is_today": true
|
||||
}, {
|
||||
"day": "2025-06-02",
|
||||
"signed": false,
|
||||
"score": 5
|
||||
}, {
|
||||
"day": "2025-06-03",
|
||||
"signed": false,
|
||||
"score": 5
|
||||
}, {
|
||||
"day": "2025-06-04",
|
||||
"signed": false,
|
||||
"score": 5
|
||||
}, {
|
||||
"day": "2025-06-05",
|
||||
"signed": false,
|
||||
"score": 5
|
||||
}, {
|
||||
"day": "2025-06-06",
|
||||
"signed": false,
|
||||
"score": 5
|
||||
}, {
|
||||
"day": "2025-06-07",
|
||||
"signed": false,
|
||||
"score": 10
|
||||
}],
|
||||
"count": 0,
|
||||
"base_score": 5
|
||||
},
|
||||
"score_month": 10,
|
||||
"score_limit": 10000,
|
||||
"exp_value": 3
|
||||
},
|
||||
"current_ts": 1748764070,
|
||||
"integration_task": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`build`版本号不同,会返回不同的结果。
|
||||
}
|
||||
3
bruno/mall.bilibili.com/folder.bru
Normal file
@@ -0,0 +1,3 @@
|
||||
meta {
|
||||
name: mall.bilibili.com
|
||||
}
|
||||
115
bruno/mall.bilibili.com/sign2.bru
Normal file
@@ -0,0 +1,115 @@
|
||||
meta {
|
||||
name: sign2
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
post {
|
||||
url: https://mall.bilibili.com/pgc/activity/score/task/sign2?mobi_app=android&csrf={{csrf}}&platform=android
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
mobi_app: android
|
||||
csrf: {{csrf}}
|
||||
platform: android
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: api.bilibili.com
|
||||
Cookie: {{cookieStr}}
|
||||
accept: application/json, text/plain, */*
|
||||
bili-http-engine: ignet
|
||||
buvid: {{buvid}}
|
||||
content-type: application/json; charset=utf-8
|
||||
guestid: 24675260415603
|
||||
native_api_from: h5
|
||||
referer: https://big.bilibili.com/mobile/index
|
||||
user-agent: {{user-agent}}
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-metadata-legal-region: CN
|
||||
x-bili-mid: {{mid}}
|
||||
x-bili-net-bin: DQAAgL8gAQ
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDg0NzM4MTEsImlhdCI6MTc0ODQ0NDcxMSwiYnV2aWQiOiJYVUE1NjUxQTlFREY3Mzg3MTUzQTk0NUNERTk2Q0FEQ0I2MDAwIn0.IvpforrVemmRAvyQF7svr4fd-RnfP_lEt6g6pWt4AGk
|
||||
x-bili-trace-id: 0d6c319f356dbc6191becbf764683728:91becbf764683728:0:0
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"t": 1748445354567,
|
||||
"device": "phone",
|
||||
"ts": 1748445354
|
||||
}
|
||||
}
|
||||
|
||||
docs {
|
||||
Response sample:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"data": {
|
||||
"count": 2,
|
||||
"countdown": 0,
|
||||
"day3WinImg": "https://i0.hdslb.com/bfs/activity-plat/static/4cefecc6742f8995a6bd22402a6d0b8b/day3_win_img.png",
|
||||
"day3WinImgVip": "https://i0.hdslb.com/bfs/activity-plat/static/4cefecc6742f8995a6bd22402a6d0b8b/day3_win_img_vip.png",
|
||||
"duration": 7,
|
||||
"goods": [
|
||||
{
|
||||
"picture": "https://i0.hdslb.com/bfs/activity-plat/d3df8012062c6996c26f989ed6a4f0752e5d5049.png",
|
||||
"sale": 128888,
|
||||
"title": "御坂美琴&食蜂操祈 大霸星祭Ver. 手办"
|
||||
},
|
||||
{
|
||||
"picture": "https://i0.hdslb.com/bfs/activity-plat/245337f3c305886e4937430335218f2d7bf92362.jpg",
|
||||
"sale": 39,
|
||||
"title": "暗黑不朽积分兑换礼包"
|
||||
},
|
||||
{
|
||||
"picture": "https://i0.hdslb.com/bfs/activity-plat/b782d7228e8a58d2562d26f33448a50519ce4ec5.png",
|
||||
"sale": 33600,
|
||||
"title": "BEMOE 初音未来 樱花未来 可爱体UWA系列 毛绒4wa"
|
||||
}
|
||||
],
|
||||
"hasCoupon": false,
|
||||
"score": 5,
|
||||
"seasons": [
|
||||
{
|
||||
"badge": "独家",
|
||||
"badgeType": 1,
|
||||
"cover": "http://i0.hdslb.com/bfs/bangumi/6a04c87e990ab74cd8d555ef45a863de0993b161.png",
|
||||
"ratingScore": 9.8,
|
||||
"seasonId": 5398,
|
||||
"seasonType": 1,
|
||||
"subtitle": "不一样的热血动画",
|
||||
"title": "JOJO的奇妙冒险 不灭钻石"
|
||||
},
|
||||
{
|
||||
"badge": "大会员",
|
||||
"badgeType": 0,
|
||||
"cover": "http://i0.hdslb.com/bfs/bangumi/6d8bd12e0e1ab2d4d5e8567bdba18240e75d7a1b.jpg",
|
||||
"ratingScore": 9.8,
|
||||
"seasonId": 6262,
|
||||
"seasonType": 1,
|
||||
"subtitle": "不想来笑一下吗?",
|
||||
"title": "蜡笔小新 第二季(中文)"
|
||||
},
|
||||
{
|
||||
"badge": "出品",
|
||||
"badgeType": 1,
|
||||
"cover": "https://i0.hdslb.com/bfs/bangumi/image/08bf0c1e24e454de51b58d1e26c0a9aecbe9b0c1.png",
|
||||
"ratingScore": 0.0,
|
||||
"seasonId": 46585,
|
||||
"seasonType": 4,
|
||||
"subtitle": "末世如何才能生存",
|
||||
"title": "灵笼 第二季"
|
||||
}
|
||||
],
|
||||
"vipScore": 5,
|
||||
"vipStatus": 1
|
||||
},
|
||||
"message": "success"
|
||||
}
|
||||
```
|
||||
}
|
||||
26
bruno/passport.bilibili.com/x/passport-login/web/key.bru
Normal file
@@ -0,0 +1,26 @@
|
||||
meta {
|
||||
name: key
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
get {
|
||||
url: https://passport.bilibili.com/x/passport-login/web/key
|
||||
body: none
|
||||
auth: none
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: passport.bilibili.com
|
||||
buvid: {{buvid}}
|
||||
env: prod
|
||||
app-key: android64
|
||||
user-agent: Mozilla/5.0 BiliDroid/7.72.0 (bbcallen@gmail.com) os/android model/Nexus mobi_app/android build/7720200 channel/yingyongbao innerVer/7720210 osVer/10 network/2
|
||||
x-bili-trace-id: 43e1a54f60cfbf0bb9788d4d9e6774bf:b9788d4d9e6774bf:0:0
|
||||
x-bili-aurora-eid:
|
||||
x-bili-mid:
|
||||
x-bili-aurora-zone:
|
||||
x-bili-gaia-vtoken:
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzU3MzI4OTIsImlhdCI6MTczNTcwMzc5MiwiYnV2aWQiOiJYVzcyNEQxNzI0Njg3MTlDQzI1NjA1REIyNDI0NzhEMkUxMjE5In0.hEDtIHZoN5Wyoja2hNuPcfy-laa1r05ObiEhJ5gPSt4
|
||||
bili-http-engine: cronet
|
||||
}
|
||||
49
bruno/passport.bilibili.com/x/relation/followings/simple.bru
Normal file
@@ -0,0 +1,49 @@
|
||||
meta {
|
||||
name: simple
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
get {
|
||||
url: https://passport.bilibili.com/x/relation/followings/simple?_device=android&_hwid=e0N3QnRBJEV0QiEXaxdrXG8LPgw1UDECYFU0AWJTZQ&access_key={{access_key}}&appkey={{appKey}}&build=7720200&c_locale=zh_CN&channel=yingyongbao&disable_rcmd=0&mobi_app=android&platform=android&s_locale=zh_CN&src=yingyongbao&statistics={"appId":1,"platform":3,"version":"7.72.0","abtest":""}&trace_id=20250101120700037&ts=1735704457&version=7.72.0.7720200&sign=3a7ddaa98dbf792b654bdaabdf3dcd1d
|
||||
body: none
|
||||
auth: none
|
||||
}
|
||||
|
||||
params:query {
|
||||
_device: android
|
||||
_hwid: e0N3QnRBJEV0QiEXaxdrXG8LPgw1UDECYFU0AWJTZQ
|
||||
access_key: {{access_key}}
|
||||
appkey: {{appKey}}
|
||||
build: 7720200
|
||||
c_locale: zh_CN
|
||||
channel: yingyongbao
|
||||
disable_rcmd: 0
|
||||
mobi_app: android
|
||||
platform: android
|
||||
s_locale: zh_CN
|
||||
src: yingyongbao
|
||||
statistics: {"appId":1,"platform":3,"version":"7.72.0","abtest":""}
|
||||
trace_id: 20250101120700037
|
||||
ts: 1735704457
|
||||
version: 7.72.0.7720200
|
||||
sign: 3a7ddaa98dbf792b654bdaabdf3dcd1d
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: api.bilibili.com
|
||||
buvid: {{buvid}}
|
||||
fp_local: {{device_id}}
|
||||
fp_remote: {{device_id}}
|
||||
session_id: 3160e892
|
||||
env: prod
|
||||
app-key: android64
|
||||
user-agent: Mozilla/5.0 BiliDroid/7.72.0 (bbcallen@gmail.com) os/android model/Nexus mobi_app/android build/7720200 channel/yingyongbao innerVer/7720210 osVer/10 network/2
|
||||
x-bili-trace-id: 97831b4bddcb6011ee84ae59806774bf:ee84ae59806774bf:0:0
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-mid: {{mid}}
|
||||
x-bili-aurora-zone:
|
||||
x-bili-gaia-vtoken:
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzU3MzI4OTIsImlhdCI6MTczNTcwMzc5MiwiYnV2aWQiOiJYVzcyNEQxNzI0Njg3MTlDQzI1NjA1REIyNDI0NzhEMkUxMjE5In0.hEDtIHZoN5Wyoja2hNuPcfy-laa1r05ObiEhJ5gPSt4
|
||||
bili-http-engine: cronet
|
||||
}
|
||||
49
bruno/passport.bilibili.com/x/relation/tag/special.bru
Normal file
@@ -0,0 +1,49 @@
|
||||
meta {
|
||||
name: special
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
get {
|
||||
url: https://passport.bilibili.com/x/relation/tag/special?_device=android&_hwid=e0N3QnRBJEV0QiEXaxdrXG8LPgw1UDECYFU0AWJTZQ&access_key={{access_key}}&appkey={{appKey}}&build=7720200&c_locale=zh_CN&channel=yingyongbao&disable_rcmd=0&mobi_app=android&platform=android&s_locale=zh_CN&src=yingyongbao&statistics={"appId":1,"platform":3,"version":"7.72.0","abtest":""}&trace_id=20250101120700047&ts=1735704467&version=7.72.0.7720200&sign=c49a2ca7bf93e8e65e77fe285fb71b1e
|
||||
body: none
|
||||
auth: none
|
||||
}
|
||||
|
||||
params:query {
|
||||
_device: android
|
||||
_hwid: e0N3QnRBJEV0QiEXaxdrXG8LPgw1UDECYFU0AWJTZQ
|
||||
access_key: {{access_key}}
|
||||
appkey: {{appKey}}
|
||||
build: 7720200
|
||||
c_locale: zh_CN
|
||||
channel: yingyongbao
|
||||
disable_rcmd: 0
|
||||
mobi_app: android
|
||||
platform: android
|
||||
s_locale: zh_CN
|
||||
src: yingyongbao
|
||||
statistics: {"appId":1,"platform":3,"version":"7.72.0","abtest":""}
|
||||
trace_id: 20250101120700047
|
||||
ts: 1735704467
|
||||
version: 7.72.0.7720200
|
||||
sign: c49a2ca7bf93e8e65e77fe285fb71b1e
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: api.bilibili.com
|
||||
buvid: {{buvid}}
|
||||
fp_local: {{device_id}}
|
||||
fp_remote: {{device_id}}
|
||||
session_id: 3160e892
|
||||
env: prod
|
||||
app-key: android64
|
||||
user-agent: Mozilla/5.0 BiliDroid/7.72.0 (bbcallen@gmail.com) os/android model/Nexus mobi_app/android build/7720200 channel/yingyongbao innerVer/7720210 osVer/10 network/2
|
||||
x-bili-trace-id: f8209f943aca4379b5b407142a6774bf:b5b407142a6774bf:0:0
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-mid: {{mid}}
|
||||
x-bili-aurora-zone:
|
||||
x-bili-gaia-vtoken:
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzU3MzI4OTIsImlhdCI6MTczNTcwMzc5MiwiYnV2aWQiOiJYVzcyNEQxNzI0Njg3MTlDQzI1NjA1REIyNDI0NzhEMkUxMjE5In0.hEDtIHZoN5Wyoja2hNuPcfy-laa1r05ObiEhJ5gPSt4
|
||||
bili-http-engine: cronet
|
||||
}
|
||||
43
bruno/passport.bilibili.com/x/v2/account/myinfo.bru
Normal file
@@ -0,0 +1,43 @@
|
||||
meta {
|
||||
name: myinfo
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
get {
|
||||
url: https://passport.bilibili.com/x/v2/account/myinfo?access_key={{access_key}}&appkey=783bbb7264451d82&build=7720200&buvid={{buvid}}&c_locale=zh_CN&channel=yingyongbao&disable_rcmd=0&local_id={{buvid}}&mobi_app=android&platform=android&s_locale=zh_CN&statistics={"appId":1,"platform":3,"version":"7.72.0","abtest":""}&ts=1735704457&sign=b33e7a0aa1aef3d1d4284c759fa12857
|
||||
body: none
|
||||
auth: none
|
||||
}
|
||||
|
||||
params:query {
|
||||
access_key: {{access_key}}
|
||||
appkey: 783bbb7264451d82
|
||||
build: 7720200
|
||||
buvid: {{buvid}}
|
||||
c_locale: zh_CN
|
||||
channel: yingyongbao
|
||||
disable_rcmd: 0
|
||||
local_id: {{buvid}}
|
||||
mobi_app: android
|
||||
platform: android
|
||||
s_locale: zh_CN
|
||||
statistics: {"appId":1,"platform":3,"version":"7.72.0","abtest":""}
|
||||
ts: 1735704457
|
||||
sign: b33e7a0aa1aef3d1d4284c759fa12857
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: app.bilibili.com
|
||||
buvid: {{buvid}}
|
||||
env: prod
|
||||
app-key: android64
|
||||
user-agent: Mozilla/5.0 BiliDroid/7.72.0 (bbcallen@gmail.com) os/android model/Nexus mobi_app/android build/7720200 channel/yingyongbao innerVer/7720210 osVer/10 network/2
|
||||
x-bili-trace-id: 46e70b4538aaf4001079cf97f86774bf:1079cf97f86774bf:0:0
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-mid: {{mid}}
|
||||
x-bili-aurora-zone:
|
||||
x-bili-gaia-vtoken:
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzU3MzI4OTIsImlhdCI6MTczNTcwMzc5MiwiYnV2aWQiOiJYVzcyNEQxNzI0Njg3MTlDQzI1NjA1REIyNDI0NzhEMkUxMjE5In0.hEDtIHZoN5Wyoja2hNuPcfy-laa1r05ObiEhJ5gPSt4
|
||||
bili-http-engine: cronet
|
||||
}
|
||||
29
bruno/passport.bilibili.com/x/v2/feed/index.bru
Normal file
@@ -0,0 +1,29 @@
|
||||
meta {
|
||||
name: index
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
get {
|
||||
url: https://passport.bilibili.com/x/v2/feed/index
|
||||
body: none
|
||||
auth: none
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: app.bilibili.com
|
||||
buvid: {{buvid}}
|
||||
fp_local: {{device_id}}
|
||||
fp_remote: {{device_id}}
|
||||
session_id: 3160e892
|
||||
env: prod
|
||||
app-key: android64
|
||||
user-agent: Mozilla/5.0 BiliDroid/7.72.0 (bbcallen@gmail.com) os/android model/Nexus mobi_app/android build/7720200 channel/yingyongbao innerVer/7720210 osVer/10 network/2
|
||||
x-bili-trace-id: ce74f22f44dec31cc331a61b2a6774bf:c331a61b2a6774bf:0:0
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-mid: {{mid}}
|
||||
x-bili-aurora-zone:
|
||||
x-bili-gaia-vtoken:
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzU3MzI4OTIsImlhdCI6MTczNTcwMzc5MiwiYnV2aWQiOiJYVzcyNEQxNzI0Njg3MTlDQzI1NjA1REIyNDI0NzhEMkUxMjE5In0.hEDtIHZoN5Wyoja2hNuPcfy-laa1r05ObiEhJ5gPSt4
|
||||
bili-http-engine: cronet
|
||||
}
|
||||
29
bruno/passport.bilibili.com/x/vip/web/vip_center/v2.bru
Normal file
@@ -0,0 +1,29 @@
|
||||
meta {
|
||||
name: v2
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
get {
|
||||
url: https://api.bilibili.com/x/vip/web/vip_center/v2
|
||||
body: none
|
||||
auth: none
|
||||
}
|
||||
|
||||
headers {
|
||||
Host: api.bilibili.com
|
||||
Cookie: {{cookieStr}}
|
||||
native_api_from: h5
|
||||
buvid: {{buvid}}
|
||||
accept: application/json, text/plain, */*
|
||||
referer: https://big.bilibili.com/mobile/index?exp_symbol=release_version&oflAb=1
|
||||
content-type: application/json
|
||||
user-agent: {{user-agent}}
|
||||
x-bili-trace-id: 0b9853d9388b01892edb6939c16774d4:2edb6939c16774d4:0:0
|
||||
x-bili-aurora-eid: UlAAQFkMBVkH
|
||||
x-bili-mid: {{mid}}
|
||||
x-bili-aurora-zone:
|
||||
x-bili-gaia-vtoken:
|
||||
x-bili-ticket: eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzU3MzgxMTEsImlhdCI6MTczNTcwOTAxMSwiYnV2aWQiOiJYVzcyNEQxNzI0Njg3MTlDQzI1NjA1REIyNDI0NzhEMkUxMjE5In0.J28IlxZ6SjllQEQkq_OvFUiRYAEL2VhQG_WWBcmNppE
|
||||
bili-http-engine: cronet
|
||||
}
|
||||
7
common.props
Normal file
@@ -0,0 +1,7 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<Authors>Ray</Authors>
|
||||
<Version>3.8.2</Version>
|
||||
<NoWarn>$(NoWarn);CS1591;CS0436</NoWarn>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
171
docker/README.md
Normal file
@@ -0,0 +1,171 @@
|
||||
# Docker 使用说明
|
||||
<!-- TOC depthFrom:2 -->
|
||||
|
||||
- [1. 前期工作](#1-前期工作)
|
||||
- [2. 方式一:一键脚本(推荐)](#2-方式一一键脚本推荐)
|
||||
- [3. 方式二:手动 Docker Compose](#3-方式二手动-docker-compose)
|
||||
- [3.1. 启动](#31-启动)
|
||||
- [3.2. 其他命令参考](#32-其他命令参考)
|
||||
- [4. 方式三:手动Docker指令](#4-方式三手动docker指令)
|
||||
- [4.1. Docker启动](#41-docker启动)
|
||||
- [4.2. 其他指令参考](#42-其他指令参考)
|
||||
- [4.3. 使用Watchtower更新容器](#43-使用watchtower更新容器)
|
||||
- [5. 登录](#5-登录)
|
||||
- [6. 添加 Bili 账号](#6-添加-bili-账号)
|
||||
- [7. 自己构建镜像(非必须)](#7-自己构建镜像非必须)
|
||||
- [8. 其他](#8-其他)
|
||||
|
||||
<!-- /TOC -->
|
||||
|
||||
## 1. 前期工作
|
||||
|
||||
```
|
||||
apt-get update
|
||||
apt-get install curl
|
||||
```
|
||||
|
||||
## 2. 方式一:一键脚本(推荐)
|
||||
|
||||
```
|
||||
bash <(curl -sSL https://raw.githubusercontent.com/RayWangQvQ/BiliBiliToolPro/main/docker/install.sh)
|
||||
```
|
||||
|
||||
## 3. 方式二:手动 Docker Compose
|
||||
|
||||
### 3.1. 启动
|
||||
|
||||
```
|
||||
# 创建目录
|
||||
mkdir bili_tool_web && cd bili_tool_web
|
||||
|
||||
# 下载
|
||||
wget https://raw.githubusercontent.com/RayWangQvQ/BiliBiliToolPro/main/docker/sample/docker-compose.yml
|
||||
mkdir -p config
|
||||
cd ./config
|
||||
wget https://raw.githubusercontent.com/RayWangQvQ/BiliBiliToolPro/main/docker/sample/config/cookies.json
|
||||
cd ..
|
||||
|
||||
# 启动
|
||||
docker compose up -d
|
||||
|
||||
# 查看启动日志
|
||||
docker logs -f bili_tool_web
|
||||
```
|
||||
|
||||
最终文件结构如下:
|
||||
|
||||
```
|
||||
bili_tool_web
|
||||
├── Logs
|
||||
├── config
|
||||
├──── cookies.json
|
||||
└── docker-compose.yml
|
||||
```
|
||||
|
||||
### 3.2. 其他命令参考
|
||||
|
||||
```
|
||||
# 启动 docker-compose
|
||||
docker compose up -d
|
||||
|
||||
# 停止 docker-compose
|
||||
docker compose stop
|
||||
|
||||
# 查看实时日志
|
||||
docker logs -f bili_tool_web
|
||||
|
||||
# 进入容器
|
||||
docker exec -it bili_tool_web /bin/bash
|
||||
|
||||
# 手动更新容器
|
||||
docker compose pull && docker compose up -d
|
||||
```
|
||||
|
||||
## 4. 方式三:手动Docker指令
|
||||
|
||||
### 4.1. Docker启动
|
||||
|
||||
```
|
||||
# 创建目录
|
||||
mkdir bili_tool_web && cd bili_tool_web
|
||||
|
||||
# 生成并运行容器
|
||||
docker pull ghcr.io/raywangqvq/bili_tool_web
|
||||
docker run -d --name="bili_tool_web" \
|
||||
-p 22330:8080 \
|
||||
-e TZ=Asia/Shanghai \
|
||||
-v ./Logs:/app/Logs \
|
||||
-v ./config:/app/config \
|
||||
ghcr.io/raywangqvq/bili_tool_web
|
||||
|
||||
# 查看实时日志
|
||||
docker logs -f bili_tool_web
|
||||
```
|
||||
|
||||
其中,`cookie`需要替换为自己真实的cookie字符串
|
||||
|
||||
### 4.2. 其他指令参考
|
||||
|
||||
```
|
||||
# 启动容器
|
||||
docker start bili_tool_web
|
||||
|
||||
# 停止容器
|
||||
docker stop bili_tool_web
|
||||
|
||||
# 重启容器
|
||||
docker restart bili_tool_web
|
||||
|
||||
# 删除容器
|
||||
docker rm bili_tool_web
|
||||
|
||||
# 进入容器
|
||||
docker exec -it bili_tool_web /bin/bash
|
||||
```
|
||||
|
||||
### 4.3. 使用Watchtower更新容器
|
||||
```
|
||||
docker run --rm \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
containrrr/watchtower \
|
||||
--run-once --cleanup \
|
||||
bili_tool_web
|
||||
```
|
||||
|
||||
## 5. 登录
|
||||
|
||||
- 默认用户:`admin`
|
||||
- 默认密码:`BiliTool@2233`
|
||||
|
||||
首次登陆后,请到`Admin`页面修改密码。
|
||||
|
||||
## 6. 添加 Bili 账号
|
||||
|
||||
扫码进行账号添加。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## 7. 自己构建镜像(非必须)
|
||||
|
||||
目前我提供和维护的镜像:
|
||||
|
||||
- DockerHub: `[zai7lou/bili_tool_web](https://hub.docker.com/repository/docker/zai7lou/bili_tool_web)`
|
||||
- GitHub: `[bili_tool_web](https://github.com/RayWangQvQ/BiliBiliToolPro/pkgs/container/bili_tool_web)`
|
||||
|
||||
如果有需要(大部分都不需要),可以使用源码自己构建镜像,如下:
|
||||
|
||||
在有项目的Dockerfile的目录运行
|
||||
|
||||
`docker build -t TARGET_NAME .`
|
||||
|
||||
`TARGET_NAME`为镜像名称和版本,可以自己起个名字
|
||||
|
||||
## 8. 其他
|
||||
|
||||
代码编译和发布环境: mcr.microsoft.com/dotnet/sdk:8.0
|
||||
|
||||
代码运行环境: mcr.microsoft.com/dotnet/aspnet:8.0
|
||||
|
||||
如果下载`github`资源有问题,可以尝试添加加速器。
|
||||
8
docker/build/buildAndPushImage_multiArch.ps1
Normal file
@@ -0,0 +1,8 @@
|
||||
echo "start to build"
|
||||
# https://www.docker.com/blog/multi-arch-build-and-images-the-simple-way/
|
||||
# https://segmentfault.com/a/1190000021166703
|
||||
# linux/arm/v6,linux/riscv64,linux/s390x,linux/ppc64le,linux/386,,linux/arm/v7 偶发异常,待进一步测试
|
||||
echo "Start to build docker image with multi-arch"
|
||||
# $image="zai7lou/bilibili_tool_pro"
|
||||
# $version="0.0.5"
|
||||
docker buildx build --tag "zai7lou/bilibili_tool_pro:0.0.5" --tag "zai7lou/bilibili_tool_pro:latest" --output "type=image,push=true" --platform linux/amd64,linux/arm64 ../..
|
||||
8
docker/build/buildImage.cmd
Normal file
@@ -0,0 +1,8 @@
|
||||
@echo off
|
||||
|
||||
REM start to build
|
||||
echo Start to build docker image
|
||||
@echo on
|
||||
docker build --tag zai7lou/bilibili_tool_pro:latest ../..
|
||||
@echo off
|
||||
pause
|
||||
10
docker/build/buildImage_amd64.cmd
Normal file
@@ -0,0 +1,10 @@
|
||||
@echo off
|
||||
|
||||
REM start to build
|
||||
REM https://www.docker.com/blog/multi-arch-build-and-images-the-simple-way/
|
||||
REM https://segmentfault.com/a/1190000021166703
|
||||
echo Start to build docker image with amd64-arch
|
||||
@echo on
|
||||
docker buildx build --tag zai7lou/bilibili_tool_pro:latest --output "type=image,push=false" --platform linux/amd64 ../..
|
||||
@echo off
|
||||
pause
|
||||
10
docker/build/buildImage_arm64.cmd
Normal file
@@ -0,0 +1,10 @@
|
||||
@echo off
|
||||
|
||||
REM start to build
|
||||
REM https://www.docker.com/blog/multi-arch-build-and-images-the-simple-way/
|
||||
REM https://segmentfault.com/a/1190000021166703
|
||||
echo Start to build docker image with arm64-arch
|
||||
@echo on
|
||||
docker buildx build --platform linux/arm64 -o type=docker -t zai7lou/bilibili_tool ../..
|
||||
@echo off
|
||||
pause
|
||||
17
docker/entrypoint.sh
Normal file
@@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
echo "Starting BiliTool container..."
|
||||
mkdir -p /app/config
|
||||
|
||||
echo "Running maintenance scripts..."
|
||||
|
||||
# 3.3.0 need migrate db file location to /app/config
|
||||
if [ -f "/app/BiliBiliTool.db" ]; then
|
||||
echo "[3.3.0] Migrate db file location to /app/config"
|
||||
mv /app/BiliBiliTool.db /app/config/BiliBiliTool.db
|
||||
fi
|
||||
|
||||
echo "Starting application..."
|
||||
exec dotnet Ray.BiliBiliTool.Web.dll "$@"
|
||||
337
docker/install.sh
Normal file
@@ -0,0 +1,337 @@
|
||||
#!/usr/bin/env bash
|
||||
###
|
||||
# @Author: Ray zai7lou@outlook.com
|
||||
# @Date: 2023-02-11 23:13:19
|
||||
# @LastEditors: Ray zai7lou@outlook.com
|
||||
# @LastEditTime: 2023-02-12 20:51:19
|
||||
# @FilePath: \BiliBiliToolPro\docker\install.sh
|
||||
# @Description:
|
||||
###
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
echo ' ____ _ _____ _ '
|
||||
echo ' | __ ) _| |_|_ _|__ ___ | | '
|
||||
echo ' | _ \(_) (_) | |/ _ \ / _ \| | '
|
||||
echo ' | |_) | | | | | | (_) | (_) | | '
|
||||
echo ' |____/|_|_|_| |_|\___/ \___/|_| '
|
||||
|
||||
current_dir=$(pwd)
|
||||
base_dir="${current_dir}/bili_tool_web"
|
||||
github_proxy=""
|
||||
github_branch="main"
|
||||
remote_compose_url="${github_proxy}https://raw.githubusercontent.com/RayWangQvQ/BiliBiliToolPro/refs/heads/${github_branch}/docker/sample/docker-compose.yml"
|
||||
remote_ckJson_url="${github_proxy}https://raw.githubusercontent.com/RayWangQvQ/BiliBiliToolPro/refs/heads/${github_branch}/docker/sample/config/cookies.json"
|
||||
docker_img_name="ghcr.io/raywangqvq/bili_tool_web"
|
||||
container_name="bili_tool_web"
|
||||
|
||||
### infra
|
||||
verbose=false
|
||||
|
||||
invocation='echo "" && say_verbose "Calling: ${yellow:-}${FUNCNAME[0]} ${green:-}$*${normal:-}"'
|
||||
|
||||
if [ -t 1 ] && command -v tput >/dev/null; then
|
||||
ncolors=$(tput colors || echo 0)
|
||||
if [ -n "$ncolors" ] && [ $ncolors -ge 8 ]; then
|
||||
bold="$(tput bold || echo)"
|
||||
normal="$(tput sgr0 || echo)"
|
||||
black="$(tput setaf 0 || echo)"
|
||||
red="$(tput setaf 1 || echo)"
|
||||
green="$(tput setaf 2 || echo)"
|
||||
yellow="$(tput setaf 3 || echo)"
|
||||
blue="$(tput setaf 4 || echo)"
|
||||
magenta="$(tput setaf 5 || echo)"
|
||||
cyan="$(tput setaf 6 || echo)"
|
||||
white="$(tput setaf 7 || echo)"
|
||||
fi
|
||||
fi
|
||||
|
||||
say_verbose() {
|
||||
if [ "$verbose" = true ]; then
|
||||
# using stream 3 (defined in the beginning) to not interfere with stdout of functions
|
||||
# which may be used as return value
|
||||
printf "%b\n" "${cyan:-}$(date "+%Y-%m-%d %H:%M:%S")[VER]:${normal:-} $1" >&3
|
||||
fi
|
||||
}
|
||||
|
||||
say_info() {
|
||||
printf "%b\n" "${green:-}$(date "+%Y-%m-%d %H:%M:%S")[INF]:$1${normal:-}" >&2
|
||||
}
|
||||
|
||||
say_warning() {
|
||||
printf "%b\n" "${yellow:-}$(date "+%Y-%m-%d %H:%M:%S")[WAR]:$1${normal:-}" >&3
|
||||
}
|
||||
|
||||
say_err() {
|
||||
printf "%b\n" "${red:-}$(date "+%Y-%m-%d %H:%M:%S")[ERR]:$1${normal:-}" >&2
|
||||
}
|
||||
|
||||
machine_has() {
|
||||
eval $invocation
|
||||
|
||||
command -v "$1" >/dev/null 2>&1
|
||||
return $?
|
||||
}
|
||||
|
||||
# args:
|
||||
# remote_path - $1
|
||||
get_http_header_curl() {
|
||||
eval $invocation
|
||||
|
||||
local remote_path="$1"
|
||||
|
||||
curl_options="-I -sSL --retry 5 --retry-delay 2 --connect-timeout 15 "
|
||||
curl $curl_options "$remote_path" 2>&1 || return 1
|
||||
return 0
|
||||
}
|
||||
|
||||
# args:
|
||||
# remote_path - $1
|
||||
get_http_header_wget() {
|
||||
eval $invocation
|
||||
|
||||
local remote_path="$1"
|
||||
local wget_options="-q -S --spider --tries 5 "
|
||||
# Store options that aren't supported on all wget implementations separately.
|
||||
local wget_options_extra="--waitretry 2 --connect-timeout 15 "
|
||||
local wget_result=''
|
||||
|
||||
wget $wget_options $wget_options_extra "$remote_path" 2>&1
|
||||
wget_result=$?
|
||||
|
||||
if [[ $wget_result == 2 ]]; then
|
||||
# Parsing of the command has failed. Exclude potentially unrecognized options and retry.
|
||||
wget $wget_options "$remote_path" 2>&1
|
||||
return $?
|
||||
fi
|
||||
|
||||
return $wget_result
|
||||
}
|
||||
|
||||
# Updates global variables $http_code and $download_error_msg
|
||||
downloadcurl() {
|
||||
eval $invocation
|
||||
|
||||
unset http_code
|
||||
unset download_error_msg
|
||||
local remote_path="$1"
|
||||
local out_path="${2:-}"
|
||||
local remote_path_with_credential="${remote_path}"
|
||||
local curl_options="--retry 20 --retry-delay 2 --connect-timeout 15 -sSL -f --create-dirs "
|
||||
local failed=false
|
||||
if [ -z "$out_path" ]; then
|
||||
curl $curl_options "$remote_path_with_credential" 2>&1 || failed=true
|
||||
else
|
||||
curl $curl_options -o "$out_path" "$remote_path_with_credential" 2>&1 || failed=true
|
||||
fi
|
||||
if [ "$failed" = true ]; then
|
||||
local response=$(get_http_header_curl $remote_path)
|
||||
http_code=$(echo "$response" | awk '/^HTTP/{print $2}' | tail -1)
|
||||
download_error_msg="Unable to download $remote_path."
|
||||
if [[ $http_code != 2* ]]; then
|
||||
download_error_msg+=" Returned HTTP status code: $http_code."
|
||||
fi
|
||||
say_verbose "$download_error_msg"
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
# Updates global variables $http_code and $download_error_msg
|
||||
downloadwget() {
|
||||
eval $invocation
|
||||
|
||||
unset http_code
|
||||
unset download_error_msg
|
||||
local remote_path="$1"
|
||||
local out_path="${2:-}"
|
||||
local remote_path_with_credential="${remote_path}"
|
||||
local wget_options="--tries 20 "
|
||||
# Store options that aren't supported on all wget implementations separately.
|
||||
local wget_options_extra="--waitretry 2 --connect-timeout 15 "
|
||||
local wget_result=''
|
||||
|
||||
if [ -z "$out_path" ]; then
|
||||
wget -q $wget_options $wget_options_extra -O - "$remote_path_with_credential" 2>&1
|
||||
wget_result=$?
|
||||
else
|
||||
wget $wget_options $wget_options_extra -O "$out_path" "$remote_path_with_credential" 2>&1
|
||||
wget_result=$?
|
||||
fi
|
||||
|
||||
if [[ $wget_result == 2 ]]; then
|
||||
# Parsing of the command has failed. Exclude potentially unrecognized options and retry.
|
||||
if [ -z "$out_path" ]; then
|
||||
wget -q $wget_options -O - "$remote_path_with_credential" 2>&1
|
||||
wget_result=$?
|
||||
else
|
||||
wget $wget_options -O "$out_path" "$remote_path_with_credential" 2>&1
|
||||
wget_result=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ $wget_result != 0 ]]; then
|
||||
local disable_feed_credential=false
|
||||
local response=$(get_http_header_wget $remote_path $disable_feed_credential)
|
||||
http_code=$(echo "$response" | awk '/^ HTTP/{print $2}' | tail -1)
|
||||
download_error_msg="Unable to download $remote_path."
|
||||
if [[ $http_code != 2* ]]; then
|
||||
download_error_msg+=" Returned HTTP status code: $http_code."
|
||||
fi
|
||||
say_verbose "$download_error_msg"
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# args:
|
||||
# remote_path - $1
|
||||
# [out_path] - $2 - stdout if not provided
|
||||
download() {
|
||||
eval $invocation
|
||||
|
||||
local remote_path="$1"
|
||||
local out_path="${2:-}"
|
||||
|
||||
if [[ "$remote_path" != "http"* ]]; then
|
||||
cp "$remote_path" "$out_path"
|
||||
return $?
|
||||
fi
|
||||
|
||||
local failed=false
|
||||
local attempts=0
|
||||
while [ $attempts -lt 3 ]; do
|
||||
attempts=$((attempts + 1))
|
||||
failed=false
|
||||
if machine_has "curl"; then
|
||||
downloadcurl "$remote_path" "$out_path" || failed=true
|
||||
elif machine_has "wget"; then
|
||||
downloadwget "$remote_path" "$out_path" || failed=true
|
||||
else
|
||||
say_err "Missing dependency: neither curl nor wget was found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$failed" = false ] || [ $attempts -ge 3 ] || { [ ! -z $http_code ] && [ $http_code = "404" ]; }; then
|
||||
break
|
||||
fi
|
||||
|
||||
say_info "Download attempt #$attempts has failed: $http_code $download_error_msg"
|
||||
say_info "Attempt #$((attempts + 1)) will start in $((attempts * 10)) seconds."
|
||||
sleep $((attempts * 10))
|
||||
done
|
||||
|
||||
if [ "$failed" = true ]; then
|
||||
say_verbose "Download failed: $remote_path"
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
createBaseDir() {
|
||||
eval $invocation
|
||||
mkdir -p $base_dir
|
||||
cd $base_dir
|
||||
}
|
||||
|
||||
installDocker() {
|
||||
eval $invocation
|
||||
if machine_has "docker"; then
|
||||
say_info "已安装docker"
|
||||
docker --version
|
||||
return 0
|
||||
else
|
||||
say_warning "未安装docker,尝试安装"
|
||||
download "https://get.docker.com" ./get-docker.sh
|
||||
chmod +x ./get-docker.sh
|
||||
get-docker.sh
|
||||
|
||||
if machine_has "docker"; then
|
||||
say_info "已安装docker"
|
||||
docker --version
|
||||
return 0
|
||||
else
|
||||
say_err "docker 安装失败,请手动安装成功后再执行该脚本"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
downloadResources() {
|
||||
eval $invocation
|
||||
say_info "开始下载资源"
|
||||
|
||||
# docker compose
|
||||
[ -f "docker-compose.yml" ] || download $remote_compose_url ./docker-compose.yml
|
||||
|
||||
# ckJson
|
||||
mkdir -p config
|
||||
cd ./config
|
||||
[ -f "cookies.json" ] || download $remote_ckJson_url ./cookies.json
|
||||
chmod +x ./cookies.json
|
||||
cd ..
|
||||
|
||||
ls -l
|
||||
}
|
||||
|
||||
runContainer() {
|
||||
eval $invocation
|
||||
|
||||
say_info "开始拉取镜像"
|
||||
docker pull $docker_img_name
|
||||
|
||||
say_info "开始运行容器"
|
||||
{
|
||||
docker compose version && docker compose up -d
|
||||
} || {
|
||||
docker-compose version && docker-compose up -d
|
||||
} || {
|
||||
docker run -d --name="${container_name}" \
|
||||
-p 22330:8080 \
|
||||
-e TZ=Asia/Shanghai \
|
||||
-v $base_dir/Logs:/app/Logs \
|
||||
-v $base_dir/config:/app/config \
|
||||
$docker_img_name
|
||||
} || {
|
||||
say_err "创建容器失败,请检查"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
checkResult() {
|
||||
eval $invocation
|
||||
say_info "检测容器运行情况"
|
||||
|
||||
docker ps --filter "name=${container_name}"
|
||||
|
||||
containerId=$(docker ps -q --filter "name=^${container_name}$")
|
||||
if [ -n "$containerId" ]; then
|
||||
docker logs ${container_name}
|
||||
echo ""
|
||||
echo "==============================================="
|
||||
echo "Congratulations! 恭喜!"
|
||||
echo "创建并运行${container_name}容器成功。"
|
||||
echo "访问地址:http:{ip}:22330"
|
||||
echo "云服务器防火墙请自行开放22330端口"
|
||||
echo "首次运行后,请执行扫码登录任务添加账号"
|
||||
echo "Enjoy it~"
|
||||
echo "==============================================="
|
||||
else
|
||||
echo ""
|
||||
echo "请查看运行日志,确认容器是否正常运行,点击 Ctrl+c 退出日志追踪"
|
||||
echo ""
|
||||
docker logs -f ${container_name}
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
installDocker
|
||||
createBaseDir
|
||||
downloadResources
|
||||
runContainer
|
||||
checkResult
|
||||
}
|
||||
|
||||
main
|
||||
4
docker/sample/config/cookies.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"BiliBiliCookies":[
|
||||
]
|
||||
}
|
||||
14
docker/sample/docker-compose.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
services:
|
||||
bili_tool_web:
|
||||
image: ghcr.io/raywangqvq/bili_tool_web
|
||||
container_name: bili_tool_web
|
||||
restart: unless-stopped
|
||||
tty: true
|
||||
volumes:
|
||||
- ./Logs:/app/Logs
|
||||
- ./config:/app/config
|
||||
ports:
|
||||
- "22330:8080"
|
||||
environment:
|
||||
TZ: "Asia/Shanghai"
|
||||
DailyTaskConfig__Cron: "0 0 15 * * ?"
|
||||
54
docs/claw-cloud.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# Claw免费容器部署
|
||||
|
||||
## 教程
|
||||
|
||||
点击 [https://console.run.claw.cloud/signin](https://console.run.claw.cloud/signin?link=FNTTMHS056E5) 注册账号,选择使用 GitHub 账号注册并登录。
|
||||
|
||||
成功后,每个月会赠送 $5 额度,跑 BiliTool 绰绰有余。
|
||||
|
||||
左上角可以选择一个区域,然后点击 **App Store**。
|
||||
|
||||

|
||||
|
||||
搜索`BiliTool`并点击如下搜索结果。
|
||||
|
||||

|
||||
|
||||
点击`Deploy App`按钮一键部署。
|
||||
|
||||

|
||||
|
||||
等待半分钟左右,进入容器 Detail 页面,点击如下链接即可访问站点:
|
||||
|
||||

|
||||
|
||||
## 消息推送
|
||||
|
||||
建议使用环境变量配置:
|
||||
|
||||

|
||||
|
||||
配置值见:[confifuration](/docs/configuration.md)
|
||||
|
||||
## 费用
|
||||
|
||||
官方模板默认配置为 `0.25C 512M`,每天 $0.06,一个月 `30 * 0.06 = $1.8`,每月赠送是 $5,还很富裕。
|
||||
|
||||
## 其他
|
||||
|
||||
### 账号
|
||||
|
||||
- 默认用户名:admin
|
||||
- 默认密码:BiliTool@2233
|
||||
|
||||
首次登陆后,请立即修改账号和密码!
|
||||
|
||||
### 速度
|
||||
|
||||
不同区域速度可能有差异,可自己切换尝试。
|
||||
|
||||
如果速度慢可能会导致页面短时无响应,可稍作等待,或手动刷新。
|
||||
|
||||
### 更新
|
||||
|
||||
右上角`Update`进行版本更新,如果更新后启动异常,请尝试`Pause`然后再`Restart`。
|
||||
814
docs/configuration.md
Normal file
@@ -0,0 +1,814 @@
|
||||
# 配置说明
|
||||
|
||||
**[目录]**
|
||||
|
||||
<!-- TOC depthFrom:2 insertAnchor:true -->
|
||||
|
||||
- [1. 配置方式](#1-配置方式)
|
||||
- [1.1. 方式一:修改配置文件](#11-方式一修改配置文件)
|
||||
- [1.2. 方式二:命令启动时通过命令行参数配置](#12-方式二命令启动时通过命令行参数配置)
|
||||
- [1.3. 方式三:添加环境变量(推荐)](#13-方式三添加环境变量推荐)
|
||||
- [1.4. 方式四:托管在青龙面板上,使用面板的环境变量页或配置文件页进行配置](#14-方式四托管在青龙面板上使用面板的环境变量页或配置文件页进行配置)
|
||||
- [2. 优先级](#2-优先级)
|
||||
- [3. 详细配置说明](#3-详细配置说明)
|
||||
- [3.1. Cookie字符串](#31-cookie字符串)
|
||||
- [3.2. 安全相关的配置](#32-安全相关的配置)
|
||||
- [3.2.1. 是否跳过执行任务](#321-是否跳过执行任务)
|
||||
- [3.2.2. 随机睡眠的最大时长](#322-随机睡眠的最大时长)
|
||||
- [3.2.3. 两次调用B站Api之间的间隔秒数](#323-两次调用b站api之间的间隔秒数)
|
||||
- [3.2.4. 间隔秒数所针对的HttpMethod](#324-间隔秒数所针对的httpmethod)
|
||||
- [3.2.5. 请求B站接口时头部传递的User-Agent](#325-请求b站接口时头部传递的user-agent)
|
||||
- [3.2.6. App请求B站接口时头部传递的User-Agent](#326-app请求b站接口时头部传递的user-agent)
|
||||
- [3.2.7. WebProxy(代理)](#327-webproxy代理)
|
||||
- [3.3. 每日任务相关](#33-每日任务相关)
|
||||
- [3.3.1. 是否开启观看视频任务](#331-是否开启观看视频任务)
|
||||
- [3.3.2. 是否开启分享视频任务](#332-是否开启分享视频任务)
|
||||
- [3.3.3. 每日投币数量](#333-每日投币数量)
|
||||
- [3.3.4. 投币时是否同时点赞](#334-投币时是否同时点赞)
|
||||
- [3.3.5. 优先选择支持的up主Id集合](#335-优先选择支持的up主id集合)
|
||||
- [3.3.6. 每月几号自动领取会员权益](#336-每月几号自动领取会员权益)
|
||||
- [3.3.7. 每月几号进行直播中心银瓜子兑换硬币](#337-每月几号进行直播中心银瓜子兑换硬币)
|
||||
- [3.3.8. Lv6后开启硬币白嫖模式](#338-lv6后开启硬币白嫖模式)
|
||||
- [3.3.9. 是否开启专栏投币](#339-是否开启专栏投币)
|
||||
- [3.4. 天选时刻抽奖相关](#34-天选时刻抽奖相关)
|
||||
- [3.4.1. 根据关键字排除奖品](#341-根据关键字排除奖品)
|
||||
- [3.4.2. 根据关键字指定奖品](#342-根据关键字指定奖品)
|
||||
- [3.4.3. 天选抽奖后是否自动分组关注的主播](#343-天选抽奖后是否自动分组关注的主播)
|
||||
- [3.4.4. 天选筹抽奖主播Uid黑名单](#344-天选筹抽奖主播uid黑名单)
|
||||
- [3.5. 批量取关相关](#35-批量取关相关)
|
||||
- [3.5.1. 想要批量取关的分组名称](#351-想要批量取关的分组名称)
|
||||
- [3.5.2. 批量取关的人数](#352-批量取关的人数)
|
||||
- [3.5.3. 取关白名单](#353-取关白名单)
|
||||
- [3.6. 大积分相关](#36-大积分相关)
|
||||
- [3.6.1. 自定义观看番剧](#361-自定义观看番剧)
|
||||
- [3.7. 免费B币券充电](#37-免费b币券充电)
|
||||
- [3.7.1. 充电对象](#371-充电对象)
|
||||
- [3.8. 推送相关](#38-推送相关)
|
||||
- [3.8.1. 是否开启每个账号单独推送消息](#381-是否开启每个账号单独推送消息)
|
||||
- [3.8.2. Telegram机器人](#382-telegram机器人)
|
||||
- [3.8.2.1. botToken](#3821-bottoken)
|
||||
- [3.8.2.2. chatId](#3822-chatid)
|
||||
- [3.8.2.3. proxy](#3823-proxy)
|
||||
- [3.8.3. 企业微信机器人](#383-企业微信机器人)
|
||||
- [3.8.3.1. webHookUrl](#3831-webhookurl)
|
||||
- [3.8.4. 钉钉机器人](#384-钉钉机器人)
|
||||
- [3.8.4.1. webHookUrl](#3841-webhookurl)
|
||||
- [3.8.5. Server酱](#385-server酱)
|
||||
- [3.8.5.1. TurboScKey(Server酱SCKEY)](#3851-turbosckeyserver酱sckey)
|
||||
- [3.8.6. 酷推](#386-酷推)
|
||||
- [3.8.6.1. sKey](#3861-skey)
|
||||
- [3.8.7. 推送到自定义Api](#387-推送到自定义api)
|
||||
- [3.8.7.1. api](#3871-api)
|
||||
- [3.8.7.2. placeholder](#3872-placeholder)
|
||||
- [3.8.7.3. bodyJsonTemplate](#3873-bodyjsontemplate)
|
||||
- [3.8.8. PushPlus[推荐]](#388-pushplus推荐)
|
||||
- [3.8.8.1. PushPlus的Token](#3881-pushplus的token)
|
||||
- [3.8.8.2. PushPlus的Topic](#3882-pushplus的topic)
|
||||
- [3.8.8.3. PushPlus的Channel](#3883-pushplus的channel)
|
||||
- [3.8.8.4. PushPlus的Webhook](#3884-pushplus的webhook)
|
||||
- [3.8.9. Microsoft Teams](#389-microsoft-teams)
|
||||
- [3.8.9.1. Microsoft Teams的Webhook](#3891-microsoft-teams的webhook)
|
||||
- [3.8.10. 企业微信应用推送](#3810-企业微信应用推送)
|
||||
- [3.8.10.1. 企业微信应用推送的corpId](#38101-企业微信应用推送的corpid)
|
||||
- [3.8.10.2. 企业微信应用推送的agentId](#38102-企业微信应用推送的agentid)
|
||||
- [3.8.10.3. 企业微信应用推送的secret](#38103-企业微信应用推送的secret)
|
||||
- [3.9. 日志相关](#39-日志相关)
|
||||
- [3.9.1. 日志输出等级](#391-日志输出等级)
|
||||
- [3.9.2. 日志输出样式](#392-日志输出样式)
|
||||
- [3.9.3. 定时任务相关](#393-定时任务相关)
|
||||
- [3.9.4. 定时任务](#394-定时任务)
|
||||
|
||||
<!-- /TOC -->
|
||||
|
||||
<a id="markdown-1-配置方式" name="1-配置方式"></a>
|
||||
## 1. 配置方式
|
||||
|
||||
<a id="markdown-11-方式一修改配置文件" name="11-方式一修改配置文件"></a>
|
||||
### 1.1. 方式一:修改配置文件
|
||||
|
||||
推荐使用Release包在本地运行的朋友使用,直接打开文件,将对应的配置值填入,保存即可生效。
|
||||
|
||||
默认有3个配置文件:`appsettings.json`、`appsettings.Development.json`、`appsettings.Production.json`,分别对应默认、开发与生产环境。
|
||||
|
||||
对于不是开发人员的大部分人来说,只需要关注`appsettings.Production.json`即可。
|
||||
|
||||
<a id="markdown-12-方式二命令启动时通过命令行参数配置" name="12-方式二命令启动时通过命令行参数配置"></a>
|
||||
### 1.2. 方式二:命令启动时通过命令行参数配置
|
||||
|
||||
在使用命令行启动时,可使用`-key=value`的形式附加配置,所有可用的命令行参数均在 [命令行参数映射表](../src/Ray.BiliBiliTool.Config/Constants.cs#L76-L105) 中。
|
||||
|
||||
* 使用跨平台的依赖包
|
||||
|
||||
各个系统只要安装了net5环境,均可使用dotnet命令启动,命令样例:
|
||||
|
||||
```
|
||||
dotnet Ray.BiliBiliTool.Console.dll -cookieStr=abc -numberOfCoins=5
|
||||
```
|
||||
|
||||
* Windows系统
|
||||
|
||||
使用自包含包(win-x86-x64.zip),命令样例:
|
||||
|
||||
```
|
||||
Ray.BiliBiliTool.Console.exe -cookieStr=abc -numberOfCoins=5
|
||||
```
|
||||
|
||||
* Linux系统
|
||||
|
||||
使用自包含包(linux.zip),命令样例:
|
||||
|
||||
```
|
||||
Ray.BiliBiliTool.Console -cookieStr=abc -numberOfCoins=5
|
||||
```
|
||||
|
||||
如映射文件所展示,支持使用命令行配置的配置项并不多,也不建议大量地使用该种方式进行配置。使用包运行的朋友,除了改配置文件和命令行参数配置外,还可以使用环境变量进行配置,这也是推荐的做法,如下。
|
||||
|
||||
<a id="markdown-13-方式三添加环境变量推荐" name="13-方式三添加环境变量推荐"></a>
|
||||
### 1.3. 方式三:添加环境变量(推荐)
|
||||
|
||||
所有的配置项均可以通过添加环境变量来进行配置。如:
|
||||
|
||||
Linux下运行Web:
|
||||
|
||||
```bash
|
||||
# 添加环境变量作为配置:
|
||||
export RunTasks="Daily"
|
||||
export BiliBiliCookies__1="abc"
|
||||
export BiliBiliCookies__2="efg"
|
||||
export DailyTaskConfig__NumberOfCoins="3"
|
||||
|
||||
# 开始运行程序:
|
||||
dotnet BiliBiliTool.Web.dll
|
||||
```
|
||||
|
||||
Linux下运行Console:
|
||||
|
||||
```bash
|
||||
# 添加环境变量作为配置:
|
||||
export Ray_RunTasks="Daily"
|
||||
export Ray_BiliBiliCookies__1="abc"
|
||||
export Ray_BiliBiliCookies__2="efg"
|
||||
export Ray_DailyTaskConfig__NumberOfCoins="3"
|
||||
|
||||
# 开始运行程序:
|
||||
dotnet Ray.BiliBiliTool.Console.dll
|
||||
```
|
||||
|
||||
注意Console需要添加`Ray_`前缀,win系统使用`set`关键字代替`export`。
|
||||
|
||||
<a id="markdown-14-方式四托管在青龙面板上使用面板的环境变量页或配置文件页进行配置" name="14-方式四托管在青龙面板上使用面板的环境变量页或配置文件页进行配置"></a>
|
||||
### 1.4. 方式四:托管在青龙面板上,使用面板的环境变量页或配置文件页进行配置
|
||||
|
||||
青龙面板配置,其本质还是通过环境变量进行配置,有如下两种方式。
|
||||
|
||||
- 环境变量页[推荐]
|
||||
|
||||
例如:
|
||||
|
||||
名称:`Ray_BiliBiliCookies__1`
|
||||
|
||||
值:`abcde`
|
||||
|
||||
<img src="/docs/imgs/qinglong-env.png" alt="qinglong-env" width="800" />
|
||||
|
||||
- 配置文件页
|
||||
|
||||
例如,配置Cookie和推送:
|
||||
|
||||
```
|
||||
export Ray_BiliBiliCookies__1="_uuid=abc..."
|
||||
export Ray_Serilog__WriteTo__9__Args__token="abcde"
|
||||
```
|
||||
|
||||
<img src="/docs/imgs/qinglong-config.png" alt="qinglong-config" width="800" />
|
||||
|
||||
配置文件页添加、修改配置,需要重启青龙容器使之生效,环境变量页则可以立即生效,所以推荐使用环境变量页配置。
|
||||
|
||||
<a id="markdown-2-优先级" name="2-优先级"></a>
|
||||
## 2. 优先级
|
||||
|
||||
以上 4 种配置源,其优先级由低到高依次是:json文件 < 环境变量 < 命令行。
|
||||
|
||||
高优先级的配置会覆盖低优先级的配置。
|
||||
|
||||
<a id="markdown-3-详细配置说明" name="3-详细配置说明"></a>
|
||||
## 3. 详细配置说明
|
||||
|
||||
Console项目(青龙)的环境变量需要添加`Ray_`前缀,其他不用。
|
||||
比如,原始配置Key为`BiliBiliCookies__1`,Console则为`Ray_BiliBiliCookies__1`。
|
||||
|
||||
<a id="markdown-31-cookie字符串" name="31-cookie字符串"></a>
|
||||
### 3.1. Cookie字符串
|
||||
|
||||
必填,数组,可以多个。
|
||||
|
||||
| TITLE | CONTENT | 示例 |
|
||||
| ----- | ------------------- | -------------------------------------------- |
|
||||
| 配置Key | `BiliBiliCookies__1` | |
|
||||
| 值域 | 字符串,英文分号分隔,来自浏览器抓取 | `export BiliBiliCookies__1=abc=123;def=456;` |
|
||||
| 默认值 | 空 | |
|
||||
|
||||
| TITLE | CONTENT | 示例 |
|
||||
| ----- | ------------------- | -------------------------------------------- |
|
||||
| 配置Key | `BiliBiliCookies__2` | |
|
||||
| 值域 | 字符串,英文分号分隔,来自浏览器抓取 | `export BiliBiliCookies__1=abc=123;def=456;` |
|
||||
| 默认值 | 空 | |
|
||||
|
||||
<a id="markdown-32-安全相关的配置" name="32-安全相关的配置"></a>
|
||||
### 3.2. 安全相关的配置
|
||||
<a id="markdown-321-是否跳过执行任务" name="321-是否跳过执行任务"></a>
|
||||
#### 3.2.1. 是否跳过执行任务
|
||||
|
||||
用于特殊情况下,通过配置灵活的开启和关闭整个应用。
|
||||
|
||||
配置为关闭后,程序会跳过所有任务,不会调用B站任何接口。
|
||||
|
||||
| TITLE | CONTENT | 示例 |
|
||||
| ----- | ------------------------------- | ------------------------------------ |
|
||||
| 配置Key | `Security__IsSkipDailyTask` | |
|
||||
| 值域 | [true,false] | `export Security__IsSkipDailyTask=true` |
|
||||
| 默认值 | false | |
|
||||
|
||||
<a id="markdown-322-随机睡眠的最大时长" name="322-随机睡眠的最大时长"></a>
|
||||
#### 3.2.2. 随机睡眠的最大时长
|
||||
|
||||
用于设置程序启动后,随机睡眠时间的最大上限值,单位为分钟。
|
||||
|
||||
这样可以避免程序每天准点地在同一时间运行太像机器。
|
||||
|
||||
配置为0则不进行睡眠。
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ----- | --------------------------------- |
|
||||
| 配置Key | `Security__RandomSleepMaxMin` |
|
||||
| 值域 | 数字 |
|
||||
| 默认值 | 20 |
|
||||
|
||||
<a id="markdown-323-两次调用b站api之间的间隔秒数" name="323-两次调用b站api之间的间隔秒数"></a>
|
||||
#### 3.2.3. 两次调用B站Api之间的间隔秒数
|
||||
|
||||
用于设置两次Api请求之间的最短时间间隔,避免程序在1到2秒内连续调用B站的Api过快。
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ----- | ------------------------------------------------ |
|
||||
| 配置Key | `Security__IntervalSecondsBetweenRequestApi` |
|
||||
| 值域 | [0,+] |
|
||||
| 默认值 | 20 |
|
||||
|
||||
<a id="markdown-324-间隔秒数所针对的httpmethod" name="324-间隔秒数所针对的httpmethod"></a>
|
||||
#### 3.2.4. 间隔秒数所针对的HttpMethod
|
||||
|
||||
间隔秒数所针对的HttpMethod类型,服务于上一个配置。服务器一般对GET请求不是很敏感,建议只针对POST请求做间隔就可以了。
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ----- | ----------------------------------- |
|
||||
| 配置Key | `Security__IntervalMethodTypes` |
|
||||
| 值域 | [GET,POST],多个以英文逗号分隔 |
|
||||
| 默认值 | POST |
|
||||
|
||||
<a id="markdown-325-请求b站接口时头部传递的user-agent" name="325-请求b站接口时头部传递的user-agent"></a>
|
||||
#### 3.2.5. 请求B站接口时头部传递的User-Agent
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ----- | ---------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 配置Key | `Security__UserAgent` |
|
||||
| 值域 | 字符串,可以F12从自己的浏览器获取 |
|
||||
| 默认值 | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36 Edg/87.0.664.41 |
|
||||
|
||||
获取浏览器中自己的UA的方法见下图:
|
||||
|
||||
<img src="/docs/imgs/get-user-agent.png" alt="get-user-agent" width="800" />
|
||||
|
||||
<a id="markdown-326-app请求b站接口时头部传递的user-agent" name="326-app请求b站接口时头部传递的user-agent"></a>
|
||||
#### 3.2.6. App请求B站接口时头部传递的User-Agent
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 配置Key | `Security__UserAgentApp` |
|
||||
| 值域 | 字符串,可以F12从自己的浏览器获取 |
|
||||
| 默认值 | Mozilla/5.0 (Linux; Android 12; SM-S9080 Build/V417IR; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/91.0.4472.114 Mobile Safari/537.36 os/android model/SM-S9080 build/7760700 osVer/12 sdkInt/32 network/2 BiliApp/7760700 mobi_app/android channel/bili innerVer/7760710 c_locale/zh_CN s_locale/zh_CN disable_rcmd/0 7.76.0 os/android model/SM-S9080 mobi_app/android build/7760700 channel/bili innerVer/7760710 osVer/12 network/2 |
|
||||
|
||||
获取浏览器中自己的UA的方法见下图:
|
||||
|
||||
<img src="/docs/imgs/get-user-agent.png" alt="get-user-agent" width="800" />
|
||||
|
||||
<a id="markdown-327-webproxy代理" name="327-webproxy代理"></a>
|
||||
#### 3.2.7. WebProxy(代理)
|
||||
|
||||
支持需要账户密码的代理。
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| -------------- | ------------------------------ |
|
||||
| 配置Key | `Security__WebProxy` |
|
||||
| 值域 | 字符串,形如:user:password@host:port |
|
||||
| 默认值 | 无 |
|
||||
|
||||
<a id="markdown-33-每日任务相关" name="33-每日任务相关"></a>
|
||||
### 3.3. 每日任务相关
|
||||
|
||||
<a id="markdown-331-是否开启观看视频任务" name="331-是否开启观看视频任务"></a>
|
||||
#### 3.3.1. 是否开启观看视频任务
|
||||
|
||||
当该配置被设置为`false`时会导致大积分任务中的签到领额外10点经验的任务不能自动完成。
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ----- | ------------------------------- |
|
||||
| 配置Key | `DailyTaskConfig__IsWatchVideo` |
|
||||
| 值域 | [true,false] |
|
||||
| 默认值 | true |
|
||||
|
||||
<a id="markdown-332-是否开启分享视频任务" name="332-是否开启分享视频任务"></a>
|
||||
#### 3.3.2. 是否开启分享视频任务
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ----- | ------------------------------- |
|
||||
| 配置Key | `DailyTaskConfig__IsShareVideo` |
|
||||
| 值域 | [true,false] |
|
||||
| 默认值 | true |
|
||||
|
||||
<a id="markdown-333-每日投币数量" name="333-每日投币数量"></a>
|
||||
#### 3.3.3. 每日投币数量
|
||||
|
||||
每天投币的总目标数量,因为投币获取经验只与次数有关,所以程序每次投币只会投1个,也就是说该配置也表示每日投币次数。
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ----- | -------------------------------- |
|
||||
| 配置Key | `DailyTaskConfig__NumberOfCoins` |
|
||||
| 值域 | [0,5],为安全考虑,程序内部还会做验证,最大不能超过5 |
|
||||
| 默认值 | 5 |
|
||||
|
||||
<a id="markdown-334-投币时是否同时点赞" name="334-投币时是否同时点赞"></a>
|
||||
#### 3.3.4. 投币时是否同时点赞
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ----- | ----------------------------- |
|
||||
| 配置Key | `DailyTaskConfig__SelectLike` |
|
||||
| 值域 | [true,false] |
|
||||
| 默认值 | false |
|
||||
|
||||
<a id="markdown-335-优先选择支持的up主id集合" name="335-优先选择支持的up主id集合"></a>
|
||||
#### 3.3.5. 优先选择支持的up主Id集合
|
||||
|
||||
通过填入自己选择的up主ID,以后观看、分享和投币,都会优先从配置的up主下面挑选视频,如果没有找到,则会去你的**特别关注**列表中随机再获取,再然后会去**普通关注**列表中随机获取,最后会去排行榜中随机获取。
|
||||
|
||||
**注意:该配置的默认值是作者的upId,如需换掉的话,直接更改即可。**
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ----- | --------------------------------------------------------------- |
|
||||
| 配置Key | `DailyTaskConfig__SupportUpIds` |
|
||||
| 值域 | up主ID,多个用英文逗号分隔,默认是作者本人的UpId,如需删除可以配置为空格字符串或"-1",也可以配置为其他人的UpId |
|
||||
| 默认值 | 作者的upId |
|
||||
|
||||
获取UP主的Id方法:打开bilibili,进入欲要选择的UP主主页,在url中和简介中,都可获得该UP主的Id,如下图所示:
|
||||
|
||||
<img src="/docs/imgs/get-up-id.png" alt="get-up-id" width="800" />
|
||||
|
||||
<a id="markdown-336-每月几号自动领取会员权益" name="336-每月几号自动领取会员权益"></a>
|
||||
#### 3.3.6. 每月几号自动领取会员权益
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `DailyTaskConfig__DayOfReceiveVipPrivilege` |
|
||||
| 值域 | [-1,31],-1表示不指定,默认每月1号;0表示不领取 |
|
||||
| 默认值 | 1 |
|
||||
|
||||
<a id="markdown-337-每月几号进行直播中心银瓜子兑换硬币" name="337-每月几号进行直播中心银瓜子兑换硬币"></a>
|
||||
#### 3.3.7. 每月几号进行直播中心银瓜子兑换硬币
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `DailyTaskConfig__DayOfExchangeSilver2Coin` |
|
||||
| 值域 | [-1,31],-1表示不指定,默认每月最后一天;-2表示每天;0表示不进行兑换 |
|
||||
| 默认值 | -1 |
|
||||
|
||||
<a id="markdown-338-lv6后开启硬币白嫖模式" name="338-lv6后开启硬币白嫖模式"></a>
|
||||
#### 3.3.8. Lv6后开启硬币白嫖模式
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `DailyTaskConfig__SaveCoinsWhenLv6` |
|
||||
| 值域 | [true,false],true表示开启,Lv6的账号不会投币 |
|
||||
| 默认值 | false |
|
||||
|
||||
<a id="markdown-339-是否开启专栏投币" name="339-是否开启专栏投币"></a>
|
||||
#### 3.3.9. 是否开启专栏投币
|
||||
|
||||
| TITLE | CONTENT | |
|
||||
| ----- | ----------------------------------------- | --- |
|
||||
| 配置Key | `DailyTaskConfig__IsDonateCoinForArticle` | |
|
||||
| 值域 | [true,false] | |
|
||||
| 默认值 | false | |
|
||||
|
||||
<a id="markdown-34-天选时刻抽奖相关" name="34-天选时刻抽奖相关"></a>
|
||||
### 3.4. 天选时刻抽奖相关
|
||||
|
||||
<a id="markdown-341-根据关键字排除奖品" name="341-根据关键字排除奖品"></a>
|
||||
#### 3.4.1. 根据关键字排除奖品
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `LiveLotteryTaskConfig__ExcludeAwardNames` |
|
||||
| 值域 | 一串字符串,多个关键字使用`\|`符号隔开 |
|
||||
| 默认值 | `舰\|船\|航海\|代金券\|自拍\|照\|写真\|图` |
|
||||
|
||||
<a id="markdown-342-根据关键字指定奖品" name="342-根据关键字指定奖品"></a>
|
||||
#### 3.4.2. 根据关键字指定奖品
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `LiveLotteryTaskConfig__IncludeAwardNames` |
|
||||
| 值域 | 一串字符串,多个关键字使用`\|`符号隔开 |
|
||||
| 默认值 | 空 |
|
||||
|
||||
<a id="markdown-343-天选抽奖后是否自动分组关注的主播" name="343-天选抽奖后是否自动分组关注的主播"></a>
|
||||
#### 3.4.3. 天选抽奖后是否自动分组关注的主播
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `LiveLotteryTaskConfig__AutoGroupFollowings` |
|
||||
| 值域 | [true,false] |
|
||||
| 默认值 | true |
|
||||
|
||||
<a id="markdown-344-天选筹抽奖主播uid黑名单" name="344-天选筹抽奖主播uid黑名单"></a>
|
||||
#### 3.4.4. 天选筹抽奖主播Uid黑名单
|
||||
|
||||
不想参与抽奖的主播Upid集合,多个用英文逗号分隔,配置后不会参加黑名单中的主播的抽奖活动。默认值是目前已知的中奖后拒绝发奖的Up,后期还会继续补充,也反映反馈。
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `LiveLotteryTaskConfig__DenyUids` |
|
||||
| 值域 | 字符串,如"65566781,1277481241" |
|
||||
| 默认值 | "65566781,1277481241,1643654862,603676925" |
|
||||
|
||||
<a id="markdown-35-批量取关相关" name="35-批量取关相关"></a>
|
||||
### 3.5. 批量取关相关
|
||||
|
||||
<a id="markdown-351-想要批量取关的分组名称" name="351-想要批量取关的分组名称"></a>
|
||||
#### 3.5.1. 想要批量取关的分组名称
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `UnfollowBatchedTaskConfig__GroupName` |
|
||||
| 值域 | 字符串 |
|
||||
| 默认值 | 天选时刻 |
|
||||
|
||||
<a id="markdown-352-批量取关的人数" name="352-批量取关的人数"></a>
|
||||
#### 3.5.2. 批量取关的人数
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `UnfollowBatchedTaskConfig__Count` |
|
||||
| 值域 | 数字,[-1,+],-1表示全部 |
|
||||
| 默认值 | 5 |
|
||||
|
||||
<a id="markdown-353-取关白名单" name="353-取关白名单"></a>
|
||||
#### 3.5.3. 取关白名单
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `UnfollowBatchedTaskConfig__RetainUids` |
|
||||
| 值域 | 字符串,多个使用英文逗号分隔 |
|
||||
| 默认值 | 108569350 |
|
||||
|
||||
<a id="markdown-36-大积分相关" name="36-大积分相关"></a>
|
||||
### 3.6. 大积分相关
|
||||
|
||||
<a id="markdown-361-自定义观看番剧" name="361-自定义观看番剧"></a>
|
||||
#### 3.6.1. 自定义观看番剧
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `VipBigPointConfig__ViewBangumis` |
|
||||
| 值域 | 番剧的ssid(season_id) |
|
||||
| 默认值 | `33378`(名侦探柯南) |
|
||||
|
||||
<a id="markdown-37-免费b币券充电" name="37-免费b币券充电"></a>
|
||||
### 3.7. 免费B币券充电
|
||||
|
||||
<a id="markdown-371-充电对象" name="371-充电对象"></a>
|
||||
#### 3.7.1. 充电对象
|
||||
|
||||
充电对象的upId,-1表示不指定,~~默认为自己充电~~;其他Id则会尝试为配置的UpId充电。
|
||||
|
||||
注意:之前可以不配置,默认为自己充电,但后来阿B改了规则,不再允许自己冲自己。。。
|
||||
|
||||
建议配置为自己小号(小号需要认证为作者并开启充电),或者也可以配置为 -1,以支持作者~
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ----- | --------------------------------- |
|
||||
| 配置Key | `ChargeTaskConfig__AutoChargeUpId` |
|
||||
| 值域 | up的Id字符串 |
|
||||
| 默认值 | 无 |
|
||||
|
||||
<a id="markdown-38-推送相关" name="38-推送相关"></a>
|
||||
### 3.8. 推送相关
|
||||
|
||||
v1.0.x仅支持推送到Server酱,v1.1.x之后重新定义了推送地概念,将推送仅看作不同地日志输出端,与Console、File没有本质区别。
|
||||
|
||||
配置多个,多个端均会收到日志消息。推荐Telegram、企业微信、Server酱。
|
||||
|
||||
<a id="markdown-381-是否开启每个账号单独推送消息" name="381-是否开启每个账号单独推送消息"></a>
|
||||
#### 3.8.1. 是否开启每个账号单独推送消息
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Notification__IsSingleAccountSingleNotify` |
|
||||
| 意义 | 开启后,每个账号会单独推送消息。否则多账号合并只推送一条消息 |
|
||||
| 值域 | [true,false] |
|
||||
| 默认值 | true |
|
||||
|
||||
<a id="markdown-382-telegram机器人" name="382-telegram机器人"></a>
|
||||
#### 3.8.2. Telegram机器人
|
||||
|
||||
<img src="/docs/imgs/push-tg.png" alt="push-tg" width="400" />
|
||||
|
||||
<a id="markdown-3821-bottoken" name="3821-bottoken"></a>
|
||||
##### 3.8.2.1. botToken
|
||||
|
||||
点击 https://core.telegram.org/api#bot-api 查看如何创建机器人并获取到机器人的botToken。
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__3__Args__botToken` |
|
||||
| 意义 | 用于将日志输出到Telegram机器人 |
|
||||
| 值域 | 一串字符串 |
|
||||
| 默认值 | 空 |
|
||||
|
||||
<a id="markdown-3822-chatid" name="3822-chatid"></a>
|
||||
##### 3.8.2.2. chatId
|
||||
点击 https://api.telegram.org/bot{TOKEN}/getUpdates 获取到与机器人的chatId(需要用上面获取到的Token替换进链接里的{TOKEN}后访问)
|
||||
|
||||
P.S.访问链接需要能访问"外网",有vpn的挂vpn。
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__3__Args__chatId` |
|
||||
| 值域 | 一串字符串 |
|
||||
| 默认值 | 空 |
|
||||
| 命令行示范 | 无 |
|
||||
|
||||
<a id="markdown-3823-proxy" name="3823-proxy"></a>
|
||||
##### 3.8.2.3. proxy
|
||||
|
||||
使用代理
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__3__Args__proxy` |
|
||||
| 值域 | 一串字符串,格式为user:password@host:port |
|
||||
| 默认值 | 空 |
|
||||
| 命令行示范 | 无 |
|
||||
|
||||
<a id="markdown-383-企业微信机器人" name="383-企业微信机器人"></a>
|
||||
#### 3.8.3. 企业微信机器人
|
||||
|
||||
在群内添加机器人,获取到机器人的WebHook地址,添加到配置中。
|
||||
|
||||
<img src="/docs/imgs/push-workweixin.png" alt="push-workweixin" width="400" />
|
||||
|
||||
<a id="markdown-3831-webhookurl" name="3831-webhookurl"></a>
|
||||
##### 3.8.3.1. webHookUrl
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__4__Args__webHookUrl` |
|
||||
| 值域 | 一串字符串 |
|
||||
| 默认值 | 空 |
|
||||
| 命令行示范 | 无 |
|
||||
|
||||
<a id="markdown-384-钉钉机器人" name="384-钉钉机器人"></a>
|
||||
#### 3.8.4. 钉钉机器人
|
||||
|
||||
在群内添加机器人,获取到机器人的WebHook地址,添加到配置中。
|
||||
|
||||
机器人的安全策略,当前不支持加签,请使用关键字策略,推荐关键字:`Ray` 或 `BiliBili`
|
||||
|
||||
<img src="/docs/imgs/push-ding.png" alt="push-ding" width="400" />
|
||||
|
||||
<a id="markdown-3841-webhookurl" name="3841-webhookurl"></a>
|
||||
##### 3.8.4.1. webHookUrl
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__5__Args__webHookUrl` |
|
||||
| 值域 | 一串字符串 |
|
||||
| 默认值 | 空 |
|
||||
|
||||
<a id="markdown-385-server酱" name="385-server酱"></a>
|
||||
#### 3.8.5. Server酱
|
||||
官网: http://sc.ftqq.com/9.version
|
||||
|
||||
<img src="/docs/imgs/wechat-push.png" alt="wechat-push" width="400" />
|
||||
|
||||
<a id="markdown-3851-turbosckeyserver酱sckey" name="3851-turbosckeyserver酱sckey"></a>
|
||||
##### 3.8.5.1. TurboScKey(Server酱SCKEY)
|
||||
获取方式请参考官网。
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__6__Args__turboScKey` |
|
||||
| 值域 | 一串字符串 |
|
||||
| 默认值 | 空 |
|
||||
|
||||
<a id="markdown-386-酷推" name="386-酷推"></a>
|
||||
#### 3.8.6. 酷推
|
||||
https://cp.xuthus.cc/
|
||||
<a id="markdown-3861-skey" name="3861-skey"></a>
|
||||
##### 3.8.6.1. sKey
|
||||
该平台可能还在完善当中,对接时我发现其接口定义不规范,且机器人容易被封,所以不推荐使用,且不接受提酷推推送相关bug。
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__7__Args__sKey` |
|
||||
| 值域 | 一串字符串 |
|
||||
| 默认值 | 空 |
|
||||
|
||||
<a id="markdown-387-推送到自定义api" name="387-推送到自定义api"></a>
|
||||
#### 3.8.7. 推送到自定义Api
|
||||
这是我简单封装了一个通用的推送接口,可以推送到任意的api地址,如果有自己的机器人或自己的用于接受日志的api,可以根据需要自定义配置。
|
||||
<a id="markdown-3871-api" name="3871-api"></a>
|
||||
##### 3.8.7.1. api
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__8__Args__api` |
|
||||
| 值域 | 一串字符串 |
|
||||
| 默认值 | 空 |
|
||||
|
||||
<a id="markdown-3872-placeholder" name="3872-placeholder"></a>
|
||||
##### 3.8.7.2. placeholder
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__8__Args__placeholder` |
|
||||
| 值域 | 一串字符串 |
|
||||
| 默认值 | 空 |
|
||||
|
||||
<a id="markdown-3873-bodyjsontemplate" name="3873-bodyjsontemplate"></a>
|
||||
##### 3.8.7.3. bodyJsonTemplate
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__8__Args__bodyJsonTemplate` |
|
||||
| 值域 | 一串字符串 |
|
||||
| 默认值 | 空 |
|
||||
|
||||
<a id="markdown-388-pushplus推荐" name="388-pushplus推荐"></a>
|
||||
#### 3.8.8. PushPlus[推荐]
|
||||
|
||||
官网: http://www.pushplus.plus/doc/
|
||||
|
||||
<a id="markdown-3881-pushplus的token" name="3881-pushplus的token"></a>
|
||||
##### 3.8.8.1. PushPlus的Token
|
||||
|
||||
获取方式请参考官网。
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__9__Args__token` |
|
||||
| 值域 | 一串字符串 |
|
||||
| 默认值 | 空 |
|
||||
|
||||
<a id="markdown-3882-pushplus的topic" name="3882-pushplus的topic"></a>
|
||||
##### 3.8.8.2. PushPlus的Topic
|
||||
|
||||
获取方式请参考官网。
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__9__Args__topic` |
|
||||
| 值域 | 一串字符串 |
|
||||
| 默认值 | 空 |
|
||||
|
||||
<a id="markdown-3883-pushplus的channel" name="3883-pushplus的channel"></a>
|
||||
##### 3.8.8.3. PushPlus的Channel
|
||||
|
||||
获取方式请参考官网。
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__9__Args__channel` |
|
||||
| 值域 | 一串字符串,[wechat,webhook,cp,sms,mail] |
|
||||
| 默认值 | 空 |
|
||||
|
||||
<a id="markdown-3884-pushplus的webhook" name="3884-pushplus的webhook"></a>
|
||||
##### 3.8.8.4. PushPlus的Webhook
|
||||
|
||||
获取方式请参考官网。
|
||||
|
||||
webhook编码(不是地址),在官网平台设定,仅在channel使用webhook渠道和CP渠道时需要填写
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__9__Args__webhook` |
|
||||
| 值域 | 一串字符串 |
|
||||
| 默认值 | 空 |
|
||||
| 命令行示范 | |
|
||||
|
||||
<a id="markdown-389-microsoft-teams" name="389-microsoft-teams"></a>
|
||||
#### 3.8.9. Microsoft Teams
|
||||
|
||||
官网: https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook
|
||||
|
||||
<a id="markdown-3891-microsoft-teams的webhook" name="3891-microsoft-teams的webhook"></a>
|
||||
##### 3.8.9.1. Microsoft Teams的Webhook
|
||||
|
||||
webhook的完整地址,在Teams的Channel中获取,详细获取方式请参考官网。
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__10__Args__webhook` |
|
||||
| 值域 | 一串字符串 |
|
||||
| 默认值 | 空 |
|
||||
| 命令行示范 | |
|
||||
|
||||
<a id="markdown-3810-企业微信应用推送" name="3810-企业微信应用推送"></a>
|
||||
#### 3.8.10. 企业微信应用推送
|
||||
|
||||
官网: https://developer.work.weixin.qq.com/tutorial/application-message
|
||||
|
||||
当`corpId`、`agentId`、`secret`均不为空时,自动开启推送,否则关闭。
|
||||
|
||||
`toUser`、`toParty`、`toTag`3个配置非必填,但不可同时为空,默认`toUser`为`@all`,向所有用户推送。
|
||||
|
||||
<a id="markdown-38101-企业微信应用推送的corpid" name="38101-企业微信应用推送的corpid"></a>
|
||||
##### 3.8.10.1. 企业微信应用推送的corpId
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__11__Args__corpId` |
|
||||
| 值域 | 一串字符串 |
|
||||
| 默认值 | 空 |
|
||||
| 命令行示范 | |
|
||||
|
||||
<a id="markdown-38102-企业微信应用推送的agentid" name="38102-企业微信应用推送的agentid"></a>
|
||||
##### 3.8.10.2. 企业微信应用推送的agentId
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__11__Args__agentId` |
|
||||
| 值域 | 一串字符串 |
|
||||
| 默认值 | 空 |
|
||||
| 命令行示范 | |
|
||||
|
||||
<a id="markdown-38103-企业微信应用推送的secret" name="38103-企业微信应用推送的secret"></a>
|
||||
##### 3.8.10.3. 企业微信应用推送的secret
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ----- | -------------------------------- |
|
||||
| 配置Key | `Serilog__WriteTo__11__Args__secret` |
|
||||
| 值域 | 一串字符串 |
|
||||
| 默认值 | 空 |
|
||||
| 命令行示范 | |
|
||||
|
||||
<a id="markdown-39-日志相关" name="39-日志相关"></a>
|
||||
### 3.9. 日志相关
|
||||
|
||||
<a id="markdown-391-日志输出等级" name="391-日志输出等级"></a>
|
||||
#### 3.9.1. 日志输出等级
|
||||
|
||||
为了美观, BiliBiliTool 默认只输出最低等级为 Information 的日志,保证只展示最精简的信息。
|
||||
|
||||
通过更改等级,可以指定日志输出的详细程度。
|
||||
|
||||
BiliBiliTool 使用 Serilog 作为日志组件,所以其值域与 Serilog 的日志等级选项相同,这里只建议在需要调试时改为`Debug`,应用会输出详细的调试日志信息,包括每次调用B站Api的请求参数与返回数据。
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__0__Args__restrictedToMinimumLevel` |
|
||||
| 值域 | [Information,Debug] |
|
||||
| 默认值 | 1 |
|
||||
|
||||
<a id="markdown-392-日志输出样式" name="392-日志输出样式"></a>
|
||||
#### 3.9.2. 日志输出样式
|
||||
|
||||
这里的日志样式指的是 Console 的等级,即 GitHub Actions 里和微信推送里看到的日志。
|
||||
|
||||
通过更改模板样式,可以指定日志输出的样式,比如不输出时间和等级,做到最精简的样式。
|
||||
|
||||
BiliBiliTool 使用 Serilog 作为日志组件,所以可以参考 Serilog 的日志样式模板。
|
||||
|
||||
| TITLE | CONTENT |
|
||||
| ---------- | -------------- |
|
||||
| 配置Key | `Serilog__WriteTo__0__Args__outputTemplate` |
|
||||
| 值域 | 字符串 |
|
||||
| 默认值 | `[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}` |
|
||||
|
||||
<a id="markdown-393-定时任务相关" name="393-定时任务相关"></a>
|
||||
#### 3.9.3. 定时任务相关
|
||||
|
||||
适用于 [方式四:docker容器化运行(推荐)](../docker/README.md),用于配置定时任务。
|
||||
|
||||
<a id="markdown-394-定时任务" name="394-定时任务"></a>
|
||||
#### 3.9.4. 定时任务
|
||||
|
||||
以下环境变量的值应为有效的 [cron 表达式](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm)。
|
||||
|
||||
当被设置时,对应定时任务将开启。
|
||||
|
||||
| 环境变量 | 定时任务 |
|
||||
| --------------------------------- | ------ |
|
||||
| `DailyTaskConfig__Cron` | 每日任务 |
|
||||
| `LiveLotteryTaskConfig__Cron` | 天选时刻抽奖 |
|
||||
| `UnfollowBatchedTaskConfig__Cron` | 批量取关 |
|
||||
| `VipBigPointConfig__Cron` | 大会员大积分 |
|
||||
87
docs/donate-list.md
Normal file
@@ -0,0 +1,87 @@
|
||||
# 赞赏
|
||||
|
||||
| 赞赏人 | 时间 | 金额 | 方式 | 留言 | 回复
|
||||
| ---------- | -------------- | -------------- | -------------- | -------------- | -------------- |
|
||||
| Jonty | 2020-11-04 | ¥5 | 微信 | 不知可否加个联系方式,讨论一下b站小公举 | 你没有留微信号啊大兄弟 |
|
||||
| 春歌 | 2020-11-06 | ¥5 | 微信 | 赞赏一下~ | |
|
||||
| 雅南 | 2020-11-08 | ¥1 | 微信 | 赞赏一下~ | |
|
||||
| RainMeter | 2020-11-09 | ¥1 | 微信 | 大佬牛逼 | |
|
||||
| 1998 | 2020-11-10 | ¥1 | 微信 | 谢谢大佬,但是投币总是失败 | 有问题可以加群讨论 |
|
||||
| Andy | 2020-11-10 | ¥1 | 微信 | 赞赏一下~ | |
|
||||
| 不若艳阳 | 2020-11-11 | ¥10 | 微信 | 赞赏一下~ | |
|
||||
| 努力努力再努力 | 2020-11-11 | ¥1 | 微信 | 赞赏一下~ | |
|
||||
| Wandering Ghost | 2020-11-12 | ¥1 | 微信 | 好活,当赏 | |
|
||||
| sadhu | 2020-11-12 | ¥1 | 支付宝 | 加油 | |
|
||||
| 浮蘭·鳥ドス | 2020-11-12 | ¥1 | 微信 | 加油!在一个微信公众号看到这个 | |
|
||||
| Ⅶ | 2020-11-12 | ¥1 | 微信 | 太棒啦!支持您! | |
|
||||
| 舞飞扬 | 2020-11-12 | ¥1 | 支付宝 | 多谢bilibilitool | |
|
||||
| 王雨桐 | 2020-11-13 | ¥1 | 微信 | 感谢ps借用作者项目完成我开源选修作业——分析一款开源软件 | |
|
||||
| 郁宁 | 2020-11-13 | ¥5 | 微信 | Godd Job | |
|
||||
| 半岛 | 2020-11-13 | ¥1 | 支付宝 | 赞赏一下~ | |
|
||||
| Wenson | 2020-11-19 | ¥10 | 微信 | 搞的不错👍 | |
|
||||
| xingxing | 2020-11-20 | ¥1 | 支付宝 | 这东西太好用了,点个 | |
|
||||
| | 2020-11-21 | ¥10 | 微信 | 单纯问下,有做成云函数的可行性吗 | 目前没了解过云函数相关,有懂的朋友欢迎PR~ |
|
||||
| Gaogao | 2020-11-21 | ¥1 | 支付宝 | 老哥加油加油^0^ | |
|
||||
| 老狗 | 2020-11-23 | ¥10 | 微信 | 好活当赏吗 | |
|
||||
| | 2020-11-23 | ¥10 | 微信 | | |
|
||||
| 还输给回忆不成 | 2020-11-23 | ¥1 | 微信 | | |
|
||||
| Winfor | 2020-11-23 | ¥5 | 微信 | 感谢分享 | |
|
||||
| 那个冰 | 2020-11-23 | ¥1 | 微信 | 如果一开始努力的方向就是错误的,那么只会越来越忙。感谢 | |
|
||||
| Luv(sic) part 2 | 2020-11-24 | ¥1 | 微信 | 牛逼嗷,上班划水新技能get | |
|
||||
| 刘小明 | 2020-11-24 | ¥3 | 微信 | 大佬喝冰阔落 | |
|
||||
| 青翘 | 2020-11-25 | ¥1 | 支付宝 | 赞赏一下~ | |
|
||||
| CT | 2020-11-25 | ¥1 | 微信 | 感谢 | |
|
||||
| Panda | 2020-11-25 | ¥1 | 微信 | 很好用的工具 | |
|
||||
| Che | 2020-11-25 | ¥1 | 微信 | 微信推送的配置方法能不能说的再详细一点,没用过有点懵 | |
|
||||
| 张浩 | 2020-11-25 | ¥1 | 微信 | 集资给你买霸王 | 真棒 |
|
||||
| 骷髅刀皇 | 2020-11-26 | ¥1 | 支付宝 | 外行人第一个再GitHub跑成功的源码 | |
|
||||
| | 2020-11-26 | ¥1 | 微信 | 项目有意思 | |
|
||||
| ohh | 2020-11-27 | ¥1 | 微信 | 集资买霸王 duang😏 | 😏 |
|
||||
| 夏风 | 2020-11-28 | ¥1 | 支付宝 | 赞赏一下~ | |
|
||||
| 征服神的眼睛 | 2020-11-27 | ¥1 | 微信 | 头发+1 | |
|
||||
| 长空X | 2020-11-30 | ¥1 | 支付宝 | 加油!我是hjkl950217 | 贡献的代码很棒,欢迎加入 |
|
||||
| 旧城空梦 | 2020-11-30 | ¥5 | 微信 | 拉我进下微信群,谢谢,我微信*** | 已拉 |
|
||||
| Mr.华 | 2020-12-01 | ¥1 | 微信 | 白嫖党 今天给你投币来了 | |
|
||||
| 暮雨 | 2020-12-01 | ¥1 | 微信 | 不多说,好用412还没有解决 | 大于等于1.0.14版本解决啦 |
|
||||
| 闪电 | 2020-12-01 | ¥1 | 微信 | 欧拉拉 | |
|
||||
| 山水之间 | 2020-12-01 | ¥1 | 微信 | 加油💪 | 💪 |
|
||||
| 八八九九 | 2020-12-02 | ¥1 | 微信 | cool | |
|
||||
| 。 | 2020-12-02 | ¥1 | 微信 | 支持 | |
|
||||
| Carnina | 2020-12-06 | ¥5 | 微信 | 谢谢大大的bili工具 | |
|
||||
| 大疼 | 2020-12-07 | ¥1 | 支付宝 | 教程很细致,谢谢 | |
|
||||
| | 2020-12-07 | ¥1 | 微信 | 谢谢大佬B站的项目 | |
|
||||
| Nirvana | 2020-12-08 | ¥1 | 微信 | 求进群我的微信*** | 已拉 |
|
||||
| | 2020-12-17 | ¥1 | 微信 | 微信昵称时空白的 | 是的 |
|
||||
| aiyΑ | 2020-12-23 | ¥1 | 微信 | | |
|
||||
| 就这样被作业征服 | 2021-01-02 | ¥1 | 微信 | 太棒了,十分感谢 | |
|
||||
| けっこ | 2021-01-03 | ¥1 | 微信 | bilibilitools加油! | 加油~ |
|
||||
| Ruo | 2021-01-05 | ¥1 | 微信 | 加油加油 | 加油~ |
|
||||
| | 2021-01-06 | ¥1 | 微信 | | |
|
||||
| 199863nothing | 2021-01-06 | ¥1 | 支付宝 | 等俺五级给你买霸王洗发水 | 棒 |
|
||||
| 小伊 | 2021-01-06 | ¥1 | 支付宝 | 赞赏一下~ | |
|
||||
| 多喝热水吧你 | 2021-01-07 | ¥10 | 微信 | 感谢作者,支持一下,太辛苦了 | 感谢 |
|
||||
| YNight-FZQ | 2021-01-08 | ¥5 | 微信 | 2021,要加油哦!感谢作者分享 | 一起加油~ |
|
||||
| 外比巴卜 | 2021-01-09 | ¥3 | 微信 | 加油^o^~,做的很棒 | 支持开源的你们更棒~ |
|
||||
| 199863nothing | 2021-01-09 | ¥1 | 微信 | 求拉进群(ง •_•)ง | 你没有留微信号啊大兄弟 |
|
||||
| 黑影 | 2021-01-10 | ¥5 | 微信 | Mreblack7感谢7楼大大可以加微信群嘛qwq | 你没有留微信号啊大兄弟 |
|
||||
| 199863nothing | 2021-01-11 | ¥1 | 微信 | 微信号:\*\*\*,大佬捞一捞我 | 已拉~ |
|
||||
| . | 2021-01-12 | ¥5 | 微信 | 进群进群,冲冲冲 | 你没有留微信号啊大兄弟 |
|
||||
|
||||
|
||||
个人维护开源不易
|
||||
|
||||
如果你觉得我写的东西对你确实有帮助
|
||||
|
||||
或者,你就是单纯的想集资给我买瓶霸王增发液
|
||||
|
||||
那么下面的赞赏码可以扫一扫啦
|
||||
|
||||
(赞赏时记得留下【昵称】和【留言】,上面这么多留言要想要进群或者加好友的,一定一定要记得留微信号哈,微信赞赏页面是看不到微信号的~)
|
||||
|
||||
* 微信扫码自动赞赏1元
|
||||
|
||||

|
||||
|
||||
* 支付宝扫码自动赞赏1元
|
||||
|
||||

|
||||
BIN
docs/imgs/2233.png
Normal file
|
After Width: | Height: | Size: 113 KiB |
BIN
docs/imgs/Tencent-log-bill-1.png
Normal file
|
After Width: | Height: | Size: 924 KiB |
BIN
docs/imgs/Tencent-log-docs-1.png
Normal file
|
After Width: | Height: | Size: 932 KiB |
BIN
docs/imgs/Tencent-logpage-1.png
Normal file
|
After Width: | Height: | Size: 606 KiB |
BIN
docs/imgs/appsettings-cookie.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
docs/imgs/claw-addr.png
Normal file
|
After Width: | Height: | Size: 173 KiB |
BIN
docs/imgs/claw-app-store.png
Normal file
|
After Width: | Height: | Size: 223 KiB |
BIN
docs/imgs/claw-deploy.png
Normal file
|
After Width: | Height: | Size: 255 KiB |
BIN
docs/imgs/claw-notification.png
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
docs/imgs/claw-search.png
Normal file
|
After Width: | Height: | Size: 606 KiB |
BIN
docs/imgs/docker-login.png
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
docs/imgs/donate.jpg
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
docs/imgs/dotnet-login.png
Normal file
|
After Width: | Height: | Size: 84 KiB |
BIN
docs/imgs/get-bilibili-web-cookie.jpg
Normal file
|
After Width: | Height: | Size: 245 KiB |
BIN
docs/imgs/get-up-id.png
Normal file
|
After Width: | Height: | Size: 239 KiB |
BIN
docs/imgs/get-user-agent.png
Normal file
|
After Width: | Height: | Size: 611 KiB |
BIN
docs/imgs/git-secrets-add-cookie.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
docs/imgs/git-secrets.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
docs/imgs/github-actions-close.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
docs/imgs/github-actions-log-1.png
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
docs/imgs/github-actions-log-2.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
docs/imgs/github-env-count-down.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
docs/imgs/github-env-list.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
docs/imgs/github-env-wait-timer.png
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
docs/imgs/github-secrets-other-configs.png
Normal file
|
After Width: | Height: | Size: 82 KiB |