Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

bilibili-toolman

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bilibili-toolman

bilibili-toolman 哔哩哔哩搬运工具

  • 1.0.7.9
  • PyPI
  • Socket score

Maintainers
1

安装

pip install bilibili_toolman

使用

以 Github Actions 转载视频:

准备凭据

凭据需要在本地准备

  • pip 安装 bilibili_toolman

    • Windows 用户: 在 Releases 可下载已打包 .exe 版本
  • 使用 Web 端 API

      python -m bilibili_toolman --save --cookies "SESSDATA=8aafe8**********;bili_jct=4f39b**********"
    

    SESSDATA,bili_jct 可在XHR请求头中或document.cookies获得,这里不将阐述

  • 使用 上传助手 API

      python -m bilibili_toolman --save --sms
    

    跟随输出操作即可(注:需要完成 Geetest 校验)

  • 凭据即输出的 Base64 编码内容

Actions - 配置凭据

  • Fork 此项目

  • 在项目 Settings > Secret > New repository secret 创建:

    • Name : SESSION
    • Value : 此处为准备好的凭据
  • 可选 替换不同凭据上传、投稿

    指定上传凭据

    • Name : SESSION_UPLOAD
    • Value : 此处为准备好的凭据

    指定投稿凭据

    • Name : SESSION_SUBMIT
    • Value : 此处为准备好的凭据

    一般推荐使用 Web 凭据上传,上传助手凭据投稿(高速 (?) (~400Mbps) 上传,多P投稿)

Actions - 手动上传

该 Actions 适用于手动转载的用户

  • 在项目 Actions > 手动转载 > Run Workflow 填入值(详见参数说明
  • 运行即可

Actions - 定时上传

该 Actions 适用于需要自动转载Youtube频道的用户

API 使用示例

>>> from bilibili_toolman.bilisession.web import BiliSession
# bilisession.client 即上传助手 API。较 Web 版相比,可以用低等级帐号投稿多 P 视频
# 同时,可以免去大部分人机校验操作
# bilisession.web 即 Web 端创作中心 API。在上传速度上会有优势
# 注:投稿与上传*不需要*在同一个 Session 中完成
# 不论 import 的是什么版本,登录态恢复时都会重新实例化登录态对应的 Session
>>> session = BiliSession.from_base64_string("H4sIADKW+2EC/5VVWW/bRhB2EF216...") 
# 从凭据恢复登录态,详情见 准备凭据
>>> endpoint_1,cid_1 = session.UploadVideo("本地视频01.mp4")
('n220208141kq78....', ...)
>>> endpoint_2,cid_2 = session.UploadVideo("本地视频02.mp4")
('n220209892re88....', ...)
# 上传视频并拿 key
# 上传线路根据恢复的 Session 而定
# Web / Cookies 使用的是网宿CDN,国内外速度都很可观
# Client 使用的 CDN 在海外的速度则较慢
# 推荐分别准备 Web / Client 的 Session. 如此可用 Web 高速上传,Client 多 P 投稿
>>> from bilibili_toolman.bilisession.common.submission import Submission
# 准备稿件
>>> submission = Submission(
    title="【toolman】 转载测试",
    desc="...as per request"
)
# 新建稿件 (标题描述出现韩文字符等会导致稿件无效,具体参见 -h 输出)
>>> submission.videos.append(
    Submission(
        title="多 P (P1)",
        video_endpoint=endpoint_1
    )
)
>>> submission.videos.append(
    Submission(
        title="多 P (P2)",
        video_endpoint=endpoint_2
    )
)    
# 添加视频 (P),注意仅父节点(稿件)描述会被显示;分 P 视频和父稿件同类型
>>> cover = session.UploadCover('封面测试.png')
>>> submission.cover_url = cover['data']['url']
# 上传,设置封面
>>> submission.source = 'https://github.com/mos9527/bilibili-toolman'
# 设置转载来源
>>> submission.tags.append('转载')
# 添加标签
>>> submission.thread = 17
# 设置分区(详见 README 文末分区表)
>>> session.SubmitSubmission(submission,seperate_parts=False)
# 投稿视频 (尝试以多 P 模式上传)
# 若使用 Web API,如果条件不足(Lv3+ 及 1000+ 关注量) 则会报错
>>> session.SubmitSubmission(submission,seperate_parts=True)
# 投稿视频 (尝试以将多 P 分为单 P 后上传)
{'code:': 0,
    'results': [{'code': 0, 'message': '0','ttl': 1,
    'data': {'aid': 5939...., 'bvid': 'BV1oq....'}}]}

其它

例程 :

API 实现 :

示例

asciicast

感谢

PC 上传助手逆向 · FortuneDayssss/BilibiliUploader

分区数据,API 参考 · Passkou/bilibili_api

Youtube 解析 · yt-dlp/yt-dlp

参数说明

usage: bilibili-toolman [-h] [--cookies COOKIES] [--sms] [--load LOAD]
                        [--load_upload LOAD_UPLOAD]
                        [--load_submit LOAD_SUBMIT] [--save] [--http]
                        [--noenv] [--cdn {ws,qn,bda2,kodo,gcs,bos}]
                        [--opts OPTS] [--thread_id THREAD_ID] [--tags TAGS]
                        [--desc DESC] [--title TITLE] [--seperate_parts]
                        [--no_upload] [--no_submit] [--original]
                        [--no_reprint] [--localfile LOCALFILE-URL]
                        [--youtube YOUTUBE-URL]

使用帮助

optional arguments:
-h, --help            show this help message and exit

身份设置 (随方式优先级排序):
--cookies COOKIES     登陆: 使用 Cookies 登陆,即使用 Web API (不可多 P 上传) ( 需要 SESSDATA 及 bili_jct ) e.g.SESSDATA=cb0..; bili_jct=6750...
--sms                 登陆:使用短信验证码登陆,即使用 上传助手 API (可多 P 上传)(需手动交互)(有日获取限制,请配合 --save 使用)
--load LOAD           登陆:加载凭据,同时用于上传及投稿
--load_upload LOAD_UPLOAD
                        登陆:使用该凭据上传,而不用--load凭据上传
--load_submit LOAD_SUBMIT
                        登陆:使用该凭据投稿,而不用--load凭据投稿
--save                登陆:向stdout输出当前登陆凭据并退出(其他输出转移至stderr)
--http                强制使用 HTTP (不推荐)
--noenv               上传时,不采用环境变量(如代理)
--cdn {ws,qn,bda2,kodo,gcs,bos}
                        上传用 CDN (限 Web API) (对应 网宿(适合海外),七牛,百度(默认),七牛,谷歌,百度)
--retry_submit_delay RETRY_SUBMIT_DELAY
                        投稿限流时,重新投稿周期
--retry_submit_count RETRY_SUBMIT_COUNT
                        投稿限流时,尝试重新投稿次数

上传设置:
--opts OPTS           解析可选参数 ,详见 --opts 格式
--thread_id THREAD_ID
                        分区 ID
--tags TAGS           标签
--desc DESC           描述格式 e.g. "原描述:{desc}" (其他变量详见下文)(仅稿件有描述)
--title TITLE         标题格式 e.g. "[Youtube] {title} (其他变量详见下文)(使用于稿件及分P)"
--seperate_parts      不分P (e.g. --youtube [播放列表],--localfile [文件夹])独立投稿(不分P)(Web上传默认不分 P)
--no_upload           只下载资源
--no_submit           不提交稿件,适用于获取filename参数
--original            设置稿件为原创
--no_reprint          设置稿件不允许转载

解析可选参数 "opts" (格式 : [参数1]=[值1];[参数2]=[值2] (query-string)):
--localfile LOCALFILE-URL
                        本地文件
                        参数:
                            cover (str) - 封面图片路径
                        e.g. --localfile "le videos/" --opts cover="le cover.png" --tags ...
--youtube YOUTUBE-URL
                        Youtube / Twitch / etc 视频下载 (yt-dlp)
                        参数:yt-dlp 参数:
                            format (str) - 同 yt-dlp -f
                            quite (True,False) - 是否屏蔽 yt-dlp 日志 (默认 False)
                        特殊参数:
                            playlistend - 对于播放列表、频道,下载到(时间顺序,新者在前)第 n 个视频为止
                            playliststart - 对于播放列表、频道,从(时间顺序,新者在前)第 n 个视频开始下载
                        
                            daterange - 只下载在该参数指定时间窗口内的视频 (精确到毫秒)
                                格式可以为 YYmmdd,也可以用相对时间. 如:
                                
                                e.g. daterange=now; (下载今天上传的视频)
                                e.g. daterange=now-1day; (下载昨天到今天上传的视频)
                                e.g. daterange=220430~220501 (下载 2022年4月30日~2022年5月1日 的视频)        
                            
                            hardcode - 烧入硬字幕选项
                                e.g. 启用    ..;hardcode;...
                                e.g. 换用字体 ..;hardcode=style:FontName=Segoe UI       
                                e.g. NV硬解码   ..;hardcode=input:-hwaccel cuda/output:-c:v h264_nvenc -crf 17 -b:v 5M
                                多个选项用 / 隔开   
                        e.g. --youtube "..." --opts "format=best&quiet=True&hardcode" --tags ...
                            此外,针对视频对象,还提供其他变量:
                                {id}
                                {title}    
                                {descrption}
                                {upload_date}
                                {uploader}
                                {uploader_id}
                                {uploader_url}
                                {channel_id}
                                {channel_url}
                                {duration}
                                {view_count}
                                {avereage_rating}
                                ...
                            注:输入播放列表且多 P 时,稿件标题为播放列表标题,稿件描述仅为 `来自Youtube`
                        
                        默认配置:不烧入字幕,下载最高质量音视频,下载字幕但不操作

变量:
    {title},{desc} 等变量适用于:
        title, desc, tags

通用变量:
    {title}     -       原标题
    {desc}      -       原描述
    {safe_korean_title}
                -       【韩文】替换韩文为特殊字符的标题
    {roma_korean_title}
                -       【韩文】替换韩文为罗马音的标题 (需要安装 korean_romanizer)
                
本工具支持将给定视频源转载至哔哩哔哩

详见项目 README 以获取更多例程 : github.com/greats3an/bilibili-toolman

分区ID (tid) 表

动画

分区TID
MAD·AMV24
MMD·3D25
综合27
短片·手书·配音47
特摄86
手办·模玩210

番剧

分区TID
连载动画33
资讯51
官方延伸152

国创

分区TID
国产动画153
国产原创相关168
布袋戏169
资讯170
动态漫·广播剧195

音乐

分区TID
原创音乐28
音乐现场29
VOCALOID·UTAU30
翻唱31
演奏59
音乐综合130
MV193
电音194

舞蹈

分区TID
宅舞20
舞蹈综合154
舞蹈教程156
街舞198
明星舞蹈199
中国舞200

游戏

分区TID
单机游戏17
Mugen19
网络游戏65
GMV121
音游136
电子竞技171
手机游戏172
桌游棋牌173

知识

分区TID
野生技术协会122
社科人文124
科学科普201
财经207
校园学习208
职业职场209

数码

分区TID
手机平板95
电脑装机189
摄影摄像190
影音智能191

生活

分区TID
日常21
动物圈75
美食圈76
搞笑138
手工161
绘画162
运动163
其他174
汽车176

鬼畜

分区TID
鬼畜调教22
音MAD26
人力VOCALOID126
教程演示127

时尚

分区TID
美妆157
服饰158
T台159
健身164
风尚标192

资讯

分区TID
热点203
环球204
社会205
综合206

娱乐

分区TID
综艺71
明星137

影视

分区TID
短片85
影视杂谈182
影视剪辑183
预告·资讯184

纪录片

分区TID
人文·历史37
科学·探索·自然178
军事179
社会·美食·旅行180

电影

分区TID
其他国家83
欧美电影145
日本电影146
华语电影147

电视剧

分区TID
国产剧185
海外剧187

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc