Консольная реализация жадного BitTorrent-клиента на чистом python3.
torrent_client.py
- Пользовательское приложение. Всё взаимодействие пользователя с приложением происходит здесьmodules/
- Вспомогательные модули. Ниже описаны некоторые классы, содержащиеся в этой папке:BencodeParser.py
- Парсинг файлов, закодированных в bencode-формате. Используется при создании экземпляра класса TorrentMetainfoTorrent
- Класс, содержащий логику работы с торрентами. При инициализации единственным аргументом принимает екземпляр класса TorrentMetainfoPeer.py
- Класс пира с соответствующими методамиTorrentWriter.py
- Запись скачанных файлов на диск (в папку downloads) осуществляется с помощью этого классаtrackerAPI.py
- Набор методов для взаимодействия с трекерами. Поддерживаются как наиболее распространенные трекеры, работающие по HTTP, так и менее распространенные, работающие по чистому UDP
tests/
- Тестыtorrents/
- Папка с .torrent-файлами. Приложение может взаимодействовать только с теми .torrent-файлами, которые находятся в этой папкеdownloads/
- Папка, куда производится загрузка торрентов.torrents_info
- Папка со служебной информацией. Каждому .torrent-файлу из папки "torrents" соответствует файл из папки ".torrents_info". Имена файлов в этих папках - sha1-hash'ы метаданных из соответствующего .torrent-файла
Приложение запускается без каких-либо параметров. После запуска будет показана таблица доступных торрентов, которая обновляется каждые 1.5 сек. Пример:
TN | Name | State | Progress | Peers | Speed
0 | a_lot_of_files.torrent | NOT_STARTED | 0.00% | 0 | 0.00 bit/s
1 | big_film_with_a_lot_of_peers | STARTED | 52.47% | 14 | 9.72 Mbit/s
2 | short_torrent_.torrent | DOWNLOADED | 100.00% | 0 | 0.00 bit/s
3 | a_lot_of_music.torrent | PAUSED | 15.83% | 0 | 0.00 bit/s
Press ENTER to begin to input commands
Для того, чтобы начать взаимодействовать с приложением, нужно нажать ENTER. После этого действия обновление таблицы торрентов остановится, и будет выведена строка, приглашающая ввести команду:
Input your command ("TorrentNumber action"):
Все команды имеют один вид (кроме команды выхода):
<номер_торрента_в_таблице> + <пробел> + <действие>
Приложение поддерживает 2 действия:
- Скачивание - download
- Приостановление скачивания - pause
Для того, чтобы приложение распознало команду, достаточно ввести первые буквы действия (вплоть до одной первой буквы).
Для выхода из приложения достаточно ввести первые буквы слова "quit".
0 download
1 pause
2 down
3 p
quit
q
Клиент жадный - то есть способен только скачивать файлы, но не раздавать. Пакеты, приходящие с просьбой о раздаче какого-либо торрента, данным клиентом будут просто проигнорированы.
Версия: 1.0
Дата релиза: 07.01.2018
Автор: Кадук Михаил
E-mail: [email protected]