sys.exit('File torrent not exists') torrent_file_data = parse_torrent_file(args.torrent_file_path) info_hash = hashlib.sha1( json.dumps(torrent_file_data['info']).encode('utf-8')).hexdigest() my_id = ''.join( random.choice(string.ascii_letters + string.digits) for i in range(PEER_ID_SIZE)) main_controller = MainController.start(my_id, info_hash, torrent_file_data, args.seeder) server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind((socket.gethostname(), 0)) server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server_socket.listen(5) tracker_client = TrackerClient(my_id, info_hash, server_socket.getsockname()[0], server_socket.getsockname()[1], torrent_file_data['tracker_ip'], torrent_file_data['tracker_port'], main_controller) tracker_client.daemon = True tracker_client.start() tcp_server = TcpServer(info_hash, server_socket, main_controller) tcp_server.daemon = True tcp_server.start()