Giter Club home page Giter Club logo

bilidrive's Introduction

- BiliDrive -

☁️ 哔哩哔哩云,支持任意文件的全速上传与下载 ☁️

特色

  • 轻量:无复杂依赖,资源占用少
  • 自由:无文件格式与大小限制,无容量限制
  • 安全:上传的文件需要通过生成的META URL才能访问,他人无法随意查看
  • 稳定:带有分块校验与超时重试机制,在较差的网络环境中依然能确保文件的完整性
  • 快速:支持多线程传输与断点续传,同时借助B站的CDN资源,能最大化地利用网络环境进行上传与下载

使用指南

准备

前往发布页获取可直接运行的二进制文件

或使用Python软件包管理器pip从PyPI仓库安装

亦可下载源代码后使用Python 3.6或更高版本运行

登录

python -m BiliDrive login [-h] username password

username: Bilibili用户名
password: Bilibili密码

上传

python -m BiliDrive upload [-h] [-b BLOCK_SIZE] [-t THREAD] file

file: 待上传的文件路径

-b BLOCK_SIZE: 分块大小(MB), 默认值为4
-t THREAD: 上传线程数, 默认值为4

上传完毕后,终端会打印一串META URL(通常以bdrive://开头)用于下载或分享,请妥善保管

下载

python -m BiliDrive download [-h] [-f] [-t THREAD] meta [file]

meta: META URL(通常以bdrive://开头)
file: 另存为新的文件名, 不指定则保存为上传时的文件名

-f: 覆盖已有文件
-t THREAD: 下载线程数, 默认值为8

下载完毕后会自动进行文件完整性校验,对于大文件该过程可能需要较长时间,若不愿等待可直接退出

查看文件元数据

python -m BiliDrive info [-h] meta

meta: META URL(通常以bdrive://开头)

查看历史记录

python -m BiliDrive history [-h]

交互模式

不传入任何命令行参数,直接运行程序即可进入交互模式

该模式下,程序会打印命令提示符BiliDrive > ,并等待用户输入命令

技术实现

将任意文件分块编码为图片后上传至B站,对该操作逆序即可下载并还原文件

性能指标

测试文件

文件名:[Vmoe]Hatsune Miku「Magical Mirai 2017」[BDrip][1920x1080p][HEVC_YUV420p10_60fps_2FLAC_5.1ch&2.0ch_Chapter][Effect Subtitles].mkv

大小:14.5 GB (14918.37 MB)

分块:10 MB * 1492

META URL:bdrive://d28784bff1086450a6c331fb322accccd382228e

上传

地理位置:四川成都

运营商:教育网

上行速率:20 Mbps

用时:02:16:39

平均速度:1.82 MB/s

下载

测试点1

地理位置:福建福州

运营商:**电信

下行速率:100 Mbps

用时:00:18:15

平均速度:13.62 MB/s

测试点2

地理位置:上海

运营商:**电信

下行速率:1 Gbps

用时:00:02:22

平均速度:104.97 MB/s

免责声明

请自行对重要文件做好本地备份

请勿使用本项目上传不符合社会主义核心价值观的文件

请合理使用本项目,避免对哔哩哔哩的存储与带宽资源造成无意义的浪费

该项目仅用于学习和技术交流,开发者不承担任何由使用者的行为带来的法律责任

许可证

BiliDrive is under The Star And Thank Author License (SATA)

本项目基于MIT协议发布,并增加了SATA协议

您有义务为此开源项目点赞,并考虑额外给予作者适当的奖励 ∠( ᐛ 」∠)_

bilidrive's People

Contributors

hsury 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bilidrive's Issues

Cookie 时效太短了

我从浏览器获取的 Cookie 时效长得多,本来就是这样,还是哪里不对?

闪退

bilidrive已经使用过多次了,今天打开来准备upload文件的时候 输完命令回车就闪退 已经确认命令是无误的 且已经登录

登陆不了……

我用的windows段
出现:BiliDrive: error: unrecognized arguments: (密码)

建议发布到pypi

rt, python -m <module> 会执行该模块下文件 __main__.py, 具体参考python3.8中python -m asyncio

对于文件级秒传的支持

现在上传的时候只是判断某一块是否已经被上传进而实现块级的秒传(跳过上传)
但是如果存在这样的情况:一个文件已经被以n M/块 的分块方式上传,当其他人以 m M/块 的分块方式上传时就不能实现秒传,进而造成资源的浪费。
建议将 Meta 包的 url 设置为文件 sha1 或 文件前 4M sha1 这样在上传的时候就可以判断是否有人上传过该文件。
如无:老老实实上传
如有:直接秒传成功返回 Meta 包地址
或者
获得 Meta 包,进而解析出 Block 字典,算出之前的上传分块方式,按之前的分块方式进行上传,同样该跳过跳过,查缺补漏(其实鉴于您是在所有Block上传完之后才上传Meta包的,所以不用查缺补漏。。)

这是b站官方的正式/非正式项目吗?

亦或是内部员工利用手中的服务器全权限进行的开发?或者是破解的b站的防火墙?
么的别的意思..就是好奇..不然这文件万一说没就没了,咱啥也不知道,咱啥也不敢问

登录失败

登录失败 {'code': -449, 'message': '服务繁忙, 请稍后再试', 'ts': 1576068075}
Snipaste_2019-12-11_20-42-31

上传失败

现在无法上传文件,换了其他帐号也是上传失败,求修复

编码成视频

要不要考虑编码成视频上传,这样更隐蔽。
不过视频有审核的问题,可能只有在正常视频里插帧或者在频域里编码什么的。

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.