python获取bt种子的详细信息

标签: python bt 种子 | 发表时间:2014-04-23 22:56 | 作者:iloster
出处:http://blog.csdn.net
bt种子具体文件结构如下: 
全部内容必须都为bencoding编码类型。 
整个文件为一个字典结构,包含如下关键字 
announce:tracker服务器的URL(字符串) 
announce-list(可选):备用tracker服务器列表(列表) 
creation date(可选):种子创建的时间,Unix标准时间格式,从1970 1月1日 00:00:00到创建时间的秒数(整数) 
comment(可选):备注(字符串) 
created by(可选):创建人或创建程序的信息(字符串) 
info:一个字典结构,包含文件的主要信息,为分二种情况:单文件结构或多文件结构 
1.单文件结构如下: 
  length:文件长度,单位字节(整数) 
  md5sum(可选):长32个字符的文件的MD5校验和,BT不使用这个值,只是为了兼容一些程序所保留!(字符串) 
  name:文件名(字符串) 
  piece length:每个块的大小,单位字节(整数) 
  pieces:每个块的20个字节的SHA1 Hash的值(二进制格式) 
2.多文件结构如下: 
  files:一个字典结构 
length:文件长度,单位字节(整数) 
md5sum(可选):同单文件结构中相同 
  path:文件的路径和名字,是一个列表结构,如\test\test.txt 列表为l4:test8test.txte 
  name:最上层的目录名字(字符串) 
  piece length:同单文件结构中相同 

  pieces:同单文件结构中相同 

知道了这些就很好解析了

Parser.py

# -*- coding: utf-8 -*-

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 ''
test.py

#-*- coding:utf-8 -*-
import Parser
import time

if __name__ == "__main__":
    parser=Parser.Parser('test1.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.getInfoFiles()
    print parser.checkType()
    print parser.getSize()
    

结果:



作者:iloster 发表于2014-4-23 14:56:26 原文链接
阅读:76 评论:0 查看评论

相关 [python bt 种子] 推荐:

python获取bt种子的详细信息

- - CSDN博客编程语言推荐文章
bt种子具体文件结构如下: . 全部内容必须都为bencoding编码类型. 整个文件为一个字典结构,包含如下关键字 . announce:tracker服务器的URL(字符串) . announce-list(可选):备用tracker服务器列表(列表) . creation date(可选):种子创建的时间,Unix标准时间格式,从1970 1月1日 00:00:00到创建时间的秒数(整数) .

高清经典电影最新电影BT种子大合集

- Xinchen - 乐淘吧
2011唐一菲最新大尺度恐怖片《夜惊魂》国语DVD中字. 火影忍者剧场版7之失落之塔高清下载. 杀死这个爱尔兰人DVD中英双字. 最后56小时DVD中字【片子还不错以前看过】. 赵毅 李念2011最新喜剧爱情大片《房不剩防/电影版蜗居》. 2011最新惊险动作片《暗杀名单》DVD+BD高清版中字. 2011最新恐怖片《潜伏/阴儿房》DVD中字.

7个好用的BT种子搜索引擎

- - 非技术 - ITeye博客
7个好用的BT种子搜索引擎. 2015年12月16日  网文资讯  4条评论 阅读 39,550 views 次. BTSOSO是一个专业的基于DHT的磁力链接搜索引擎,专注于提供磁力搜索和BT种子文件搜索服务. 它用于解决常见搜索引擎磁力资源过度分散的问题,你可以在这里搜索到分享在DHT网络中的免费电影、剧集、音乐、图书、图片、综艺、软件、动漫、教程、游戏等BT资源链接和磁力链接.

《猿族崛起》高清DVD+人猿星球系列5部合辑ed2k和bt种子下载 | 奇想录

- Isaac - qixianglu.cn
forcode:《猿族崛起》是2011年暑假我最期待的科幻片了. 最近几个星期,和虎妞一起看完了从1968年开始拍摄的《人猿星球》五步曲,为2011年8月5日上映的《猿族崛起》做准备,基本上看完了2001年之前的无集,对整个剧情都很熟悉了,2011年的《猿族崛起》与1972年的《猩球征服》剧情应该是最接近的,讲述的是Caesar如何领导作为奴隶的Apes革命反抗人类压迫的过程.

dropbox讲python

- chuang - Initiative
dropbox定制优化CPython虚拟机,自己搞了个malloc调度算法. 那个 !!!111cos(0). 期待这次PyCon China 2011.

Python调试

- - 企业架构 - ITeye博客
原文地址: http://blog.csdn.net/xuyuefei1988/article/details/19399137. 1、下面网上收罗的资料初学者应该够用了,但对比IBM的Python 代码调试技巧:. IBM:包括 pdb 模块、利用 PyDev 和 Eclipse 集成进行调试、PyCharm 以及 Debug 日志进行调试:.

Python WSGI 初探

- - 坚实的幻想
在构建 Web 应用时,通常会有 Web Server 和 Application Server 两种角色. 其中 Web Server 主要负责接受来自用户的请求,解析 HTTP 协议,并将请求转发给 Application Server,Application Server 主要负责处理用户的请求,并将处理的结果返回给 Web Server,最终 Web Server 将结果返回给用户.

BT雷人的程序语言(大全)

- 安淡名 - 酷壳 - CoolShell.cn
还记得以前本站的BT雷人的程序语言吗. 除了那几个Brainfuck,LOLCODE和WhiteSpace,我以为这些是比较BT的语言,但是自从这两天我在网上看到一些(见文章最后的参考一节),我发现我错了,这个世界上,只有更变态,没有最变态. 不相,你看看下面这些,简直变态到了极致啊. 第一个变态语言Befunge.

丈母娘的十个BT条件

- Patrick - 河蟹娱乐
第一个条件:必须在这个城市购买一套四室二厅的房子,面积至少要达到160平方米,房产证的名字必须是女方,而且不能搞按揭,也不能负债购买,她不想女儿嫁过去就当房奴,一辈子为房子奔波. 第二个条件:必须给他们老两口购买一套三居室的房子,房产证上的名字必须是她丈母娘的名字,而且也不能搞按揭和负债购买,因为他们的房子已经破旧了,这是因为他们培养婷婷的原因,现在是他们必须回报.