1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
//! 这是一个rust写成的百度云api库, **不提供**作弊功能!
//!
//!
//!# 一,简介
//!这个库提供方便地使用百度云官方api的方法 最新的版本请看crates.io的版本号
//!
//! 对用户的云盘进行访问前首先要获取access_token,具体请看官网的[这里](https://pan.baidu.com/union/document/entrance#%E6%8E%A5%E5%85%A5%E6%B5%81%E7%A8%8B)
//!
//! ⚠️access_token获取的方法的简要描述:
//!
//! 最开始你登录百度账号并且创建一个云盘app,获取它的APP_key
//!
//! 在浏览器地址栏输入如下内容 其中"你的APP KEY"替换成你的APP Key
//!
//! ``` https://openapi.baidu.com/oauth/2.0/authorize?response_type=token&client_id=你的APP KEY&redirect_uri=oob&scope=netdisk```
//!
//! 然后点击授权后,会跳转到另外的一个空白网页上,此时查看地址栏上的地址大概是这样的样子:
//!
//! ```http://openapi.baidu.com/oauth/2.0/login_success#expires_in=2592000&access_token={access_token}&session_secret={session_secret}&session_key={session_key}&scope=basic+netdisk```
//!
//! 其中access_token后面一段是我们需要的,保存下来即可
//!
//! 使用期限是30天,但如果这个access_token一直在使用的话 是不会过期的,过期需要重新查询.
//!
//!**注意:本库不提供作弊功能!!!**
//!# 二,功能演示
//!## 1.列出用户信息
//!下面是示例如何列出用户信息:
//!```
//!use baiduyun_api::YunApi;
//!//...
//!//--snip--
//!//...
//!let api = YunApi::new();
//!let access_token ="User's access_token";
//!let user_info = api.get_user_info().unwrap();
//! println!("baidu_name :{}", user_info.baidu_name);
//! println!("vip :{}", user_info.vip_type);
//!```
//!
//!## 2.列出云盘信息
//!列出云盘的存储空间信息的实例如下:
//!```
//!use baiduyun_api::YunApi;
//!//...
//!//--snip--
//!//...
//!let api = YunApi::new();
//!let access_token ="User's access_token";
//!let quota_info = api.get_quota_info().unwrap();
//!println!("总空间 :{}", quota_info.total);
//!println!("剩余空间 :{}", quota_info.free);
//!```
//!
//!
//!
//!
//!## 3.使用util设施
//!我编写了一些基础设施帮助你开发自己的程序,先看看[YunFs](util::YunFs)如何使用:
//!```
//!use baiduyun_api::YunApi;
//!use baiduyun_api::util
//!
//!//...
//!//--snip--
//!//...
//!let access_token ="User's access_token.";
//!let api = YunApi::new(access_token);
//!let mut my_fs = util::YunFs::new(&api);
//!println!("current dir:====>{}",my_fs.pwd().unwrap());
//!my_fs.chdir("../").unwrap();
//!my_fs.chdir("/apps").unwrap();
//!my_fs.chdir("../").unwrap();
//!my_fs.chdir("/apps/").unwrap();
//!my_fs.chdir("../").unwrap();
//!my_fs.chdir("./apps/bypy/唱戏机").unwrap();
//!let tmp_list = my_fs.ls().unwrap();
//!for item in tmp_list{
//! println!("filename:{};filesize={}KB",item.server_filename,util::human_quota(item.size).0)
//!}
//!```
//!结果为:
//!```
//! current dir:====>/
//! filename:45部高清黄梅戏mp4;filesize=0KB
//! filename:黄梅戏视频;filesize=0KB
//! filename:庐剧视频标清3;filesize=0KB
//! filename:庐剧视频高清1;filesize=0KB
//! filename:庐剧视频高清2;filesize=0KB
//! filename:庐剧视频合集;filesize=0KB
//! filename:相声小品大杂烩290部视频;filesize=0KB
//!```
//!再看看一个简陋的单线程下载设施[download](util::download):
//!```
//!fn download_test() {
//! let key =
//! "your_access_key_to_user.";
//! let api = YunApi::new(key);
//! let mut myfs = util::YunFs::new(&api);
//! println!("current dir ===> {}", myfs.pwd().unwrap());
//! myfs.chdir("学习资料/").unwrap();
//! println!("current dir ===> {}", myfs.pwd().unwrap());
//! let files = myfs.ls().unwrap();
//! let mut file_to_download: FileInfo = FileInfo::default();
//! for item in files {
//! if item.server_filename.contains("中文第六版@www.java1234.com.pdf") {
//! println!("pdf: -> {}; id ={} ", item.server_filename, item.fs_id);
//! file_to_download = item;
//! }
//! }
//! let link = api.get_file_dlink(file_to_download).unwrap();
//! util::download(&link, "D:/test.pdf", 100, &key, true);//这里打开了debug输出
//! }
//!
//!```
//!结果如下:
//!```
//!current dir ===> /
//!current dir ===> /学习资料
//!pdf: -> 数据库系统概念_中文第六版@www.java1234.com.pdf; id =816997609436448
//!recieve data total 20 MB
//!recieve data total 40 MB
//!recieve data total 60 MB
//!recieve data total 80 MB
//!recieve data total 100 MB
//!recieve data total 120 MB
//!recieve data total 140 MB
//!recieve data total 160 MB
//!recieve data total 161 MB
//!finish download.
//!```
pub use ApiError;
pub use YunFs;
pub use YunApi;
pub use ;