Documentation
¶
Index ¶
Constants ¶
View Source
const ( API_VIDEO_DETAIL = "https://api.bilibili.com/x/web-interface/view" API_BANGUMI_DETAIL = "https://api.bilibili.com/pgc/view/web/season?season_id=26228" USER_AGENT_WEB = "" /* 131-byte string literal not displayed */ USER_AGENT_TV = "" /* 139-byte string literal not displayed */ API_PLAYURL_WEB = "https://api.bilibili.com/x/player/playurl" API_PLAYURL_YST = "https://api.snm0516.aisee.tv/x/tv/ugc/playurl" REFERER = "https://www.bilibili.com" VERSION = "v1.0.1" )
Variables ¶
View Source
var Debug = false
Functions ¶
func IsValidParts ¶
func IsValidPartsBangumi ¶
func IsValidVid ¶
Types ¶
type DownloadOption ¶
type DownloadOption struct { // TODO:画质选项. // 数值遵照 API 所返回的数据, 可以通过命令行的 "-i" 参数获取所有的画质选项. // 默认值 (0) 代表选择该用户可用的最高画质. Quality int // 要下载的分 P // 若某一分 P 超出范围, 则该分 P 会被忽略. 所有分 P 超出范围会返回一个错误 Parts []int }
针对单个视频稿件的下载选项.
func NewDownloadOption ¶
func NewDownloadOption(quality int, parts ...int) *DownloadOption
创建一个下载选项. 例如: option := NewDownloadOption(0, 1,2,3)
type Downloader ¶
type Downloader struct { // Cookie 信息, 传递用户登录信息, 用于获取更高画质的视频. Cookie string // 请求B站 Web API 时附带的 User Agent 头. // 默认值: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36 Edg/89.0.774.77" UserAgentWeb string // 请求B站 TV API 时附带的 User Agent 头. // 默认值: "Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1" UserAgentTv string // 要下载的视频. 可指定多个视频, 但同一时间只能下载一个. // key: 视频 av/bv 号. // value: 下载选项 (值为 nil 时使用默认选项). // 默认的下载选项:自动选择最佳画质, 只下载第一个分 P. Videos map[string]*DownloadOption // 使用的视频流 API. 支持 web,tv. // tv 相比于 web 的一些区别为: 游客可获取的画质更高, 部分视频可获得无水印视频流. // 但是部分视频 (如番剧) 使用 tv api 无法下载, 会提示 404. PlayUrlAPI string // 是否自动合并 (需要安装 FFmpeg 工具且在系统 PATH 变量中). Merge bool }
func NewDownloader ¶
func NewDownloader(videos map[string]*DownloadOption, merge bool) *Downloader
创建一个下载器. 示例:
videos := map[string]*DownloadConfig{ "BVxxxxx1": &DownloadConfig{Parts: []int{1,2,3}}, // 自动选择最佳画质, 下载 1,2,3 分 P "avxxxxx2": nil, // 使用默认选项 }
downloader := NewDownloader(videos, true) 参数: videos: 要下载的视频; merge: 是否合并视频和音频.
func (*Downloader) Download ¶
func (d *Downloader) Download() error
开始下载所有视频. 为避免被服务器限制, 暂只能同时下载一个视频.