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, найдите файл cookie pbx_www_photobox_xx
(xx зависит от того, где вы входите в систему), в противном случае вы можете просто войти в свою учетную запись Photobox, открыть Панель инструментов разработчика (нажмите F12), перейдите на вкладку «Приложение» (Chrome), разверните раскрывающийся список «Файлы cookie». Нажмите на базовый домен (например, https://www.photobox.ie), скопируйте значение файла cookie с именем «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} '
Доступ к специальному режиму отладки можно получить, передав параметр «-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
— «xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx» — значение файла cookie «pbx_www_photobox_xx». 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» — String — Путь к тому месту, куда вы хотите загрузить фотографии. Каждый альбом будет загружен в свою папку. 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' ) ;
}
}
) ;
Загрузите конкретное фото. Если вы знаете идентификатор фотографии, вы можете загрузить ее напрямую.
Аргументы
options
— объект, который должен содержать 2 пары ключ/значение:
id
: «xxxxxxxxx» — идентификатор фотографии для загрузки.outputDir
: «/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, и этот проект не является рекомендацией их или их услуг.