ljg-x-download
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chineseljg-x-download
ljg-x-download
从 X (Twitter) 链接下载图片或视频到 ~/Downloads。
Download images or videos from X (Twitter) links to ~/Downloads.
依赖
Dependencies
- (已安装)
yt-dlp
- (already installed)
yt-dlp
执行流程
Execution Steps
1. 解析输入
1. Parse Input
从用户输入中提取 X/Twitter URL。支持的格式:
https://x.com/user/status/123456https://twitter.com/user/status/123456https://mobile.twitter.com/user/status/123456- 带查询参数的 URL(yt-dlp 自动处理 等追踪参数)
?s=20
缩短链接(t.co)先解析:
curl -Ls -o /dev/null -w '%{url_effective}' "SHORT_URL"如果用户没有提供 URL,用 AskUserQuestion 要求提供。
Extract the X/Twitter URL from user input. Supported formats:
https://x.com/user/status/123456https://twitter.com/user/status/123456https://mobile.twitter.com/user/status/123456- URLs with query parameters (yt-dlp automatically handles tracking parameters like )
?s=20
Resolve shortened links (t.co) first:
curl -Ls -o /dev/null -w '%{url_effective}' "SHORT_URL"If the user does not provide a URL, use AskUserQuestion to request it.
2. 尝试直接下载(视频优先)
2. Attempt Direct Download (Video Priority)
直接用 yt-dlp 下载,无需先探测:
bash
yt-dlp -o "~/Downloads/%(uploader)s_%(id)s.%(ext)s" "URL"如果成功(视频推文),完成。跳到步骤 4 汇报结果。
Download directly with yt-dlp without prior detection:
bash
yt-dlp -o "~/Downloads/%(uploader)s_%(id)s.%(ext)s" "URL"If successful (video tweet), the process is complete. Proceed to step 4 to report the result.
3. 视频下载失败时,提取图片
3. Extract Images When Video Download Fails
yt-dlp 对纯图片推文可能报错。此时用 提取图片 URL:
--dump-jsonbash
yt-dlp --dump-json "URL" 2>&1判断结果:
- JSON 中有 数组 → 提取图片 URL
thumbnails - JSON 为空或报错 → 推文无媒体,告知用户"该推文不包含可下载的图片或视频"
no video - 报错含 /
login→ 需要登录(见故障排除)authentication - 其他错误 → 报告具体错误信息
图片下载:
从 JSON 的 数组提取所有图片 URL,替换 或 为 获取原图,然后逐一下载:
thumbnailsname=smallname=mediumname=origbash
curl -L -o ~/Downloads/tweet_ID_1.jpg "https://pbs.twimg.com/media/xxx?format=jpg&name=orig"
curl -L -o ~/Downloads/tweet_ID_2.jpg "https://pbs.twimg.com/media/yyy?format=jpg&name=orig"文件扩展名跟随 URL 中的 参数(jpg/png/webp)。
formatyt-dlp may throw errors for image-only tweets. In this case, use to extract image URLs:
--dump-jsonbash
yt-dlp --dump-json "URL" 2>&1Result Judgment:
- If the JSON contains a array → Extract image URLs
thumbnails - If the JSON is empty or throws a error → The tweet has no media, inform the user: "This tweet does not contain downloadable images or videos"
no video - If the error contains /
login→ Login is required (see Troubleshooting)authentication - Other errors → Report the specific error message
Image Download:
Extract all image URLs from the array in the JSON, replace or with to get the original image, then download them one by one:
thumbnailsname=smallname=mediumname=origbash
curl -L -o ~/Downloads/tweet_ID_1.jpg "https://pbs.twimg.com/media/xxx?format=jpg&name=orig"
curl -L -o ~/Downloads/tweet_ID_2.jpg "https://pbs.twimg.com/media/yyy?format=jpg&name=orig"The file extension follows the parameter in the URL (jpg/png/webp).
format4. 汇报结果
4. Report Results
下载完成后,用 列出已下载的文件:文件名、大小、路径。
ls -lhAfter downloading is complete, use to list the downloaded files: file name, size, and path.
ls -lh故障排除
Troubleshooting
需要登录
Login Required
yt-dlp 报错含 / / 时,加 :
loginSign inage-restricted--cookies-from-browser chromebash
yt-dlp --cookies-from-browser chrome -o "~/Downloads/%(uploader)s_%(id)s.%(ext)s" "URL"When yt-dlp reports errors containing / / , add :
loginSign inage-restricted--cookies-from-browser chromebash
yt-dlp --cookies-from-browser chrome -o "~/Downloads/%(uploader)s_%(id)s.%(ext)s" "URL"推文无媒体
No Media in Tweet
纯文字推文没有可下载的媒体。告知用户即可。
Text-only tweets have no downloadable media. Simply inform the user.