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") เพื่อดูการบันทึกที่ครอบคลุม
คุณยังสามารถใช้โมดูลดาวน์โหลดโฟโต้บ็อกซ์ภายในโปรเจ็กต์ของคุณเองเพื่อดาวน์โหลดรูปภาพโดยทางโปรแกรม
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
- ฟังก์ชั่นที่ถูกเรียกเมื่อการเข้าสู่ระบบเสร็จสมบูรณ์ หากไม่สำเร็จ พารามิเตอร์แรกจะไม่เป็นค่าว่าง หากสำเร็จ สามารถดำเนินการเพิ่มเติมใดๆ ได้เลย
ตัวอย่าง
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" - 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' ) ;
}
}
) ;
ดาวน์โหลดรูปถ่ายที่เฉพาะเจาะจง หากคุณทราบ ID ของภาพถ่าย คุณสามารถดาวน์โหลดได้โดยตรง
ข้อโต้แย้ง
options
- วัตถุที่ต้องมี 2 คู่คีย์/ค่า:
id
: "xxxxxxxxx" - id ของรูปภาพที่จะดาวน์โหลด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 และโครงการนี้ไม่ได้รับรองพวกเขาหรือบริการของพวกเขา