bilibili-toolman


Namebilibili-toolman JSON
Version 1.0.7.9 PyPI version JSON
download
home_pagehttps://github.com/greats3an/bilibili-toolman
Summarybilibili-toolman 哔哩哔哩搬运工具
upload_time2023-07-29 11:42:09
maintainer
docs_urlNone
authorgreats3an
requires_python>=3.6
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 安装

    pip install bilibili_toolman

# 使用
## 以 Github Actions 转载视频:

### 准备凭据
凭据需要在本地准备
- [pip 安装 bilibili_toolman](#安装)
    - **Windows 用户**: 在 [Releases](https://github.com/mos9527/bilibili-toolman/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频道的用户

- 依照 [reupload-channel-timed.yml](https://github.com/greats3an/bilibili-toolman/blob/master/.github/workflows/reupload-channel-timed.yml) 及其注释配置即可

## API 使用示例
```python
>>> 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....'}}]}
```
## 其它
### 例程 :
- [examples](https://github.com/greats3an/bilibili-toolman/tree/master/examples)
- - [编辑稿件信息](https://github.com/greats3an/bilibili-toolman/blob/master/examples/submission-editor.py)
- - [投稿VTT字幕](https://github.com/greats3an/bilibili-toolman/blob/master/examples/subtitle-helper.py)
- - [解码 `--save` 凭据](https://github.com/greats3an/bilibili-toolman/blob/master/examples/token-info.py)
- [main.py](https://github.com/greats3an/bilibili-toolman/blob/master/bilibili_toolman/cli/main.py)
### API 实现 :
- [client.py](https://github.com/greats3an/bilibili-toolman/blob/master/bilibili_toolman/bilisession/client.py)
- [web.py](https://github.com/greats3an/bilibili-toolman/blob/master/bilibili_toolman/bilisession/web.py)
# 示例
[![asciicast](https://asciinema.org/a/lesWLYGFZJxyeGrS6TDBkvRJV.svg)](https://asciinema.org/a/lesWLYGFZJxyeGrS6TDBkvRJV)

# 感谢
[PC 上传助手逆向 · FortuneDayssss/BilibiliUploader](https://github.com/FortuneDayssss/BilibiliUploader)

[分区数据,API 参考 · Passkou/bilibili_api](https://github.com/Passkou/bilibili_api "Passkou · bilibili_api")

[Youtube 解析 · yt-dlp/yt-dlp](https://github.com/yt-dlp/yt-dlp "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·AMV|24|完结动画|32|
|MMD·3D|25|
|综合|27|
|短片·手书·配音|47|
|特摄|86|
|手办·模玩|210|
## 番剧
|分区| TID|
|-|-|
|连载动画|33|
|资讯|51|
|官方延伸|152|
## 国创
|分区| TID|
|-|-|
|国产动画|153|
|国产原创相关|168|
|布袋戏|169|
|资讯|170|
|动态漫·广播剧|195|
## 音乐
|分区| TID|
|-|-|
|原创音乐|28|
|音乐现场|29|
|VOCALOID·UTAU|30|
|翻唱|31|
|演奏|59|
|音乐综合|130|
|MV|193|
|电音|194|
## 舞蹈
|分区| TID|
|-|-|
|宅舞|20|
|舞蹈综合|154|
|舞蹈教程|156|
|街舞|198|
|明星舞蹈|199|
|中国舞|200|
## 游戏
|分区| TID|
|-|-|
|单机游戏|17|
|Mugen|19|
|网络游戏|65|
|GMV|121|
|音游|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|
|音MAD|26|
|人力VOCALOID|126|
|教程演示|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|

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/greats3an/bilibili-toolman",
    "name": "bilibili-toolman",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "",
    "author": "greats3an",
    "author_email": "greats3an@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/c7/d0/2edbd27d4898c0af13cdd404736291493bebfbeb5bee592e5c97811a201d/bilibili-toolman-1.0.7.9.tar.gz",
    "platform": null,
    "description": "# \u5b89\u88c5\n\n    pip install bilibili_toolman\n\n# \u4f7f\u7528\n## \u4ee5 Github Actions \u8f6c\u8f7d\u89c6\u9891\uff1a\n\n### \u51c6\u5907\u51ed\u636e\n\u51ed\u636e\u9700\u8981\u5728\u672c\u5730\u51c6\u5907\n- [pip \u5b89\u88c5 bilibili_toolman](#\u5b89\u88c5)\n    - **Windows \u7528\u6237**: \u5728 [Releases](https://github.com/mos9527/bilibili-toolman/releases) \u53ef\u4e0b\u8f7d\u5df2\u6253\u5305 `.exe` \u7248\u672c\n- \u4f7f\u7528 Web \u7aef API\n    \n        python -m bilibili_toolman --save --cookies \"SESSDATA=8aafe8**********;bili_jct=4f39b**********\"\n    `SESSDATA`,`bili_jct` \u53ef\u5728XHR\u8bf7\u6c42\u5934\u4e2d\u6216`document.cookies`\u83b7\u5f97\uff0c\u8fd9\u91cc\u4e0d\u5c06\u9610\u8ff0\n- \u4f7f\u7528 \u4e0a\u4f20\u52a9\u624b API\n        \n        python -m bilibili_toolman --save --sms\n    \u8ddf\u968f\u8f93\u51fa\u64cd\u4f5c\u5373\u53ef\uff08\u6ce8\uff1a\u9700\u8981\u5b8c\u6210 Geetest \u6821\u9a8c\uff09\n- \u51ed\u636e\u5373\u8f93\u51fa\u7684 Base64 \u7f16\u7801\u5185\u5bb9\n\n### Actions - \u914d\u7f6e\u51ed\u636e\n- Fork \u6b64\u9879\u76ee\n- \u5728\u9879\u76ee Settings > Secret > New repository secret \u521b\u5efa\uff1a\n    - Name  : `SESSION`\n    - Value : `\u6b64\u5904\u4e3a\u51c6\u5907\u597d\u7684\u51ed\u636e`\n- *\u53ef\u9009* \u66ff\u6362\u4e0d\u540c\u51ed\u636e\u4e0a\u4f20\u3001\u6295\u7a3f\n   \n    **\u6307\u5b9a\u4e0a\u4f20\u51ed\u636e**\n    \n    - Name  : `SESSION_UPLOAD`\n    - Value : `\u6b64\u5904\u4e3a\u51c6\u5907\u597d\u7684\u51ed\u636e`\n    \n    **\u6307\u5b9a\u6295\u7a3f\u51ed\u636e**\n    \n    - Name  : `SESSION_SUBMIT`\n    - Value : `\u6b64\u5904\u4e3a\u51c6\u5907\u597d\u7684\u51ed\u636e`\n\n    \u4e00\u822c\u63a8\u8350\u4f7f\u7528 Web \u51ed\u636e\u4e0a\u4f20\uff0c\u4e0a\u4f20\u52a9\u624b\u51ed\u636e\u6295\u7a3f\uff08\u9ad8\u901f (?) (~400Mbps) \u4e0a\u4f20\uff0c\u591aP\u6295\u7a3f\uff09\n\n### Actions - \u624b\u52a8\u4e0a\u4f20\n\u8be5 Actions \u9002\u7528\u4e8e\u624b\u52a8\u8f6c\u8f7d\u7684\u7528\u6237\n\n- \u5728\u9879\u76ee Actions > \u624b\u52a8\u8f6c\u8f7d > Run Workflow \u586b\u5165\u503c\uff08[\u8be6\u89c1\u53c2\u6570\u8bf4\u660e](#\u53c2\u6570\u8bf4\u660e)\uff09\n- \u8fd0\u884c\u5373\u53ef\n\n### Actions - \u5b9a\u65f6\u4e0a\u4f20\n\u8be5 Actions \u9002\u7528\u4e8e\u9700\u8981\u81ea\u52a8\u8f6c\u8f7dYoutube\u9891\u9053\u7684\u7528\u6237\n\n- \u4f9d\u7167 [reupload-channel-timed.yml](https://github.com/greats3an/bilibili-toolman/blob/master/.github/workflows/reupload-channel-timed.yml) \u53ca\u5176\u6ce8\u91ca\u914d\u7f6e\u5373\u53ef\n\n## API \u4f7f\u7528\u793a\u4f8b\n```python\n>>> from bilibili_toolman.bilisession.web import BiliSession\n# bilisession.client \u5373\u4e0a\u4f20\u52a9\u624b API\u3002\u8f83 Web \u7248\u76f8\u6bd4\uff0c\u53ef\u4ee5\u7528\u4f4e\u7b49\u7ea7\u5e10\u53f7\u6295\u7a3f\u591a P \u89c6\u9891\n# \u540c\u65f6\uff0c\u53ef\u4ee5\u514d\u53bb\u5927\u90e8\u5206\u4eba\u673a\u6821\u9a8c\u64cd\u4f5c\n# bilisession.web \u5373 Web \u7aef\u521b\u4f5c\u4e2d\u5fc3 API\u3002\u5728\u4e0a\u4f20\u901f\u5ea6\u4e0a\u4f1a\u6709\u4f18\u52bf\n# \u6ce8\uff1a\u6295\u7a3f\u4e0e\u4e0a\u4f20*\u4e0d\u9700\u8981*\u5728\u540c\u4e00\u4e2a Session \u4e2d\u5b8c\u6210\n# \u4e0d\u8bba import \u7684\u662f\u4ec0\u4e48\u7248\u672c\uff0c\u767b\u5f55\u6001\u6062\u590d\u65f6\u90fd\u4f1a\u91cd\u65b0\u5b9e\u4f8b\u5316\u767b\u5f55\u6001\u5bf9\u5e94\u7684 Session\n>>> session = BiliSession.from_base64_string(\"H4sIADKW+2EC/5VVWW/bRhB2EF216...\") \n# \u4ece\u51ed\u636e\u6062\u590d\u767b\u5f55\u6001\uff0c\u8be6\u60c5\u89c1 \u51c6\u5907\u51ed\u636e\n>>> endpoint_1,cid_1 = session.UploadVideo(\"\u672c\u5730\u89c6\u989101.mp4\")\n('n220208141kq78....', ...)\n>>> endpoint_2,cid_2 = session.UploadVideo(\"\u672c\u5730\u89c6\u989102.mp4\")\n('n220209892re88....', ...)\n# \u4e0a\u4f20\u89c6\u9891\u5e76\u62ff key\n# \u4e0a\u4f20\u7ebf\u8def\u6839\u636e\u6062\u590d\u7684 Session \u800c\u5b9a\n# Web / Cookies \u4f7f\u7528\u7684\u662f\u7f51\u5bbfCDN\uff0c\u56fd\u5185\u5916\u901f\u5ea6\u90fd\u5f88\u53ef\u89c2\n# Client \u4f7f\u7528\u7684 CDN \u5728\u6d77\u5916\u7684\u901f\u5ea6\u5219\u8f83\u6162\n# \u63a8\u8350\u5206\u522b\u51c6\u5907 Web / Client \u7684 Session. \u5982\u6b64\u53ef\u7528 Web \u9ad8\u901f\u4e0a\u4f20\uff0cClient \u591a P \u6295\u7a3f\n>>> from bilibili_toolman.bilisession.common.submission import Submission\n# \u51c6\u5907\u7a3f\u4ef6\n>>> submission = Submission(\n    title=\"\u3010toolman\u3011 \u8f6c\u8f7d\u6d4b\u8bd5\",\n    desc=\"...as per request\"\n)\n# \u65b0\u5efa\u7a3f\u4ef6 (\u6807\u9898\u63cf\u8ff0\u51fa\u73b0\u97e9\u6587\u5b57\u7b26\u7b49\u4f1a\u5bfc\u81f4\u7a3f\u4ef6\u65e0\u6548\uff0c\u5177\u4f53\u53c2\u89c1 -h \u8f93\u51fa)\n>>> submission.videos.append(\n    Submission(\n        title=\"\u591a P \uff08P1)\",\n        video_endpoint=endpoint_1\n    )\n)\n>>> submission.videos.append(\n    Submission(\n        title=\"\u591a P \uff08P2)\",\n        video_endpoint=endpoint_2\n    )\n)    \n# \u6dfb\u52a0\u89c6\u9891 (P)\uff0c\u6ce8\u610f\u4ec5\u7236\u8282\u70b9\uff08\u7a3f\u4ef6\uff09\u63cf\u8ff0\u4f1a\u88ab\u663e\u793a\uff1b\u5206 P \u89c6\u9891\u548c\u7236\u7a3f\u4ef6\u540c\u7c7b\u578b\n>>> cover = session.UploadCover('\u5c01\u9762\u6d4b\u8bd5.png')\n>>> submission.cover_url = cover['data']['url']\n# \u4e0a\u4f20\uff0c\u8bbe\u7f6e\u5c01\u9762\n>>> submission.source = 'https://github.com/mos9527/bilibili-toolman'\n# \u8bbe\u7f6e\u8f6c\u8f7d\u6765\u6e90\n>>> submission.tags.append('\u8f6c\u8f7d')\n# \u6dfb\u52a0\u6807\u7b7e\n>>> submission.thread = 17\n# \u8bbe\u7f6e\u5206\u533a\uff08\u8be6\u89c1 README \u6587\u672b\u5206\u533a\u8868\uff09\n>>> session.SubmitSubmission(submission,seperate_parts=False)\n# \u6295\u7a3f\u89c6\u9891 (\u5c1d\u8bd5\u4ee5\u591a P \u6a21\u5f0f\u4e0a\u4f20)\n# \u82e5\u4f7f\u7528 Web API\uff0c\u5982\u679c\u6761\u4ef6\u4e0d\u8db3\uff08Lv3+ \u53ca 1000+ \u5173\u6ce8\u91cf) \u5219\u4f1a\u62a5\u9519\n>>> session.SubmitSubmission(submission,seperate_parts=True)\n# \u6295\u7a3f\u89c6\u9891 (\u5c1d\u8bd5\u4ee5\u5c06\u591a P \u5206\u4e3a\u5355 P \u540e\u4e0a\u4f20)\n{'code:': 0,\n    'results': [{'code': 0, 'message': '0','ttl': 1,\n    'data': {'aid': 5939...., 'bvid': 'BV1oq....'}}]}\n```\n## \u5176\u5b83\n### \u4f8b\u7a0b :\n- [examples](https://github.com/greats3an/bilibili-toolman/tree/master/examples)\n- - [\u7f16\u8f91\u7a3f\u4ef6\u4fe1\u606f](https://github.com/greats3an/bilibili-toolman/blob/master/examples/submission-editor.py)\n- - [\u6295\u7a3fVTT\u5b57\u5e55](https://github.com/greats3an/bilibili-toolman/blob/master/examples/subtitle-helper.py)\n- - [\u89e3\u7801 `--save` \u51ed\u636e](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 \u5b9e\u73b0 \uff1a\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# \u793a\u4f8b\n[![asciicast](https://asciinema.org/a/lesWLYGFZJxyeGrS6TDBkvRJV.svg)](https://asciinema.org/a/lesWLYGFZJxyeGrS6TDBkvRJV)\n\n# \u611f\u8c22\n[PC \u4e0a\u4f20\u52a9\u624b\u9006\u5411 \u00b7 FortuneDayssss/BilibiliUploader](https://github.com/FortuneDayssss/BilibiliUploader)\n\n[\u5206\u533a\u6570\u636e\uff0cAPI \u53c2\u8003 \u00b7 Passkou/bilibili_api](https://github.com/Passkou/bilibili_api \"Passkou \u00b7 bilibili_api\")\n\n[Youtube \u89e3\u6790 \u00b7 yt-dlp/yt-dlp](https://github.com/yt-dlp/yt-dlp \"yt-dlp \u00b7 yt-dlp\")\n## \u53c2\u6570\u8bf4\u660e\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    \u4f7f\u7528\u5e2e\u52a9\n\n    optional arguments:\n    -h, --help            show this help message and exit\n\n    \u8eab\u4efd\u8bbe\u7f6e \uff08\u968f\u65b9\u5f0f\u4f18\u5148\u7ea7\u6392\u5e8f\uff09:\n    --cookies COOKIES     \u767b\u9646\uff1a \u4f7f\u7528 Cookies \u767b\u9646\uff0c\u5373\u4f7f\u7528 Web API \uff08\u4e0d\u53ef\u591a P \u4e0a\u4f20\uff09 ( \u9700\u8981 SESSDATA \u53ca bili_jct ) e.g.SESSDATA=cb0..; bili_jct=6750...\n    --sms                 \u767b\u9646\uff1a\u4f7f\u7528\u77ed\u4fe1\u9a8c\u8bc1\u7801\u767b\u9646\uff0c\u5373\u4f7f\u7528 \u4e0a\u4f20\u52a9\u624b API \uff08\u53ef\u591a P \u4e0a\u4f20\uff09\uff08\u9700\u624b\u52a8\u4ea4\u4e92\uff09\uff08\u6709\u65e5\u83b7\u53d6\u9650\u5236\uff0c\u8bf7\u914d\u5408 --save \u4f7f\u7528\uff09\n    --load LOAD           \u767b\u9646\uff1a\u52a0\u8f7d\u51ed\u636e\uff0c\u540c\u65f6\u7528\u4e8e\u4e0a\u4f20\u53ca\u6295\u7a3f\n    --load_upload LOAD_UPLOAD\n                            \u767b\u9646\uff1a\u4f7f\u7528\u8be5\u51ed\u636e\u4e0a\u4f20\uff0c\u800c\u4e0d\u7528--load\u51ed\u636e\u4e0a\u4f20\n    --load_submit LOAD_SUBMIT\n                            \u767b\u9646\uff1a\u4f7f\u7528\u8be5\u51ed\u636e\u6295\u7a3f\uff0c\u800c\u4e0d\u7528--load\u51ed\u636e\u6295\u7a3f\n    --save                \u767b\u9646\uff1a\u5411stdout\u8f93\u51fa\u5f53\u524d\u767b\u9646\u51ed\u636e\u5e76\u9000\u51fa\uff08\u5176\u4ed6\u8f93\u51fa\u8f6c\u79fb\u81f3stderr\uff09\n    --http                \u5f3a\u5236\u4f7f\u7528 HTTP \uff08\u4e0d\u63a8\u8350\uff09\n    --noenv               \u4e0a\u4f20\u65f6\uff0c\u4e0d\u91c7\u7528\u73af\u5883\u53d8\u91cf\uff08\u5982\u4ee3\u7406\uff09\n    --cdn {ws,qn,bda2,kodo,gcs,bos}\n                            \u4e0a\u4f20\u7528 CDN \uff08\u9650 Web API) \uff08\u5bf9\u5e94 \u7f51\u5bbf\uff08\u9002\u5408\u6d77\u5916\uff09\uff0c\u4e03\u725b\uff0c\u767e\u5ea6\uff08\u9ed8\u8ba4\uff09\uff0c\u4e03\u725b\uff0c\u8c37\u6b4c\uff0c\u767e\u5ea6\uff09\n    --retry_submit_delay RETRY_SUBMIT_DELAY\n                            \u6295\u7a3f\u9650\u6d41\u65f6\uff0c\u91cd\u65b0\u6295\u7a3f\u5468\u671f\n    --retry_submit_count RETRY_SUBMIT_COUNT\n                            \u6295\u7a3f\u9650\u6d41\u65f6\uff0c\u5c1d\u8bd5\u91cd\u65b0\u6295\u7a3f\u6b21\u6570\n\n    \u4e0a\u4f20\u8bbe\u7f6e:\n    --opts OPTS           \u89e3\u6790\u53ef\u9009\u53c2\u6570 \uff0c\u8be6\u89c1 --opts \u683c\u5f0f\n    --thread_id THREAD_ID\n                            \u5206\u533a ID\n    --tags TAGS           \u6807\u7b7e\n    --desc DESC           \u63cf\u8ff0\u683c\u5f0f e.g. \"\u539f\u63cf\u8ff0\uff1a{desc}\" (\u5176\u4ed6\u53d8\u91cf\u8be6\u89c1\u4e0b\u6587)\uff08\u4ec5\u7a3f\u4ef6\u6709\u63cf\u8ff0\uff09\n    --title TITLE         \u6807\u9898\u683c\u5f0f e.g. \"[Youtube] {title} (\u5176\u4ed6\u53d8\u91cf\u8be6\u89c1\u4e0b\u6587)\uff08\u4f7f\u7528\u4e8e\u7a3f\u4ef6\u53ca\u5206P\uff09\"\n    --seperate_parts      \u4e0d\u5206P \uff08e.g. --youtube [\u64ad\u653e\u5217\u8868],--localfile [\u6587\u4ef6\u5939]\uff09\u72ec\u7acb\u6295\u7a3f\uff08\u4e0d\u5206P\uff09\uff08Web\u4e0a\u4f20\u9ed8\u8ba4\u4e0d\u5206 P\uff09\n    --no_upload           \u53ea\u4e0b\u8f7d\u8d44\u6e90\n    --no_submit           \u4e0d\u63d0\u4ea4\u7a3f\u4ef6\uff0c\u9002\u7528\u4e8e\u83b7\u53d6filename\u53c2\u6570\n    --original            \u8bbe\u7f6e\u7a3f\u4ef6\u4e3a\u539f\u521b\n    --no_reprint          \u8bbe\u7f6e\u7a3f\u4ef6\u4e0d\u5141\u8bb8\u8f6c\u8f7d\n\n    \u89e3\u6790\u53ef\u9009\u53c2\u6570 \"opts\" \uff08\u683c\u5f0f \uff1a [\u53c2\u65701]=[\u503c1];[\u53c2\u65702]=[\u503c2] (query-string)\uff09:\n    --localfile LOCALFILE-URL\n                            \u672c\u5730\u6587\u4ef6\n                            \u53c2\u6570:\n                                cover (str) - \u5c01\u9762\u56fe\u7247\u8def\u5f84\n                            e.g. --localfile \"le videos/\" --opts cover=\"le cover.png\" --tags ...\n    --youtube YOUTUBE-URL\n                            Youtube / Twitch / etc \u89c6\u9891\u4e0b\u8f7d (yt-dlp)\n                            \u53c2\u6570:yt-dlp \u53c2\u6570\uff1a\n                                format (str) - \u540c yt-dlp -f\n                                quite (True,False) - \u662f\u5426\u5c4f\u853d yt-dlp \u65e5\u5fd7 (\u9ed8\u8ba4 False)\n                            \u7279\u6b8a\u53c2\u6570\uff1a\n                                playlistend - \u5bf9\u4e8e\u64ad\u653e\u5217\u8868\u3001\u9891\u9053\uff0c\u4e0b\u8f7d\u5230\uff08\u65f6\u95f4\u987a\u5e8f\uff0c\u65b0\u8005\u5728\u524d\uff09\u7b2c n \u4e2a\u89c6\u9891\u4e3a\u6b62\n                                playliststart - \u5bf9\u4e8e\u64ad\u653e\u5217\u8868\u3001\u9891\u9053\uff0c\u4ece\uff08\u65f6\u95f4\u987a\u5e8f\uff0c\u65b0\u8005\u5728\u524d\uff09\u7b2c n \u4e2a\u89c6\u9891\u5f00\u59cb\u4e0b\u8f7d\n                            \n                                daterange - \u53ea\u4e0b\u8f7d\u5728\u8be5\u53c2\u6570\u6307\u5b9a\u65f6\u95f4\u7a97\u53e3\u5185\u7684\u89c6\u9891 (\u7cbe\u786e\u5230\u6beb\u79d2)\n                                    \u683c\u5f0f\u53ef\u4ee5\u4e3a YYmmdd,\u4e5f\u53ef\u4ee5\u7528\u76f8\u5bf9\u65f6\u95f4. \u5982\uff1a\n                                    \n                                    e.g. daterange=now; (\u4e0b\u8f7d\u4eca\u5929\u4e0a\u4f20\u7684\u89c6\u9891)\n                                    e.g. daterange=now-1day; (\u4e0b\u8f7d\u6628\u5929\u5230\u4eca\u5929\u4e0a\u4f20\u7684\u89c6\u9891)\n                                    e.g. daterange=220430~220501 (\u4e0b\u8f7d 2022\u5e744\u670830\u65e5~2022\u5e745\u67081\u65e5 \u7684\u89c6\u9891)        \n                                \n                                hardcode - \u70e7\u5165\u786c\u5b57\u5e55\u9009\u9879\n                                    e.g. \u542f\u7528    ..;hardcode;...\n                                    e.g. \u6362\u7528\u5b57\u4f53 ..;hardcode=style:FontName=Segoe UI       \n                                    e.g. NV\u786c\u89e3\u7801   ..;hardcode=input:-hwaccel cuda/output:-c:v h264_nvenc -crf 17 -b:v 5M\n                                    \u591a\u4e2a\u9009\u9879\u7528 / \u9694\u5f00   \n                            e.g. --youtube \"...\" --opts \"format=best&quiet=True&hardcode\" --tags ...\n                                \u6b64\u5916\uff0c\u9488\u5bf9\u89c6\u9891\u5bf9\u8c61\uff0c\u8fd8\u63d0\u4f9b\u5176\u4ed6\u53d8\u91cf:\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                                \u6ce8\uff1a\u8f93\u5165\u64ad\u653e\u5217\u8868\u4e14\u591a P \u65f6\uff0c\u7a3f\u4ef6\u6807\u9898\u4e3a\u64ad\u653e\u5217\u8868\u6807\u9898\uff0c\u7a3f\u4ef6\u63cf\u8ff0\u4ec5\u4e3a `\u6765\u81eaYoutube`\n                            \n                            \u9ed8\u8ba4\u914d\u7f6e\uff1a\u4e0d\u70e7\u5165\u5b57\u5e55\uff0c\u4e0b\u8f7d\u6700\u9ad8\u8d28\u91cf\u97f3\u89c6\u9891\uff0c\u4e0b\u8f7d\u5b57\u5e55\u4f46\u4e0d\u64cd\u4f5c\n\n    \u53d8\u91cf\uff1a\n        {title},{desc} \u7b49\u53d8\u91cf\u9002\u7528\u4e8e\uff1a\n            title, desc, tags\n\n    \u901a\u7528\u53d8\u91cf:\n        {title}     -       \u539f\u6807\u9898\n        {desc}      -       \u539f\u63cf\u8ff0\n        {safe_korean_title}\n                    -       \u3010\u97e9\u6587\u3011\u66ff\u6362\u97e9\u6587\u4e3a\u7279\u6b8a\u5b57\u7b26\u7684\u6807\u9898\n        {roma_korean_title}\n                    -       \u3010\u97e9\u6587\u3011\u66ff\u6362\u97e9\u6587\u4e3a\u7f57\u9a6c\u97f3\u7684\u6807\u9898 (\u9700\u8981\u5b89\u88c5 korean_romanizer)\n                    \n    \u672c\u5de5\u5177\u652f\u6301\u5c06\u7ed9\u5b9a\u89c6\u9891\u6e90\u8f6c\u8f7d\u81f3\u54d4\u54e9\u54d4\u54e9\n\n    \u8be6\u89c1\u9879\u76ee README \u4ee5\u83b7\u53d6\u66f4\u591a\u4f8b\u7a0b \uff1a github.com/greats3an/bilibili-toolman\n\n# \u5206\u533aID (tid) \u8868\n\n## \u52a8\u753b\n|\u5206\u533a| TID|\n|-|-|\n|MAD\u00b7AMV|24|\u5b8c\u7ed3\u52a8\u753b|32|\n|MMD\u00b73D|25|\n|\u7efc\u5408|27|\n|\u77ed\u7247\u00b7\u624b\u4e66\u00b7\u914d\u97f3|47|\n|\u7279\u6444|86|\n|\u624b\u529e\u00b7\u6a21\u73a9|210|\n## \u756a\u5267\n|\u5206\u533a| TID|\n|-|-|\n|\u8fde\u8f7d\u52a8\u753b|33|\n|\u8d44\u8baf|51|\n|\u5b98\u65b9\u5ef6\u4f38|152|\n## \u56fd\u521b\n|\u5206\u533a| TID|\n|-|-|\n|\u56fd\u4ea7\u52a8\u753b|153|\n|\u56fd\u4ea7\u539f\u521b\u76f8\u5173|168|\n|\u5e03\u888b\u620f|169|\n|\u8d44\u8baf|170|\n|\u52a8\u6001\u6f2b\u00b7\u5e7f\u64ad\u5267|195|\n## \u97f3\u4e50\n|\u5206\u533a| TID|\n|-|-|\n|\u539f\u521b\u97f3\u4e50|28|\n|\u97f3\u4e50\u73b0\u573a|29|\n|VOCALOID\u00b7UTAU|30|\n|\u7ffb\u5531|31|\n|\u6f14\u594f|59|\n|\u97f3\u4e50\u7efc\u5408|130|\n|MV|193|\n|\u7535\u97f3|194|\n## \u821e\u8e48\n|\u5206\u533a| TID|\n|-|-|\n|\u5b85\u821e|20|\n|\u821e\u8e48\u7efc\u5408|154|\n|\u821e\u8e48\u6559\u7a0b|156|\n|\u8857\u821e|198|\n|\u660e\u661f\u821e\u8e48|199|\n|\u4e2d\u56fd\u821e|200|\n## \u6e38\u620f\n|\u5206\u533a| TID|\n|-|-|\n|\u5355\u673a\u6e38\u620f|17|\n|Mugen|19|\n|\u7f51\u7edc\u6e38\u620f|65|\n|GMV|121|\n|\u97f3\u6e38|136|\n|\u7535\u5b50\u7ade\u6280|171|\n|\u624b\u673a\u6e38\u620f|172|\n|\u684c\u6e38\u68cb\u724c|173|\n## \u77e5\u8bc6\n|\u5206\u533a| TID|\n|-|-|\n|\u91ce\u751f\u6280\u672f\u534f\u4f1a|122|\n|\u793e\u79d1\u4eba\u6587|124|\n|\u79d1\u5b66\u79d1\u666e|201|\n|\u8d22\u7ecf|207|\n|\u6821\u56ed\u5b66\u4e60|208|\n|\u804c\u4e1a\u804c\u573a|209|\n## \u6570\u7801\n|\u5206\u533a| TID|\n|-|-|\n|\u624b\u673a\u5e73\u677f|95|\n|\u7535\u8111\u88c5\u673a|189|\n|\u6444\u5f71\u6444\u50cf|190|\n|\u5f71\u97f3\u667a\u80fd|191|\n## \u751f\u6d3b\n|\u5206\u533a| TID|\n|-|-|\n|\u65e5\u5e38|21|\n|\u52a8\u7269\u5708|75|\n|\u7f8e\u98df\u5708|76|\n|\u641e\u7b11|138|\n|\u624b\u5de5|161|\n|\u7ed8\u753b|162|\n|\u8fd0\u52a8|163|\n|\u5176\u4ed6|174|\n|\u6c7d\u8f66|176|\n## \u9b3c\u755c\n|\u5206\u533a| TID|\n|-|-|\n|\u9b3c\u755c\u8c03\u6559|22|\n|\u97f3MAD|26|\n|\u4eba\u529bVOCALOID|126|\n|\u6559\u7a0b\u6f14\u793a|127|\n## \u65f6\u5c1a\n|\u5206\u533a| TID|\n|-|-|\n|\u7f8e\u5986|157|\n|\u670d\u9970|158|\n|T\u53f0|159|\n|\u5065\u8eab|164|\n|\u98ce\u5c1a\u6807|192|\n## \u8d44\u8baf\n|\u5206\u533a| TID|\n|-|-|\n|\u70ed\u70b9|203|\n|\u73af\u7403|204|\n|\u793e\u4f1a|205|\n|\u7efc\u5408|206|\n## \u5a31\u4e50\n|\u5206\u533a| TID|\n|-|-|\n|\u7efc\u827a|71|\n|\u660e\u661f|137|\n## \u5f71\u89c6\n|\u5206\u533a| TID|\n|-|-|\n|\u77ed\u7247|85|\n|\u5f71\u89c6\u6742\u8c08|182|\n|\u5f71\u89c6\u526a\u8f91|183|\n|\u9884\u544a\u00b7\u8d44\u8baf|184|\n## \u7eaa\u5f55\u7247\n|\u5206\u533a| TID|\n|-|-|\n|\u4eba\u6587\u00b7\u5386\u53f2|37|\n|\u79d1\u5b66\u00b7\u63a2\u7d22\u00b7\u81ea\u7136|178|\n|\u519b\u4e8b|179|\n|\u793e\u4f1a\u00b7\u7f8e\u98df\u00b7\u65c5\u884c|180|\n## \u7535\u5f71\n|\u5206\u533a| TID|\n|-|-|\n|\u5176\u4ed6\u56fd\u5bb6|83|\n|\u6b27\u7f8e\u7535\u5f71|145|\n|\u65e5\u672c\u7535\u5f71|146|\n|\u534e\u8bed\u7535\u5f71|147|\n## \u7535\u89c6\u5267\n|\u5206\u533a| TID|\n|-|-|\n|\u56fd\u4ea7\u5267|185|\n|\u6d77\u5916\u5267|187|\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "bilibili-toolman \u54d4\u54e9\u54d4\u54e9\u642c\u8fd0\u5de5\u5177",
    "version": "1.0.7.9",
    "project_urls": {
        "Homepage": "https://github.com/greats3an/bilibili-toolman"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cc5825e043473a9feb3654f3f8f452d603d33b2130389a5257bdf4acfa9babe4",
                "md5": "8de9edf8f2bc2ddbf6cae71076c15f99",
                "sha256": "5ff6be0444c6617820da5135110e78b40d73e4dee2f57f566a9487214df1d92c"
            },
            "downloads": -1,
            "filename": "bilibili_toolman-1.0.7.9-py3.11.egg",
            "has_sig": false,
            "md5_digest": "8de9edf8f2bc2ddbf6cae71076c15f99",
            "packagetype": "bdist_egg",
            "python_version": "1.0.7.9",
            "requires_python": ">=3.6",
            "size": 102245,
            "upload_time": "2023-07-29T11:42:10",
            "upload_time_iso_8601": "2023-07-29T11:42:10.985580Z",
            "url": "https://files.pythonhosted.org/packages/cc/58/25e043473a9feb3654f3f8f452d603d33b2130389a5257bdf4acfa9babe4/bilibili_toolman-1.0.7.9-py3.11.egg",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "32a6d9b03d6e8e9aeac642a0585970ed1731079871bd481694a5963fb5edac34",
                "md5": "72fa2fad9200d96b4235a2e0aadd609a",
                "sha256": "d7879135e8d86e05ceececcfeb52c07fcd2c6717ed14cc537cc572b7240764c6"
            },
            "downloads": -1,
            "filename": "bilibili_toolman-1.0.7.9-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "72fa2fad9200d96b4235a2e0aadd609a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 45363,
            "upload_time": "2023-07-29T11:42:08",
            "upload_time_iso_8601": "2023-07-29T11:42:08.173918Z",
            "url": "https://files.pythonhosted.org/packages/32/a6/d9b03d6e8e9aeac642a0585970ed1731079871bd481694a5963fb5edac34/bilibili_toolman-1.0.7.9-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c7d02edbd27d4898c0af13cdd404736291493bebfbeb5bee592e5c97811a201d",
                "md5": "50806d31bf57f90c45948bcab78a1aea",
                "sha256": "223fb9d6654f8e32871de2a4266c13df78166135056bd57074b1a55f04733ecb"
            },
            "downloads": -1,
            "filename": "bilibili-toolman-1.0.7.9.tar.gz",
            "has_sig": false,
            "md5_digest": "50806d31bf57f90c45948bcab78a1aea",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 44673,
            "upload_time": "2023-07-29T11:42:09",
            "upload_time_iso_8601": "2023-07-29T11:42:09.406072Z",
            "url": "https://files.pythonhosted.org/packages/c7/d0/2edbd27d4898c0af13cdd404736291493bebfbeb5bee592e5c97811a201d/bilibili-toolman-1.0.7.9.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-07-29 11:42:09",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "greats3an",
    "github_project": "bilibili-toolman",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "bilibili-toolman"
}
        
Elapsed time: 0.10326s