import bencodepy

#加载torrent

def load_torrent(file_path):

    with open(file_path, “rb”) as f:

         content = f.read()

    torrent_data = bencodepy.decode(content)

    print(torrent_data)

    return torrent_data

#解析种子内容

def parse_torrent(torrent_data,new_tracker_url,newtorrent_file):

    #提起文件名和哈希值

    #提取info字典中的name、length、pieces和piece length

   # 删除comment键(如果存在)

    if b’comment’ in torrent_data:

       del torrent_data[b’comment’]

    if b’announce-list’ in torrent_data:

        for i, tracker_list in enumerate(torrent_data[b’announce-list’]):

             for j, tracker in enumerate(tracker_list):

                 if isinstance(tracker, bytes):

                     torrent_data[b’announce-list’][i][j] = new_tracker_url.encode()

    elif b’announce’ in torrent_data:

        torrent_data[b’announce’] = new_tracker_url.encode()

    # 重新编码元信息数据

    # 将新的元信息数据写入文件(如果需要)

    with open(newtorrent_file, ‘wb’) as f:

       f.write(bencodepy.encode(torrent_data))

 # 获得tracker数据

torrent_data = load_torrent(“2.torrent”)

parse_torrent(torrent_data,” https://tracker.0ff.cc/announce.php”,”c.torrent”)