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"
const TEST_CID_HDR = 244954665
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)
}