X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=torrent;h=0e396ee4b3f38fc4fd14ab00655060f891c3380e;hb=1decf4666d37cddc16f8b28b3bc7888437e0a777;hp=7841fa7e672c950180e94414f2426a5e440891ba;hpb=34a85ed74694597c4546f8e4c0ee48e181ab4a49;p=extfs.d.git diff --git a/torrent b/torrent index 7841fa7..0e396ee 100755 --- a/torrent +++ b/torrent @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#! /usr/bin/env python3 """Torrent Virtual FileSystem for Midnight Commander The script requires Midnight Commander 3.1+ @@ -35,9 +35,9 @@ The filesystem is, naturally, read-only. """ -__version__ = "1.2.4" +__version__ = "1.3.0" __author__ = "Oleg Broytman " -__copyright__ = "Copyright (C) 2010-2018 PhiloSoft Design" +__copyright__ = "Copyright (C) 2010-2023 PhiloSoft Design" __license__ = "GPL" @@ -56,9 +56,12 @@ except ImportError: if use_locale: # Get the default charset. try: - lcAll = locale.getdefaultlocale() - except locale.Error, err: - print >>sys.stderr, "WARNING:", err + if sys.version_info[:2] < (3, 11): + lcAll = locale.getdefaultlocale() + else: + lcAll = [] + except locale.Error as err: + #print("WARNING:", err, file=sys.stderr) lcAll = [] if len(lcAll) == 2: @@ -66,8 +69,8 @@ if use_locale: else: try: default_encoding = locale.getpreferredencoding() - except locale.Error, err: - print >>sys.stderr, "WARNING:", err + except locale.Error as err: + #print("WARNING:", err, file=sys.stderr) default_encoding = sys.getdefaultencoding() else: default_encoding = sys.getdefaultencoding() @@ -122,33 +125,13 @@ def mctorrent_list(): if 'path.utf-8' in file: if name_utf8: path = '/'.join([name_utf8] + file['path.utf-8']) - if default_encoding != 'utf-8': - path = path.decode('utf-8', 'replace').encode( - default_encoding, 'replace') else: - _name_utf8 = name - if encoding and (encoding != 'utf-8'): - _name_utf8 = _name_utf8.decode( - encoding, 'replace').encode('utf-8', 'replace') - path = '/'.join([_name_utf8] + file['path.utf-8']) - if default_encoding != 'utf-8': - path = path.decode('utf-8', 'replace').encode( - default_encoding, 'replace') + path = '/'.join([name] + file['path.utf-8']) else: if name_utf8: - path = file['path'] - if encoding and (encoding != 'utf-8'): - path = path.decode(encoding, 'replace').encode( - 'utf-8', 'replace') path = '/'.join([name_utf8] + path) - if default_encoding != 'utf-8': - path = path.decode('utf-8', 'replace').encode( - default_encoding, 'replace') else: path = '/'.join([name] + file['path']) - if encoding and (default_encoding != encoding): - path = path.decode(encoding, 'replace').encode( - default_encoding, 'replace') length = file['length'] paths.append((path, length)) else: # One-file torrent @@ -156,12 +139,7 @@ def mctorrent_list(): torrent_error('Unknown length') length = info['length'] if name_utf8: - if default_encoding != 'utf-8': - name = name_utf8.decode('utf-8', 'replace').encode( - default_encoding, 'replace') - elif encoding and (default_encoding != encoding): - name = name.decode(encoding, 'replace').encode( - default_encoding, 'replace') + name = name_utf8 paths = [(name, length)] meta = [] @@ -169,8 +147,7 @@ def mctorrent_list(): 'created by', 'creation date', 'encoding', \ 'nodes', 'publisher', 'publisher-url': if name == 'comment' and 'comment.utf-8' in torrent: - data = torrent['comment.utf-8'].decode('utf-8').encode( - default_encoding, 'replace') + data = torrent['comment.utf-8'] meta.append(('.META/' + name, len(data))) elif name in torrent: if name == 'announce-list': @@ -204,10 +181,10 @@ def mctorrent_list(): dt = decode_datetime(getmtime(sys.argv[2])) for name in sorted(dirs): - print "dr-xr-xr-x 1 user group 0 %s %s" % (dt, name) + print("dr-xr-xr-x 1 user group 0 %s %s" % (dt, name)) for name, size in sorted(paths): - print "-r--r--r-- 1 user group %d %s %s" % (size, dt, name) + print("-r--r--r-- 1 user group %d %s %s" % (size, dt, name)) def mctorrent_copyout(): @@ -221,8 +198,7 @@ def mctorrent_copyout(): 'created by', 'creation date', 'encoding', \ 'nodes', 'publisher', 'publisher-url': if name == 'comment' and 'comment.utf-8' in torrent: - data = torrent['comment.utf-8'].decode('utf-8').encode( - default_encoding, 'replace') + data = torrent['comment.utf-8'] elif torrent_filename == '.META/' + name: if name in torrent: if name == 'announce-list': @@ -291,11 +267,11 @@ def torrent_error(error_str): def decode_torrent(): try: - torrent_file = open(sys.argv[2], 'r') + torrent_file = open(sys.argv[2], 'rb') data = torrent_file.read() torrent_file.close() return decode(data) - except IOError, error_str: + except IOError as error_str: torrent_error(error_str) @@ -316,7 +292,7 @@ def decode_datetime(dt): def decode_announce_list(announce): - return '\n'.join(l[0] for l in announce if l) + return '\n'.join(a[0] for a in announce if a) command = sys.argv[1] @@ -333,5 +309,5 @@ try: g[procname]() except SystemExit: raise -except: +except Exception: logger.exception("Error during run")