批量种子转磁力

有很长一段时间,我的游戏都来自Fitgirl Repack这个网站。这个网站从籍籍无名到公认的互联网最大的盗版游戏分享窝点,仅仅花了短短的数年时间。

这个网站分享的游戏属于高压版。所谓高压板就是将游戏数据采用高比率压缩包的形式进行分享。使得需要传输的数据,比官方的安装包更小(当然,同时也会移除很多不必要的游戏素材)。不知道有没有朋友还记得小时候买过的盗版光碟【藏经阁】,他们就喜欢采用这种“压完再压,压了又压”的高压缩模式分发盗版游戏。当年的手法比较粗暴,就是换用不同的压缩软件,例如7z\uhar进行反复压缩。

但是这种高压版的游戏有一个问题,就是安装过程非常容易出错。高比率压缩包的容错率更低,安装和解压的时间也更长。有的时候一个游戏可能需要花上五六个小时安装。更让人崩溃的是,当你安装完成后,进行文件校验时,会发现数不清的文件校验错误。这时候你已经丧失玩耍的心情,只想关掉电脑,埋头睡个大觉。

后来,我又发现了另外一家做盗版游戏分发的组织,Dodi Repacks。这家的安装包呢,就简单明快的多,选择好目录,开始解压。解压完毕,就可以开始愉快的玩耍了。即便是个头较大的游戏(我指的是50gb以上),安装时间都在20分钟左右。相对来说Dodi的安装包并没有比Fitgirl大出很多,让人不禁费解,所谓的高压,到底压了些什么?

Dodi比不上Fitgirl的一点是:没有开放磁力链的下载。你需要跳转到第三方的种子存储网站进行下载。因此你不得不忍受漫长的广告和反人类的人机验证措施,才能够下载相应的游戏种子。

为了规避反盗版,Dodi还使用乱码重写了种子的文件名。我比较喜欢收藏这些种子,以备不时之需,为此写了一段代码。将乱码的种子文件名替换为种子信息中的 display name。

不过既然都做到这儿了,何不再顺便生成一段磁力链接呢?说说干就干,完整的代码如下:

import os
import bencode
import hashlib

# 指定torrent文件所在的目录
torrent_dir = 'torrents'

# 定义一个函数来生成magnet链接
def torrent_to_magnet(torrent_file_path):
with open(torrent_file_path, 'rb') as torrent_file:
torrent_data = bencode.bdecode(torrent_file.read())

# 从torrent文件中获取需要的信息
info_bts = bencode.bencode(torrent_data['info'])
info_hash = hashlib.sha1(info_bts).hexdigest() # 编码info字典为字节串,然后转换为十六进制字符串

# 构建magnet链接
display_name = torrent_data['info']['name']
magnet_link = f'magnet:?xt=urn:btih:{info_hash}&dn={display_name}'

return magnet_link, display_name


# 遍历目录,读取所有torrent文件,并生成magnet链接
magnet_links_info = []
for root, dirs, files in os.walk(torrent_dir):
for file in files:
if file.endswith('.torrent'):
file_path = os.path.join(root, file)
# p批量转换为Magnet
try:
magnet_link, display_name = torrent_to_magnet(file_path)
magnet_links_info.append((magnet_link, display_name))
except Exception as e:
print(f'Error processing {file_path}: {e}')

# 重命名文件
try:
os.rename(file_path, os.path.join(root, display_name + '.torrent'))
print(f"文件已从 {file} 重命名为 {display_name}")
except OSError as e:
print(f"重命名失败: {e}")

# 将magnet链接和标题写入HTML页面
html_content = '<!DOCTYPE html><html><head><title>Magnet Links</title></head><body>'
html_content += '<h1>Magnet Links</h1>'
for link, title in magnet_links_info:
html_content += f'<p><a href="{link}">{title}</a></p>'
html_content += '</body></html>'

# 将HTML内容写入文件
output_html_path = 'magnet_links.html'
with open(output_html_path, 'w', encoding='utf-8') as html_file:
html_file.write(html_content)

print(f'Magnet links with titles have been written to {output_html_path}')

如果运行失败,尝试安装 bencode.py

pip installl bencode.py

 

发表评论