Проектная лаборатория

Собственный BitTorrent

0 / 19этапов пройдено

Этап 05 · Основные этапы

Разбор торрент-файла

Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.

На этом этапе вы разберёте торрент-файл и выведете сведения о торренте.

Торрент-файл (также называемый файлом метаинформации) содержит словарь bencode со следующими ключами и значениями:

  • announce:
    • URL трекера — центрального сервера, отслеживающего пиров, участвующих в раздаче торрента.
  • info:
    • Словарь с ключами:
      • length: размер файла в байтах для торрента с одним файлом.
      • name: предлагаемое имя для сохранения файла или каталога.
      • piece length: количество байт в каждом фрагменте.
      • pieces: объединённые хеши SHA-1 всех фрагментов.

Примечание: файлы .torrent содержат байты, не являющиеся допустимыми символами UTF-8. Если ваш язык представляет строки последовательностью символов Unicode (как str в Python), используйте последовательность байтов (например, bytes в Python).

Примечание: для торрентов с несколькими файлами словарь info выглядит немного иначе. В этом задании мы реализуем поддержку только однофайловых торрентов.

На этом этапе мы сосредоточимся на извлечении URL трекера и длины файла в байтах.

Тестирующая система запустит вашу программу следующим образом:

$ ./your_program.sh info sample.torrent

Ожидаемый вывод:

Tracker URL: http://bittorrent-test-tracker.codecrafters.io/announce
Length: 92063

Проверка в вашей IDE

Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.

Настройка проекта и IDE

1. Создайте проект один раз

node '/opt/graphlms/tools/project-lab/cli.mjs' init bittorrent ./my-bittorrent --language go

2. Откройте папку в IDE

cd ./my-bittorrent

Реализуйте требования этапа в созданном проекте.

Запустите из папки проекта

node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage ow9

Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.

Результат проверки

go / ЛОКАЛЬНО

Подключение к локальной проверке…

Здесь появится результат

Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.

GraphLMS — инженерная лаборатория роста