মিডিয়া আপলোড করুন

মিডিয়া আইটেম আপলোড করা একটি দুই ধাপের প্রক্রিয়া:

  1. আপলোডস এন্ডপয়েন্ট ব্যবহার করে আপনার মিডিয়া ফাইলের বাইটগুলি একটি Google সার্ভারে আপলোড করুন। এটি একটি আপলোড টোকেন প্রদান করে যা আপলোড করা বাইটগুলি সনাক্ত করে।
  2. ব্যবহারকারীর Google Photos অ্যাকাউন্টে একটি মিডিয়া আইটেম তৈরি করতে আপলোড টোকেন সহ একটি batchCreate কল ব্যবহার করুন।

এই ধাপগুলি একটি একক মিডিয়া আইটেম আপলোড করার প্রক্রিয়ার রূপরেখা দেয়। আপনি যদি একাধিক মিডিয়া আইটেম আপলোড করেন (যেকোনো প্রোডাকশন অ্যাপ্লিকেশনের জন্য খুব সম্ভবত), তাহলে আপনার আপলোড দক্ষতা উন্নত করার জন্য আপলোডের সেরা অনুশীলনগুলি পর্যালোচনা করুন।

শুরু করার আগে

প্রয়োজনীয় অনুমোদনের সুযোগ

ব্যবহারকারীর লাইব্রেরি বা অ্যালবামে মিডিয়া আইটেম আপলোড করার জন্য photoslibrary.appendonly স্কোপের প্রয়োজন। স্কোপের বিষয়ে আরও তথ্যের জন্য, Authorization scopes দেখুন।

গৃহীত ফাইলের ধরণ এবং আকার

আপনি এই টেবিলে তালিকাভুক্ত ফাইলের ধরণগুলি আপলোড করতে পারেন।

মিডিয়া টাইপ গৃহীত ফাইলের ধরণ সর্বোচ্চ ফাইলের আকার
ছবি AVIF, BMP, GIF, HEIC, ICO, JPG, PNG, TIFF, WEBP, কিছু RAW ফাইল। ২০০ মেগাবাইট
ভিডিও 3GP, 3G2, ASF, AVI, DIVX, M2T, M2TS, M4V, MKV, MMV, MOD, MOV, MP4, MPG, MTS, TOD, WMV। ২০ জিবি

ধাপ ১: বাইট আপলোড করা

আপলোড অনুরোধ ব্যবহার করে 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

ছবির জন্য প্রস্তাবিত ফাইলের আকার ৫০ এমবি-এর কম। ৫০ এমবি-এর চেয়ে বড় ফাইলগুলিতে কর্মক্ষমতা সংক্রান্ত সমস্যা হওয়ার সম্ভাবনা বেশি।

গুগল ফটো লাইব্রেরি এপিআই পুনরায় শুরু করা যায় এমন আপলোড সমর্থন করে। পুনরায় শুরু করা যায় এমন আপলোড আপনাকে একটি মিডিয়া ফাইলকে একাধিক বিভাগে বিভক্ত করতে এবং একবারে একটি বিভাগ আপলোড করতে দেয়।

ধাপ ২: একটি মিডিয়া আইটেম তৈরি করা

আপনার মিডিয়া ফাইলগুলির বাইট আপলোড করার পরে, আপনি আপলোড টোকেন ব্যবহার করে Google Photos-এ মিডিয়া আইটেম হিসেবে সেগুলি তৈরি করতে পারেন। একটি আপলোড টোকেন তৈরি হওয়ার পর এক দিনের জন্য বৈধ থাকে। একটি মিডিয়া আইটেম সর্বদা ব্যবহারকারীর লাইব্রেরিতে যোগ করা হয়। মিডিয়া আইটেমগুলি শুধুমাত্র আপনার অ্যাপ দ্বারা তৈরি অ্যালবামে যোগ করা যেতে পারে। আরও তথ্যের জন্য, অনুমোদনের সুযোগ দেখুন।

নতুন মিডিয়া আইটেম তৈরি করতে, newMediaItems এর একটি তালিকা নির্দিষ্ট করে mediaItems.batchCreate এ কল করুন। প্রতিটি newMediaItem একটি আপলোড টোকেন থাকে যা একটি simpleMediaItem ভিতরে নির্দিষ্ট করা থাকে এবং একটি ঐচ্ছিক বিবরণ থাকে যা ব্যবহারকারীকে দেখানো হয়।

বর্ণনার ক্ষেত্রটি ১০০০ অক্ষরের মধ্যে সীমাবদ্ধ এবং শুধুমাত্র ব্যবহারকারীদের দ্বারা তৈরি অর্থপূর্ণ লেখা অন্তর্ভুক্ত করা উচিত। উদাহরণস্বরূপ, " আমাদের পার্কে ভ্রমণ " বা " ছুটির দিন রাতের খাবার "। ফাইলের নাম, প্রোগ্রাম্যাটিক ট্যাগ বা অন্যান্য স্বয়ংক্রিয়ভাবে তৈরি টেক্সটের মতো মেটাডেটা অন্তর্ভুক্ত করবেন না।

সেরা পারফরম্যান্সের জন্য, mediaItems.batchCreate এ কলের সংখ্যা কমিয়ে আনুন। একটি কলে একাধিক মিডিয়া আইটেম অন্তর্ভুক্ত করে তৈরি করুন। একই ব্যবহারকারীর জন্য পরবর্তী কল করার আগে সর্বদা পূর্ববর্তী অনুরোধটি সম্পূর্ণ না হওয়া পর্যন্ত অপেক্ষা করুন।

আপনি ব্যবহারকারীর লাইব্রেরিতে বর্ণনা এবং সংশ্লিষ্ট আপলোড টোকেন উল্লেখ করে একটি একক মিডিয়া আইটেম বা একাধিক মিডিয়া আইটেম তৈরি করতে পারেন:

বিশ্রাম

এখানে POST অনুরোধের শিরোনামটি রয়েছে:

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 থাকে। আরও তথ্যের জন্য, Access media items দেখুন।

যদি মিডিয়া আইটেমটি একটি ভিডিও হয়, তাহলে প্রথমে এটি প্রক্রিয়াকরণ করতে হবে। mediaItem তার mediaMetadata ভিতরে একটি status থাকে যা ভিডিও ফাইলের প্রক্রিয়াকরণ অবস্থা বর্ণনা করে। একটি নতুন আপলোড করা ফাইল ব্যবহারের জন্য READY হওয়ার আগে প্রথমে PROCESSING স্ট্যাটাস ফেরত দেয়। বিস্তারিত জানার জন্য, অ্যাক্সেস মিডিয়া আইটেম দেখুন।

এই কলের সময় যদি আপনি কোনও ত্রুটির সম্মুখীন হন, তাহলে সেরা অনুশীলনগুলি অনুসরণ করুন এবং আপনার অনুরোধটি পুনরায় চেষ্টা করুন। আপনি সফল সংযোজনের ট্র্যাক রাখতে চাইতে পারেন, যাতে পরবর্তী অনুরোধের সময় ছবিটি সঠিক অবস্থানে অ্যালবামে ঢোকানো যায়। আরও তথ্যের জন্য, অ্যালবাম তৈরি করুন দেখুন।

আপলোড টোকেন যে ক্রমে জমা দেওয়া হয়েছিল, ফলাফলগুলি সর্বদা সেই ক্রমেই ফেরত দেওয়া হয়।

আপলোডের জন্য সেরা পদ্ধতি

নিম্নলিখিত সেরা অনুশীলন এবং সংস্থানগুলি আপলোডের ক্ষেত্রে আপনার সামগ্রিক দক্ষতা উন্নত করতে সাহায্য করে:

  • নিম্নলিখিত বিষয়গুলি মাথায় রেখে পুনরায় চেষ্টা এবং ত্রুটি পরিচালনার সর্বোত্তম অনুশীলনগুলি অনুসরণ করুন:
    • আপনার কোটা শেষ হয়ে গেলে অথবা খুব দ্রুত অনেক কল করার জন্য আপনার রেটের সীমাবদ্ধতা থাকলে 429 ত্রুটি ঘটতে পারে। পূর্ববর্তী অনুরোধটি সম্পন্ন না হওয়া পর্যন্ত একই ব্যবহারকারীর জন্য batchCreate কল করবেন না তা নিশ্চিত করুন।
    • 429 ত্রুটির জন্য পুনরায় চেষ্টা করার আগে কমপক্ষে 30s বিলম্ব প্রয়োজন। অনুরোধ পুনরায় চেষ্টা করার সময় একটি সূচকীয় ব্যাকঅফ কৌশল ব্যবহার করুন।
    • সার্ভারে যখন কোনও ত্রুটি দেখা দেয় তখন 500 ত্রুটি ঘটে। আপলোড করার সময়, একই ব্যবহারকারীর জন্য একই সময়ে একাধিক লেখার কল (যেমন batchCreate ) করার কারণে এটি সম্ভবত ঘটে। আপনার অনুরোধের বিশদটি পরীক্ষা করুন এবং সমান্তরালভাবে batchCreate এ কল করবেন না।
  • নেটওয়ার্ক বিঘ্নের ক্ষেত্রে আপনার আপলোডগুলিকে আরও শক্তিশালী করতে পুনরায় শুরুযোগ্য আপলোড প্রবাহ ব্যবহার করুন, আংশিকভাবে সম্পন্ন আপলোডগুলি পুনরায় শুরু করার অনুমতি দিয়ে ব্যান্ডউইথের ব্যবহার হ্রাস করুন। ক্লায়েন্ট মোবাইল ডিভাইস থেকে আপলোড করার সময় বা বড় ফাইল আপলোড করার সময় এটি গুরুত্বপূর্ণ।

পাশাপাশি, আপলোড প্রক্রিয়ার প্রতিটি ধাপের জন্য নিম্নলিখিত টিপসগুলি বিবেচনা করুন: বাইট আপলোড করা এবং তারপর মিডিয়া আইটেম তৈরি করা

বাইট আপলোড করা হচ্ছে

  • বাইট আপলোড করা (আপলোড টোকেন পুনরুদ্ধার করতে) সমান্তরালভাবে করা যেতে পারে।
  • প্রতিটি আপলোড কলের জন্য X-Goog-Upload-Content-Type হেডারে সর্বদা সঠিক MIME টাইপ সেট করুন।

মিডিয়া আইটেম তৈরি করা হচ্ছে

  • একক ব্যবহারকারীর জন্য batchCreate এর সমান্তরালে কল করবেন না।

    • প্রতিটি ব্যবহারকারীর জন্য, একের পর এক (সিরিয়ালে) batchCreate এ কল করুন।
    • একাধিক ব্যবহারকারীর জন্য, সর্বদা প্রতিটি ব্যবহারকারীর জন্য একের পর এক batchCreate কল করুন। শুধুমাত্র সমান্তরালভাবে বিভিন্ন ব্যবহারকারীর জন্য কল করুন।
  • আপনার মোট কলের সংখ্যা কমাতে batchCreate প্রতিটি কলে যতটা সম্ভব NewMediaItems অন্তর্ভুক্ত করুন। সর্বাধিক ৫০টি আইটেম অন্তর্ভুক্ত করতে পারেন।

  • আপনার ব্যবহারকারীদের দ্বারা তৈরি একটি অর্থপূর্ণ বর্ণনামূলক টেক্সট সেট করুন। বর্ণনা ক্ষেত্রে ফাইলের নাম, প্রোগ্রাম্যাটিক ট্যাগ বা অন্যান্য স্বয়ংক্রিয়ভাবে তৈরি হওয়া টেক্সটের মতো মেটাডেটা অন্তর্ভুক্ত করবেন না।

উদাহরণ ওয়াকথ্রু

এই উদাহরণে একাধিক ব্যবহারকারীর জন্য মিডিয়া আইটেম আপলোড করার জন্য সিউডোকোড ব্যবহার করা হয়েছে। লক্ষ্য হল আপলোড প্রক্রিয়ার উভয় ধাপের রূপরেখা তৈরি করা ( রঙিন বাইট আপলোড করা এবং মিডিয়া আইটেম তৈরি করা ) এবং একটি দক্ষ এবং স্থিতিস্থাপক আপলোড ইন্টিগ্রেশন তৈরির জন্য সর্বোত্তম অনুশীলনগুলি বিস্তারিতভাবে বর্ণনা করা।

ধাপ ১: কাঁচা বাইট আপলোড করুন

প্রথমে আপনার সকল ব্যবহারকারীর কাছ থেকে আপনার মিডিয়া আইটেমের জন্য কাঁচা বাইট আপলোড করার জন্য একটি সারি তৈরি করুন। প্রতিটি ব্যবহারকারীর জন্য ফেরত আসা 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

ধাপ ২: মিডিয়া আইটেম তৈরি করুন

ধাপ ১-এ, আপনি একাধিক ব্যবহারকারীর কাছ থেকে সমান্তরালভাবে একাধিক বাইট আপলোড করতে পারবেন, কিন্তু ধাপ ২-এ আপনি একবারে প্রতিটি ব্যবহারকারীর জন্য কেবল একটি কল করতে পারবেন।

সিউডোকোড

// 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.

সমস্ত আপলোড এবং মিডিয়া তৈরির কল সম্পূর্ণ না হওয়া পর্যন্ত এই প্রক্রিয়াটি চালিয়ে যান।