![]() |
Como gerar links magnéticos a partir de arquivos torrent em Python |
|
Canal @CanalQb |
Links magnéticos (magnet links) são uma forma popular de compartilhar arquivos via redes P2P, especialmente torrents, sem precisar baixar o arquivo .torrent em si. Eles contêm um identificador único do conteúdo e permitem o download direto usando clientes BitTorrent.
Script Python para converter arquivos torrent em links magnéticos
A seguir, apresentamos um script simples que lê um arquivo torrent, codifica seu conteúdo em base64 e gera um link magnético a partir disso:
import base64
def torrent_to_magnet(torrent_file):
with open(torrent_file, 'rb') as f:
torrent_data = f.read()
b64_data = base64.b64encode(torrent_data)
magnet_link = "magnet:?xt=urn:btih:" + b64_data.decode("utf-8")
return magnet_link
Como usar o script
Basta chamar a função torrent_to_magnet()
passando o caminho para o arquivo torrent. Por exemplo:
magnet_link = torrent_to_magnet('caminho/do/arquivo.torrent')
print(magnet_link)
O resultado será um link magnético no formato:
magnet:?xt=urn:btih:<hash em base64>
, que pode ser utilizado em clientes BitTorrent para iniciar o download do conteúdo correspondente.
Considerações técnicas importantes
- O método apresentado gera um hash baseado no conteúdo completo do arquivo torrent codificado em base64, porém o padrão correto do link magnético normalmente utiliza o infohash SHA1 do conteúdo do torrent.
- Para gerar um link magnético correto e amplamente compatível, é recomendado usar bibliotecas específicas para manipulação de arquivos torrent, como bencode.py para decodificar o arquivo torrent e calcular o
infohash
. - Links magnéticos com hash incorreto podem não funcionar em todos os clientes BitTorrent.
Exemplo avançado usando hashlib e bencode
Aqui um exemplo resumido de como gerar o infohash correto e criar o link magnético compatível:
import bencodepy
import hashlib
def torrent_to_magnet_correct(torrent_file):
with open(torrent_file, 'rb') as f:
torrent_data = f.read()
decoded = bencodepy.decode(torrent_data)
info = bencodepy.encode(decoded[b'info'])
info_hash = hashlib.sha1(info).hexdigest()
magnet_link = f"magnet:?xt=urn:btih:{info_hash}"
return magnet_link
Este método assegura compatibilidade total com os clientes torrent e melhora a precisão do link magnético gerado.
Conclusão
Gerar links magnéticos a partir de arquivos torrent é uma tarefa comum para usuários avançados e desenvolvedores que trabalham com redes P2P. Embora o método simples com base64 possa funcionar, utilizar a abordagem correta com o cálculo do infohash
é fundamental para garantir funcionalidade total.
Para saber mais sobre arquivos torrent e links magnéticos, consulte a documentação oficial do protocolo BitTorrent em BEP 9.