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는 인증 쿠키를 설정합니다. 쿠키를 보는 방법을 알고 있는 경우 pbx_www_photobox_xx
(xx는 로그인 위치에 따라 다름) 쿠키를 찾으십시오. 그렇지 않으면 Photobox 계정에 로그인하여 열 수 있습니다. 개발자 도구 모음(F12 누르기)에서 "응용 프로그램" 탭(Chrome)으로 이동하여 "쿠키" 드롭다운을 확장합니다. 기본 도메인(예: https://www.photobox.ie)을 클릭하고 "pbx_www_photobox_ie"라는 쿠키 값을 복사합니다(마지막 부분 "_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} '
광범위한 로깅을 보려면 명령줄(예: "pbdl -d")에서 "-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!)' ) ;
}
}
) ;
}
} ) ;
앨범 페이지의 콘텐츠를 가져오려고 시도합니다. 인증 쿠키 값과 상호 작용하려는 도메인을 전달해야 합니다.
인수
options
- 2개의 키/값 쌍을 포함해야 하는 객체입니다.
baseDomain
- photoboxDomain - 상호 작용하려는 도메인입니다. 예: "www.photobox.ie".authCookieValue
- "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - "pbx_www_photobox_xx" 쿠키의 값입니다. 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 - Boolean - 다운로드 진행 상태 표시줄을 표시할지 여부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' ) ;
}
}
) ;
MIT 라이센스를 받았습니다.
Photobox는 PhotoBox Limited의 상표이며 본 프로젝트에서의 사용은 공정 사용에 따릅니다. 저자는 Photobox와 관련이 없으며 이 프로젝트는 Photobox나 해당 서비스를 보증하지 않습니다.