Skip to content
This repository has been archived by the owner on Jun 6, 2024. It is now read-only.

Commit

Permalink
错别字改正;结构微调;解析列表页面支持获取所有文件 #86
Browse files Browse the repository at this point in the history
  • Loading branch information
yuantuo666 committed Dec 23, 2022
1 parent 5fa0db6 commit 6d5831b
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 75 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ PanDownload 网页复刻版,PHP 语言版<br/>

- http://www.pojiewo.com/baidujx 1.4.2版本 注:此网站 **盗用** 其他网站的接口获取下载地址
- https://bd.fkxz.cn/ 赞助版
- http://pan.10zv.com/ 2.2.0版本
<!-- - http://pan.10zv.com/ 2.2.0版本 -->
<!-- - http://wp.nanmu.cool/ 2.1.8版本 注:站长拒不修改 -->
<!-- - http://baidu.mfs-2020.com/ 2.2.0版本 -->
<!-- - https://pan.vxians.tk/ 暂时无法访问 -->
Expand Down
2 changes: 1 addition & 1 deletion common/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@
<?php } ?>
<script>
// check if this site is in black list
let blacklist = ["www.pojiewo.com", "bd.fkxz.cn", "pan.10zv.com"];
let blacklist = ["www.pojiewo.com", "bd.fkxz.cn"];
if (blacklist.includes(document.domain)) {
alert("当前网站在 baiduwp-php 项目的黑名单中,即将跳转到项目 Github 仓库");
window.location.href = "https://github.com/yuantuo666/baiduwp-php";
Expand Down
151 changes: 81 additions & 70 deletions common/list.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,83 +22,94 @@

if (WECHAT_MOD) {
$dir = base64_decode($_POST["dir"] ?? "");
$Filejson = GetList($surl, $dir, $IsRoot, $pwd); // 解析子目录时,需添加1
if ($Filejson["errno"] == 0) { // 一种新的解析方法,暂未完工
// 解析正常

$sign = sanitizeContent($_POST["sign"] ?? "");
$timestamp = sanitizeContent($_POST["timestamp"] ?? "");
if ($sign == "" || $timestamp == "") {
// 计算 sign 和 timestamp
[$status, $sign, $timestamp] = GetSignCore($surl);
if ($status != 0) {
dl_error("链接错误", "无法正常获取文件夹有关信息。\r\n$sign");
exit;
}
$sign = sanitizeContent($_POST["sign"] ?? "");
$timestamp = sanitizeContent($_POST["timestamp"] ?? "");
if ($sign == "" || $timestamp == "") {
// 计算 sign 和 timestamp
[$status, $sign, $timestamp] = GetSignCore($surl);
if ($status != 0) {
dl_error("链接错误", "无法正常获取文件夹有关信息。\r\n$sign");
exit;
}
if (!$IsRoot) {
//文件夹页面
$filecontent = "<nav aria-label=\"breadcrumb\"><ol class=\"breadcrumb my-4\">"
. "<li class=\"breadcrumb-item\"><a href=\"javascript:OpenRoot('$surl','$pwd');\">${Language["AllFiles"]}</a></li>";
$dir_list = explode("/", $dir);
for ($i = 1; $i <= count($dir_list) - 2; $i++) {
if ($i == 1 and strstr($dir_list[$i], "sharelink")) continue;
$fullsrc = strstr($dir, $dir_list[$i], true) . $dir_list[$i];
$fullsrc = base64_encode($fullsrc);
$filecontent .= "<li class=\"breadcrumb-item\"><a href=\"javascript:OpenDir('$fullsrc','$pwd','','','$surl_1','','','','');\">{$dir_list[$i]}</a></li>";
}
$filecontent .= "<li class=\"breadcrumb-item active\">{$dir_list[$i]}</li>";
} else {
// 根目录页面
$filecontent = "<nav aria-label=\"breadcrumb\"><ol class=\"breadcrumb my-4\"><li class=\"breadcrumb-item\">${Language["AllFiles"]}</li>";
}

$Filejson = [];
$Page = 1;
// 获取所有文件 fix #86
while (true) {
$Filejson = GetList($surl, $dir, $IsRoot, $pwd, $Page); // 解析子目录时,需添加1
if ($Filejson["errno"] !== 0) {
// 解析异常
$ErrorCode = $Filejson["errtype"] ?? 999;
$ErrorMessage = [
"mis_105" => "你所解析的文件不存在~",
"mispw_9" => "提取码错误",
"mispwd-9" => "提取码错误",
"mis_2" => "不存在此目录",
3 => "此链接分享内容可能因为涉及侵权、色情、反动、低俗等信息,无法访问!",
0 => "啊哦,你来晚了,分享的文件已经被删除了,下次要早点哟。",
10 => "啊哦,来晚了,该分享文件已过期"
];
if (isset($ErrorMessage[$ErrorCode])) dl_error("[微信API] 解析错误", $ErrorMessage[$ErrorCode]);
else dl_error("[微信API] 解析错误", "未知错误代码:" . $ErrorCode, true);
exit;
}
$filecontent .= "<li class=\"ml-auto\">[微信API] 已全部加载,共" . count($Filejson["data"]["list"]) . "个</li></ol></nav>";

$filecontent .= "<div><ul class=\"list-group\">";
for ($i = 0; $i < count($Filejson["data"]["list"]); $i++) { // 开始输出文件列表
$file = $Filejson["data"]["list"][$i];
$fs_id = number_format($file["fs_id"], 0, '', '');
$size = $file["size"];
$char_size = formatSize((float)$file["size"]);
$filename = htmlspecialchars($file["server_filename"], ENT_QUOTES);
$path = base64_encode($file["path"]);
$randsk = urlencode(decodeSceKey($Filejson["data"]["seckey"]));
$shareid = sanitizeContent($Filejson["data"]["shareid"], "number");
$uk = sanitizeContent($Filejson["data"]["uk"], "number");

// (path, pwd, share_id, uk, surl, randsk, sign, timestamp)
if ($file["isdir"] == 0) {
$dlink = addslashes($file["dlink"]);
if ($size <= 3000000)
$filecontent .= "<li class=\"list-group-item border-muted text-muted py-2\"><i class=\"far fa-file mr-2\"></i>"
. "<a href=\"$dlink\" target=\"_blank\">$filename</a>"
. "<span class=\"float-right\">$char_size</span></li>";
else
$filecontent .= "<li class=\"list-group-item border-muted text-muted py-2\"><i class=\"far fa-file mr-2\"></i>"
. "<a href=\"javascript:confirmdl('$fs_id','$timestamp','$sign','$randsk','$shareid','$uk');\">$filename</a>"
. "<span class=\"float-right\">$char_size</span></li>";
} else $filecontent .= "<li class=\"list-group-item border-muted text-muted py-2\"><i class=\"far fa-folder mr-2\"></i>"
. "<a href=\"javascript:OpenDir('$path','$pwd','$shareid','$uk','$surl_1','$randsk','$sign','$timestamp');\">$filename</a><span class=\"float-right\"></span></li>";
foreach ($Filejson['data']['list'] as $v) {
$file_list[] = $v;
}
echo $filecontent . "</ul></div>";
if (count($Filejson['data']["list"]) < 1000) break;
$Page++;
}

// exit;
$AllFiles = Language["AllFiles"];
if (!$IsRoot) {
//文件夹页面
$filecontent = "<nav aria-label=\"breadcrumb\"><ol class=\"breadcrumb my-4\">"
. "<li class=\"breadcrumb-item\"><a href=\"javascript:OpenRoot('$surl','$pwd');\">$AllFiles</a></li>";
$dir_list = explode("/", $dir);
for ($i = 1; $i <= count($dir_list) - 2; $i++) {
if ($i == 1 and strstr($dir_list[$i], "sharelink")) continue;
$fullsrc = strstr($dir, $dir_list[$i], true) . $dir_list[$i];
$fullsrc = base64_encode($fullsrc);
$filecontent .= "<li class=\"breadcrumb-item\"><a href=\"javascript:OpenDir('$fullsrc','$pwd','','','$surl_1','','','','');\">{$dir_list[$i]}</a></li>";
}
$filecontent .= "<li class=\"breadcrumb-item active\">{$dir_list[$i]}</li>";
} else {
// 解析异常
$ErrorCode = $Filejson["errtype"] ?? 999;
$ErrorMessage = [
"mis_105" => "你所解析的文件不存在~",
"mispw_9" => "提取码错误",
"mispwd-9" => "提取码错误",
"mis_2" => "不存在此目录",
3 => "此链接分享内容可能因为涉及侵权、色情、反动、低俗等信息,无法访问!",
0 => "啊哦,你来晚了,分享的文件已经被删除了,下次要早点哟。",
10 => "啊哦,来晚了,该分享文件已过期"
];
if (isset($ErrorMessage[$ErrorCode])) dl_error("[微信API] 解析错误", $ErrorMessage[$ErrorCode]);
else dl_error("[微信API] 解析错误", "未知错误代码:" . $ErrorCode, true);
// exit;
// 根目录页面
$filecontent = "<nav aria-label=\"breadcrumb\"><ol class=\"breadcrumb my-4\"><li class=\"breadcrumb-item\">$AllFiles</li>";
}
$filecontent .= "<li class=\"ml-auto\">[微信API] 已全部加载,共" . count($file_list) . "个</li></ol></nav>";

$filecontent .= "<div><ul class=\"list-group\">";
for ($i = 0; $i < count($file_list); $i++) { // 开始输出文件列表
$file = $file_list[$i];
$fs_id = number_format($file["fs_id"], 0, '', '');
$size = $file["size"];
$char_size = formatSize((float)$file["size"]);
$filename = htmlspecialchars($file["server_filename"], ENT_QUOTES);
$path = base64_encode($file["path"]);
$randsk = urlencode(decodeSceKey($Filejson["data"]["seckey"]));
$shareid = sanitizeContent($Filejson["data"]["shareid"], "number");
$uk = sanitizeContent($Filejson["data"]["uk"], "number");

// (path, pwd, share_id, uk, surl, randsk, sign, timestamp)
if ($file["isdir"] == 0) {
$dlink = addslashes($file["dlink"]);
if ($size <= 3000000)
$filecontent .= "<li class=\"list-group-item border-muted text-muted py-2\"><i class=\"far fa-file mr-2\"></i>"
. "<a href=\"$dlink\" target=\"_blank\">$filename</a>"
. "<span class=\"float-right\">$char_size</span></li>";
else
$filecontent .= "<li class=\"list-group-item border-muted text-muted py-2\"><i class=\"far fa-file mr-2\"></i>"
. "<a href=\"javascript:confirmdl('$fs_id','$timestamp','$sign','$randsk','$shareid','$uk');\">$filename</a>"
. "<span class=\"float-right\">$char_size</span></li>";
} else $filecontent .= "<li class=\"list-group-item border-muted text-muted py-2\"><i class=\"far fa-folder mr-2\"></i>"
. "<a href=\"javascript:OpenDir('$path','$pwd','$shareid','$uk','$surl_1','$randsk','$sign','$timestamp');\">$filename</a><span class=\"float-right\"></span></li>";
}
echo $filecontent . "</ul></div>";
// exit;

} else {

if (isset($_POST["dir"])) {
Expand Down
4 changes: 2 additions & 2 deletions functions.php
Original file line number Diff line number Diff line change
Expand Up @@ -348,13 +348,13 @@ function connectdb(bool $isAPI = false)
mysqli_query($conn, "set character set 'utf8'");
mysqli_query($conn, "set names 'utf8'");
}
function GetList(string $Shorturl, string $Dir, bool $IsRoot, string $Password)
function GetList(string $Shorturl, string $Dir, bool $IsRoot, string $Password, int $Page = 1)
{
$Url = 'https://pan.baidu.com/share/wxlist?channel=weixin&version=2.2.2&clienttype=25&web=1';

$Root = ($IsRoot) ? "1" : "0";
$Dir = urlencode($Dir);
$Data = "shorturl=$Shorturl&dir=$Dir&root=$Root&pwd=$Password&page=1&num=1000&order=time";
$Data = "shorturl=$Shorturl&dir=$Dir&root=$Root&pwd=$Password&page=$Page&num=1000&order=time";
$header = ["User-Agent: netdisk", "Cookie: BDUSS=" . BDUSS, "Referer: https://pan.baidu.com/disk/home"];
$result = json_decode(post($Url, $Data, $header), true);
if (DEBUG) {
Expand Down
2 changes: 1 addition & 1 deletion install.php
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ function getDbConfig(&$var, string $key)
<label class="col-sm-2 col-form-label">超级会员账号BDUSS</label>
<div class="col-sm-10">
<input class="form-control" name="SVIP_BDUSS" placeholder="例:W4tanVHelU2VGpxb**********0ZTZlUm1saEVtYnpTWjByfmxheWwxRFRtNlphQVFBQUFBJCQAAAAAAAAAAA……" value="<?php echo $SVIP_BDUSS; ?>">
<small class="form-text">用来获取文件告诉下载地址,必须为SVIP账号,否则将获取到限速地址。</small>
<small class="form-text">用来获取文件高速下载地址,必须为SVIP账号,否则将获取到限速地址。</small>
</div>
</div>
<div class="form-group row">
Expand Down

0 comments on commit 6d5831b

Please sign in to comment.