You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash脚本提取Transmission Remote的种子磁力链接/URL以同步种子状态

如何用Bash脚本提取Transmission Remote的种子磁力链接/URL以同步种子状态

我完全懂你的痛点——每次手动保存种子链接太繁琐,而且transmission-remote -l只给名字和基本信息,根本没法在另一台机器上还原当前的种子状态。刚好我之前也解决过这个问题,给你分享几个实用的方案:

方案一:通过Transmission Remote API直接提取链接

Transmission的远程命令行工具transmission-remote自带查看单种子详情的功能,里面就包含磁力链接或源URL。我们可以写个脚本遍历所有种子ID,批量提取这些信息:

完整脚本示例

#!/bin/bash
# 提取所有Transmission种子的磁力链接/URL并保存到文件

# 若Transmission设置了用户名密码,添加认证参数(比如 --auth 用户名:密码)
REMOTE_CMD="transmission-remote"
# 替换成你的输出文件路径
OUTPUT_FILE="torrent_sync_links.txt"

# 清空输出文件(如果已存在)
> "$OUTPUT_FILE"

echo "正在提取种子链接,将保存到 $OUTPUT_FILE..."

# 获取所有种子ID:跳过表头和最后一行的汇总行
TORRENT_IDS=$($REMOTE_CMD -l | awk 'NR>1 && !/Sum:/ {print $1}')

for ID in $TORRENT_IDS; do
    # 获取种子详情,过滤出包含磁力链接或源URL的行
    LINK_INFO=$($REMOTE_CMD -t "$ID" -i | grep -E "Magnet Link:|URL:")
    if [ -n "$LINK_INFO" ]; then
        echo "种子ID $ID:" >> "$OUTPUT_FILE"
        echo "$LINK_INFO" >> "$OUTPUT_FILE"
        echo "---" >> "$OUTPUT_FILE"
    fi
done

echo "提取完成!"

脚本说明

  1. 获取种子ID:用transmission-remote -l列出所有种子,再通过awk过滤掉无用的表头和汇总行,只保留种子ID
  2. 遍历提取链接:对每个种子ID,用-t [ID] -i查看详情,再用grep匹配包含Magnet Link:或URL:的行
  3. 保存结果:把每个种子的ID和链接信息写入文件,加上分隔线方便后续查看

优化技巧

  • 如果你的Transmission需要认证,把REMOTE_CMD改成transmission-remote --auth 你的用户名:你的密码
  • 若想只保留纯链接(去掉前缀),可以把提取链接的行改成:
    LINK_INFO=$($REMOTE_CMD -t "$ID" -i | grep -E "Magnet Link:|URL:" | sed 's/.*: //')
    
  • 要在另一台机器批量导入链接,只需执行:
    xargs -L 1 transmission-remote -a < torrent_sync_links.txt
    

(前提是文件里每行都是纯链接)

方案二:从本地种子文件提取链接(需访问种子存储目录)

如果你的Transmission把种子文件保存在本地,也可以用transmission-show命令直接从.torrent文件中提取链接:

脚本示例

#!/bin/bash
# 从本地种子文件提取链接
# 替换成你的Transmission种子存储目录(不同系统路径可能不同)
TORRENT_DIR="/var/lib/transmission-daemon/downloads/torrents"
OUTPUT_FILE="torrent_links_from_files.txt"

> "$OUTPUT_FILE"

echo "正在从种子文件提取链接..."

for TORRENT_FILE in "$TORRENT_DIR"/*.torrent; do
    LINK_INFO=$(transmission-show "$TORRENT_FILE" | grep -E "Magnet Link:|URL:")
    if [ -n "$LINK_INFO" ]; then
        echo "$(basename "$TORRENT_FILE"):" >> "$OUTPUT_FILE"
        echo "$LINK_INFO" >> "$OUTPUT_FILE"
        echo "---" >> "$OUTPUT_FILE"
    fi
done

echo "提取完成!"

适用场景

这个方案适合你能直接访问Transmission的种子存储目录的情况,优点是不需要依赖远程连接,直接读取本地文件即可。


备注:内容来源于stack exchange,提问作者Federico De Rocco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 12:28:02