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 没有任何关系,该项目并不是对他们或其服务的认可。