মিডিয়া আইটেম আপলোড একটি দ্বি-পদক্ষেপ প্রক্রিয়া:
- আপলোড এন্ডপয়েন্ট ব্যবহার করে একটি Google সার্ভারে আপনার মিডিয়া ফাইলের বাইট আপলোড করুন। এটি একটি আপলোড টোকেন প্রদান করে যা আপলোড করা বাইট সনাক্ত করে।
- ব্যবহারকারীর Google ফটো অ্যাকাউন্টে একটি মিডিয়া আইটেম তৈরি করতে আপলোড টোকেন সহ একটি ব্যাচক্রিট কল ব্যবহার করুন৷
এই পদক্ষেপগুলি একটি একক মিডিয়া আইটেম আপলোড করার প্রক্রিয়ার রূপরেখা দেয়৷ আপনি যদি একাধিক মিডিয়া আইটেম আপলোড করে থাকেন (খুব সম্ভব যেকোন প্রোডাকশন অ্যাপ্লিকেশনের জন্য), আপনার আপলোড দক্ষতা উন্নত করার জন্য আপলোডগুলির জন্য সেরা অনুশীলনগুলি পর্যালোচনা করুন৷
আপনি শুরু করার আগে
প্রয়োজনীয় অনুমোদনের সুযোগ
কোনো ব্যবহারকারীর লাইব্রেরি বা অ্যালবামে মিডিয়া আইটেম আপলোড করার জন্য photoslibrary.appendonly
সুযোগ প্রয়োজন৷ স্কোপ সম্পর্কে আরও তথ্যের জন্য, অনুমোদনের সুযোগগুলি দেখুন।
স্বীকৃত ফাইলের ধরন এবং আকার
আপনি এই টেবিলে তালিকাভুক্ত ফাইল প্রকার আপলোড করতে পারেন।
মিডিয়া টাইপ | স্বীকৃত ফাইল প্রকার | সর্বোচ্চ ফাইলের আকার |
---|---|---|
ফটো | AVIF, BMP, GIF, HEIC, ICO, JPG, PNG, TIFF, WEBP, কিছু RAW ফাইল। | 200 এমবি |
ভিডিও | 3GP, 3G2, ASF, AVI, DIVX, M2T, M2TS, M4V, MKV, MMV, MOD, MOV, MP4, MPG, MTS, TOD, WMV। | 20 জিবি |
ধাপ 1: বাইট আপলোড করা হচ্ছে
আপলোড অনুরোধ ব্যবহার করে Google এ বাইট আপলোড করুন। একটি সফল আপলোড অনুরোধ একটি কাঁচা পাঠ্য স্ট্রিং আকারে একটি আপলোড টোকেন প্রদান করে৷ batchCreate
কলের মাধ্যমে মিডিয়া আইটেম তৈরি করতে এই আপলোড টোকেনগুলি ব্যবহার করুন৷
বিশ্রাম
POST অনুরোধ শিরোনামে নিম্নলিখিত ক্ষেত্রগুলি অন্তর্ভুক্ত করুন:
হেডার ক্ষেত্র | |
---|---|
Content-type | application/octet-stream সেট করুন। |
X-Goog-Upload-Content-Type | প্রস্তাবিত. আপনি যে বাইটগুলি আপলোড করছেন তার MIME প্রকারে সেট করুন৷ সাধারণ MIME প্রকারের মধ্যে রয়েছে image/jpeg , image/png , এবং image/gif । |
X-Goog-Upload-Protocol | raw সেট করুন। |
এখানে একটি POST অনুরোধ শিরোনাম আছে:
POST https://photoslibrary.googleapis.com/v1/uploads Authorization: Bearer oauth2-token Content-type: application/octet-stream X-Goog-Upload-Content-Type: mime-type X-Goog-Upload-Protocol: raw
অনুরোধের অংশে, ফাইলের বাইনারি অন্তর্ভুক্ত করুন:
media-binary-data
এই POST অনুরোধটি সফল হলে, একটি আপলোড টোকেন যা একটি কাঁচা পাঠ্য স্ট্রিং আকারে, প্রতিক্রিয়া বডি হিসাবে ফেরত দেওয়া হয়৷ মিডিয়া আইটেম তৈরি করতে, batchCreate
কলে এই পাঠ্য স্ট্রিংগুলি ব্যবহার করুন।
upload-token
ছবির জন্য প্রস্তাবিত ফাইলের আকার 50 MB এর কম। 50 MB-এর চেয়ে বড় ফাইলগুলি কার্যক্ষমতা সংক্রান্ত সমস্যাগুলির জন্য প্রবণ৷
Google ফটো লাইব্রেরি API পুনরায় শুরু করা আপলোড সমর্থন করে। একটি পুনঃসূচনাযোগ্য আপলোড আপনাকে একটি মিডিয়া ফাইলকে একাধিক বিভাগে বিভক্ত করতে এবং একবারে একটি বিভাগ আপলোড করতে দেয়।
ধাপ 2: একটি মিডিয়া আইটেম তৈরি করা
আপনার মিডিয়া ফাইলগুলির বাইট আপলোড করার পরে, আপনি আপলোড টোকেন ব্যবহার করে Google ফটোতে মিডিয়া আইটেম হিসাবে তৈরি করতে পারেন৷ একটি আপলোড টোকেন তৈরি হওয়ার পর এক দিনের জন্য বৈধ। একটি মিডিয়া আইটেম সর্বদা ব্যবহারকারীর লাইব্রেরিতে যোগ করা হয়। মিডিয়া আইটেমগুলি শুধুমাত্র আপনার অ্যাপ দ্বারা তৈরি অ্যালবামে যোগ করা যেতে পারে। আরও তথ্যের জন্য, অনুমোদনের সুযোগগুলি দেখুন।
নতুন মিডিয়া আইটেম তৈরি করতে, newMediaItems
এর একটি তালিকা নির্দিষ্ট করে mediaItems.batchCreate
কল করুন। প্রতিটি newMediaItem
একটি আপলোড টোকেন থাকে যা একটি simpleMediaItem
ভিতরে নির্দিষ্ট করা থাকে, এবং একটি ঐচ্ছিক বিবরণ যা ব্যবহারকারীকে দেখানো হয়৷
বর্ণনা ক্ষেত্রটি 1000 অক্ষরের মধ্যে সীমাবদ্ধ এবং শুধুমাত্র ব্যবহারকারীদের দ্বারা তৈরি অর্থপূর্ণ পাঠ্য অন্তর্ভুক্ত করা উচিত। উদাহরণস্বরূপ, " আমাদের পার্কে ট্রিপ " বা " হলিডে ডিনার "। ফাইলের নাম, প্রোগ্রাম্যাটিক ট্যাগ বা অন্যান্য স্বয়ংক্রিয়ভাবে তৈরি করা পাঠ্যের মতো মেটাডেটা অন্তর্ভুক্ত করবেন না।
সেরা পারফরম্যান্সের জন্য, একটি কলে একাধিক মিডিয়া আইটেম অন্তর্ভুক্ত করে mediaItems.batchCreate
এ কলের সংখ্যা কমিয়ে দিন। একই ব্যবহারকারীর জন্য পরবর্তী কল করার আগে পূর্ববর্তী অনুরোধটি সম্পূর্ণ না হওয়া পর্যন্ত সর্বদা অপেক্ষা করুন।
আপনি বর্ণনা এবং সংশ্লিষ্ট আপলোড টোকেনগুলি নির্দিষ্ট করে ব্যবহারকারীর লাইব্রেরিতে একটি একক মিডিয়া আইটেম বা একাধিক মিডিয়া আইটেম তৈরি করতে পারেন:
বিশ্রাম
এখানে পোস্ট অনুরোধ শিরোনাম আছে:
POST https://photoslibrary.googleapis.com/v1/mediaItems:batchCreate Content-type: application/json Authorization: Bearer oauth2-token
অনুরোধের বডিকে newMediaItems
একটি তালিকা উল্লেখ করা উচিত।
{ "newMediaItems": [ { "description": "item-description", "simpleMediaItem": { "fileName": "filename", "uploadToken": "upload-token" } } , ... ] }
আপনি অ্যালবামের একটি নির্দিষ্ট স্থানে মিডিয়া আইটেম সন্নিবেশ করার জন্য albumId
এবং albumPosition
নির্দিষ্ট করতে পারেন।
বিশ্রাম
{ "albumId": "album-id", "newMediaItems": [ { "description": "item-description", "simpleMediaItem": { "fileName": "filename", "uploadToken": "upload-token" } } , ... ], "albumPosition": { "position": "after-media-item", "relativeMediaItemId": "media-item-id" } }
অ্যালবামগুলিতে অবস্থান সম্পর্কিত আরও বিশদ বিবরণের জন্য, সমৃদ্ধকরণ যুক্ত করুন দেখুন।
আইটেম তৈরি প্রতিক্রিয়া
mediaItems.batchCreate
কল আপনার তৈরি করার চেষ্টা করা প্রতিটি মিডিয়া আইটেমের ফলাফল প্রদান করে। newMediaItemResults
তালিকা স্থিতি নির্দেশ করে এবং অনুরোধের জন্য uploadToken
অন্তর্ভুক্ত করে। একটি নন-জিরো স্ট্যাটাস কোড একটি ত্রুটি নির্দেশ করে।
বিশ্রাম
যদি সমস্ত মিডিয়া আইটেম সফলভাবে তৈরি করা হয়, অনুরোধটি HTTP স্থিতি 200 OK
প্রদান করে। যদি কিছু মিডিয়া আইটেম তৈরি করা না যায়, আংশিক সাফল্য নির্দেশ করতে অনুরোধটি HTTP স্থিতি 207 MULTI-STATUS
প্রদান করে।
{ "newMediaItemResults": [ { "uploadToken": "upload-token", "status": { "message": "Success" }, "mediaItem": { "id": "media-item-id", "description": "item-description", "productUrl": "https://photos.google.com/photo/photo-path", "mimeType": "mime-type", "mediaMetadata": { "width": "media-width-in-px", "height": "media-height-in-px", "creationTime": "creation-time", "photo": {} }, "filename": "filename" } }, { "uploadToken": "upload-token", "status": { "code": 13, "message": "Internal error" } } ] }
যদি একটি আইটেম সফলভাবে যোগ করা হয়, একটি mediaItem
ফেরত দেওয়া হয় যাতে এর mediaItemId
, productUrl
এবং mediaMetadata
থাকে। আরও তথ্যের জন্য, মিডিয়া আইটেম অ্যাক্সেস দেখুন।
মিডিয়া আইটেম একটি ভিডিও হলে, এটি প্রথমে প্রক্রিয়া করা আবশ্যক। mediaItem
mediaMetadata
ভিতরে একটি status
রয়েছে যা ভিডিও ফাইলের প্রক্রিয়াকরণের অবস্থা বর্ণনা করে। একটি নতুন আপলোড করা ফাইল ব্যবহারের জন্য READY
হওয়ার আগে প্রথমে PROCESSING
স্ট্যাটাস প্রদান করে৷ বিস্তারিত জানার জন্য, মিডিয়া আইটেম অ্যাক্সেস দেখুন।
এই কলের সময় আপনি যদি কোনো ত্রুটির সম্মুখীন হন, সেরা অনুশীলনগুলি অনুসরণ করুন এবং আপনার অনুরোধটি আবার চেষ্টা করুন৷ আপনি সফল সংযোজনের ট্র্যাক রাখতে চাইতে পারেন, তাই পরবর্তী অনুরোধের সময় সঠিক অবস্থানে ছবিটি অ্যালবামে ঢোকানো যেতে পারে। আরও তথ্যের জন্য, অ্যালবাম তৈরি করুন দেখুন।
ফলাফলগুলি সর্বদা একই ক্রমে ফেরত দেওয়া হয় যেখানে আপলোড টোকেনগুলি জমা দেওয়া হয়েছিল৷
আপলোডের জন্য সর্বোত্তম অনুশীলন
নিম্নলিখিত সর্বোত্তম অনুশীলন এবং সংস্থানগুলি আপলোডগুলির সাথে আপনার সামগ্রিক দক্ষতা উন্নত করতে সহায়তা করে:
- নিম্নলিখিত বিষয়গুলি মাথায় রেখে পুনরায় চেষ্টা এবং ত্রুটি পরিচালনার সর্বোত্তম অনুশীলনগুলি অনুসরণ করুন:
-
429
ত্রুটি ঘটতে পারে যখন আপনার কোটা শেষ হয়ে গেছে বা আপনি খুব দ্রুত অনেক কল করার জন্য রেট সীমিত। নিশ্চিত করুন যে আপনি আগের অনুরোধটি সম্পূর্ণ না হওয়া পর্যন্ত একই ব্যবহারকারীর জন্যbatchCreate
কল করবেন না। -
429
ত্রুটির জন্য পুনরায় চেষ্টা করার আগে ন্যূনতম30s
বিলম্ব প্রয়োজন। অনুরোধ পুনরায় চেষ্টা করার সময় একটি সূচকীয় ব্যাকঅফ কৌশল ব্যবহার করুন। -
500
ত্রুটি ঘটে যখন সার্ভার একটি ত্রুটির সম্মুখীন হয়। আপলোড করার সময়, একই ব্যবহারকারীর জন্য একই সময়ে একাধিক রাইট কল (যেমনbatchCreate
) করার কারণে এটি সম্ভবত। আপনার অনুরোধের বিশদ বিবরণ পরীক্ষা করুন এবং সমান্তরালভাবেbatchCreate
এ কল করবেন না।
-
- নেটওয়ার্ক বাধার ক্ষেত্রে আপনার আপলোডগুলিকে আরও শক্তিশালী করতে পুনরায় শুরুযোগ্য আপলোড প্রবাহ ব্যবহার করুন, আপনাকে আংশিকভাবে সম্পূর্ণ আপলোডগুলি পুনরায় শুরু করার অনুমতি দিয়ে ব্যান্ডউইথের ব্যবহার হ্রাস করুন৷ ক্লায়েন্ট মোবাইল ডিভাইস থেকে আপলোড করার সময় বা বড় ফাইল আপলোড করার সময় এটি গুরুত্বপূর্ণ।
পাশাপাশি, আপলোড প্রক্রিয়ার প্রতিটি ধাপের জন্য নিম্নলিখিত টিপস বিবেচনা করুন: বাইট আপলোড করা এবং তারপর মিডিয়া আইটেম তৈরি করা ।
বাইট আপলোড করা হচ্ছে
- বাইট আপলোড করা (আপলোড টোকেন পুনরুদ্ধার করতে) সমান্তরালভাবে করা যেতে পারে।
- প্রতিটি আপলোড কলের জন্য
X-Goog-Upload-Content-Type
হেডারে সর্বদা সঠিক MIME প্রকার সেট করুন৷
মিডিয়া আইটেম তৈরি করা
একক ব্যবহারকারীর জন্য
batchCreate
সমান্তরালে কল করবেন না।- প্রতিটি ব্যবহারকারীর জন্য, একের পর এক
batchCreate
কল করুন (ক্রমিকভাবে)। - একাধিক ব্যবহারকারীর জন্য, সর্বদা প্রতিটি ব্যবহারকারীর জন্য একের পর এক
batchCreate
কল করুন। শুধুমাত্র সমান্তরালভাবে বিভিন্ন ব্যবহারকারীদের জন্য কল করুন।
- প্রতিটি ব্যবহারকারীর জন্য, একের পর এক
প্রতিটি কলে যতটা সম্ভব
NewMediaItems
অন্তর্ভুক্তbatchCreate
যাতে আপনাকে কলের মোট সংখ্যা কমাতে হয়। সর্বাধিক আপনি 50টি আইটেম অন্তর্ভুক্ত করতে পারেন।একটি অর্থপূর্ণ বর্ণনা পাঠ্য সেট করুন যা আপনার ব্যবহারকারীদের দ্বারা তৈরি করা হয়েছে। বর্ণনা ক্ষেত্রে ফাইলের নাম, প্রোগ্রাম্যাটিক ট্যাগ বা অন্যান্য স্বয়ংক্রিয়ভাবে তৈরি করা পাঠ্যের মতো মেটাডেটা অন্তর্ভুক্ত করবেন না।
উদাহরণ ওয়াকথ্রু
এই উদাহরণটি একাধিক ব্যবহারকারীর জন্য মিডিয়া আইটেম আপলোড করার জন্য সিউডোকোড ব্যবহার করে। লক্ষ্য হল আপলোড প্রক্রিয়ার উভয় ধাপের রূপরেখা ( কাঁচা বাইট আপলোড করা এবং মিডিয়া আইটেম তৈরি করা ) এবং একটি দক্ষ এবং স্থিতিস্থাপক আপলোড ইন্টিগ্রেশন তৈরির জন্য সর্বোত্তম অনুশীলনের বিশদ বিবরণ।
ধাপ 1: কাঁচা বাইট আপলোড করুন
প্রথমে আপনার সমস্ত ব্যবহারকারীদের থেকে আপনার মিডিয়া আইটেমগুলির জন্য কাঁচা বাইট আপলোড করার জন্য একটি সারি তৈরি করুন৷ ব্যবহারকারী প্রতি প্রতিটি ফেরত uploadToken
ট্র্যাক করুন। এই মূল পয়েন্ট মনে রাখবেন:
- একযোগে আপলোড থ্রেডের সংখ্যা আপনার অপারেটিং পরিবেশের উপর নির্ভর করে।
- প্রয়োজন অনুযায়ী আপলোড সারি পুনর্বিন্যাস বিবেচনা করুন. উদাহরণস্বরূপ, আপনি প্রতি ব্যবহারকারীর অবশিষ্ট আপলোডের সংখ্যা, ব্যবহারকারীর সামগ্রিক অগ্রগতি বা অন্যান্য প্রয়োজনীয়তার উপর ভিত্তি করে আপলোডগুলিকে অগ্রাধিকার দিতে পারেন৷
সিউডোকোড
CREATE uploadQueue FROM users, filesToUpload // Upload media bytes in parallel. START multiple THREADS WHILE uploadQueue is not empty POP uploadQueue UPLOAD file for user GET uploadToken CHECK and HANDLE errors STORE uploadToken for user in uploadTokensQueue END
ধাপ 2: মিডিয়া আইটেম তৈরি করুন
ধাপ 1-এ, আপনি সমান্তরালভাবে একাধিক ব্যবহারকারীর থেকে একাধিক বাইট আপলোড করতে পারেন, কিন্তু ধাপ 2-এ আপনি প্রতিটি ব্যবহারকারীর জন্য একবারে একটি মাত্র কল করতে পারবেন।
সিউডোকোড
// For each user, create media items once 50 upload tokens have been // saved, or no more uploads are left per user. WHEN uploadTokensQueue for user is >= 50 OR no more pending uploads for user // Calls can be made in parallel for different users, // but only make a single call per user at a time. START new thread for (this) user if there is no thread yet POP 50 uploadTokens from uploadTokensQueue for user CALL mediaItems.batchCreate with uploadTokens WAIT UNTIL batchCreate call has completed CHECK and HANDLE errors (retry as needed) DONE.
সমস্ত আপলোড এবং মিডিয়া তৈরি কল সম্পূর্ণ না হওয়া পর্যন্ত এই প্রক্রিয়াটি চালিয়ে যান।