Photobox Downloader 是一個 NodeJS 模組和 CLI 工具,可以輕鬆地與相簿/照片進行互動和下載。 Photobox 是一個流行的照片列印網站,雖然可以一張一張地下載每張照片,但無法一次下載整個相簿。該項目滿足了這項需求。
雖然該應用程式是針對 www.photobox.ie 開發的,但它應該適用於任何其他姊妹網站(www.photobox.co.uk、www.photobox.fr、www.photobox.de 等...)
npm install -g photobox-downloader
mkdir albums
pbdl
運行pbdl
應用程式後,它會要求您提供 4 項資訊:
當您登入 Photobox 帳戶時,Photobox 會設定一個驗證 cookie,如果您知道如何查看 cookie,請尋找pbx_www_photobox_xx
(xx 取決於您登入的位置)cookie,否則您可以直接登入您的 Photobox 帳戶,開啟開發人員工具欄(按F12),前往「應用程式」標籤(Chrome),展開「Cookies」下拉式選單。點擊基本網域(例如 https://www.photobox.ie),複製名為「pbx_www_photobox_ie」的 cookie 值(最後一部分「_ie」將根據您的網域而變化)。
或者,您可以使用 cURL 來取得它(使用者名稱和密碼必須進行 url 編碼)。如果需要,請更改 URL。
export EMAIL= " yourmemail%40gmail.com " # url encoded email address
export PASS= " password "
curl ' https://www.photobox.ie/ ' -H ' User-Agent: photobox-downloader '
-H ' Content-Type: application/x-www-form-urlencoded '
-H ' Accept: text/html,*/*;q=0.8 '
-H ' Cache-Control: max-age=0 ' --cookie-jar -
--data ' global_action=login&email=$EMAIL&password=$PASS&auto_sign_in=on&login=Sign+in '
--compressed | grep " pbx_www_photobox " | awk ' {print "Authentication cookie: " $NF} '
可以透過在命令列傳遞“-d”參數(例如“pbdl -d”)來存取特殊的偵錯模式,以查看大量日誌記錄
您也可以在自己的專案中使用 photobox-downloader 模組以程式設計方式下載照片。
var photoBox = require ( 'photobox-downloader' ) ( logger ) ; // logger could be Winston logger or just: console
var config = {
"baseDomain" : "www.photobox.ie" ,
// change "authCookieValue" value to your own authentication cookie value, see "login" section below for more info
"authCookieValue" : "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
} ;
// Login and download all photos from every album
photoBox . login ( config , function ( err ) {
if ( err ) {
console . log ( 'ERROR! Something went wrong logging in, check your authCookieValue!' ) ;
console . log ( err ) ;
} else {
console . log ( 'Logged into Photobox!' ) ;
photoBox . downloadAll (
{
showProgress : true ,
outputDir : __dirname + '/out'
} ,
function ( err ) {
if ( err ) {
console . log ( err ) ;
} else {
console . log ( 'Done! All photos downloaded (that was easy!)' ) ;
}
}
) ;
}
} ) ;
嘗試取得相簿頁面的內容。您需要傳遞身份驗證 cookie 值和您希望與之互動的網域。
論點
options
- 必須包含 2 個鍵/值對的物件:
baseDomain
- photoboxDomain - 您要與之互動的網域。範例:「www.photobox.ie」。authCookieValue
- “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx” - “pbx_www_photobox_xx”cookie 的值。 callback
- 登入操作完成後呼叫的函數。如果不成功,第一個參數將不為空。如果成功,現在可以執行任何其他操作。
例子
photoBox . login (
{
baseDomain : 'www.photobox.ie' ,
authCookieValue : 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
} ,
function ( err ) {
if ( err ) {
console . log ( 'ERROR! Something went wrong logging in!' ) ;
console . log ( err ) ;
} else {
console . log ( 'Logged into Photobox!' ) ;
// Now run any additional command...
}
}
) ;
下載每個相簿中的每張照片。將建立一個資料夾(帶有相簿名稱),該相簿中的所有照片都將下載到該相簿中。
論點
options
- 必須包含 2 個鍵/值對的物件:
showProgress
: true/false - 布林值 - 是否顯示下載進度的狀態列outputDir
: "/some/folder/path" - 字串 - 您希望將照片下載到的位置的路徑。每個專輯都會下載到自己的資料夾中callback
- 下載所有照片後呼叫的函數(或拋出錯誤)
例子
photoBox . downloadAll (
{
showProgress : true ,
outputDir : __dirname + '/out'
} ,
function callback ( err ) {
if ( err ) {
console . log ( err ) ;
} else {
console . log ( 'Finished, all photos in every album have now been downloaded (that was easy!)' ) ;
}
}
) ;
返回相簿清單(包括命名、相對連結/路徑以及該相簿中的照片數量。
例子
var albums = photoBox . getAlbumList ( ) ;
下載特定相簿中的所有照片。將在所需目錄中建立以相簿名稱命名的資料夾,並且所有照片都會下載到該資料夾中。
論點
options
- 必須包含 3 個鍵/值對的物件:
album
: albumObject - 要下載的專輯物件(包括名稱、連結和數量)outputDir
: "/some/folder/path" - 您要將照片下載到的路徑。每個專輯都會下載到自己的資料夾中showProgress
: true/false - 顯示精美的進度條以顯示下載進度callback
- 下載所有照片後呼叫的函數(或拋出錯誤)
例子
var albums = photoBox . getAlbumList ( ) ;
photoBox . downloadAlbum (
{
album : albums [ 0 ] , // download first album
outputDir : __dirname + '/out' ,
showProgress : true
} ,
function ( err ) {
if ( err ) {
console . log ( 'ERROR! Something went wrong downloading album!' ) ;
console . log ( err ) ;
} else {
console . log ( 'Album has been downloaded to the outputDir' ) ;
}
}
) ;
下載特定照片。如果您知道照片的 ID,則可以直接下載。
論點
options
- 必須包含 2 個鍵/值對的物件:
id
: "xxxxxxxx" - 要下載的照片的 idoutputDir
: "/some/folder/path" - 您要將照片下載到的路徑。例子
photoBox . downloadAlbum (
{
id : "xxxxxxxx" , // The id of the photo to download
outputDir : __dirname + '/out'
} , function ( err ) {
if ( err ) {
console . log ( 'ERROR! Something went wrong downloading photo!' ) ;
console . log ( err ) ;
} else {
console . log ( 'Photo has been downloaded to the outputDir' ) ;
}
}
) ;
麻省理工學院許可。
Photobox 是 PhotoBox Limited 的商標,其在本項目中的使用屬於合理使用。作者與 Photobox 沒有任何關係,該項目並不是對他們或其服務的認可。