Categorygithub.com/reveever/biliapi
modulepackage
0.2.0
Repository: https://github.com/reveever/biliapi.git
Documentation: pkg.go.dev

# README

biliapi

Go Reference

部分 bilibili API SDK,大致定了个框架,挑着用得到的 API 先实现了

API 接口信息大多来自 bilibili-API-collect 项目,B站官方代码结构和接口也是可以参考一下的

已实现的接口信息可以参考 godoc:

Example

引用:go get -u github.com/reveever/biliapi.

获取用户投稿

package main

import (
	"encoding/json"
	"fmt"

	"github.com/reveever/biliapi"
	"github.com/reveever/biliapi/interface/space"
)

func main() {
	api, err := biliapi.NewBiliApi(biliapi.WithUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0"))
	if err != nil {
		panic(err)
	}

	resp, err := api.Space.ArcList(space.ArcListOpt{
		Mid: 67141, Pn: 1, Ps: 5,
	})
	if err != nil {
		panic(err)
	}

	buf, _ := json.Marshal(resp)
	fmt.Println(string(buf))
}

获取视频弹幕分片

package main

import (
	"encoding/json"
	"fmt"

	"github.com/reveever/biliapi"
	"github.com/reveever/biliapi/interface/v2dm"
)

func main() {
	api, err := biliapi.NewBiliApi(biliapi.EnableDebugLogger())
	if err != nil {
		panic(err)
	}

	resp, err := api.V2Dm.WebSeg(v2dm.WebSegOpt{
		Type: 1, Oid: 343721233, SegmentIndex: 2,
	})
	if err != nil {
		panic(err)
	}

	buf, _ := json.Marshal(resp)
	fmt.Println(string(buf))
}

直播间信息流获取

package main

import (
	"context"
	"io"
	"log"

	"github.com/reveever/biliapi"
	"github.com/reveever/biliapi/interface/live"
	"github.com/reveever/biliapi/interface/room"
)

func main() {
	api, err := biliapi.NewBiliApi(biliapi.EnableDebugLogger())
	if err != nil {
		log.Fatal(err)
	}

	roomInfo, err := api.Room.RoomInitInfo(room.RoomInitInfoOpt{ID: 213})
	if err != nil {
		log.Fatal(err)
	}

	liveInfo, err := api.Live.WebRoomInfo(live.WebRoomInfoOpt{ID: roomInfo.RoomID})
	if err != nil {
		log.Fatal(err)
	}

	l, err := biliapi.NewBiliLive(context.Background(), roomInfo.RoomID, liveInfo.Token,
		biliapi.LiveWithBase(api.Base),
		biliapi.LiveWithHostList(liveInfo.HostList),
	)
	if err != nil {
		log.Fatal(err)
	}

	for i := 0; i < 10; i++ {
		msg, err := l.ReadWsMsg(context.TODO())
		if err != nil {
			if err == io.EOF {
				log.Println("EOF")
				break
			}
			log.Printf("[%02d] err: %v", i, err)
			continue
		}
		if msg.Op == live.WsOpHeartbeatReply {
			log.Printf("[%02d] %d %d %s: %x", i, msg.Ver, msg.Op, msg.Cmd, msg.Body)
		} else {
			log.Printf("[%02d] %d %d %s: %s", i, msg.Ver, msg.Op, msg.Cmd, string(msg.Body))
		}
	}
	l.Close()
}

Doc & More examples

godoc

# Packages

No description provided by the author
No description provided by the author
No description provided by the author

# Functions

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Structs

No description provided by the author
No description provided by the author