79 lines
2.3 KiB
PHP
79 lines
2.3 KiB
PHP
<?php
|
|
$share_url = "https://1drv.ms/f/s!AhzmQMxm1n467DZsz0ev8jKEqskE";
|
|
$path = $_GET['path'];
|
|
|
|
function get_encodedURL($share_url) {
|
|
$base64Value = base64_encode($share_url);
|
|
return "https://api.onedrive.com/v1.0/shares/u!" . str_replace("+","-",str_replace("/","_",rtrim($base64Value,"=")));
|
|
}
|
|
|
|
function get_folder_object_url($share_url) {
|
|
return get_encodedURL($share_url) . "/driveItem?\$expand=children";
|
|
}
|
|
|
|
function get_folder_object($share_url) {
|
|
$folder_object_url = get_folder_object_url($share_url);
|
|
$response = file_get_contents($folder_object_url);
|
|
return json_decode($response, true);
|
|
}
|
|
|
|
function get_item_from_path($folder_share_url, $path) {
|
|
$result = Array();
|
|
$res = get_folder_object($folder_share_url);
|
|
if ($path == "/" || $path == "") {
|
|
$result['pathvalid'] = true;
|
|
$result['isfolder'] = true;
|
|
$result['data'] = $res;
|
|
return $result;
|
|
}
|
|
|
|
if (isset($res['children']) && count($res['children']) > 0) {
|
|
$items = $res['children'];
|
|
$nodes = explode('/',substr($path, 1), 2);
|
|
$next = $nodes[0];
|
|
$rest = count($nodes) > 1 ? $nodes[1] : "";
|
|
|
|
foreach ($items as $item) {
|
|
if ($item['name'] == $next) {
|
|
if (isset($item['folder'])) {
|
|
return get_item_from_path($item['webUrl'], "/" . $rest);
|
|
} else if (isset($item['file'])) {
|
|
$result['pathvalid'] = true;
|
|
$result['isfolder'] = false;
|
|
$result['data'] = $item;
|
|
return $result;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
$result['pathvalid'] = false;
|
|
return $result;
|
|
|
|
}
|
|
|
|
$result = get_item_from_path($share_url, $path);
|
|
|
|
if ($result['pathvalid'] && $result['isfolder'] == false) {
|
|
$download_url = $result['data']['@content.downloadUrl'];
|
|
header("Location: $download_url", true, 302);
|
|
exit();
|
|
}
|
|
|
|
?>
|
|
|
|
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<title>Download</title>
|
|
</head>
|
|
|
|
<body id="index-page">
|
|
<?php
|
|
// echo count(get_folder_object($share_url)['children']);
|
|
echo ($result['pathvalid'] ? ($result['isfolder'] ? "path is folder" : ("the download link to file is: " . $result['data']['@content.downloadUrl'])) : "path not valid");
|
|
// echo "<b>" . substr($path, 1) . "</b> does not exists!";
|
|
?>
|
|
</body>
|
|
</html>
|