X-Git-Url: https://git.phdru.name/?p=extfs.d.git;a=blobdiff_plain;f=torrent;h=ebaa7bf295dbaf3fc7950c331283697e7d81e60d;hp=309aada9421ffa9b9f7605c6e84c1945fba78a2b;hb=f988468cf61fa5f048b4fe281602521271b3293b;hpb=cb78e17c2d412bf8ce6a092e3909737f536e8923 diff --git a/torrent b/torrent index 309aada..ebaa7bf 100755 --- a/torrent +++ b/torrent @@ -27,7 +27,7 @@ year. The filesystem is, naturally, read-only. """ -__version__ = "1.1.0" +__version__ = "1.1.1" __author__ = "Oleg Broytman " __copyright__ = "Copyright (C) 2010-2013 PhiloSoft Design" __license__ = "GPL" @@ -47,8 +47,8 @@ Torrent Virtual FileSystem for Midnight Commander version %s Author: %s %s -This is not a program. Put the script in /usr/[local/][lib|share]/mc/extfs. -For more information read the source!""", +This is not a program. Put the script in $HOME/.mc/extfs.d or +/usr/[local/][lib|share]/mc/extfs. For more information read the source!""", __version__, __author__, __copyright__ ) sys.exit(1) @@ -65,7 +65,7 @@ def mctorrent_list(): torrent_error('Info absent') info = torrent['info'] - if 'name' not in info or 'name.utf-8' not in info: + if 'name' not in info and 'name.utf-8' not in info: torrent_error('Unknown name') codepage = torrent.get('codepage', None) @@ -80,7 +80,7 @@ def mctorrent_list(): files = info['files'] paths = [] for file in files: - if 'path' not in file or 'path.utf-8' not in file: + if 'path' not in file and 'path.utf-8' not in file: torrent_error('Unknown path') if 'length' not in file: torrent_error('Unknown length') @@ -123,14 +123,21 @@ def mctorrent_list(): meta = [] for name in 'announce', 'announce-list', 'codepage', 'comment', \ - 'created by', 'creation date', 'encoding': - if name in torrent: + '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(charset, 'replace') + meta.append(('.META/' + name, len(data))) + elif name in torrent: if name == 'announce-list': - data = decode_list(torrent[name]) + data = decode_announce_list(torrent[name]) elif name == 'codepage': data = str(torrent[name]) elif name == 'creation date': data = decode_datetime(torrent[name]) + elif name == 'nodes': + data = ['%s:%s' % (host, port) for host, port in torrent[name]] + data = '\n'.join(data) else: data = torrent[name] meta.append(('.META/' + name, len(data))) @@ -153,15 +160,22 @@ def mctorrent_copyout(): data = None for name in 'announce', 'announce-list', 'codepage', 'comment', \ - 'created by', 'creation date', 'encoding': - if torrent_filename == '.META/' + name: + '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(charset, 'replace') + meta.append(('.META/' + name, len(data))) + elif torrent_filename == '.META/' + name: if name in torrent: if name == 'announce-list': - data = decode_list(torrent[name]) + data = decode_announce_list(torrent[name]) elif name == 'codepage': data = str(torrent[name]) elif name == 'creation date': data = decode_datetime(torrent[name]) + elif name == 'nodes': + data = ['%s:%s' % (host, port) for host, port in torrent[name]] + data = '\n'.join(data) else: data = str(torrent[name]) else: @@ -226,7 +240,7 @@ def decode_datetime(dt): l_now = localtime(the_time) return asctime(l_now) -def decode_list(announce): +def decode_announce_list(announce): return '\n'.join(l[0] for l in announce)