يتم تحميل عناصر الوسائط على مرحلتين:
- تحميل وحدات البايت لملفات الوسائط إلى خادم Google باستخدام عمليات التحميل النهائية. يعرض ذلك رمزًا مميزًا للتحميل يحدّد وحدات البايت المحمّلة.
- استخدِم استدعاء batchCreate مع الرمز المميّز للتحميل من أجل إنشاء ملف وسائط في حساب المستخدم على "صور 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 ميغابايت. الملفات التي يزيد حجمها عن 50 ميغابايت أكثر عرضة لمشاكل الأداء.
تدعم واجهة برمجة تطبيقات مكتبة صور Google القابلة للاستئناف عمليات التحميل. يتيح لك التحميل القابل للاستئناف قسِّم ملف وسائط إلى أقسام متعددة وحمِّل قسمًا واحدًا في كل مرة.
الخطوة 2: إنشاء عنصر وسائط
بعد تحميل وحدات البايت الخاصة بملفات الوسائط، يمكنك إنشاؤها كوسائط عنصر في "صور Google" باستخدام رموز التحميل المميّزة. الرمز المميّز للتحميل صالح لمدة يوم واحد بعد إنشائها تتم دائمًا إضافة عنصر وسائط إلى ملف تعريف المكتبة. لا يمكن إضافة عناصر الوسائط إلا إلى ملفّات التجميع التي أنشأها تطبيقك. لمزيد من المعلومات، اطّلِع على نطاق تفويض الوصول.
لإنشاء ملفات وسائط جديدة، يُرجى الاتصال
mediaItems.batchCreate
من خلال تحديد قائمة newMediaItems
. يحتوي كل newMediaItem
على عملية تحميل
رمز مميّز يتم تحديده داخل السمة simpleMediaItem
، بالإضافة إلى وصف اختياري
الذي يظهر للمستخدم.
يقتصر حقل الوصف على 1000 حرف، ويجب أن يتضمن فقط نص ذي معنى ينشئه المستخدمون. على سبيل المثال، "رحلتنا إلى الحديقة" أو "عشاء عيد يُرجى عدم تضمين البيانات الوصفية، مثل أسماء الملفات والآليات أو العلامات أو النصوص الأخرى التي يتم إنشاؤها تلقائيًا.
للحصول على أفضل أداء، يمكنك تقليل عدد المكالمات إلى 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
للطلب. يشير رمز الحالة غير الصفري إلى خطأ.
REST
إذا تم إنشاء جميع عناصر الوسائط بنجاح، يعرض الطلب
حالة 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
يحتوي على status
بداخله mediaMetadata
تصف عملية المعالجة
حالة ملف الفيديو. الملف الذي تم تحميله مؤخرًا يعرض الحالة "PROCESSING
"
أولاً، قبل أن يحين وقت استخدام READY
. لمعرفة التفاصيل، يُرجى الاطّلاع على مقالة الوصول إلى الوسائط.
العناصر.
إذا واجهت خطأً أثناء هذه المكالمة، اتّبِع أفضل الممارسات وأعِد محاولة إرسال طلبك. يمكنك تتبُّع عمليات الإضافة الناجحة، حتى تتمكّن من إدراج الصورة في الألبوم في الموضع الصحيح أثناء الطلب التالي. لمزيد من المعلومات، المعلومات، فراجع إنشاء الألبومات.
يتم دائمًا عرض النتائج بالترتيب نفسه الذي كانت به رموز التحميل المميّزة تم إرسالها.
أفضل الممارسات المتعلقة بعمليات التحميل
تساعد أفضل الممارسات والمراجع التالية في تحسين كفاءتك بشكل عام. مع عمليات التحميل:
- اتبع إعادة المحاولة والتعامل مع الأخطاء على أفضل نحو
الممارسات، مع الحفاظ
وضع النقاط التالية في الاعتبار:
- يمكن أن تحدث أخطاء
429
عند نفاذ حصتك. أو يكون المعدل محدودًا لإجراء عدد كبير جدًا من المكالمات بسرعة كبيرة جدًا. يُرجى التأكد من أنّ: لا يتم استدعاءbatchCreate
للمستخدم نفسه حتى السابق اكتمل طلبك. - يحتاج
429
خطأ إلى مهلة30s
على الأقل قبل إعادة المحاولة. يمكنك استخدام رقود أسي الإستراتيجية عند إعادة محاولة الطلبات. - تحدث أخطاء
500
عندما يواجه الخادم خطأً. عند التحميل، ويرجع ذلك على الأرجح إلى إجراء استدعاءات كتابة متعددة (مثلbatchCreate
) للمستخدم نفسه في الوقت نفسه. تحقق من تفاصيل طلبك وعدم إجراء مكالمات إلىbatchCreate
بالتوازي.
- يمكن أن تحدث أخطاء
- استخدِم مسار التحميل القابل للاستئناف من أجل: لجعل عمليات التحميل أكثر فعالية في حال انقطاع الشبكة، ما يقلّل استخدام النطاق الترددي من خلال السماح لك باستئناف التحميلات المكتملة جزئيًا. هذا النمط مهمة عند تحميل المحتوى من أجهزة الجوّالة التابعة للعملاء أو عند تحميله الملفات الكبيرة.
بالإضافة إلى ذلك، ننصحك باتّباع النصائح التالية لكلّ خطوة من خطوات عملية التحميل: تحميل وحدات البايت ثم إنشاء وسائط .
تحميل البايتات
- يمكن تحميل وحدات البايت (لاسترداد الرموز المميزة للتحميل) بشكل متوازٍ.
- ضبط نوع MIME الصحيح دائمًا في
X-Goog-Upload-Content-Type
رأس الصفحة كل مكالمة تحميل.
جارٍ إنشاء ملفات الوسائط
يجب عدم إجراء مكالمات بالتوازي مع
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، يمكنك تحميل عدة وحدات بايت من مستخدمين متعددين بشكل متوازٍ، ولكن بشكل الخطوة الثانية، يمكنك إجراء مكالمة واحدة فقط لكل مستخدم في المرة الواحدة.
رمز زائف
// 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.
استمر في هذه العملية إلى أن تكتمل جميع عمليات التحميل ومكالمات إنشاء الوسائط.