Редактировать ⸺ Существуют торренты с пустыми каталогами.

Редактировать ⸺ Существуют торренты с пустыми каталогами.

Когда я попытался создать торрент-файл из каталога, содержащего несколько пустых дочерних каталогов, они были проигнорированы и опущены в торрент-файле. Интересно, этоqBittorrentвещь или ограничениеBitTorrentпротокол. Позволяет ли протокол BitTorrent делиться пустыми каталогами, сохраняя фактическое дерево файлов?

Изображение каталога, содержащего несколько пустых дочерних каталогов. Изображение таких каталогов, которые были проигнорированы и опущены в торрент-файле.


Редактировать ⸺ Существуют торренты с пустыми каталогами.

Да, на самом деле их несколько. Но как?

19 из 53619 торрентов имеют пустые каталоги.

Пустой каталог в торренте 05e4bb4227689c24fb61cd200e812d402526475b

Открыто с помощью редактора BEncode

Последний элемент списка «путь» — пустая строка.

Как qBittorrent справляется с этими загадочными пустыми каталогами

Как 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» и стал бы файлом, а не каталогом.

Связанный контент