是否有命令行方法来判断 Chromium 中当前的所有下载是否已完成?

是否有命令行方法来判断 Chromium 中当前的所有下载是否已完成?

是否有命令行方法来确定 Chromium 中当前的所有下载是否已完成?我所说的下载是指从 Youtube 下载视频。我不想仅仅依靠查看 Chromium 的“下载”选项卡来查看是否有任何下载正在进行。是否有我可以运行的命令或文件可以检查下载是否正在进行?

答案1

如果您知道正在下载的文件的路径(例如,如果将它们全部放在一个目录中),则可以检查这些文件是否仍然打开。

lsof ~/Downloads

当 Chrome 完成编写它们时,您可以收到通知(假设Linux:

inotifywait -e close_write ~/Downloads

如果你想列出所有待下载(或已完成的下载),一个笨拙的方法是访问 Chrome 的数据库。由于Chrome保持数据库锁定,你无法直接访问它(至少不能使用命令行sqlite3工具),你需要制作文件的副本,并且有很小的机会你会得到不一致的视图,所以这并不完全可靠,但对于休闲使用来说应该足够了。

tmp=$(mktemp)
cp ~/.config/google-chrome/Default/Downloads "$tmp"
echo 'select target_path from downloads where end_time is null;' | sqlite3 "$tmp"
rm "$tmp"

最好的方法可能是让 Chrome 在下载结束时通知您。扩展下载通知程序这样做,但它有副作用,并为您提供桌面通知,而不是您可以从命令行轻松使用的东西。代码的关键部分似乎是这样的:

chrome.downloads.onChanged.addListener(function(obj) {
    if (obj.hasOwnProperty("state") && obj.state.current === "complete") {
        chrome.downloads.search({id: did}, function(items) {
            filename = items[0].filename;
        }
    }
});

需要填写一种与外界通信的方法(也许在扩展程序目录中的某个位置创建一个文件),这超出了我的 Chrome 扩展程序编程知识。

相关内容