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} '
يمكن الوصول إلى وضع تصحيح خاص عن طريق تمرير المعلمة "-d" في سطر الأوامر (على سبيل المثال "pbdl -d") لرؤية التسجيل الشامل
يمكنك أيضًا استخدام وحدة تنزيل photobox داخل مشاريعك الخاصة لتنزيل الصور برمجيًا.
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
- كائن يجب أن يحتوي على زوجين من المفاتيح/القيمات:
baseDomain
- photoboxDomain - المجال الذي تريد التفاعل معه. مثال: "www.photobox.ie".authCookieValue
- "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - قيمة ملف تعريف الارتباط "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
- كائن يجب أن يحتوي على زوجين من المفاتيح/القيمات:
showProgress
: صحيح/خطأ - منطقي - ما إذا كان سيتم إظهار شريط الحالة الخاص بتقدم التنزيل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
: ألبوم كائن - كائن الألبوم (بما في ذلك الاسم والرابط والعدد) الذي سيتم تنزيلهoutputDir
: "/some/folder/path" - المسار إلى المكان الذي تريد تنزيل الصور إليه. سيتم تنزيل كل ألبوم في المجلد الخاص بهshowProgress
: صحيح/خطأ - أظهر شريط التقدم الرائع لإظهار تقدم التنزيل 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
- كائن يجب أن يحتوي على زوجين من المفاتيح/القيمات:
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' ) ;
}
}
) ;
معهد ماساتشوستس للتكنولوجيا مرخص.
Photobox هي علامة تجارية لشركة PhotoBox Limited، واستخدامها في هذا المشروع يخضع للاستخدام العادل. المؤلف غير مرتبط بـ Photobox وهذا المشروع لا يمثل تأييدًا له أو لخدماته.