def test_file_length_hfmt_xxx(self): test = files.file_length_hfmt(1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 10.24) self.assertEqual(test, '10485.76 YiB')
def test_file_length_hfmt_bytes(self): test = files.file_length_hfmt(102) self.assertEqual(test, '102.00 B')
def test_file_length_hfmt_yib(self): test = files.file_length_hfmt(1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024) self.assertEqual(test, '1.00 YiB')
def main(): user_arguments = parse_user_arguments() if user_arguments and user_arguments.paths: for in_path in user_arguments.paths: in_path = files.check_basename_path(in_path) if in_path: in_path = files.check_basename_path(in_path) basename = files.file_name_from_path(in_path) meta_dict = metainfo.MetaDictionary() if user_arguments.announces: for announce in user_arguments.announces: meta_dict.add_announce(str(announce)) if user_arguments.comment: meta_dict.comment = str(user_arguments.comment) if user_arguments.creator: meta_dict.created_by = str(user_arguments.creator) if user_arguments.date: meta_dict.creation_date = int(user_arguments.date) if user_arguments.nodes: for node in user_arguments.nodes: meta_dict.add_node(str(node)) if user_arguments.website: meta_dict.website = str(user_arguments.website) meta_dict.info = metainfo.InfoDictionary( in_path, max_piece_length=user_arguments.max_piece_length, include_dotfiles=user_arguments.include_dotfiles) meta_dict.info.name = basename meta_dict.info.private = user_arguments.private if sys.stdout.isatty(): extra_print_destination = sys.stdout else: extra_print_destination = sys.stderr if user_arguments.btih: magnet_btih = bittorrent_info_hash( meta_dict.info.get_bencoded()) print(magnet_btih, file=extra_print_destination) if user_arguments.magnet: magnet_btih = bittorrent_info_hash( meta_dict.info.get_bencoded()) magnet_size = int(meta_dict.info.length) magnet_name = basename print(magnet_uri(magnet_btih, magnet_size, magnet_name), file=extra_print_destination) meta_file = meta_dict.get_bencoded() torrent_name = basename + '.torrent' if meta_file: # Save to file or stdout if redirected and single if not sys.stdout.isatty(): if len(user_arguments.paths) == 1: sys.stdout.buffer.write(meta_file) sys.exit(0) torrent_path = os.getcwd() + os.sep + torrent_name open(torrent_path, 'wb').write(meta_file) print('Wrote torrent file "{0}" ({1} torrent file for \ {2} files).'.format( torrent_name, files.file_length_hfmt(len(meta_file)), files.file_length_hfmt(meta_dict.info.length)), file=sys.stderr) else: print('Torrent file "{0}" could not be bencoded because \ reasons. Ouch.'.format(torrent_name), file=sys.stderr) else: print( 'There was a problem accessing the file path: {0}'.format( in_path), file=sys.stderr) else: user_arguments.print_usage() sys.exit(1) sys.exit(0)