package bilibili_test import ( "encoding/json" "fmt" "testing" "time" "bilidown/bilibili" "bilidown/util" "github.com/skip2/go-qrcode" _ "modernc.org/sqlite" ) const TEST_SESSDATA = "" const TEST_BVID = "BV1KX4y1V7sA" // 普通合集 const TEST_CID = 305542578 // 普通分集 const TEST_BVID_HDR = "BV1rp4y1e745" // HDR 合集 const TEST_CID_HDR = 244954665 // HDR 分集 const TEST_EPID = 835909 // 剧集 const TEST_SSID = 48744 // 番剧 func TestBiliClient(t *testing.T) { client := bilibili.BiliClient{SESSDATA: TEST_SESSDATA} check, err := client.CheckLogin() if err != nil { t.Error(err) } if check { fmt.Println("SESSDATA 有效") } else { fmt.Println("SESSDATA 无效") } } func TestNewQRInfo(t *testing.T) { client := bilibili.BiliClient{} info, err := client.NewQRInfo() if err != nil { t.Error(err) } fmt.Printf("二维码信息:%+v", info) } func TestGetQRStatus(t *testing.T) { client := bilibili.BiliClient{} qrInfo, err := client.NewQRInfo() if err != nil { t.Error(err) } qr, err := qrcode.New(qrInfo.URL, qrcode.Low) if err != nil { t.Error(err) } fmt.Println(qr.ToSmallString(false)) for { qrStatus, sessdata, err := client.GetQRStatus(qrInfo.QrcodeKey) fmt.Println(qrStatus.Message) if err != nil { t.Error(err) } if qrStatus.Code == bilibili.QR_SUCCESS { fmt.Println("登录成功") fmt.Println(sessdata) break } else if qrStatus.Code == bilibili.QR_EXPIRES { break } time.Sleep(time.Second) } } func TestGetBVInfo(t *testing.T) { client := bilibili.BiliClient{SESSDATA: TEST_SESSDATA} videoInfo, err := client.GetVideoInfo(TEST_BVID) if err != nil { t.Error(err) } fmt.Printf("%+v", videoInfo) } func TestGetSeasonInfo(t *testing.T) { client := bilibili.BiliClient{SESSDATA: TEST_SESSDATA} seasonInfo, err := client.GetSeasonInfo(TEST_EPID, TEST_SSID) if err != nil { t.Error(err) } fmt.Printf("%+v", seasonInfo) } func TestGetPlayInfo(t *testing.T) { client := bilibili.BiliClient{SESSDATA: TEST_SESSDATA} playInfo, err := client.GetPlayInfo(TEST_BVID_HDR, TEST_CID_HDR) if err != nil { t.Error(err) } a, _ := json.Marshal(playInfo.AcceptQuality) b, _ := json.Marshal(playInfo.AcceptDescription) c, _ := json.Marshal(playInfo.SupportFormats) fmt.Println(string(a)) fmt.Println(string(b)) fmt.Println(string(c)) } func TestSaveSessdata(t *testing.T) { db := util.MustGetDB("../data.db") defer db.Close() err := bilibili.SaveSessdata(db, TEST_SESSDATA) if err != nil { t.Error(err) } else { fmt.Println("SESSDATA 保存成功") } sessdata, err := bilibili.GetSessdata(db) if err != nil { t.Error(err) } if sessdata != TEST_SESSDATA { t.Error("SESSDATA 读写不一致") } else { fmt.Println("SESSDATA 读取成功") } } func TestGetSessdata(t *testing.T) { db := util.MustGetDB("../data.db") defer db.Close() sessdata, err := bilibili.GetSessdata(db) if err != nil { t.Error(err) } fmt.Println(sessdata) } func TestGetPopularVideos(t *testing.T) { client := bilibili.BiliClient{SESSDATA: TEST_SESSDATA} videos, err := client.GetPopularVideos() if err != nil { t.Error(err) } fmt.Printf("%+v", videos) }