YouTubeVideoUploadService আপনাকে Google Ads API এর মাধ্যমে সরাসরি YouTube এ ভিডিও আপলোড করতে দেয়। এই ভিডিওগুলি বিভিন্ন ধরণের বিজ্ঞাপনে সম্পদ হিসেবে ব্যবহার করা যেতে পারে, যেমন Performance Max প্রচারণা বা Demand Gen প্রচারণা ।
এই পরিষেবাটি YouTube আপলোড প্রক্রিয়া পরিচালনা করে ভিডিও বিজ্ঞাপন তৈরির কর্মপ্রবাহকে সহজ করে তোলে, নিশ্চিত করে যে ভিডিওগুলি আপনার অ্যাকাউন্টের সাথে সঠিকভাবে যুক্ত।
মূল ধারণা
শুরু করার আগে, ভিডিও আপলোডগুলি কীভাবে পরিচালিত হয় এবং সেগুলি কোন বিভিন্ন অবস্থার মধ্য দিয়ে যেতে পারে তা বোঝা গুরুত্বপূর্ণ।
চ্যানেলের মালিকানা
যখন আপনি একটি ভিডিও আপলোড করেন, তখন আপনি YouTubeVideoUpload রিসোর্সে channel_id ফিল্ড ব্যবহার করে গন্তব্য YouTube চ্যানেল নির্দিষ্ট করতে পারেন:
- বিজ্ঞাপনদাতার মালিকানাধীন (ব্র্যান্ড) চ্যানেল: বিজ্ঞাপনদাতার মালিকানাধীন একটি YouTube চ্যানেলের
channel_idপ্রদান করুন। একটি ব্র্যান্ড চ্যানেলে আপলোড করলে ভিডিওর গোপনীয়তা এবং দৃশ্যমানতার উপর আরও নিয়ন্ত্রণ থাকে। - গুগল-পরিচালিত চ্যানেল: যদি
channel_idবাদ দেওয়া হয়, তাহলে ভিডিওটি গুগল বিজ্ঞাপন অ্যাকাউন্টের সাথে যুক্ত গুগল-পরিচালিত ইউটিউব চ্যানেলে আপলোড করা হবে।
আপলোডের অবস্থা
একটি YouTube ভিডিও আপলোডের জীবনচক্র state ফিল্ড দ্বারা ট্র্যাক করা হয়। YouTubeVideoUploadState enum নিম্নলিখিত অবস্থাগুলিকে সংজ্ঞায়িত করে:
| রাজ্য | বিবরণ |
|---|---|
PENDING | ভিডিওটি আপলোড করা হচ্ছে। |
UPLOADED | ভিডিওটি সফলভাবে আপলোড করা হয়েছে এবং YouTube দ্বারা প্রক্রিয়া করা হচ্ছে। |
PROCESSED | ভিডিওটি সফলভাবে প্রক্রিয়া করা হয়েছে এবং ব্যবহারের জন্য প্রস্তুত। |
FAILED | আপলোড বা প্রক্রিয়াকরণ ব্যর্থ হয়েছে এবং সম্পূর্ণ করা যাচ্ছে না। |
REJECTED | বৈধতা বা নীতিগত কারণে ভিডিওটি প্রত্যাখ্যান করা হয়েছে। |
UNAVAILABLE | ভিডিওটির অবস্থা অনুপলব্ধ; এটি হয়তো YouTube থেকে সরানো হয়েছে। |
গোপনীয়তা সেটিংস
video_privacy ফিল্ডটি আপলোড করা ভিডিও কে দেখতে পাবে তা নিয়ন্ত্রণ করে। YouTubeVideoPrivacy enum সমর্থন করে:
-
PUBLIC: ভিডিওটি YouTube-এ যে কেউ দেখতে পারবেন। (শুধুমাত্র ব্র্যান্ড চ্যানেলের জন্য অনুমোদিত)। -
UNLISTED: ভিডিওটি অনুসন্ধানযোগ্য নয় তবে লিঙ্কটি সহ যে কেউ এটি দেখতে পারবেন। এটি ডিফল্ট এবং Google-পরিচালিত চ্যানেলগুলির জন্য একমাত্র বিকল্প।
একটি ভিডিও আপলোড করুন
একটি ভিডিও আপলোড করার জন্য, আপনাকে CreateYouTubeVideoUpload পদ্ধতিতে একটি বহু-অংশের অনুরোধ ব্যবহার করতে হবে। অনুরোধে আপলোডের মেটাডেটা এবং ভিডিও ফাইল উভয়ই থাকে।
১. আপলোড শুরু করুন
একটি CreateYouTubeVideoUploadRequest তৈরি করুন যেখানে উল্লেখ করা থাকবে:
-
customer_id: আপনার Google Ads গ্রাহক আইডি। -
you_tube_video_upload: একটিYouTubeVideoUploadঅবজেক্ট যার মধ্যেvideo_title,video_description, এবং ঐচ্ছিকভাবেchannel_idএবংvideo_privacyথাকে।
যদি আপনি একটি ক্লায়েন্ট লাইব্রেরি ব্যবহার করেন, তাহলে CreateYouTubeVideoUpload পদ্ধতিতে কল করুন, আপনার ভিডিও ফাইলটি পাস করুন, এবং ভিডিও আপলোডটি অভ্যন্তরীণভাবে পরিচালিত হবে।
জাভা
This example is not yet available in Java; you can take a look at the other languages.
সি#
This example is not yet available in C#; you can take a look at the other languages.
পিএইচপি
This example is not yet available in PHP; you can take a look at the other languages.
পাইথন
yt_service: YouTubeVideoUploadServiceClient = client.get_service( "YouTubeVideoUploadService" ) create_upload_request: CreateYouTubeVideoUploadRequest = ( youtube_video_upload_service.CreateYouTubeVideoUploadRequest() ) create_upload_request.customer_id = customer_id create_upload_request.you_tube_video_upload.video_title = "Test Video" create_upload_request.you_tube_video_upload.video_description = ( "Test Video Description" ) create_upload_request.you_tube_video_upload.video_privacy = ( client.enums.YouTubeVideoPrivacyEnum.UNLISTED ) video_upload_resource_name: str with open(video_file_path, "rb") as stream: response: CreateYouTubeVideoUploadResponse = ( yt_service.create_you_tube_video_upload( stream=stream, request=create_upload_request, retry=None, ) ) print(f"Created YouTube video upload: {response.resource_name}")
রুবি
This example is not yet available in Ruby; you can take a look at the other languages.
পার্ল
This example is not yet available in Perl; you can take a look at the other languages.
কার্ল করা
# # Use the --i curl parameter to capture response headers in the $RESPONSE # variable. FILE_SIZE=$(wc -c < "${VIDEO_FILE_NAME}" | tr -d '\r') RESPONSE=$(curl -i -f -v -s --request POST \ "https://googleads.googleapis.com/resumable/upload/v${API_VERSION}/customers/${CUSTOMER_ID}:youTubeVideoUploads:create" \ --header "Content-Type: application/json" \ --header "developer-token: ${DEVELOPER_TOKEN}" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --header "X-Goog-Upload-Protocol: resumable" \ --header "X-Goog-Upload-Command: start" \ --header "X-Goog-Upload-Header-Content-Length: ${FILE_SIZE}" \ --data @- <<EOF { "customer_id": "${CUSTOMER_ID}", "you_tube_video_upload": { "video_title": "${VIDEO_TITLE}", "video_description": "${VIDEO_DESCRIPTION}", "video_privacy": "UNLISTED" } } EOF ) # Extract the value of the "x-goog-upload-url" header from the HTTP response. UPLOAD_URL=$(echo "${RESPONSE}" \ | grep -i '^x-goog-upload-url' \ | awk '{print $2}' \ | tr -d '\r') CHUNK_SIZE=$(echo "${RESPONSE}" \ | grep -i '^x-goog-upload-chunk-granularity' \ | awk '{print $2}' \ | tr -d '\r')
আপনি যদি REST ব্যবহার করেন, তাহলে নিম্নলিখিত বিভাগে ভিডিও আপলোড কীভাবে পরিচালনা করবেন তা বর্ণনা করা হয়েছে।
2. ভিডিওটি আপলোড করুন
যখন আপনি CreateYouTubeVideoUpload পদ্ধতিতে একটি REST অনুরোধ পাঠান, তখন প্রতিক্রিয়াটিতে x-goog-upload-url HTTP প্রতিক্রিয়া শিরোনামে ভিডিও বাইট আপলোড করার জন্য ব্যবহৃত URL থাকে, সাথে অন্যান্য মেটাডেটা থাকে যেমন চাঙ্কড আপলোডের জন্য প্রতিটি চাঙ্কের প্রত্যাশিত আকার।
আপনি প্রক্রিয়া শুরু করার সময় x-goog-upload-header-content-length HTTP অনুরোধ শিরোনাম ব্যবহার করে প্রাথমিকভাবে যে ভিডিওটি আপলোড করতে যাচ্ছেন তার আকারও ঘোষণা করতে পারেন।
ভিডিও আপলোড প্রোটোকলে ব্যবহৃত HTTP হেডারগুলির সম্পূর্ণ বিবরণের জন্য, নিম্নলিখিত কোড উদাহরণটি দেখুন:
# Take the first ${CHUNK_SIZE} bytes of the video file and upload them. head -c ${CHUNK_SIZE} ${VIDEO_FILE_NAME} | curl -i -v -X PUT "${UPLOAD_URL}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --header "X-Goog-Upload-Offset: 0" \ --header "X-Goog-Upload-Command: upload" \ --header "Content-Length: ${CHUNK_SIZE}" \ --data-binary @- # Query the status of the upload. QUERY_RESPONSE=$(curl -i -s -X POST "${UPLOAD_URL}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --header "X-Goog-Upload-Command: query") # Extract the value of the "x-goog-upload-size-received" header from the HTTP # response. UPLOADED_BYTES=$(echo "${QUERY_RESPONSE}" \ | grep -i '^x-goog-upload-size-received' \ | awk '{print $2}' \ | tr -d '\r') echo "Uploaded ${UPLOADED_BYTES} bytes." REMAINING_BYTES=$((FILE_SIZE - UPLOADED_BYTES)) echo "${REMAINING_BYTES} bytes remaining to upload." FINALIZE_RESPONSE=$(tail -c ${REMAINING_BYTES} ${VIDEO_FILE_NAME} | curl -v -X PUT "${UPLOAD_URL}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --header "X-Goog-Upload-Offset: ${UPLOADED_BYTES}" \ --header "X-Goog-Upload-Command: upload, finalize" \ --data-binary @-) UPLOADED_VIDEO_RESOURCE_NAME=$(echo $FINALIZE_RESPONSE | jq -r '.resourceName')
৩. ভিডিও আপলোডের অবস্থা পুনরুদ্ধার করুন
ভিডিও আপলোড শুরু করার পর, আপনি GAQL ব্যবহার করে you_tube_video_upload রিসোর্সটি জিজ্ঞাসা করে এর অবস্থা পুনরুদ্ধার করতে পারেন:
জাভা
This example is not yet available in Java; you can take a look at the other languages.
সি#
This example is not yet available in C#; you can take a look at the other languages.
পিএইচপি
This example is not yet available in PHP; you can take a look at the other languages.
পাইথন
# Retrieve the metadata of the newly uploaded video. query: str = f""" SELECT you_tube_video_upload.resource_name, you_tube_video_upload.video_id, you_tube_video_upload.state FROM you_tube_video_upload WHERE you_tube_video_upload.resource_name = '{video_upload_resource_name}'""" ga_service: GoogleAdsServiceClient = client.get_service("GoogleAdsService") stream: Iterator[SearchGoogleAdsStreamResponse] = ga_service.search_stream( customer_id=customer_id, query=query ) for row in itertools.chain.from_iterable(batch.results for batch in stream): video = row.you_tube_video_upload print( f"Video with ID {row.you_tube_video_upload.video_id} was found in state {row.you_tube_video_upload.state}." )
রুবি
This example is not yet available in Ruby; you can take a look at the other languages.
পার্ল
This example is not yet available in Perl; you can take a look at the other languages.
কার্ল করা
curl -i -v -X POST \ "https://qa-prod-googleads.sandbox.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/googleAds:search" \ --header "Content-Type: application/json" \ --header "Developer-Token: ${DEVELOPER_TOKEN}" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data @- <<EOF { "query": "SELECT you_tube_video_upload.resource_name, you_tube_video_upload.video_id, you_tube_video_upload.state FROM you_tube_video_upload WHERE you_tube_video_upload.resource_name = '$UPLOADED_VIDEO_RESOURCE_NAME'" } EOF
আপলোডগুলি পরিচালনা করুন
একটি ভিডিও আপলোড সম্পন্ন হওয়ার পরে, আপনি এটিকে ভিডিও সম্পদ হিসেবে ব্যবহার করতে পারেন।
আপলোড করা ভিডিওটি ব্যবহার করুন
একটি ভিডিও PROCESSED অবস্থায় পৌঁছানোর পর, আপনি YouTubeVideoUpload রিসোর্সের video_id ক্ষেত্রের মধ্যে তার YouTube ভিডিও আইডি খুঁজে পেতে পারেন।
এই video_id ব্যবহার করে একটি VideoAsset তৈরি করুন অথবা ভিডিও আইডি উল্লেখ করে YouTube ভিডিও সমর্থন করে এমন বিজ্ঞাপনের ধরণগুলির সাথে সরাসরি লিঙ্ক করুন।
মেটাডেটা আপডেট করুন
আপনি UpdateYouTubeVideoUpload পদ্ধতি ব্যবহার করে এই API এর মাধ্যমে আপলোড করা ভিডিওর মেটাডেটা আপডেট করতে পারেন। শুধুমাত্র video_title , video_description , এবং video_privacy ক্ষেত্রগুলি আপডেট করা যেতে পারে।
আপলোডগুলি সরান
যদি আপনার Google Ads API ব্যবহার করে আপলোড করা ভিডিও মুছে ফেলার প্রয়োজন হয়, তাহলে RemoveYouTubeVideoUpload পদ্ধতিটি ব্যবহার করুন। এটি Google Ads অ্যাসেট লাইব্রেরি এবং YouTube উভয় থেকে ভিডিওটি সরিয়ে ফেলবে।