Photobox Downloader は、アルバム/写真の操作とダウンロードを簡単にする NodeJS モジュールおよび CLI ツールです。 Photobox は人気のある写真印刷 Web サイトです。写真を 1 枚ずつダウンロードすることはできますが、アルバム全体を一度にダウンロードする方法はありません。このプロジェクトはそのニーズに応えます。
このアプリは 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) に移動し、[Cookie] ドロップダウンを展開します。ベース ドメイン (例: 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
- "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - "pbx_www_photobox_xx" Cookie の値。 callback
- ログイン操作が完了すると呼び出される関数。失敗した場合、最初のパラメータは null ではありません。成功すると、追加の操作を実行できるようになります。
例
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 ( ) ;
1 つの特定のアルバムからすべての写真をダウンロードします。アルバム名のフォルダーが目的のディレクトリに作成され、すべての写真がそのフォルダーにダウンロードされます。
引数
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' ) ;
}
}
) ;
MITライセンス取得済み。
Photobox は PhotoBox Limited の商標であり、このプロジェクトでの使用はフェアユースに基づいています。著者はPhotoboxとは無関係であり、このプロジェクトはPhotoboxまたはそのサービスを推奨するものではありません。