技术经验解读:【Python】torrentParser1.04增加获得磁力链URI功能

简介: 技术经验解读:【Python】torrentParser1.04增加获得磁力链URI功能

代码:


#------------------------------------------------------------------------------------


# torrentParser1.04,用于解析torrent文件


# 增加了函数getMegnet,能将种子文件转磁力链


# 2018年5月13日


#------------------------------------------------------------------------------------


from bencode import bdecode,bencode


import time


import hashlib


import base64


#-------------------------------------


# torrentParser类


#-------------------------------------


class torrentParser(object):


# 构造函数


def init(self,filePathname):


self.filePathname=filePathname


with open(filePathname,'rb') as fObj:


self.fileDic=bdecode(fObj.read())


# 得到文件路径名


def getFilepathname(self):


return self.filePathname


# 得到所有键值


def getKeys(self):


return self.fileDic.keys()


# 得到全部内容


def getAllContent(self):


return self.fileDic;


# 得到文件结构


def getStructure(self):


retval=''


layer=0


for key in self.fileDic.keys():


value=self.fileDic【key】


retval=retval+self.getNextNode(key,value,layer)


return retval


# 向下递归查找文件结构,


def getNextNode(self,key,value,layer):


retval="";


layer+=1


if type(value)==type({}) and len(value.keys())>0:


for i in range(1,layer+1):


retval=retval+"\t"


retval=retval+str(key)+"\n"


for k in value.keys():


v=value【k】


retval=retval+ self.getNextNode(k,v,layer)


elif type(value)==type(【】) and len(value)>0:


for i in range(1,layer+1):


//代码效果参考:http://hnjlyzjd.com/xl/wz_24419.html

retval=retval+"\t"

retval=retval+str(key)+"\n"


arr=value


for it in arr:


if type(it)==type({}) and len(it.keys())>0:


for nk in it.keys():


nv=it【nk】


retval=retval+''+self.getNextNode(nk,nv,layer)


else:


for i in range(1,layer+1):


retval=retval+"\t"


showValue=str(value)【0:50】 # 显示的值


retval=retval+str(key)+":"+showValue+"\n"


return retval


# 获得tracker服务器的URL


def getAnnounce(self):


if 'announce' in self.fileDic:


return self.fileDic【'announce'】.decode('utf-8','ignore')


return ''


# 获得tracker服务器的URL列表


def getAnnounceList(self):


retval=【】


if 'announce-list' in self.fileDic:


arr=self.fileDic【'announce-list'】


for childArr in arr:


if type(childArr)==type(【】):


for item in childArr:


retval.append(item.decode('utf-8','ignore'))


else:


retval.append(childArr.decode('utf-8','ignore'))


return retval


# 得到制作日期


def getCreateTime(self):


if 'creation date' in self.fileDic:


unixTimestamp=self.fileDic【'creation date'】


firmalTime = time.localtime(unixTimestamp)


dt = time.strftime('%Y-%m-%d %H:%M:%S', firmalTime)


return dt


else:


return ''


# 获得编码方式


def getEncoding(self):


if 'encoding' in self.fileDic:


return self.fileDic【'encoding'】.decode('utf-8','ignore')


return ''


# 是否包含多个文件


def hasMultiFiles(self):


if 'files' in self.fileDic【'info'】:


return True


else:


return False


# 获得文件名


def getTitle(self):


arr=【】


info = self.fileDic【'info'】


if 'name.utf-8' in info:


arr=info【'name.utf-8'】


else:


arr = info【'name'】


#print(str(arr))


return arr.decode('utf-8','ignore')


# 获得备注(可选项)


def getComment(self):


if 'comment' in self.fileDic:


return self.fileDic【'comment'】.decode('utf-8','ignore')


return ''


# 获得创建者(可选项)


def getCreatedBy(self):


if 'created by' in self.fileDic:


return self.fileDic【'created by'】.decode('utf-8','ignore')


return ''


# 多文件的情况下,得到多个文件的个数


def getFileCount(self):


return len(self.fileDic【'info'】【'files'】)


# 多文件的情况下,获得所有文件


def getFiles(self):


files=【】


for item in self.fileDic【'info'】【'files'】:


file={}


for key in item.keys():


value=item.get(key)


if key=='path':


#print('1.'+str(value))


#print('10.'+str(value【0】))


path=value【0】.decode('utf8','ignore')


value=path


if key=='path.utf-8':


#print('2.'+str(value))


#print('20.'+str(value【0】))


path=value【0】.decode('utf8','ignore')


value=path


file【key】=value


files.append(file)


return files


# 单文件情况下,取文件名


def getSingleFileName(self):


return self.getTitle();


# 单文件情况下,取文件长度


def getSingleFileLength(self):


return self.fileDic【'info'】【'length'】


# 单文件情况下,取文件md5sum


def getSingleFileMd5sum(self):


if 'md5sum' in self.fileDic【'info'】:


return self.fileDic【'info'】【'md5sum'】.decode('utf-8','ignore')


else:


return ''


# 单文件情况下,取文件长度


def getSingleFilePieceLength(self):


return self.fileDic【'info'】【'piece length'】


# 单文件情况下,取文件pieces


def getSingleFilePieces(self):


return self.fileDic【'info'】【'pieces'】


# 得到文件简报


def getBrief(self):


retval=""


retval=retval+"File:"+self.filePathname+"\n"


retval=retval+"announce:"+self.getAnnounce()+"\n"


arr=self.getAnnounceList()


if(len(arr)>0):


retval=retval+"announce list:"+"\n"


for it in arr:


retval=retval+"\t"+it+"\n"


retval=retval+"Create time:"+self.getCreateTime()+"\n"


retval=retval+"Ecoding:"+self.getEncoding()+"\n"


retval=retval+"Title:"+self.getTitle()+"\n"


retval=retval+"Comment:"+self.getComment()+"\n"


retval=retval+"Created by:

相关文章
|
1月前
|
API Python
【02】优雅草央央逆向技术篇之逆向接口协议篇-以小红书为例-python逆向小红书将用户名转换获得为uid-优雅草央千澈
【02】优雅草央央逆向技术篇之逆向接口协议篇-以小红书为例-python逆向小红书将用户名转换获得为uid-优雅草央千澈
94 1
|
1月前
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
2月前
|
开发框架 数据建模 中间件
Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器是那些静悄悄的幕后英雄。它们不张扬,却能默默地为函数或类增添强大的功能。本文将带你了解装饰器的魅力所在,从基础概念到实际应用,我们一步步揭开装饰器的神秘面纱。准备好了吗?让我们开始这段简洁而富有启发性的旅程吧!
56 6
|
2天前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
21 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
2天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
23 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
2天前
|
人工智能 搜索推荐 测试技术
通义灵码 2.0 智能编码功能评测:Deepseek 加持下的 Python 开发体验
通义灵码 2.0 智能编码功能评测:Deepseek 加持下的 Python 开发体验
38 10
|
21天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
1月前
|
安全 数据挖掘 编译器
【01】优雅草央央逆向技术篇之逆向接口协议篇-如何用python逆向接口协议?python逆向接口协议的原理和步骤-优雅草央千澈
【01】优雅草央央逆向技术篇之逆向接口协议篇-如何用python逆向接口协议?python逆向接口协议的原理和步骤-优雅草央千澈
66 6
|
2月前
|
数据采集 存储 缓存
如何使用缓存技术提升Python爬虫效率
如何使用缓存技术提升Python爬虫效率
|
2月前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
109 2

热门文章

最新文章