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革命反抗人类压迫的过程.

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

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

丈母娘的十个BT条件

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

Torrent2exe - 製作傻瓜 BT 下載器

- 沒有暱稱 - 0與1的邂逅
如果你想跟朋友分享一個必須用 BT 才能下載的檔案,而他剛好又不會使用 BT,有一個網站可以幫你解決這個問題,那就是用 Torrent2exe.com 來做一個專屬的「傻瓜 BT 下載器」給他. Torrent2exe 能將下載 BT 的 torrent 檔案製作成一個可執行檔,只要執行它就會開始自動下載檔案.

Lady Gaga是BT下载狂热者

- Elic - cnBeta.COM
当红巨星Lady Gaga最近在自己的Facebook页面上向自己的粉丝索要《Top Chef Just Desserts finale》节目的BT种子,看来她并不是第一次干这事情,有粉丝问道,能否提供你的作品的盗版链接或者BT种子. 答案显而易见,即便本尊同意,RIAA可不这么看.

Torrent Tornado:浏览器内 BT 下载

- - LinuxTOY
Torrent Tornado 是一款完全使用 JavaScript 实现的附加组件,可以为 Firefox 浏览器增加 BT 下载功能. 体积小巧(不到 100K),完全使用 JavaScript 实现,跨平台且无本地二进制依赖. 支持和磁力链接及种子文件关联. 注意 当前 1.0 版本仅支持下载,不支持上传.