Когда я попытался создать торрент-файл из каталога, содержащего несколько пустых дочерних каталогов, они были проигнорированы и опущены в торрент-файле. Интересно, этоqBittorrentвещь или ограничениеBitTorrentпротокол. Позволяет ли протокол BitTorrent делиться пустыми каталогами, сохраняя фактическое дерево файлов?
Редактировать ⸺ Существуют торренты с пустыми каталогами.
Да, на самом деле их несколько. Но как?
Открыто с помощью редактора BEncode
Как qBittorrent справляется с этими загадочными пустыми каталогами
решение1
В протоколе BitTorrent невозможно предоставить общий доступ к пустым каталогам.
Все файлы в метафайле BitTorrent (файл .torrent) перечислены в списке "files", который находится внутри словаря "info". Каталоги хранятся как часть "пути" к файлу относительно корневого каталога.
Спецификация протокола BitTorrent v1 гласит:
path — список строк в кодировке UTF-8, соответствующих именам подкаталогов, последнее из которых является фактическим именем файла (список нулевой длины является случаем ошибки).
Видеть:https://www.bittorrent.org/beps/bep_0003.html
Это означает, что невозможно предоставить общий доступ к каталогам, в которых нет файлов, поскольку последний элемент пути всегда будет интерпретироваться как имя файла.
В следующем примере показано, как пути к файлам хранятся внутри файла .torrent (в формате JSON):
{
"info": {
"files": [
{
"length": 1647396,
"path": [
"stage_2_detailed_class_info.csv"
]
},
{
"length": 124100,
"path": [
"stage_2_test_images_jpg",
"0000a175-0e68-4ca4-b1af-167204a7e0bc.jpg"
]
},
],
"name": "kaggle-pneumonia-jpg",
}
}
Этот торрент содержит два файла:
- kaggle-пневмония-jpg/stage_2_detailed_class_info.csv
- kaggle-пневмония-jpg/stage_2_test_images_jpg/0000a175-0e68-4ca4-b1af-167204a7e0bc.jpg"
Каталог «stage_2_test_images_jpg» существует только потому, что он содержится в «пути» к файлу «0000a175-0e68-4ca4-b1af-167204a7e0bc.jpg».
Если бы мы удалили «0000a175-0e68-4ca4-b1af-167204a7e0bc.jpg» из торрента, то каталог «stage_2_test_images_jpg» стал бы последним элементом в «path» и стал бы файлом, а не каталогом.