Photobox Downloader es un módulo NodeJS y una herramienta CLI para facilitar la interacción y la descarga de álbumes/fotos. Photobox es un sitio web popular de impresión de fotografías. Si bien es posible descargar cada fotografía una por una, no hay forma de descargar un álbum completo a la vez. Este proyecto aborda esa necesidad.
Si bien la aplicación se desarrolló en www.photobox.ie, debería funcionar en cualquiera de los otros sitios hermanos (www.photobox.co.uk, www.photobox.fr, www.photobox.de, etc.)
npm install -g photobox-downloader
mkdir albums
pbdl
Una vez que ejecutes la aplicación pbdl
te pedirá 4 datos:
Cuando inicia sesión en su cuenta en Photobox, Photobox establece una cookie de autenticación; si sabe cómo ver las cookies, busque la cookie pbx_www_photobox_xx
(xx depende de dónde inicie sesión); de lo contrario, puede iniciar sesión en su cuenta de Photobox, abrir la barra de herramientas del desarrollador (presione F12), vaya a la pestaña "Aplicación" (Chrome), expanda el menú desplegable "Cookies". Haga clic en el dominio base (por ejemplo, https://www.photobox.ie), copie el valor de la cookie llamada "pbx_www_photobox_ie" (la última parte, "_ie", cambiará según su dominio).
Alternativamente, puede usar cURL para obtenerlo (el nombre de usuario y la contraseña deben estar codificados en la URL). Cambie la URL si es necesario.
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} '
Se puede acceder a un modo de depuración especial pasando el parámetro "-d" en la línea de comando (por ejemplo, "pbdl -d") para ver un registro extenso
También puede utilizar el módulo photobox-downloader dentro de sus propios proyectos para descargar fotos mediante programación.
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!)' ) ;
}
}
) ;
}
} ) ;
Intente obtener el contenido de la página de álbumes. Debe pasar el valor de la cookie de autenticación y el dominio con el que desea interactuar.
Argumentos
options
: un objeto que debe contener 2 pares clave/valor:
baseDomain
- photoboxDomain: el dominio con el que desea interactuar. Ejemplo: "www.photobox.ie".authCookieValue
- "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx": el valor de la cookie "pbx_www_photobox_xx". callback
: función que se llama una vez que se completa la operación de inicio de sesión. Si no tiene éxito, el primer parámetro no será nulo. Si tiene éxito, ahora puede realizar operaciones adicionales.
Ejemplo
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...
}
}
) ;
Descarga todas las fotos de cada álbum. Se crea una carpeta (con el nombre del álbum), todas las fotos de ese álbum se descargarán en ese álbum.
Argumentos
options
: un objeto que debe contener 2 pares clave/valor:
showProgress
: verdadero/falso - Booleano - Si se muestra una barra de estado del progreso de la descargaoutputDir
: "/alguna/carpeta/ruta" - Cadena: la ruta donde desea descargar las fotos. Cada álbum se descargará en su propia carpeta. callback
: función que se llama una vez que se han descargado todas las fotos (o si se produce un error)
Ejemplo
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!)' ) ;
}
}
) ;
Devuelve una lista de álbumes (incluye nombre, enlace/ruta relativa y la cantidad de fotos en ese álbum).
Ejemplo
var albums = photoBox . getAlbumList ( ) ;
Descarga todas las fotos de un álbum específico. Se creará una carpeta con el nombre del álbum en el directorio deseado y todas las fotos se descargarán en esa carpeta.
Argumentos
options
: un objeto que debe contener 3 pares clave/valor:
album
: albumObject: el objeto del álbum (incluido el nombre, el enlace y el recuento) que se descargará.outputDir
: "/alguna/carpeta/ruta": la ruta donde desea descargar las fotos. Cada álbum se descargará en su propia carpeta.showProgress
: verdadero/falso: muestra una elegante barra de progreso para mostrar el progreso de la descarga. callback
: función que se llama una vez que se han descargado todas las fotos (o si se produce un error)
Ejemplo
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' ) ;
}
}
) ;
Descarga una foto específica. Si conoces el ID de una foto puedes descargarla directamente.
Argumentos
options
: un objeto que debe contener 2 pares clave/valor:
id
: "xxxxxxxx" - La identificación de la foto a descargaroutputDir
: "/alguna/carpeta/ruta": la ruta donde desea descargar la foto.Ejemplo
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' ) ;
}
}
) ;
Licencia MIT.
Photobox es una marca registrada de PhotoBox Limited, su uso en este proyecto es de uso legítimo. El autor no está relacionado con Photobox y este proyecto no respalda a ellos ni a sus servicios.