Skip to content

Жадный BitTorrent-клиент с консольным интерфейсом

Notifications You must be signed in to change notification settings

kadukm/BitTorrent_Client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Описание

Консольная реализация жадного BitTorrent-клиента на чистом python3.

Состав

  • torrent_client.py - Пользовательское приложение. Всё взаимодействие пользователя с приложением происходит здесь
  • modules/ - Вспомогательные модули. Ниже описаны некоторые классы, содержащиеся в этой папке:
    • BencodeParser.py - Парсинг файлов, закодированных в bencode-формате. Используется при создании экземпляра класса TorrentMetainfo
    • Torrent - Класс, содержащий логику работы с торрентами. При инициализации единственным аргументом принимает екземпляр класса TorrentMetainfo
    • Peer.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 действия:

  1. Скачивание - download
  2. Приостановление скачивания - pause

Для того, чтобы приложение распознало команду, достаточно ввести первые буквы действия (вплоть до одной первой буквы).
Для выхода из приложения достаточно ввести первые буквы слова "quit".

Примеры команд

  • 0 download
  • 1 pause
  • 2 down
  • 3 p
  • quit
  • q

Детали реализации

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

Общая информация

Версия: 1.0
Дата релиза: 07.01.2018
Автор: Кадук Михаил
E-mail: [email protected]

About

Жадный BitTorrent-клиент с консольным интерфейсом

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages