{"id":13431355,"url":"https://github.com/mos9527/bilibili-toolman","last_synced_at":"2025-03-16T11:31:31.464Z","repository":{"id":50295525,"uuid":"316738229","full_name":"mos9527/bilibili-toolman","owner":"mos9527","description":"配合 GH Actions 的哔哩哔哩创作中心 Python API / 搬运工具","archived":true,"fork":false,"pushed_at":"2023-08-09T03:17:51.000Z","size":654,"stargazers_count":123,"open_issues_count":0,"forks_count":44,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-13T22:34:56.623Z","etag":null,"topics":["bilibili","bilibili-api","bot","github-actions","python","youtube-dl"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mos9527.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-11-28T13:19:23.000Z","updated_at":"2025-01-13T10:14:20.000Z","dependencies_parsed_at":"2024-02-26T19:47:34.731Z","dependency_job_id":"641b826f-1e43-4c5e-98c7-868b53d4a2ed","html_url":"https://github.com/mos9527/bilibili-toolman","commit_stats":null,"previous_names":["greats3an/bilibili-toolman"],"tags_count":38,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mos9527%2Fbilibili-toolman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mos9527%2Fbilibili-toolman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mos9527%2Fbilibili-toolman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mos9527%2Fbilibili-toolman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mos9527","download_url":"https://codeload.github.com/mos9527/bilibili-toolman/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243862938,"owners_count":20360238,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bilibili","bilibili-api","bot","github-actions","python","youtube-dl"],"created_at":"2024-07-31T02:01:02.438Z","updated_at":"2025-03-16T11:31:30.887Z","avatar_url":"https://github.com/mos9527.png","language":"Python","funding_links":[],"categories":["UP 工具"],"sub_categories":["直播脚本"],"readme":"# 安装\n\n    pip install bilibili_toolman\n\n# 使用\n## 以 Github Actions 转载视频：\n\n### 准备凭据\n凭据需要在本地准备\n- [pip 安装 bilibili_toolman](#安装)\n    - **Windows 用户**: 在 [Releases](https://github.com/mos9527/bilibili-toolman/releases) 可下载已打包 `.exe` 版本\n- 使用 Web 端 API\n    \n        python -m bilibili_toolman --save --cookies \"SESSDATA=8aafe8**********;bili_jct=4f39b**********\"\n    `SESSDATA`,`bili_jct` 可在XHR请求头中或`document.cookies`获得，这里不将阐述\n- 使用 上传助手 API\n        \n        python -m bilibili_toolman --save --sms\n    跟随输出操作即可（注：需要完成 Geetest 校验）\n- 凭据即输出的 Base64 编码内容\n\n### Actions - 配置凭据\n- Fork 此项目\n- 在项目 Settings \u003e Secret \u003e New repository secret 创建：\n    - Name  : `SESSION`\n    - Value : `此处为准备好的凭据`\n- *可选* 替换不同凭据上传、投稿\n   \n    **指定上传凭据**\n    \n    - Name  : `SESSION_UPLOAD`\n    - Value : `此处为准备好的凭据`\n    \n    **指定投稿凭据**\n    \n    - Name  : `SESSION_SUBMIT`\n    - Value : `此处为准备好的凭据`\n\n    一般推荐使用 Web 凭据上传，上传助手凭据投稿（高速 (?) (~400Mbps) 上传，多P投稿）\n\n### Actions - 手动上传\n该 Actions 适用于手动转载的用户\n\n- 在项目 Actions \u003e 手动转载 \u003e Run Workflow 填入值（[详见参数说明](#参数说明)）\n- 运行即可\n\n### Actions - 定时上传\n该 Actions 适用于需要自动转载Youtube频道的用户\n\n- 依照 [reupload-channel-timed.yml](https://github.com/greats3an/bilibili-toolman/blob/master/.github/workflows/reupload-channel-timed.yml) 及其注释配置即可\n\n## API 使用示例\n```python\n\u003e\u003e\u003e from bilibili_toolman.bilisession.web import BiliSession\n# bilisession.client 即上传助手 API。较 Web 版相比，可以用低等级帐号投稿多 P 视频\n# 同时，可以免去大部分人机校验操作\n# bilisession.web 即 Web 端创作中心 API。在上传速度上会有优势\n# 注：投稿与上传*不需要*在同一个 Session 中完成\n# 不论 import 的是什么版本，登录态恢复时都会重新实例化登录态对应的 Session\n\u003e\u003e\u003e session = BiliSession.from_base64_string(\"H4sIADKW+2EC/5VVWW/bRhB2EF216...\") \n# 从凭据恢复登录态，详情见 准备凭据\n\u003e\u003e\u003e endpoint_1,cid_1 = session.UploadVideo(\"本地视频01.mp4\")\n('n220208141kq78....', ...)\n\u003e\u003e\u003e endpoint_2,cid_2 = session.UploadVideo(\"本地视频02.mp4\")\n('n220209892re88....', ...)\n# 上传视频并拿 key\n# 上传线路根据恢复的 Session 而定\n# Web / Cookies 使用的是网宿CDN，国内外速度都很可观\n# Client 使用的 CDN 在海外的速度则较慢\n# 推荐分别准备 Web / Client 的 Session. 如此可用 Web 高速上传，Client 多 P 投稿\n\u003e\u003e\u003e from bilibili_toolman.bilisession.common.submission import Submission\n# 准备稿件\n\u003e\u003e\u003e submission = Submission(\n    title=\"【toolman】 转载测试\",\n    desc=\"...as per request\"\n)\n# 新建稿件 (标题描述出现韩文字符等会导致稿件无效，具体参见 -h 输出)\n\u003e\u003e\u003e submission.videos.append(\n    Submission(\n        title=\"多 P （P1)\",\n        video_endpoint=endpoint_1\n    )\n)\n\u003e\u003e\u003e submission.videos.append(\n    Submission(\n        title=\"多 P （P2)\",\n        video_endpoint=endpoint_2\n    )\n)    \n# 添加视频 (P)，注意仅父节点（稿件）描述会被显示；分 P 视频和父稿件同类型\n\u003e\u003e\u003e cover = session.UploadCover('封面测试.png')\n\u003e\u003e\u003e submission.cover_url = cover['data']['url']\n# 上传，设置封面\n\u003e\u003e\u003e submission.source = 'https://github.com/mos9527/bilibili-toolman'\n# 设置转载来源\n\u003e\u003e\u003e submission.tags.append('转载')\n# 添加标签\n\u003e\u003e\u003e submission.thread = 17\n# 设置分区（详见 README 文末分区表）\n\u003e\u003e\u003e session.SubmitSubmission(submission,seperate_parts=False)\n# 投稿视频 (尝试以多 P 模式上传)\n# 若使用 Web API，如果条件不足（Lv3+ 及 1000+ 关注量) 则会报错\n\u003e\u003e\u003e session.SubmitSubmission(submission,seperate_parts=True)\n# 投稿视频 (尝试以将多 P 分为单 P 后上传)\n{'code:': 0,\n    'results': [{'code': 0, 'message': '0','ttl': 1,\n    'data': {'aid': 5939...., 'bvid': 'BV1oq....'}}]}\n```\n## 其它\n### 例程 :\n- [examples](https://github.com/greats3an/bilibili-toolman/tree/master/examples)\n- - [编辑稿件信息](https://github.com/greats3an/bilibili-toolman/blob/master/examples/submission-editor.py)\n- - [投稿VTT字幕](https://github.com/greats3an/bilibili-toolman/blob/master/examples/subtitle-helper.py)\n- - [解码 `--save` 凭据](https://github.com/greats3an/bilibili-toolman/blob/master/examples/token-info.py)\n- [main.py](https://github.com/greats3an/bilibili-toolman/blob/master/bilibili_toolman/cli/main.py)\n### API 实现 ：\n- [client.py](https://github.com/greats3an/bilibili-toolman/blob/master/bilibili_toolman/bilisession/client.py)\n- [web.py](https://github.com/greats3an/bilibili-toolman/blob/master/bilibili_toolman/bilisession/web.py)\n# 示例\n[![asciicast](https://asciinema.org/a/lesWLYGFZJxyeGrS6TDBkvRJV.svg)](https://asciinema.org/a/lesWLYGFZJxyeGrS6TDBkvRJV)\n\n# 感谢\n[PC 上传助手逆向 · FortuneDayssss/BilibiliUploader](https://github.com/FortuneDayssss/BilibiliUploader)\n\n[分区数据，API 参考 · Passkou/bilibili_api](https://github.com/Passkou/bilibili_api \"Passkou · bilibili_api\")\n\n[Youtube 解析 · yt-dlp/yt-dlp](https://github.com/yt-dlp/yt-dlp \"yt-dlp · yt-dlp\")\n## 参数说明\n    usage: bilibili-toolman [-h] [--cookies COOKIES] [--sms] [--load LOAD]\n                            [--load_upload LOAD_UPLOAD]\n                            [--load_submit LOAD_SUBMIT] [--save] [--http]\n                            [--noenv] [--cdn {ws,qn,bda2,kodo,gcs,bos}]\n                            [--opts OPTS] [--thread_id THREAD_ID] [--tags TAGS]\n                            [--desc DESC] [--title TITLE] [--seperate_parts]\n                            [--no_upload] [--no_submit] [--original]\n                            [--no_reprint] [--localfile LOCALFILE-URL]\n                            [--youtube YOUTUBE-URL]\n\n    使用帮助\n\n    optional arguments:\n    -h, --help            show this help message and exit\n\n    身份设置 （随方式优先级排序）:\n    --cookies COOKIES     登陆： 使用 Cookies 登陆，即使用 Web API （不可多 P 上传） ( 需要 SESSDATA 及 bili_jct ) e.g.SESSDATA=cb0..; bili_jct=6750...\n    --sms                 登陆：使用短信验证码登陆，即使用 上传助手 API （可多 P 上传）（需手动交互）（有日获取限制，请配合 --save 使用）\n    --load LOAD           登陆：加载凭据，同时用于上传及投稿\n    --load_upload LOAD_UPLOAD\n                            登陆：使用该凭据上传，而不用--load凭据上传\n    --load_submit LOAD_SUBMIT\n                            登陆：使用该凭据投稿，而不用--load凭据投稿\n    --save                登陆：向stdout输出当前登陆凭据并退出（其他输出转移至stderr）\n    --http                强制使用 HTTP （不推荐）\n    --noenv               上传时，不采用环境变量（如代理）\n    --cdn {ws,qn,bda2,kodo,gcs,bos}\n                            上传用 CDN （限 Web API) （对应 网宿（适合海外），七牛，百度（默认），七牛，谷歌，百度）\n    --retry_submit_delay RETRY_SUBMIT_DELAY\n                            投稿限流时，重新投稿周期\n    --retry_submit_count RETRY_SUBMIT_COUNT\n                            投稿限流时，尝试重新投稿次数\n\n    上传设置:\n    --opts OPTS           解析可选参数 ，详见 --opts 格式\n    --thread_id THREAD_ID\n                            分区 ID\n    --tags TAGS           标签\n    --desc DESC           描述格式 e.g. \"原描述：{desc}\" (其他变量详见下文)（仅稿件有描述）\n    --title TITLE         标题格式 e.g. \"[Youtube] {title} (其他变量详见下文)（使用于稿件及分P）\"\n    --seperate_parts      不分P （e.g. --youtube [播放列表],--localfile [文件夹]）独立投稿（不分P）（Web上传默认不分 P）\n    --no_upload           只下载资源\n    --no_submit           不提交稿件，适用于获取filename参数\n    --original            设置稿件为原创\n    --no_reprint          设置稿件不允许转载\n\n    解析可选参数 \"opts\" （格式 ： [参数1]=[值1];[参数2]=[值2] (query-string)）:\n    --localfile LOCALFILE-URL\n                            本地文件\n                            参数:\n                                cover (str) - 封面图片路径\n                            e.g. --localfile \"le videos/\" --opts cover=\"le cover.png\" --tags ...\n    --youtube YOUTUBE-URL\n                            Youtube / Twitch / etc 视频下载 (yt-dlp)\n                            参数:yt-dlp 参数：\n                                format (str) - 同 yt-dlp -f\n                                quite (True,False) - 是否屏蔽 yt-dlp 日志 (默认 False)\n                            特殊参数：\n                                playlistend - 对于播放列表、频道，下载到（时间顺序，新者在前）第 n 个视频为止\n                                playliststart - 对于播放列表、频道，从（时间顺序，新者在前）第 n 个视频开始下载\n                            \n                                daterange - 只下载在该参数指定时间窗口内的视频 (精确到毫秒)\n                                    格式可以为 YYmmdd,也可以用相对时间. 如：\n                                    \n                                    e.g. daterange=now; (下载今天上传的视频)\n                                    e.g. daterange=now-1day; (下载昨天到今天上传的视频)\n                                    e.g. daterange=220430~220501 (下载 2022年4月30日~2022年5月1日 的视频)        \n                                \n                                hardcode - 烧入硬字幕选项\n                                    e.g. 启用    ..;hardcode;...\n                                    e.g. 换用字体 ..;hardcode=style:FontName=Segoe UI       \n                                    e.g. NV硬解码   ..;hardcode=input:-hwaccel cuda/output:-c:v h264_nvenc -crf 17 -b:v 5M\n                                    多个选项用 / 隔开   \n                            e.g. --youtube \"...\" --opts \"format=best\u0026quiet=True\u0026hardcode\" --tags ...\n                                此外，针对视频对象，还提供其他变量:\n                                    {id}\n                                    {title}    \n                                    {descrption}\n                                    {upload_date}\n                                    {uploader}\n                                    {uploader_id}\n                                    {uploader_url}\n                                    {channel_id}\n                                    {channel_url}\n                                    {duration}\n                                    {view_count}\n                                    {avereage_rating}\n                                    ...\n                                注：输入播放列表且多 P 时，稿件标题为播放列表标题，稿件描述仅为 `来自Youtube`\n                            \n                            默认配置：不烧入字幕，下载最高质量音视频，下载字幕但不操作\n\n    变量：\n        {title},{desc} 等变量适用于：\n            title, desc, tags\n\n    通用变量:\n        {title}     -       原标题\n        {desc}      -       原描述\n        {safe_korean_title}\n                    -       【韩文】替换韩文为特殊字符的标题\n        {roma_korean_title}\n                    -       【韩文】替换韩文为罗马音的标题 (需要安装 korean_romanizer)\n                    \n    本工具支持将给定视频源转载至哔哩哔哩\n\n    详见项目 README 以获取更多例程 ： github.com/greats3an/bilibili-toolman\n\n# 分区ID (tid) 表\n\n## 动画\n|分区| TID|\n|-|-|\n|MAD·AMV|24|完结动画|32|\n|MMD·3D|25|\n|综合|27|\n|短片·手书·配音|47|\n|特摄|86|\n|手办·模玩|210|\n## 番剧\n|分区| TID|\n|-|-|\n|连载动画|33|\n|资讯|51|\n|官方延伸|152|\n## 国创\n|分区| TID|\n|-|-|\n|国产动画|153|\n|国产原创相关|168|\n|布袋戏|169|\n|资讯|170|\n|动态漫·广播剧|195|\n## 音乐\n|分区| TID|\n|-|-|\n|原创音乐|28|\n|音乐现场|29|\n|VOCALOID·UTAU|30|\n|翻唱|31|\n|演奏|59|\n|音乐综合|130|\n|MV|193|\n|电音|194|\n## 舞蹈\n|分区| TID|\n|-|-|\n|宅舞|20|\n|舞蹈综合|154|\n|舞蹈教程|156|\n|街舞|198|\n|明星舞蹈|199|\n|中国舞|200|\n## 游戏\n|分区| TID|\n|-|-|\n|单机游戏|17|\n|Mugen|19|\n|网络游戏|65|\n|GMV|121|\n|音游|136|\n|电子竞技|171|\n|手机游戏|172|\n|桌游棋牌|173|\n## 知识\n|分区| TID|\n|-|-|\n|野生技术协会|122|\n|社科人文|124|\n|科学科普|201|\n|财经|207|\n|校园学习|208|\n|职业职场|209|\n## 数码\n|分区| TID|\n|-|-|\n|手机平板|95|\n|电脑装机|189|\n|摄影摄像|190|\n|影音智能|191|\n## 生活\n|分区| TID|\n|-|-|\n|日常|21|\n|动物圈|75|\n|美食圈|76|\n|搞笑|138|\n|手工|161|\n|绘画|162|\n|运动|163|\n|其他|174|\n|汽车|176|\n## 鬼畜\n|分区| TID|\n|-|-|\n|鬼畜调教|22|\n|音MAD|26|\n|人力VOCALOID|126|\n|教程演示|127|\n## 时尚\n|分区| TID|\n|-|-|\n|美妆|157|\n|服饰|158|\n|T台|159|\n|健身|164|\n|风尚标|192|\n## 资讯\n|分区| TID|\n|-|-|\n|热点|203|\n|环球|204|\n|社会|205|\n|综合|206|\n## 娱乐\n|分区| TID|\n|-|-|\n|综艺|71|\n|明星|137|\n## 影视\n|分区| TID|\n|-|-|\n|短片|85|\n|影视杂谈|182|\n|影视剪辑|183|\n|预告·资讯|184|\n## 纪录片\n|分区| TID|\n|-|-|\n|人文·历史|37|\n|科学·探索·自然|178|\n|军事|179|\n|社会·美食·旅行|180|\n## 电影\n|分区| TID|\n|-|-|\n|其他国家|83|\n|欧美电影|145|\n|日本电影|146|\n|华语电影|147|\n## 电视剧\n|分区| TID|\n|-|-|\n|国产剧|185|\n|海外剧|187|\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmos9527%2Fbilibili-toolman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmos9527%2Fbilibili-toolman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmos9527%2Fbilibili-toolman/lists"}