Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V2版本 #39

Merged
merged 39 commits into from
Apr 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
4e501ae
大部分方法不再支持使用包调用的形式。
PastGone Mar 22, 2024
cde18d9
v2分支切Go1.22
CuteReimu Mar 22, 2024
b703c35
Update README.md
CuteReimu Mar 22, 2024
a0f0174
Create build-v2.yml
CuteReimu Mar 22, 2024
edaa5e1
Update gofmt.yml
CuteReimu Mar 22, 2024
1be80d2
gofmt
github-actions[bot] Mar 22, 2024
29ff82d
修复lint错误,用crypto/rand包替换math/rand包
CuteReimu Mar 22, 2024
e1fb69e
Update Badges
CuteReimu Mar 22, 2024
c379bc6
提交生成结构体的工具
CuteReimu Mar 23, 2024
570bcb4
lint
CuteReimu Mar 23, 2024
0284f8f
提交发起请求的接口(#34)
CuteReimu Mar 23, 2024
0198354
优化发起请求的接口
CuteReimu Mar 23, 2024
1b94b9f
优化代码
CuteReimu Mar 24, 2024
2791dcf
优化代码
CuteReimu Mar 24, 2024
2ad8ece
优化直播相关接口
CuteReimu Mar 24, 2024
8371a13
优化专栏相关接口
CuteReimu Mar 24, 2024
0ecc3ce
优化代码(#34)
CuteReimu Mar 27, 2024
82a6e92
优化代码
CuteReimu Mar 27, 2024
403f4e4
如何使用及命名规范(#14)
CuteReimu Mar 27, 2024
04aa8cb
Update 如何使用及命名规范.ipynb
CuteReimu Mar 27, 2024
a8aeb73
合并type.go和types.go
CuteReimu Mar 27, 2024
c25f8bf
Merge branch 'master' into v2
CuteReimu Mar 27, 2024
f1d78fd
fix bugs
CuteReimu Mar 27, 2024
06b14d2
[feature] #34 支持使用反射设置参数
RunsTp Mar 28, 2024
e653f18
Update build-v2.yml
CuteReimu Mar 29, 2024
fab097c
补一些测试用例
CuteReimu Mar 29, 2024
0a333dd
[fix] 修复多次set header的问题
RunsTp Mar 29, 2024
cf2e591
Merge pull request #36 from RunsTp/v2/feature/reflect-set-params
RunsTp Mar 29, 2024
9dd872d
反射优化 (#37)
CuteReimu Apr 1, 2024
c73b486
request默认query,排除未导出字段
CuteReimu Apr 2, 2024
139de66
将原来的structToMap替换成withParams
CuteReimu Apr 2, 2024
d98d921
优化部分视频相关接口
CuteReimu Apr 3, 2024
8263051
优化视频相关接口
CuteReimu Apr 3, 2024
ed8fc28
优化大会员相关接口
CuteReimu Apr 3, 2024
e00cea0
优化部分接口
CuteReimu Apr 3, 2024
c1ea228
优化动态相关接口
CuteReimu Apr 3, 2024
a3dc96f
优化部分接口
CuteReimu Apr 3, 2024
67995f8
[pref] #38 支持query模式下slice join string (#40)
RunsTp Apr 4, 2024
152ef0f
优化剩余的代码
CuteReimu Apr 4, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/build-v2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,10 @@ jobs:
uses: golangci/golangci-lint-action@v4
with:
version: latest
args: --out-${NO_FUTURE}format line-number --timeout 3m0s
args: --out-${NO_FUTURE}format line-number --timeout 3m0s -p bugs -p error -p performance -D unused -D gosmopolitan -D exhaustive

- name: Test
run: go test -v ./...

- name: Build
run: go build -v ./...
5 changes: 1 addition & 4 deletions .github/workflows/golangci-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,14 @@ on:
jobs:

build:
strategy:
matrix:
go: [ '1.17', '1.22' ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go }}
go-version: '1.22'

- name: golangci-lint
uses: golangci/golangci-lint-action@v4
Expand Down
78 changes: 47 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

# 哔哩哔哩-API-Go版本

![](https://img.shields.io/github/go-mod/go-version/CuteReimu/bilibili "语言")
[![](https://img.shields.io/github/actions/workflow/status/CuteReimu/bilibili/golangci-lint.yml?branch=master)](https://github.com/CuteReimu/bilibili/actions/workflows/golangci-lint.yml "代码分析")
![](https://img.shields.io/github/go-mod/go-version/CuteReimu/bilibili/v2?label=Go "语言")
[![](https://img.shields.io/github/actions/workflow/status/CuteReimu/bilibili/build-v2.yml?branch=v2)](https://github.com/CuteReimu/bilibili/actions/workflows/golangci-lint.yml "代码分析")
[![](https://img.shields.io/github/contributors/CuteReimu/bilibili)](https://github.com/CuteReimu/bilibili/graphs/contributors "贡献者")
[![](https://img.shields.io/github/license/CuteReimu/bilibili)](https://github.com/CuteReimu/bilibili/blob/master/LICENSE "许可协议")
</div>
Expand All @@ -27,22 +27,22 @@ PS:目前,B站调用接口时强制使用 `https` 协议

`由于B站最近对所有搜索类接口都加上了Wbi签名认证的风控策略,本项目还没有对其进行兼容,因此这些搜索类接口可能会返回“-403:非法访问”的错误。`

`不过,GetUserVideos接口好像又可以在不使用Wbi签名的情况下用了。`~~本着代码能跑就不要乱动它的原则,因此就没管。~~

本项目的注释不会太多,使用时建议对照着 [SocialSisterYi/bilibili-API-collect](https://github.com/SocialSisterYi/bilibili-API-collect) 的文档查看。

本项目预计不会编写单元测试代码。一则因为各项数据会频繁变动,难以写成固定的结果;二则因为每次单元测试都要大量请求B站API,会对其产生不必要的压力。

### 安装

```bash
go get -u github.com/CuteReimu/bilibili
go get -u github.com/CuteReimu/bilibili/v2
```

在项目中引用即可使用

```go
import "github.com/CuteReimu/bilibili"
import "github.com/CuteReimu/bilibili/v2"

var client = bilibili.New()
```

### 首次登录
Expand All @@ -52,7 +52,7 @@ import "github.com/CuteReimu/bilibili"
首先获取二维码:

```go
qrCode, _ := bilibili.GetQRCode()
qrCode, _ := client.GetQRCode()
buf, _ := qrCode.Encode()
img, _ := png.Decode(buf) // 或者写入文件 os.WriteFile("qrcode.png", buf, 0644)
// 也可以调用 qrCode.Print() 将二维码打印在控制台
Expand All @@ -61,8 +61,10 @@ img, _ := png.Decode(buf) // 或者写入文件 os.WriteFile("qrcode.png", buf,
扫码并确认成功后,发送登录请求:

```go
err := bilibili.LoginWithQRCode(qrCode)
if err == nil {
result, err := client.LoginWithQRCode(bilibili.LoginWithQRCodeParam{
QrcodeKey: qrCode.QrcodeKey,
})
if err == nil && result.Code == 0 {
log.Println("登录成功")
}
```
Expand All @@ -72,14 +74,21 @@ if err == nil {
首先获取人机验证参数:

```go
captchaResult, _ := bilibili.Captcha()
captchaResult, _ := client.Captcha()
```

将`captchaResult`中的`gt`和`challenge`值保存下来,自行使用 [手动验证器](https://kuresaru.github.io/geetest-validator/) 进行人机验证,并获得`validate`和`seccode`。然后使用账号密码进行登录即可:

```go
err := bilibili.LoginWithPassword(userName, password, captchaResult, validate, seccode)
if err == nil {
result, err := client.LoginWithPassword(bilibili.LoginWithPasswordParam{
Username: userName,
Password: password,
Token: captchaResult.Token,
Challenge: captchaResult.Geetest.Challenge,
Validate: validate,
Seccode: seccode,
})
if err == nil && result.Status == 0 {
log.Println("登录成功")
}
```
Expand All @@ -89,22 +98,36 @@ if err == nil {
首先用上述方法二相同的方式获取人机验证参数并进行人机验证。然后获取国际地区代码:

```go
common, others, _ := bilibili.ListCountry()
countryCrown, others, _ := client.GetCountryCrown()
```

当然,如果你已经确定`cid`的值,这一步可以跳过。中国大陆的`cid`就是1
当然,如果你已经确定`cid`的值,这一步可以跳过。中国大陆的`cid`就是86

然后发送短信验证码:
然后发送短信验证码:*([这个接口大概率返回86103错误](https://github.com/SocialSisterYi/bilibili-API-collect/issues/756))*

```go
captchaKey, _ := bilibili.SendSMS(tel, cid, captchaResult, validate, seccode)
sendSMSResult, _ := client.SendSMS(bilibili.SendSMSParam{
Cid: cid,
Tel: tel,
Source: "main_web",
Token: captchaResult.Token,
Challenge: captchaResult.Geetest.Challenge,
Validate: validate,
Seccode: seccode,
})
```

然后就可以使用手机验证码登录了:

```go
err := bilibili.LoginWithSMS(tel, cid, code, captchaKey) // 其中code是短信验证码
if err == nil {
result, err := client.LoginWithSMS(bilibili.LoginWithSMSParam{
Cid: cid,
Tel: tel,
Code: 123456, // 短信验证码
Source: "main_web",
CaptchaKey: sendSMSResult.CaptchaKey,
})
if err == nil && result.Status == 0 {
log.Println("登录成功")
}
```
Expand All @@ -115,26 +138,19 @@ if err == nil {

```go
// 获取cookiesString,自行存储,方便下次启动程序时不需要重新登录
cookiesString := bilibili.GetCookiesString()
cookiesString := client.GetCookiesString()

// 设置cookiesString,就不需要登录操作了
bilibili.SetCookiesString(cookiesString)
client.SetCookiesString(cookiesString)
```

### 同时登录多个账号

可以新建多个client,每个登录不同的账号。用这种方法使用的函数与直接调用`bilibili`包下的函数是完全一样的。

```go
client := bilibili.New()
err := client.LoginWithQRCode(result)
```
### 设置*resty.Client的一些参数

### 设置超时时间和logger
调用`client.Resty()`就可以获取到`*resty.Client`,然后自行操作即可。**但是不要做一些离谱的操作**~~(比如把Cookies删了)~~

```go
bilibili.SetTimeout(20 * time.Second) // 设置超时时间
bilibili.SetLogger(logger) // 自定义logger
client.Resty().SetTimeout(20 * time.Second) // 设置超时时间
client.Resty().SetLogger(logger) // 自定义logger
```

## 进度
Expand Down
42 changes: 0 additions & 42 deletions account.go

This file was deleted.

Loading
Loading