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

如何修改AppleScript应用使其支持同时处理多个yt-dlp下载URL输入

你当前的脚本是同步执行的,do shell script默认会等待命令执行完成才会返回,导致open location事件处理程序被阻塞,后续传入的URL请求就不会被响应,按照以下方案修改即可:


方案1:后台异步执行yt-dlp(最简单,直接实现多任务同时跑)

直接修改你的AppleScript代码如下:

#!/usr/bin/osascript
on open location input
    do shell script "/usr/local/bin/yt-dlp  " & quoted form of input & " > /dev/null 2>&1 &"
end open location

说明:

  • 末尾加&是让shell命令在后台运行,不需要等待执行完成就立刻返回
  • > /dev/null 2>&1是把命令的标准输出和错误输出都丢弃,避免AppleScript等待输出返回导致阻塞。如果你需要查看yt-dlp的运行日志,可以把路径改成你指定的日志文件,比如> ~/Documents/yt-dlp-log.txt 2>&1 &
  • 如果你的Mac是M系列芯片,yt-dlp通过homebrew安装的话默认路径是/opt/homebrew/bin/yt-dlp,可以在终端执行which yt-dlp确认实际路径后替换代码里的路径即可

方案2:队列执行(适合限制同时运行的yt-dlp数量,避免带宽占满)

如果不希望同时跑太多下载任务占用过多带宽,可以用队列模式,实现也很简单:

  1. 修改后的AppleScript代码如下:
#!/usr/bin/osascript
on open location input
    do shell script "echo " & quoted form of input & " >> ~/.yt-dlp-queue.txt"
    do shell script "pgrep -f 'yt-dlp-queue-worker' || nohup /usr/local/bin/yt-dlp-queue-worker.sh > /dev/null 2>&1 &"
end open location
  1. 新建/usr/local/bin/yt-dlp-queue-worker.sh文件,内容如下,记得在终端执行chmod +x /usr/local/bin/yt-dlp-queue-worker.sh给执行权限:
#!/bin/zsh
while [ -s ~/.yt-dlp-queue.txt ]; do
    # 取出队列第一行的URL
    url=$(head -n 1 ~/.yt-dlp-queue.txt)
    # 删除队列第一行
    sed -i '' 1d ~/.yt-dlp-queue.txt
    # 执行下载
    /usr/local/bin/yt-dlp "$url"
done

这个方案每次只会运行一个下载任务,后续加入的URL会排队依次执行,不会同时占用过多带宽。


修改完成后重新用Script Editor导出.app覆盖原来的应用即可,不需要修改Finicky的配置。

内容的提问来源于stack exchange,提问作者Dillon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:36:02