如何使用 libtorrent for python 获取 info_hash

Posted

技术标签:

【中文标题】如何使用 libtorrent for python 获取 info_hash【英文标题】:How use libtorrent for python to get info_hash 【发布时间】:2012-08-21 16:00:40 【问题描述】:
from libtorrent as lt
info = lt.torrent_info(open('example.torrent','rb').read())
info.info_hash()

这没有得到哈希值,而是得到对象<libtorrent.big_number object at ...... >

我该怎么办?

【问题讨论】:

请提供有关您尝试过的更多信息 - 否则此问题将被关闭。 info_hash() 返回一个对象。很可能有一种方法可以访问十六进制形式的哈希。 【参考方案1】:

现有的答案可以为您提供所需的一切......但这里有一些代码可以明确说明:

import libtorrent as lt
info = lt.torrent_info(open('example.torrent','rb').read())
info_hash = info.info_hash()
hexadecimal = str(info_hash)
integer = int(hexadecimal, 16)

编辑:实际上,这是错误的 - torrent_info() 应该传递 torrent 文件的长度及其内容。修订(工作)版本:

import libtorrent as lt
torrent = open('example.torrent','rb').read()
info = lt.torrent_info(torrent, len(torrent))
info_hash = info.info_hash()
hexadecimal = str(info_hash)
integer = int(hexadecimal, 16)

【讨论】:

而我需要的只是print hexadecimal。好! @zero-piraeus 如何解决 unicode-decode 错误?例如,我收到类似UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc.....我该如何解决这个错误?【参考方案2】:

根据http://www.rasterbar.com/products/libtorrent/manual.html#torrent-info

info_hash() returns the 20-bytes sha1-hash for the info-section of the torrent file. 
For more information on the sha1_hash, see the [big_number] class.

所以http://www.rasterbar.com/products/libtorrent/manual.html#big-number

只需遍历字节,您就有了哈希值。

【讨论】:

【参考方案3】:

只需致电str(info.info_hash())

编辑:实际上str 不正确。但是写出十六进制字符串的正确方法是什么?

【讨论】:

以上是关于如何使用 libtorrent for python 获取 info_hash的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 python-libtorrent 获取 torrent 的对等列表?

如何在python中使用libtorrent的udp协议跟踪器协议

Libtorrent,Python,如何设置下载速度

如何使用 libtorrent 下载完全跳过将文件写入磁盘?

如何在 libtorrent 中应用代理?

Libtorrent 如何设置超时?