GithubHelp home page GithubHelp logo

yutto-dev / bilili Goto Github PK

View Code? Open in Web Editor NEW
1.1K 12.0 85.0 1.61 MB

:beers: bilibili video (including bangumi) and danmaku downloader | B站视频(含番剧)、弹幕下载器

Home Page: https://bilili.nyakku.moe

License: GNU General Public License v3.0

Python 99.13% Just 0.87%
bilibili python3 crawler spider video requests subtitle danmaku multithread downloader

bilili's People

Contributors

dependabot-preview[bot] avatar dependabot[bot] avatar pandaft avatar renovate[bot] avatar siguremo avatar vx13 avatar xincheng213618 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bilili's Issues

✨ 选集功能混合

特性描述

起止与结合符的混合,比如 1,4~5,7,9~11

是否愿意为此贡献代码

以后再说

🐛 我同学第一次使用显示语法错误

SynataxaError:invalid syntax

'apm_id_from' 不是内部或外部命令,也不是可运行的程序。
是不是那个ffmpeg的原因,他已经添加到环境变量了。
在我这边都可以,他那边不行,还需要重启电脑吗?

🐛 大会员状态下无法下载会员番 & 编码问题

调用方式

$ bilili -c $SESSDATA https://www.bilibili.com/bangumi/play/ss24588 -p 2
工作细胞
全 14 话
已选择第 2 话
[warn] 第2话 擦伤 无法下载,原因:「-10403」 大会员专享限制
✖ 第2话 擦伤 「」
以上标 ✖ 为需要进行下载的视频,是否立刻进行下载?[Y/n]

顺便一提,使用 Y 回复后,整个脚本就卡掉无响应了(

环境信息

  • OS: WSL1 Ubuntu 20.04
  • Python: Python 3.8.5
  • bilili: 1.3.7
  • 如果是显示相关问题
    • Shell:cmd/bash
    • Terminal:cmd/Git Bash

问题简述

  1. 带着大会员的 SESSDATA 下无法解析会员番,已经确定 SESSDATA 没有其他问题(下载普通视频时能解析出高码率来)。
  2. 界面交互有问题,上文中当检测到不能下载时应当进行终止,而不应当在用户 Y/-y 后继续下载,最后无限刷新使界面卡住。

预期行为

  1. 正常解析并下载。
  2. 优化界面交互,不能下载时直接终止。

额外信息

卡顿界面强行 Ctrl + C 时的输出:

Traceback (most recent call last):
  File "/usr/local/bin/bilili", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.8/dist-packages/bilili/__main__.py", line 441, in main
    time.sleep(max(1 / refresh_rate - (time.time() - now_t), 0.01))
KeyboardInterrupt

顺便一提,符号「✖」有些花活,在大部分常规平台均无法正常显示,建议替换成常规Unicode符号(如-/+)。
该符号还会导致一些终端的交互锅掉,比如说如下是 Git Bash 的显示:

abc17@Jerry MINGW64 /h
$ bilili -c [SECRET] https://www.bilibili.com/bangumi/play/ss24588 -p 2
Traceback (most recent call last):
  File "c:\python38\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\python38\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Python38\Scripts\bilili.exe\__main__.py", line 7, in <module>
  File "c:\python38\lib\site-packages\bilili\__main__.py", line 264, in main
    print("{} {}".format(symbol, str(container)))
UnicodeEncodeError: 'gbk' codec can't encode character '\u2716' in position 0: illegal multibyte sequence
工作细胞
全 14 话
已选择第 2 话
[warn] 第2话 擦伤 无法下载,原因:「-10403」 大会员专享限制

编码处理不好时,在使用 subprocess 简易交互时也会吐类似信息使交互失败,(我现在已经被迫用写入 bat 再执行的屑 workaround 了)

🍻 𝓫𝓲𝓵𝓲𝓵𝓲 多半情况下也无法显示,暂且不提。

是否愿意为此贡献代码

扫了一眼,倒是没看懂 API 实现。

🐛 会员番剧弹幕下载报错

调用方式

bilili --danmaku xml www.bilibili.com/bangumi/media/md28230900
报错信息
视频地址有误!

环境信息

  • OS: win10 教育版 1909
  • Python: 3.8.3
  • bilili:1.3.6
    Snipaste_2020-11-18_15-37-56

是不是需要会员登陆后才能下载?

✨ 希望能把CC字幕封装进MP4档里面

目前B站港澳台的番剧都是CC字幕,工具好像并没有把字幕下载下来,所以建议在ffmpeg合并的时候把字幕也封装进去,这样用potplayer之类的播放器打开就可以看了

💬 关于代码结构为什么这么烂这档子事

特性描述

  1. 命令行是对大多数人不友好的,希望能够有一个交互式的UI(GUI还是算了,太麻烦...)。(ps:我对友好的UI有一种特别的执念,所以我也希望bilili有一个友好的UI)
  2. 我想一个静态的配置文件是很有帮助,json是一个不错的选择(尤其是ffmpeg的路径...)。
  3. BilibiliAPI的调用方式总会让我有种“一些使用这个包的代码会触发服务器的防御机制”的感觉,希望可以提高一下返回值的可重用性....
  4. 希望可以对UP主的投稿视频进行处理。

###ps:

因为之前花寄的事,我加急敲了个爬虫,下载器还是引用别人的。
即使如此这个程式还是只能用惨不忍睹来形容。所以我打算重写一个。
当我使用
``pip search bili`
的时候,我发现了'bilili'。它的代码的整洁性令我惊叹,而那极其不友好的使用方式亦让我惊讶。
所以我来的了Github并发起了Issues,希望可以将我的想法传达给作者

###ps2:

头一回使用Github,如果让你产生了什么不好的感受或者我有什么不对的地方希望可以告诉我
不擅长和人交流,见笑了(- _ -)

是否愿意为此贡献代码

我已经fork了这份项目,但是我的python技术并不是特别好,所以分析代码的架构和修改可能花费不少时间
我希望也能为bilili出一份力
希望作者不要介意参考bilili的设计思路和部分源码并将其用在我的项目上

功能疑问

请问能自动合并一个bvid的所有episodes吗

🐛 下载时报错:[Errno 11001] getaddrinfo failed

调用方式

bilili  https://www.bilibili.com/bangumi/media/md102392 -y --danmaku ass -q 120 --disable-proxy --use-mirrors  -d "E:\[02]动漫"

环境信息

  • OS: Windows Server 2016
  • Python: 3.9.4
  • bilili: 最新版

问题简述

运行命令后,在解析过程中会抛出错误。如下文:

Traceback (most recent call last):
  File "c:\users\administrator\appdata\local\programs\python\python39\lib\site-packages\urllib3\connection.py", line 169, in _new_conn
    conn = connection.create_connection(
  File "c:\users\administrator\appdata\local\programs\python\python39\lib\site-packages\urllib3\util\connection.py", line 73, in create_connection
    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
  File "c:\users\administrator\appdata\local\programs\python\python39\lib\socket.py", line 953, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\users\administrator\appdata\local\programs\python\python39\lib\site-packages\urllib3\connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "c:\users\administrator\appdata\local\programs\python\python39\lib\site-packages\urllib3\connectionpool.py", line 382, in _make_request
    self._validate_conn(conn)
  File "c:\users\administrator\appdata\local\programs\python\python39\lib\site-packages\urllib3\connectionpool.py", line 1010, in _validate_conn
    conn.connect()
  File "c:\users\administrator\appdata\local\programs\python\python39\lib\site-packages\urllib3\connection.py", line 353, in connect
    conn = self._new_conn()
  File "c:\users\administrator\appdata\local\programs\python\python39\lib\site-packages\urllib3\connection.py", line 181, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x00000147AB53DD60>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\users\administrator\appdata\local\programs\python\python39\lib\site-packages\requests\adapters.py", line 439, in send
    resp = conn.urlopen(
  File "c:\users\administrator\appdata\local\programs\python\python39\lib\site-packages\urllib3\connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "c:\users\administrator\appdata\local\programs\python\python39\lib\site-packages\urllib3\util\retry.py", line 574, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='xy59x53x113x158xy.mcdn.bilivideo.cn', port=4483): Max retries exceeded with url: /upgcxcode/58/08/51640858/51640858_da8-1-30112.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1619077722&gen=playurlv2&os=mcdn&oi=2936792839&trid=2f43f53ce2694338ac895bc7a00af31cp&platform=pc&upsig=b2670e02acd181db60a906766173ee27&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mcdnid=8000024&mid=30632061&orderid=0,3&agrr=1&logo=A0000080 (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x00000147AB53DD60>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))

是因为我网络有问题吗?我正常访问都是没问题的。

预期行为

正常下载

额外信息

不是很稳定,有时候抓取第一集信息就报错了, 有时候抓到第6集才报错

想问问有大会员cookie 一般容许下载多少

我有大会员cookie 估计操作和biliutil那边差不多

不过请问这个下载视频的接口 有没有说大会员cookie每天下载上限是多少

因为找不到b站官方文档有说这个。。。。。。

关于新增加的api 调用的一些想法✨

里面有 flask 写的api 接口。里面关于解释器的用法,头一次见到学习到了,封装成这样写也可以。
大佬NB

还有就是如何解决频繁访问的问题,采用代理的话成本就显得略高,不采用的代理的话,这个好像直接套用B站的接口也可以,所以实用性可能差一些。
想到了几个合适单独拿出来的接口,

对于avid bvid cid 的相互转化可以单独列一个接口。

为B站现在根据字幕只能获取到bvid,能否直接做一个页面,输入bvid 下面可以出现 bvid 下面挂了几个cid 然后点击下载,就下载了。

运行出错🐛

安装一切正常,运行 bilili https://www.bilibili.com/video/BV1Sa4y1H7cy报错。

File "/Users/xxx/anaconda3/envs/bilbili/lib/python3.7/site-packages/bilili-1.3.6-py3.7.egg/bilili/__main__.py", line 144
    if (avid_match := regex.acg_video.av.origin.match(args.url)) or \
                   ^
SyntaxError: invalid syntax

环境信息

  • OS: mac catalina10.15.7
  • Python: Python 3.7
  • bilili: bilili 版本号
  • 如果是显示相关问题
    • Shell:Shell 类型
    • Terminal:终端类型
  • Others: 其它信息

🐛 下载卡住在最后

调用方式

bilili "https://www.bilibili.com/video/BV1vJ411a7xU" -c "914abd93%2*************C40ed1*a1" --danmaku ass --disable-proxy

环境信息

  • OS: Macos 11.3beta
  • Python: Python 3.9.1
  • bilili: bilili (pip安装的最新版)

问题简述

下载到最后时,进度条卡住长达30分钟仍没有进展,已排除网络问题
image
image

缺少cv2模块

不是啥大问题,手动安装即可,但是最好还是在requirements.txt里面加上哈哈哈

♻️ 主函数分解

特性描述

将主函数的逻辑抽解为

argparser() -> config
for loop:
    # 此处可增加循环以处理批量下载、UP 主个人空间下载等问题
    biliparse(config) -> containers
downloader(container)

是否愿意为此贡献代码

WIP, #47

✨ 增加对外 API

特性描述

添加外部 API,支持通过 Python 调用和 WSGI 方式(部署到 vercel)引用

是否愿意为此贡献代码

WIP

✨ 优化文件的存放

目前bilili即使使用-d参数设置了目标目录,也会在目标目录创建多层目录存放文件

而不少使用者其实只是很单纯的想将视频.mp4下到指定的目录,并不需要Playlist.dpl、Video等等这种额外的文件与目录

✨ 解析下载流的时候为什么要进行两次请求,是否可以合成一次请求

解析下载流的时候为什么要进行两次请求,是否可以合成一次请求?
image
B站有防爬,为了更有效的进行下载,我重新对下载逻辑进行了调正,添加了数据库用来缓存相关接口保存的数据,在研究下载流的解析的时候发现,在获取流的时候要对流接口进行两次访问
见 billil/api/acg_video.py:
80 touch_message = spider.get(play_api.format(avid=avid, bvid=bvid, cid=cid, quality=80)).json()
81 if touch_message["code"] != 0:
raise CannotDownloadError(touch_message["code"], touch_message["message"])

    accept_quality = touch_message["data"]["accept_quality"]
    for quality in video_quality_sequence:
        if quality in accept_quality:
            break

    play_url = play_api.format(avid=avid, bvid=bvid, cid=cid, quality=quality)
    res = spider.get(play_url)

为什么要获取accept_quality ? 去除之后对下载的内容似乎不影响
在下载少数文件时,不影响,如果进行大量下载,多一个http 请求,必然会让接口更早的进行ip封锁

仅作为想法,不提供 PR

✨ (Re)添加分块下载机制

特性描述

为什么需要该特性

(旧有特性,重构后未添加,正在考虑是否重新添加)

将每个资源都切分成多个小块,每个小块分发到一个线程进行下载,提高多线程下载的利用率,而且这样下载开始会集中于前几话

比如 M4S 资源,共 7 话的番剧,每话 1GB,那么最大利用 14 个线程(每话包含声音流和视频流),当然跑满带宽应该是没什么问题,但大多数情况是几话同时下载,而第一话下载完往往是总进度过了 50%,这与本下载器设计理念中允许边下边播的理念(即时刷新播放列表、即时生成 ass 弹幕、下载后即时合并等等)相悖

而分块下载,每块 100MB,那么 30 个线程(默认的最大线程数)将集中于下载前 3 话,第一话基本能保证在总进度过 25% 之前完成

关于为什么不用 Aria2

Aria2 确实有开箱即用的分段特性,因此重构后最开始我就用了 Aria2(01e441c),但速度很慢,且忽快忽慢(我也不清楚为啥),而且不太方便设计进度统计界面……因此我就重新花了好几天写 Python 的下载器了,但这次还没有添加分块的特性

是否愿意为此贡献代码

まあー、还木有想好要不要添加呐~

先试试是否好添加,如果好弄的话,就去开 PRPRPRR

[Bug Report] dir option is invalid

-d/--dir 指定存储目录,默认为项目根目录

bilili.py
parser.add_argument("-d", "--dir", default=r"", help="下载目录")
大佬,这里怎么指定存储目录啊?请多指教

✨ b站直播流下载

也不算是一个feature request,可能只算一个小问题 , 我看discussion没人 就写这了

不知道有没有打算加个直播流截取的模块

大概可能是给一个直播房间url
然后去把房间的rmtp源路径找出来
估计这个源路径也是给m3u8文件response而已
然后用ffpmeg持续下载这个流到本地 (话说我感觉ffpmeg好用就是因为里面更新直播�m3u8 playlist的过程没有谁用python写出来)

不知道是不是已经有相关工具了,关于直播流截取的配置应该也不少

✨ 可否添加视频块合并进度

特性描述

添加视频块合并进度,下了个《星际穿越》 6个多G,49个视频块,不知道有没有和合并,一直在等待,等了20分钟了没反应😂😂

是否愿意为此贡献代码

✨ 调用tv接口,并增加hevc编码版本下载

特性描述

隔壁BBDown可以使用TV端解析模式,实现无需cookies就能下载大会员4k60帧版本,并可以解析hevc编码版本,希望在此也加上,优先下载hevc版本,没有的话再下载h264版本,对于分p多的4k视频可省一些空间,提高完成速度。

✨ 增加批量下载,修改了代码里的一些默认设置

特性描述

命令行里
-danmaku 默认修改为ass

增加 cookie 保存,输入一次之后自动保存

cookieFile = "cookie.txt"
if(args.sess_data == None):
if (os.path.exists(cookieFile)):
file = open(cookieFile, mode='r')
args.sess_data =file.read()
file.close()
else:
file = open(cookieFile, mode='w')
file.write(args.sess_data)
file.close()

修改了 tools.py 中的 一些正则,让网址的匹配更容易进行

avid

regex_acg_video_av = re.compile(r".*?av(?P\d+)")
regex_acg_video_av_short = re.compile(r"https?://b23.tv/av(?P\d+)")

bvid

regex_acg_video_bv = re.compile(r".*?(?P(bv|BV)\w+)")
regex_acg_video_bv_short = re.compile(r"https?://b23.tv/(?P(bv|BV)\w+)")

media id

regex_bangumi_md = re.compile(r".*?/bangumi/media/md(?P<media_id>\d+)")

episode id

regex_bangumi_ep = re.compile(r".*?/bangumi/play/ep(?P<episode_id>\d+)")
regex_bangumi_ep_short = re.compile(r"https?://b23.tv/ep(?P<episode_id>\d+)")

season id

regex_bangumi_ss = re.compile(r".*?/bangumi/play/ss(?P<season_id>\d+)")
regex_bangumi_ss_short = re.compile(r"https?://b23.tv/ss(?P<season_id>\d+)")

#space ID
regex_sapce = re.compile(r".*?space.bilibili.com/(?P<space_id>\d+)")

增加的space 解析api ,同时为了配合该api 对程序进行了一定的修改
为了下载up视频,参考 番剧,增加了space api 和相关解析

@export_api(route="/space/title")
def get_space_title(spaceid: str = "") -> str:
if not (spaceid):
raise Exception(spaceid +"不存在")
home_url = (
"https://space.bilibili.com/{spaceid}/".format(spaceid=spaceid)
)
res = spider.get(home_url)
regex_title = re.compile(r"<title>(.)的个人空间.?</title>")
if regex_title.search(res.text):
title = regex_title.search(res.text).group(1)
else:
title = "呐,我也不知道是什么标题呢~"
return title

@export_api(route="/space/title")
def get_space_video(mid: str = "" ,pn=1) -> str:
if not (mid):
raise Exception(mid +"不存在")
list_api = "https://api.bilibili.com/x/space/arc/search?mid={mid}&pn={pn}&ps=100&jsonp=jsonp"
album_list = []
while True:
res = spider.get(list_api.format(mid=mid, pn=pn))
# 循环获取列表
album_list.extend(
[
{
"id": i + 1,
"name": re.sub(r"[/\:*?"<>|]", "", item["title"]),
"avid": str(item["aid"]),
"bvid": item["bvid"],
}
for i,item in enumerate(res.json()["data"]["list"]["vlist"])
]
)
if len(album_list) < int(res.json()['data']["page"]['count']):
pn += 1
else:
break

return album_list

详情代码修改,请点击这里进行下载

✨ 下载自动点赞加评论

为了更好白嫖,理应给下载的视频点赞+评论
除了sessdata 还需要bili_jct 同样也在cookie 中获取
不提供PR ,仅提供想法

headers = {
"cookie": "SESSDATA=; bili_jct="
}
bili_jct =""
SESSDATA =""

replayaddurl ="https://api.bilibili.com/x/v2/reply/add"
def replayadd(avid: str = "", bvid: str = "",message: str=""):
replaydata = {
"oid": avid,
# "bvid": "BV1LK4y177wV",
"type": "1",
"message": message,
"plat": "1",
"ordering": "heat",
"jsonp": "jsonp",
"csrf": bili_jct
}

r = requests.post(replayaddurl, data=replaydata, headers=headers)
return r.text

likeurl ="https://api.bilibili.com/x/web-interface/archive/like"
def like(avid: str = "", bvid: str = "",like:str ="1",):
likedata = {
"aid":avid,
"bvid": bvid,
"like": 1,
"csrf": bili_jct
}
r = requests.post(likeurl, data=likedata, headers=headers)
return r.text

💄 优化下载器界面

特性描述

  • 进度条采用细粒度的字符
  • 提高刷新率
  • 添加颜色?

是否愿意为此贡献代码

部分实现于 #14

📝 优化文档

优化包括但不限于文档布局、文档内容、文档风格等等的问题

https://bilili.sigure.xyz

欢迎各位提出意见,内容修改直接点击各页底部「帮我改进我的风格!」即可修改~

如果是其他问题请在本 Issue 中提出~

🐛 使用 Node.js 的 child_process 执行时 os.get_terminal_size 报错

调用方式

const { exec } = require('child_process');
exec(command, (err, stdout, stderr) => {});

环境信息

错报信息

Traceback (most recent call last):
  File "/usr/local/bin/bilili", line 5, in <module>
    from bilili.__main__ import main
  File "/usr/local/lib/python3.9/site-packages/bilili/__main__.py", line 19, in <module>
    from .utils.console.ui import ColorString, Line, LineList, ProgressBar, String, View
  File "/usr/local/lib/python3.9/site-packages/bilili/utils/console/ui.py", line 204, in <module>
    class ProgressBar(Component):
  File "/usr/local/lib/python3.9/site-packages/bilili/utils/console/ui.py", line 205, in ProgressBar
    def __init__(self, symbols: Union[str, List[str]] = "░▏▎▍▌▋▊▉█", width: int = View.get_width()):
  File "/usr/local/lib/python3.9/site-packages/bilili/utils/console/ui.py", line 50, in get_width
    width = os.get_terminal_size().columns
OSError: [Errno 102] Operation not supported on socket

报错位置

https://github.com/SigureMo/bilili/blob/main/bilili/utils/console/ui.py#L50

问题简述

在我的一个 Node.js 小项目 download-webhook 使用时遇到的问题,从 v1.4.7 更新至 v1.4.8 后出现

✨ 从多镜像源进行下载

特性描述

最近下得有点慢诶……不知道出了啥状况,所以想试试从多个 bilibili 镜像下载的话,也许会变快?

是否愿意为此贡献代码

(ฅ>ω<*ฅ)

🐛 下载时 b 站提示登录通知

调用方式

bilili -t flv -c "$(gpg --decrypt 2>/dev/null $HOME/.secrets/BILIBILI_SESSDATA.gpg)" https://www.bilibili.com/bangumi/media/md28231773

环境信息

  • OS: Arch Linux 5.10.9-zen1-1-zen
  • Python: Python 3.9.1
  • bilili: 1.3.6

问题简述

开始下载后,b 站消息通知:

图片

预期行为

如果可能的话,下载时不收到 b 站的登录提醒。

额外信息

不知道 bilili 有没有设置 User Agent 之类的,可能和这相关?

是否愿意为此贡献代码

还没仔细看源码,说不定可以(:dove:

🐛 v1.4.4 发生 ModuleNotFoundError

调用方式

[root@localhost ~]# pip3.8 install bilili==1.4.4
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting bilili==1.4.4
  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/41/cf/ab19c6f7c98cf88829fe83bda1e8c54fe8a10afc4857c77b8c34a4787c73/bilili-1.4.4-py2.py3-none-any.whl (60 kB)
Requirement already satisfied: requests in /usr/local/lib/python3.8/site-packages (from bilili==1.4.4) (2.25.1)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.8/site-packages (from requests->bilili==1.4.4) (1.26.4)
Requirement already satisfied: chardet<5,>=3.0.2 in /usr/local/lib/python3.8/site-packages (from requests->bilili==1.4.4) (4.0.0)
Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.8/site-packages (from requests->bilili==1.4.4) (2.10)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.8/site-packages (from requests->bilili==1.4.4) (2020.12.5)
Installing collected packages: bilili
Successfully installed bilili-1.4.4
WARNING: Running pip as root will break packages and permissions. You should install packages reliably by using venv: https://pip.pypa.io/warnings/venv
[root@localhost ~]# bilili
Traceback (most recent call last):
  File "/usr/local/bin/bilili", line 5, in <module>
    from bilili.__main__ import main
  File "/usr/local/lib/python3.8/site-packages/bilili/__main__.py", line 9, in <module>
    from .api.danmaku import get_danmaku
  File "/usr/local/lib/python3.8/site-packages/bilili/api/danmaku.py", line 4, in <module>
    from ..tools import spider
  File "/usr/local/lib/python3.8/site-packages/bilili/tools.py", line 3, in <module>
    from .handlers.status import DownloaderStatus
  File "/usr/local/lib/python3.8/site-packages/bilili/handlers/status.py", line 3, in <module>
    from ..utils.console.logger import Logger
  File "/usr/local/lib/python3.8/site-packages/bilili/utils/console/logger.py", line 3, in <module>
    from ..functiontools.singleton import Singleton
ModuleNotFoundError: No module named 'bilili.utils.functiontools'

环境信息

  • OS: centos7 2009 minimal
  • Python: 3.8.7 3.8.8 3.8.9
  • bilili: bilili 1.4.4
  • 如果是显示相关问题
    • Shell:bash

✨ 解耦下载器与主程序之间的逻辑

特性描述

重构,无新特性,进一步提高代码可读性

通过 hook 的方式来代替原有各处杂糅的 middleware 直接通讯方式,下载器应不出现任何外部状态信息

尽可能将合并器与下载器改为相似的逻辑,均不出现外部信息

是否愿意为此贡献代码

WIP

✨ 可否发布预打包的版本?比如用pyinstaller打包的命令行应用?

主python环境是3.6版本的(不方便重装3.8的python,否则一堆第三方库还要再装,而且一定会有很多兼容性问题需要手动排查修复)。
于是就用不了bilili,但是又很想尝试,看着就很可爱不是嘛。
一个办法是用虚拟环境,另一个办法就是请作者直接发布一个自带3.8环境的预打包版本。
pyinstaller打包挺方便的,一条命令一般就行了,情况比较特殊的话也就多加几条命令,要不烦请您试试?

获取用户所有视频资料

space.bilibili.com/ajax/member/getSubmitVideos 是biliutil用的一个接口
返回该用户所有视频资料, 但该接口下线了

请问这个bilili有能下载一个用户所有视频的函数吗?

请输入正确的房间号!

调用方式

C:\Users\GYL>bilibili https://www.bilibili.com/video/BV1vZ4y1M7mQ
请输入正确的房间号!

环境信息

  • OS: win10 20H2
  • Python: Python 3.9
  • bilili: bilili 版本号 不知 pip下的

问题简述

不论后面跟的网址是什么,都提示请输入正确的房间号!
我查了你的文档各处也没有相关信息,源码中也没有找到相关字段,不知道什么原因。
辛苦作者大大查一下错误。

🐛 Windows 会出现“系统找不到指定的路径。”的提示

调用方式

任意方式

环境信息

  • OS: Windows 10.0.19041
  • Python: Python 3.8.5
  • Shell:PowerShell & cmd
  • Terminal:Windows Terminal & VSCode Terminal
  • Others: 无

问题简述

通过 cls 刷新屏幕时会提示 系统找不到指定的路径。,但很快被刷新掉,不影响整体体验,但观感不太佳

而注释掉调用 cls 的代码时,不会出现该问题,就很奇怪……目前未发现具体问题所在以及相应解决方案

预期行为

不会出现该问题

额外信息

是否愿意贡献

暂无计划,Windows 仅为测试系统,不常用

欢迎贡献~

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.