#-*- coding:utf-8 -*-
import time
from bencode import bdecode
class Parser(object):

def __init__(self,filePath):
self.path = filePath
metainfo_file = open(str(self.path), 'rb')
self.metainfo = bdecode(metainfo_file.read())

metainfo_file.close()
def getStruct(self):
print self.metainfo.keys()

#如果是单文件就返回:0
#如果是多文件就返回:1
def checkType(self):
if 'files' in self.metainfo['info']:
return 1
else:
return 0

def getCreationDate(self):
if 'creation date' in self.metainfo:
return self.metainfo['creation date']
else:
return ''

def getInfo(self):
return self.metainfo['info'].keys()

#获得文件名
def getName(self):

info = self.metainfo['info']

if 'name.utf-8' in info:
filename=info['name.utf-8']
else:
filename = info['name']

for c in filename:
if c=="'":
filename=filename.replace(c,"\\\'")
return filename


#多文件的情况下,获得所有文件,返回为:dic
def getInfoFiles(self):
return self.metainfo['info']['files']

#返回创建时间
def getCreatedBy(self):
if 'created by' in self.metainfo:
return self.metainfo['created by']
else:
return ''

#获得编码方式
def getEncoding(self):
if 'encoding' in self.metainfo:
return self.metainfo['encoding']
return ""

def getComments(self):
info = self.metainfo['info']

if 'comment.utf-8' in self.metainfo:
comment=self.metainfo['comment.utf-8']
return comment
else:
return ''



if __name__ == "__main__":
parser=Parser('98E2E1FAD731FCB2AB3ECFF38BD6B0FE29A8B7ED.torrent')

print parser.getStruct()
print parser.getCreationDate()
print 'creation date:'+time.strftime('%Y-%m-%d',time.localtime(parser.getCreationDate()))
print 'comments:'+parser.getComments()
print 'name:'+parser.getName()
print 'encoding:'+parser.getEncoding()
print 'created by:'+parser.getCreatedBy()
print parser.getInfo()
print parser.checkType()
print parser.getInfoFiles()

Python 解析torrent文件信息()_多文件