Prepare Google Chrome's download items for CLI tool, such as curl & wget

本篇介紹如何將 Google Chrome 下載的檔案比較方便的轉移至 Command Line 下載工具 (諸如 wget / curl) 的方法。

為了獲得更多下載檔案時的控制權,我習慣將瀏覽器內建的檔案下載,轉移至其它工具。本篇介紹一種相對簡便的操作方式,相對於利用 TabFS 等奇技淫巧的方式親民得多。

Step 1 : 開啟 Google Chrome 下載頁

在正常使用 Google Chrome 下載檔案後,此時可以按下快捷鍵 Ctrl + j 來開啟下載頁的 TAB,或是按照下圖的圖形介面操作開啟。

Google Chrome Download Tab

Step 2 : 開啟 Google Chrome 下載頁的 DevTool

在 Google Chrome 下載頁的 Tab 中,按下快捷鍵 F12 開啟 Google DevTool,或是按照下圖的圖形介面操作開啟。

Google Chrome DevTool

Step 3 : 切換至 Console panel 並執行程序

接著切換至 Console panel,並將如下程序碼貼上並執行 (貼上後按下 Enter 鍵)。

Google Chrome DevTool - Console panel

/**
 * Prepare Google Chrome's download items for CLI tool, such as curl / wget / etc.
 * @copyright Yi-Feng Tzeng <yftzeng@gmail.com>
 * @license MIT License <https://spdx.org/licenses/MIT.html>
 * @tutorial
 * 1) In Google Chrome, use `Ctrl + j` to open "chrome://downloads/" tab.
 * 2) Open "Chrome DevTools", press `F12`, and change to "Console" panel.
 * 3) Paste all the contents here in "Console" panel, then press `Enter` key.
 * 4) Copy output text in your COMMAND LINE.
 * 5) Done, and have fun.
 * @see {@link https://blog.gcos.me/post/2021-05-23_prepare-google-chrome-download-items-for-cli-tool-such-as-curl-wget/} for further information.
 */

items = document.querySelector("downloads-manager").shadowRoot.querySelector("iron-list").querySelectorAll("downloads-item");

[].forEach.call(items, function (item) {
    command = "wget";
    command_args = "-c -O";
    name = item.shadowRoot.getElementById("name").innerText;
    url  = item.shadowRoot.getElementById("url").href;
    console.log(command + " " + command_args + " '" + name + "' '" + url + "'");
});

上述程序同步存放於 Gist

最後如下圖,把輸出指令複製並在 CLI 命令列模式下貼上並執行即可。

Prepare Google Chrome's download items for CLI tool, such as curl & wget