लोकल API

लोकल API JPGBoost को आपकी मशीन पर एक HTTP/JSON सेवा के रूप में एक्सपोज़ करता है। यह आपको किसी भी ऐसी भाषा से इम्पोर्ट, सेटिंग्स और एक्सपोर्ट कंट्रोल करने देता है जो HTTP रिक्वेस्ट भेज सकती है।

Free में शामिल

यह सुविधा JPGBoost Free और Pro दोनों में उपलब्ध है। Free में, संसाधित की गई हर छवि दैनिक सीमा में गिनी जाती है: प्रतिदिन 50 छवियाँ और प्रति फ़ाइल 5 MB। JPGBoost Pro इन दोनों सीमाओं को हटा देता है।

API एक्टिवेट करना

API डिफ़ॉल्ट रूप से बंद रहता है। इसे सेकंडों में एक्टिवेट किया जा सकता है:

  1. Settings (⌘,) खोलें, फिर Local API टैब।
  2. एक्टिवेशन बॉक्स को चेक करें। सर्वर तुरंत शुरू हो जाता है।
  3. ज़रूरत पड़ने पर पोर्ट एडजस्ट करें। डिफ़ॉल्ट वैल्यू 51823 है।
  4. ठीक नीचे दिखाया गया ऑथेंटिकेशन टोकन कॉपी करें। एक बटन इसे कभी भी दोबारा जनरेट करने देता है।
API आपकी मशीन तक ही सीमित रहता है

पोर्ट सिर्फ़ लूपबैक इंटरफ़ेस पर ही खुला रहता है। नेटवर्क का कोई भी दूसरा डिवाइस API को एक्सेस नहीं कर सकता, भले ही उसे आपका IP एड्रेस और टोकन पता हो।

ऑथेंटिकेशन

हर रिक्वेस्ट में आपके टोकन के साथ Authorization हेडर होना ज़रूरी है। इसके बिना, या ग़लत टोकन के साथ, API 401 रिस्पॉन्स देता है।

TOKEN="<Settings में दिखाया गया टोकन>"
BASE="http://127.0.0.1:51823/v1"

curl -s -H "Authorization: Bearer $TOKEN" "$BASE/status"

रूट रेफ़रेंस

सभी रूट का प्रीफ़िक्स /v1 है और ये स्ट्रक्चर्ड JSON रिटर्न करते हैं: पहले और बाद का आकार, कम्प्रेशन का अनुपात, और हर फ़ाइल की संभावित एरर।

मेथडरूटफ़ंक्शन
GET/v1/statusइमेज की संख्या, ग्लोबल क्वालिटी और फ़ॉर्मेट
POST/v1/importपथ से फ़ाइलें इम्पोर्ट करना
POST/v1/settingsक्वालिटी, फ़ॉर्मेट बदलना या प्रोफ़ाइल लागू करना
GET/v1/imagesमौजूदा ग्रुप की इमेज लिस्ट करना
POST/v1/exportपूरे ग्रुप को किसी फ़ोल्डर में एक्सपोर्ट करना
POST/v1/clearलिस्ट खाली करना
POST/v1/images/{id}/qualityकिसी इमेज की क्वालिटी सेट करना (ग्लोबल सेटिंग पर लौटने के लिए null)
POST/v1/images/{id}/exportकिसी खास पथ पर एक इमेज को एक्सपोर्ट करना
DELETE/v1/images/{id}ग्रुप से एक इमेज हटाना
GET/v1/profilesएक्सपोर्ट प्रोफ़ाइल लिस्ट करना
POST/v1/profilesप्रोफ़ाइल बनाना या बदलना
DELETE/v1/profiles/{name}प्रोफ़ाइल डिलीट करना (URL के लिए एनकोड किया गया नाम)

चरण-दर-चरण उदाहरण

मौजूदा स्टेटस देखना

curl -s -H "Authorization: Bearer $TOKEN" "$BASE/status"

फ़ाइलें इम्पोर्ट करना

curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"paths": ["/path/to/image1.png", "/path/to/image2.jpg"]}' \
  "$BASE/import"

क्वालिटी और फ़ॉर्मेट बदलना

curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"quality": 80, "format": "webp"}' \
  "$BASE/settings"

मौजूदा इमेज लिस्ट करना

रिस्पॉन्स हर इमेज के लिए उसका आइडेंटिफ़ायर, स्टेटस, पहले और बाद का आकार, अनुपात और संभावित एरर बताता है।

curl -s -H "Authorization: Bearer $TOKEN" "$BASE/images"

ग्रुप एक्सपोर्ट करना

फ़ाइलें लिखने से पहले, एक्सपोर्ट किसी भी चल रहे कम्प्रेशन के पूरा होने का इंतज़ार करता है। यह वेट टाइम waitTimeoutSeconds से कॉन्फ़िगर किया जा सकता है, जो डिफ़ॉल्ट रूप से 30 सेकंड पर सेट होता है।

curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"folder": "/path/to/output", "waitTimeoutSeconds": 30}' \
  "$BASE/export"

लिस्ट खाली करना

curl -s -X POST -H "Authorization: Bearer $TOKEN" "$BASE/clear"

किसी खास इमेज पर काम करना

हर इमेज का एक आइडेंटिफ़ायर होता है, जो /v1/images से मिलता है। यह आपको उसे अलग से मैनेज करने देता है।

# किसी इमेज की खास क्वालिटी
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"quality": 92}' \
  "$BASE/images/<id>/quality"

# इस इमेज के लिए ग्लोबल सेटिंग पर वापस लौटना
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"quality": null}' \
  "$BASE/images/<id>/quality"

# किसी खास पथ पर एक इमेज को एक्सपोर्ट करना
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"path": "/path/to/output/photo.webp"}' \
  "$BASE/images/<id>/export"

# ग्रुप से एक इमेज हटाना
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" "$BASE/images/<id>"

API के ज़रिए एक्सपोर्ट प्रोफ़ाइल

API इंटरफ़ेस की तरह ही प्रोफ़ाइल की वही लिस्ट एक्सपोज़ करता है। प्राथमिकता के नियम को जानने के लिए एक्सपोर्ट प्रोफ़ाइल गाइड देखें। JPGBoost Free में एक ही प्रोफ़ाइल की सीमा यहाँ भी लागू होती है: POST /v1/profiles दूसरी नई प्रोफ़ाइल बनाने से इनकार करता है, लेकिन उसी नाम से मौजूदा प्रोफ़ाइल को ओवरराइट करना हमेशा स्वीकार करता है।

# प्रोफ़ाइल बनाना या बदलना (एक जैसा नाम = बदलाव)
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Web JPEG", "format": "jpeg", "quality": 70, "destinationFolder": "/path/to/output"}' \
  "$BASE/profiles"

# प्रोफ़ाइल लिस्ट करना
curl -s -H "Authorization: Bearer $TOKEN" "$BASE/profiles"

# प्रोफ़ाइल डिलीट करना (स्पेस URL में %20 बन जाता है)
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" "$BASE/profiles/Web%20JPEG"

# ग्लोबल सेटिंग्स पर प्रोफ़ाइल लागू करना
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"profile": "Web JPEG"}' "$BASE/settings"

# "folder" दोबारा बताए बिना प्रोफ़ाइल के फ़ोल्डर में एक्सपोर्ट करना
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"profile": "Web JPEG"}' "$BASE/export"
URL में प्रोफ़ाइल के नाम

डिलीट वाला रूट प्रोफ़ाइल का नाम URL में रखता है, इसलिए उसे एनकोड होना ज़रूरी है। एक स्पेस %20 बन जाता है, जैसे /v1/profiles/Web%20JPEG में।

डिफ़ॉल्ट फ़्लैग यहाँ उपलब्ध नहीं है

एक्सपोर्ट प्रोफ़ाइल गाइड में डिफ़ॉल्ट प्रोफ़ाइल देखें। वह सेटिंग सिर्फ़ Settings → Profiles से की जाती है, कभी POST /v1/profiles से नहीं। इस रूट से किसी मौजूदा प्रोफ़ाइल को अपडेट करना उसकी डिफ़ॉल्ट स्थिति को जैसी की तैसी बनाए रखता है, उसे कभी रीसेट नहीं करता।

यह जाँचना कि सब कुछ काम कर रहा है

ऐप के अंदर दो स्क्रिप्ट शामिल हैं, Contents/Resources में। इन्हें JPGBoost खुला होने और API एक्टिवेटेड होने पर चलाएँ। ये कीबोर्ड से टोकन माँगते हैं, जब तक कि TOKEN एनवायरमेंट वेरिएबल पहले से सेट न हो, जिससे इन्हें कंटीन्यूअस इंटीग्रेशन में चेन किया जा सकता है।

जाँच का सेट

यह ऑथेंटिकेशन, रूटिंग और पैरामीटर वैलिडेशन की जाँच करता है, ✓/✗ आउटपुट के साथ। डिफ़ॉल्ट रूप से सिर्फ़ रीड; अगर इसे एक इमेज दी जाए, तो यह इम्पोर्ट-एक्सपोर्ट का एक असली चक्र भी करता है।

SCRIPTS=/Applications/JPGBoost.app/Contents/Resources

"$SCRIPTS/test_local_api.sh"
"$SCRIPTS/test_local_api.sh" /path/to/image.png

गाइडेड सैर

यह ऊपर बताए गए पूरे सीक्वेंस को पढ़ने योग्य तरीक़े से चरण-दर-चरण दिखाता है, बिना टोकन के इनकार से लेकर अंतिम एक्सपोर्ट तक, स्टेटस, इम्पोर्ट, सेटिंग्स और लिस्ट से होते हुए।

"$SCRIPTS/local_api_demo.sh" /path/to/image.png
फ़ाइलें कहाँ लिखी जाती हैं

गाइडेड सैर एक अस्थायी फ़ोल्डर में एक्सपोर्ट करती है, जिसका पथ चलने के अंत में दिखाया जाता है। ऐप में खुद कुछ भी नहीं लिखा जाता।

सुरक्षा और प्राइवेसी

  • सर्वर सिर्फ़ लूपबैक इंटरफ़ेस (127.0.0.1) पर सुनता है, यानी सिर्फ़ आपके Mac से एक्सेस किया जा सकता है। यह कभी भी इंटरनेट पर एक्सपोज़ नहीं होता।
  • कोई भी इमेज इंटरनेट से होकर नहीं गुज़रती। API सिर्फ़ लोकल कम्प्रेशन इंजन को कंट्रोल करता है।
  • टोकन आपकी मशीन पर जनरेट होता है। अगर लगे कि यह किसी को पता चल गया है, जैसे कि किसी साझा स्क्रिप्ट में पेस्ट करने के बाद, तो इसे दोबारा जनरेट करें।
  • API को तब बंद कर दें जब आप इसे इस्तेमाल नहीं कर रहे: यही इसकी डिफ़ॉल्ट स्थिति है।