@zhongdao
2020-08-24T12:29:43.000000Z
字数 4664
阅读 1837
未分类
How to generate a Torrent Magnet URI from a directory?
https://stackoverflow.com/questions/30294387/how-to-generate-a-torrent-magnet-uri-from-a-directory
There's no method exposed to create a magnet URI directly because such a link would be unusable!
Magnet links are hash identifiers that allow clients to retrieve a torrent file from the BitTorrent DHT network. However, they can only do so if there's at least one other client online (and with DHT enabled) that's downloading or seeding that torrent. If you generated a torrent within your application and generated a magnet link from that directly, nobody would ever have that torrent file, so it wouldn't be downloadable.
Long story short: Magnet links only really work for torrents that are created and seeded on a peer-to-peer basis. If you want to use a web seed, you'll need to offer the full torrent file for download by users.
What is “web seed”?
https://askubuntu.com/questions/313107/what-is-web-seed#:~:text=%5BWeb%20Seeds%20are%20the%5D%20location,contents%2C%20or%20existing%20web%20locations.
The purpose of this extension is to allow clients to join a swarm and complete a download without the need of downloading a .torrent file first. This extension instead allows clients to download the metadata from peers. It makes it possible to support magnet links, a link on a web page only containing enough information to join the swarm (the info hash).
magnet URI format
The magnet URI format is:
v1: magnet:?xt=urn:btih:<info-hash>&dn=<name>&tr=<tracker-url>&x.pe=<peer-address>v2: magnet:?xt=urn:btmh:<tagged-info-hash>&dn=<name>&tr=<tracker-url>&x.pe=<peer-address><peer-address>A peer address expressed as hostname:port, ipv4-literal:port or [ipv6-literal]:port. This parameter can be included to initiate a direct metadata transfer between two clients while reducing the need for external peer sources. It should only be included if the client can discover its public IP address and determine its reachability. Note: Since no URI scheme identifier has been allocated for bittorrent xs= is not used for this purpose.**If no tracker is specified, the client SHOULD use the DHT (BEP 0005) to acquire peers.**
Abstract
Using HTTP or FTP servers as seeds for BitTorrent downloads.
Rationale
Many websites that list a BitTorrent download also provide a HTTP or FTP URL for the same file. The files are identical. A WebSeeding BitTorrent client can download from either source, putting all the parts together into one complete file.
The HTTP or FTP server acts as a permanently unchoked seed.
rain torrent createNAME:rain torrent create - create new torrent fileUSAGE:rain torrent create [command options] [arguments...]OPTIONS:--file value, -f value include this file or directory in torrent--out FILE, -o FILE save generated torrent to this FILE--private, -p create torrent for private trackers--piece-length value, -l value override default piece length. by default, piece length calculated automatically based on the total size of files. given in KB. must be multiple of 16. (default: 0)--comment COMMENT, -c COMMENT add COMMENT to torrent--tracker URL, -t URL add tracker URL--webseed URL, -w URL add webseed URL
rain torrent createNAME:rain torrent create - create new torrent fileUSAGE:rain torrent create [command options] [arguments...]OPTIONS:--file value, -f value include this file or directory in torrent--out FILE, -o FILE save generated torrent to this FILE--private, -p create torrent for private trackers--piece-length value, -l value override default piece length. by default, piece length calculated automatically based on the total size of files. given in KB. must be multiple of 16. (default: 0)--comment COMMENT, -c COMMENT add COMMENT to torrent--tracker URL, -t URL add tracker URL--webseed URL, -w URL add webseed URL
NAME:rain client - send rpc request to serverUSAGE:rain client command [command options] [arguments...]COMMANDS:Actions:add add torrent or magnetremove remove torrentclean-database clean session databaseadd-peer add peer to torrentadd-tracker add tracker to torrentannounce announce to trackerverify verify filesstart start torrentstop stop torrentstart-all start all torrentsstop-all stop all torrentsmove move torrent to another serverGetters:version server versionlist list torrentsstats get stats of torrentsession-stats get stats of sessiontrackers get trackers of torrentwebseeds get webseed sources of torrentpeers get peers of torrenttorrent save torrent filemagnet get magnet linkOther:console show client consoleOPTIONS:--url value URL of RPC server (default: "http://127.0.0.1:7246")--timeout value request timeout (default: 10s)--help, -h show help
rain torrent create -t http://bttracker.top:6969/announce -f tests -o tests.torrent
注意:
ll /data/dcp/tstdir5/gnome-software-0J8ZXZ/debconf.socketsrwxrwxrwx 1 tms tms 0 2月 25 2019 /data/dcp/tstdir5/gnome-software-0J8ZXZ/debconf.socket=
s文件会停止并提示:
rain torrent create -t http://bttracker.top:6969/announce -f /data/dcp/tstdir5 -o tstdir5.torrent2020-08-23 18:54:21 CRITICAL [rain] main.go:482 open /data/dcp/tstdir5/gnome-software-0J8ZXZ/debconf.socket: no such device or address
rain torrent show -f tests.torrent
rain client add -t testonly_dirsend.torrent
注意确保 原文件路径 在位置上。
