⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 torrentinfo-console.py

📁 bittorrent source by python. please enjoy
💻 PY
字号:
#!/usr/bin/env python# The contents of this file are subject to the BitTorrent Open Source License# Version 1.1 (the License).  You may not copy or use this file, in either# source code or executable form, except in compliance with the License.  You# may obtain a copy of the License at http://www.bittorrent.com/license/.## Software distributed under the License is distributed on an AS IS basis,# WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the License# for the specific language governing rights and limitations under the# License.# Written by Henry 'Pi' James, Loring Holden and Matt Chisholmfrom BitTorrent.translation import _from sys import *from os.path import *from sha import *from BitTorrent.bencode import *from BitTorrent import version, app_nameNAME, EXT = splitext(basename(argv[0]))print _("%s %s - decode %s metainfo files") % (NAME, version, app_name)print if len(argv) == 1:    print _("Usage: %s [TORRENTFILE [TORRENTFILE ... ] ]") % basename(argv[0])    print    exit(2) # common exit code for syntax errorlabels = {'metafile'   : _("metainfo file: %s"       ),          'infohash'   : _("info hash: %s"           ),          'filename'   : _("file name: %s"           ),          'filesize'   : _("file size:"              ),          'files'      : _("files:"                  ),          'dirname'    : _("directory name: %s"      ),          'archive'    : _("archive size:"           ),          'announce'   : _("tracker announce url: %s"),          'announce-list'   : _("tracker announce list: %s"),          'nodes'      : _("trackerless nodes:"      ),          'comment'    : _("comment:"                ),          }maxlength = max( [len(v[:v.find(':')]) for v in labels.values()] )# run through l10n-ed labels and make them all the same lengthfor k,v in labels.items():    if ':' in v:        index = v.index(':')        newlabel = v.replace(':', '.'*(maxlength-index) + ':')        labels[k] = newlabelfor metainfo_name in argv[1:]:    metainfo_file = open(metainfo_name, 'rb')    metainfo = bdecode(metainfo_file.read())    metainfo_file.close()    info = metainfo['info']    info_hash = sha(bencode(info))    print labels['metafile'] % basename(metainfo_name)    print labels['infohash']  % info_hash.hexdigest()    piece_length = info['piece length']    if info.has_key('length'):        # let's assume we just have a file        print labels['filename'] % info['name']        file_length = info['length']        name = labels['filesize']    else:        # let's assume we have a directory structure        print labels['dirname'] % info['name']        print labels['files']        file_length = 0;        for file in info['files']:            path = ''            for item in file['path']:                if (path != ''):                   path = path + "/"                path = path + item            print '   %s (%d)' % (path, file['length'])            file_length += file['length']        name = labels['archive']    piece_number, last_piece_length = divmod(file_length, piece_length)    print '%s %i (%i * %i + %i)' \          % (name,file_length, piece_number, piece_length, last_piece_length)    if metainfo.has_key('announce'):        print labels['announce'] % metainfo['announce']    if 'announce-list' in metainfo:        print labels['announce-list'] % metainfo['announce-list']            if metainfo.has_key('nodes'):        print labels['nodes']        for n in metainfo['nodes']:            print '\t%s\t:%d' % (n[0], n[1])            print labels['comment']    if metainfo.has_key('comment'):        print metainfo['comment']    print

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -