快轉到主要內容

gallery-dl教學:大量下載IG、X、Pixiv圖片的命令行工具

· 民國115年丙午年
·
切換正體/简体 ·
分類 資訊科技 電腦軟體分享
標籤 Yt-Dlp Pixiv Twitter Facebook
目錄

如果你看到喜歡的帳號po的圖,你會一張一張右鍵存檔嗎?這樣太沒效率了。

gallery-dl是一款用Python寫成的命令行圖片下載工具,專門用來大量抓圖之用。

例如,你可以下載某個Instagram帳號的所有公開圖片。

或者大量下載Twitter (X)的貼文圖片

x.webp

根據官網列表,gallery-dl支援許多圖片分享網站,例如Facebook、Instagram、X、Reddit、Tumblr、Pixiv、ArtStation、Danbooru、Patreon、Fantia、BOOTH、E-hentai、Iwara、Imgur、Wikipedia、4chan、5ch等等。

你可以用類似的指令語法大量下載。

針對需要登入會員才能用的網站,gallery-dl也能用指令登入網站,或者透過讀取cookie的方式下載。

1. gallery-dl安裝方式#

gallery-dl是自由軟體,開發工作主要在Codeberg進行,issue請到這裡回報。

Linux
#

如果是滾動發行版,如Arch Linux,直接從套件庫安裝:

sudo pacman -S gallery-dl

Ubuntu可能收錄的是舊版,因此手動到Codeberg下載二進位檔安裝到系統:

chmod +x gallery-dl.bin

sudo mv gallery-dl.bin /usr/local/bin/gallery-dl

安裝之後設定檔應放到~/.config/gallery-dl/gallery-dl.json

Windows
#

winget安裝

winget install -e --id mikf.gallery-dl

安裝之後設定檔應放到%APPDATA%\gallery-dl\config.json

macOS
#

Homebrew安裝

brew install gallery-dl

安裝之後設定檔應放到~/.config/gallery-dl/gallery-dl.json

Python套件管理器
#

跨平臺的安裝方式。不過因為現在的Linux發行版會阻止pip安裝套件到系統,推薦用uv安裝獨立的環境:

uv tool install gallery-dl

3. 推薦依賴項目
#

如果你要用gallery-dl抓的東西含有影片,推薦一併安裝yt-dlp和ffmpeg比較好處理。

註解:如果你gallery-dl是用uv安裝的,則yt-dlp也要用uv安裝。

4. gallery-dl基本語法#

  1. gallery-dl會在目前執行的路徑建立gallery-dl資料夾,存放下載的檔案。

  2. 用法是在下載資料夾,按右鍵開啟終端機。

  3. 在gallery-dl後面加上要下載的網址和參數。也可以只加入網址,讓gallery-dl讀取gallery-dl.json設定檔內容來操作。

gallery-dl "網址" "參數"
  1. 如果要一次下載多個網址,將網址一排一個,存成urls.txt文字檔案,然後傳給gallery-dl讀取:
gallery-dl -i urls.txt "參數" 
  1. 查看幫助:
gallery-dl --help
  1. 下載時候可以傳入參數設定行為。或者是在gallery-dl.json定義。
  • --cookies:讀取cookie來登入網站
  • --username--password:輸入帳號密碼來登入網站
  • --postprocessor 啟用後處理器。需要在gallery-dl.json裡面定義操作
  • --write-metadata 將圖片的元資料另存為.json檔案方便批次處理,通常是Danbooru這種圖站才有標籤
  • --write-info-json 將圖站畫廊的元資料另存為.json檔案
  • --write-tags 圖站圖片標籤的元資料另存為.json檔案
  • --zip 將下載的檔案存為.zip
  • --cbz 將下載的檔案存為.cbz漫畫檔
  • --mtime 'status[date]' 依照網頁圖片的時間寫入上次修改時間到檔案
  • --rename 重新命名重複檔案
  • --ugoira 'webm', 'mp4', 'gif', 'vp8', 'vp9', 'vp9-lossless', 'copy', 'zip' 將Pixiv的動圖轉檔為影片格式
  • --exec 下載的時候對檔案操作的指令,例如用ImageMagick裁圖
  • --exec-after 下載之後對檔案操作的指令

5. 準備要下載網站的cookie
#

  1. cookie是瀏覽器記錄使用者狀態的檔案,許多網站使用cookie暫時儲存使用者的登入資訊。有些網站會要求登入帳號否則不給看。將cookie傳入gallery-dl(使用--cookies 檔案路徑參數)就能讓網站認為你有登入帳號,進而允許下載圖片。雖然gallery-dl尚有用oauth指令登入各大網站的方法,不過我覺得讀cookie比較快。

  2. 使用cookie要注意:由於cookie含有敏感個人隱私,請勿隨意外流。gallery-dl僅會讀取cookie,不會將敏感資料上傳到第三方伺服器。此外,大量下載圖片可能會導致你的IP被鎖,甚至連帳號也被ban。使用gallery-dl這個工具除了要小心精盡人亡之外,還要小心下載過頭帳號被鎖。如果你一天需要下載好幾千張的照片,考慮用副帳號去抓。

  3. 那麼要如何取得cookie呢?安裝匯出cookie的擴充套件。Firefox安裝Export Cookies。Chrome則是EditThisCookie

  4. 在瀏覽器登入帳號,下載cookie為.txt檔案。

    export-cookies.webp

  5. 務必檢查cookie是否不為空白才有效。

6. 使用例
#

下載Instagram照片
#

gallery-dl可以下載單篇貼文,也可以一次抓整個帳號公開的全部照片。

由於Instagram網頁需要登入才能看照片,必須傳入cookie。

例如下載單篇貼文的照片,傳入網址就可以了:

gallery-dl "https://www.instagram.com/umi_portrait/p/DZMu5YPEgPA/" \
--cookies instagram-cookie.txt

下載所有公開照片的話,目前有個奇怪的限制:Instagram要填寫帳號數字ID,不能填寫英文網址。

例如:https://www.instagram.com/umi_portrait/,透過第三方網站查詢Instagram帳號ID,將網址改為https://www.instagram.com/id:5737467935/再傳入cookie下載:

gallery-dl "https://www.instagram.com/id:5737467935" \
--cookies instagram-cookie.txt

下載X的照片
#

gallery-dl傳入貼文網址就是只下載圖片。傳入帳號網址則是抓所有公開圖片。從最新的開始抓。

X網頁需要登入才能看到R18照片,建議傳入cookie。

傳入貼文網址就是只下載圖片。傳入帳號網址則是抓所有公開圖片。從最新的開始抓。

例如下載https://x.com/ebihurya332的最新照片:

gallery-dl "https://x.com/ebihurya332" \
--cookies x-cookie.txt

下載Pixiv的圖片
#

gallery-dl傳入貼文網址就是只下載圖片。傳入帳號網址則是抓所有公開圖片。從最新的開始抓。

  1. Pixiv網頁需要登入才能看到R18照片。而且Pixiv有嚴格的防爬蟲機制,不能用傳入cookie的方法下載,必須模擬Android客戶端登入的方式取得token。

  2. 執行以下指令,依照畫面指示。打開瀏覽器的Pixiv頁面,按下F12取得token:

gallery-dl oauth:pixiv
  1. 然後就能下載圖片了。

如果要下載單篇畫廊的插畫,傳入網址:

gallery-dl "https://www.pixiv.net/artworks/65677525"

下載含有動圖的插畫並轉為.mp4方便播放:

gallery-dl "https://www.pixiv.net/artworks/140158459" \
--ugoira mp4 

下載該帳號最近所有插圖:

gallery-dl "https://www.pixiv.net/users/355065"

相關文章


感謝您的閱讀。我寫作是為了誠實表達想法,而不是追逐社群互動與流量。我很樂意傾聽你在仔細閱讀我文章之後的心得。若有內容勘誤 or 技術問題 or 回饋想法,歡迎透過本站「關於」頁面的Email與我聯絡。