-
Notifications
You must be signed in to change notification settings - Fork 6
Other Tree Format
Rhilip edited this page Feb 24, 2025
·
3 revisions
By default, Call $fileTree = $torrent->getFileTree(?$sortType = TorrentFile::FILETREE_SORT_NORMAL); will return the array like:
[
"torrentname" => [
"directory" => [
"filename2" => 2345
],
"filename1" => 123
]
]However, You can trans to other format by other code outsize the Bencode Library.
Tree Schema:
interface TreeNode {
id: string,
label: string,
size: number,
children?: TreeNode[]
}Example Javascript Transform Code:
function convertToJsTree(data, parentId = '', index = 1) {
let result = [];
for (let key in data) {
let currentId = parentId? `${parentId}-${index}` : `${index}`;
let node = { id: currentId, label: key };
if (typeof data[key] === 'object') {
let folderSize = 0;
let children = convertToJsTree(data[key], currentId, 1);
children.forEach(child => {
folderSize += child.size;
});
node.size = folderSize;
node.children = children;
} else {
node.size = data[key];
}
result.push(node);
index++;
}
return result;
}Example PHP Transform Code:
function convertToJsTree($data, $parentId = '', $index = 1) {
$result = [];
foreach ($data as $key => $value) {
$currentId = $parentId? $parentId. '-'. $index : (string) $index;
$node = ['id' => $currentId, 'label' => $key];
if (is_array($value)) {
$folderSize = 0;
$children = convertToJsTree($value, $currentId, 1);
foreach ($children as $child) {
$folderSize += $child['size'];
}
$node['size'] = $folderSize;
$node['children'] = $children;
} else {
$node['size'] = $value;
}
$result[] = $node;
$index++;
}
return $result;
}