Photobox Downloader est un module NodeJS et un outil CLI permettant de faciliter l'interaction et le téléchargement d'albums/photos. Photobox est un site Web d'impression de photos populaire. Bien qu'il soit possible de télécharger chaque photo une par une, il n'existe aucun moyen de télécharger un album entier à la fois. Ce projet répond à ce besoin.
Bien que l'application ait été développée sur www.photobox.ie, elle devrait fonctionner sur n'importe lequel des autres sites sœurs (www.photobox.co.uk, www.photobox.fr, www.photobox.de, etc...)
npm install -g photobox-downloader
mkdir albums
pbdl
Une fois que vous aurez lancé l'application pbdl
, elle vous demandera 4 informations :
Lorsque vous vous connectez à votre compte Photobox, Photobox installe un cookie d'authentification, si vous savez comment visualiser les cookies, recherchez le cookie pbx_www_photobox_xx
(xx dépend de l'endroit où vous vous connectez), sinon vous pouvez simplement vous connecter à votre compte Photobox, ouvrir dans la barre d'outils du développeur (appuyez sur F12), accédez à l'onglet "Application" (Chrome), développez la liste déroulante "Cookies". Cliquez sur le domaine de base (par exemple https://www.photobox.ie), copiez la valeur du cookie appelé "pbx_www_photobox_ie" (la dernière partie, "_ie", changera en fonction de votre domaine).
Alternativement, vous pouvez utiliser cURL pour l'obtenir (le nom d'utilisateur et le mot de passe doivent être codés en URL). Modifiez l'URL si nécessaire.
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} '
Un mode de débogage spécial est accessible en passant le paramètre "-d" sur la ligne de commande (par exemple "pbdl -d") pour voir une journalisation étendue
Vous pouvez également utiliser le module photobox-downloader dans vos propres projets pour télécharger des photos par programme.
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!)' ) ;
}
}
) ;
}
} ) ;
Essayez d'obtenir le contenu de la page des albums. Vous devez transmettre la valeur du cookie d'authentification et le domaine avec lequel vous souhaitez interagir.
Arguments
options
- Un objet qui doit contenir 2 paires clé/valeur :
baseDomain
- photoboxDomain - Le domaine avec lequel vous souhaitez interagir. Exemple : "www.photobox.ie".authCookieValue
- "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - La valeur du cookie "pbx_www_photobox_xx". callback
- Fonction appelée une fois l'opération de connexion terminée. En cas d'échec, le premier paramètre ne sera pas nul. En cas de succès, vous pouvez désormais effectuer des opérations supplémentaires.
Exemple
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...
}
}
) ;
Télécharge chaque photo de chaque album. Un dossier (avec le nom de l'album) est créé, toutes les photos de cet album seront téléchargées dans cet album.
Arguments
options
- Un objet qui doit contenir 2 paires clé/valeur :
showProgress
: true/false - Boolean - S'il faut afficher une barre d'état de la progression du téléchargementoutputDir
: "/some/folder/path" - String - Le chemin vers l'endroit où vous souhaitez télécharger les photos. Chaque album sera téléchargé dans son propre dossier callback
- Fonction qui est appelée une fois que toutes les photos ont été téléchargées (ou si une erreur est générée)
Exemple
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!)' ) ;
}
}
) ;
Renvoie une liste d'albums (incluant le nom, le lien/chemin relatif et le nombre de photos dans cet album.
Exemple
var albums = photoBox . getAlbumList ( ) ;
Télécharge toutes les photos d'un album spécifique. Un dossier avec le nom de l'album sera créé dans le répertoire souhaité et toutes les photos seront téléchargées dans ce dossier.
Arguments
options
- Un objet qui doit contenir 3 paires clé/valeur :
album
: albumObject - L'objet album (y compris le nom, le lien et le nombre) à téléchargeroutputDir
: "/some/folder/path" - Le chemin vers l'endroit où vous souhaitez télécharger les photos. Chaque album sera téléchargé dans son propre dossiershowProgress
: true/false - Afficher une barre de progression sophistiquée pour afficher la progression du téléchargement callback
- Fonction qui est appelée une fois que toutes les photos ont été téléchargées (ou si une erreur est générée)
Exemple
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' ) ;
}
}
) ;
Téléchargez une photo spécifique. Si vous connaissez l'identifiant d'une photo, vous pouvez la télécharger directement.
Arguments
options
- Un objet qui doit contenir 2 paires clé/valeur :
id
: "xxxxxxxx" - L'identifiant de la photo à téléchargeroutputDir
: "/some/folder/path" - Le chemin vers l'endroit où vous souhaitez télécharger la photo.Exemple
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' ) ;
}
}
) ;
Licence MIT.
Photobox est une marque commerciale de PhotoBox Limited, son utilisation dans ce projet est soumise à un usage équitable. L'auteur n'est pas lié à Photobox et ce projet ne constitue pas une approbation de leur part ou de leurs services.