वीडियो अपलोड करें

YouTubeVideoUploadService की मदद से, Google Ads API के ज़रिए सीधे YouTube पर वीडियो अपलोड किए जा सकते हैं. इन वीडियो का इस्तेमाल, अलग-अलग तरह के विज्ञापनों में ऐसेट के तौर पर किया जा सकता है. जैसे, परफ़ॉर्मेंस मैक्स कैंपेन या मांग बढ़ाने में मदद करने वाले कैंपेन.

इस सेवा की मदद से, वीडियो विज्ञापन बनाने की प्रोसेस को आसान बनाया जा सकता है. यह सेवा, YouTube पर वीडियो अपलोड करने की प्रोसेस को मैनेज करती है. साथ ही, यह पक्का करती है कि वीडियो आपके खाते से सही तरीके से जुड़े हों.

मुख्य सिद्धांत

शुरू करने से पहले, यह समझना ज़रूरी है कि वीडियो अपलोड को कैसे मैनेज किया जाता है और वे किन-किन स्थितियों से गुज़र सकते हैं.

चैनल स्वामित्व

वीडियो अपलोड करते समय, आपको YouTube चैनल का डेस्टिनेशन तय करने का विकल्प मिलता है. इसके लिए, YouTubeVideoUpload रिसॉर्स में मौजूद channel_id फ़ील्ड का इस्तेमाल करें:

  • विज्ञापन देने वाले व्यक्ति या कंपनी के मालिकाना हक वाला (ब्रैंड) चैनल: विज्ञापन देने वाले व्यक्ति या कंपनी के मालिकाना हक वाले YouTube चैनल का channel_id दें. ब्रैंड चैनल पर वीडियो अपलोड करने से, वीडियो की निजता और उसके दिखने की सेटिंग को बेहतर तरीके से कंट्रोल किया जा सकता है.
  • Google खाते से मैनेज किया जा रहा चैनल: अगर channel_id को शामिल नहीं किया जाता है, तो वीडियो को Google खाते से मैनेज किए जा रहे उस YouTube चैनल पर अपलोड किया जाता है जो Google Ads खाते से जुड़ा है.

अपलोड की स्थितियां

YouTube पर वीडियो अपलोड करने की प्रोसेस को state फ़ील्ड ट्रैक करता है. YouTubeVideoUploadState इनम से, ये स्थितियां तय होती हैं:

राज्य ब्यौरा
PENDING वीडियो अपलोड किया जा रहा है.
UPLOADED वीडियो को अपलोड कर दिया गया है और YouTube इसे प्रोसेस कर रहा है.
PROCESSED वीडियो को प्रोसेस कर दिया गया है और अब इसका इस्तेमाल किया जा सकता है.
FAILED अपलोड या प्रोसेसिंग पूरी नहीं की जा सकी.
REJECTED पुष्टि करने या नीति के उल्लंघन की वजह से वीडियो को अस्वीकार कर दिया गया था.
UNAVAILABLE वीडियो की स्थिति 'उपलब्ध नहीं है' पर सेट है. ऐसा हो सकता है कि वीडियो को YouTube से हटा दिया गया हो.

निजता सेटिंग

video_privacy फ़ील्ड से यह कंट्रोल किया जाता है कि अपलोड किया गया वीडियो कौन देख सकता है. YouTubeVideoPrivacy enum में ये वैल्यू इस्तेमाल की जा सकती हैं:

  • PUBLIC: यह वीडियो YouTube पर हर किसी के लिए उपलब्ध है. (सिर्फ़ ब्रैंड चैनलों के लिए अनुमति है).
  • UNLISTED: वीडियो को खोजा नहीं जा सकता, लेकिन लिंक वाले लोग इसे देख सकते हैं. यह Google के मैनेज किए गए चैनलों के लिए डिफ़ॉल्ट और एकमात्र विकल्प है.

वीडियो अपलोड करें

वीडियो अपलोड करने के लिए, आपको CreateYouTubeVideoUpload तरीके का इस्तेमाल करके, कई हिस्सों में बंटा हुआ अनुरोध करना होगा. अनुरोध में, अपलोड किए जाने वाले वीडियो का मेटाडेटा और वीडियो फ़ाइल, दोनों शामिल होती हैं.

1. अपलोड शुरू करना

CreateYouTubeVideoUploadRequest बनाएं. इसमें ये जानकारी दें:

  • customer_id: आपका Google Ads ग्राहक आईडी.
  • you_tube_video_upload: यह YouTubeVideoUpload ऑब्जेक्ट है. इसमें video_title, video_description, और वैकल्पिक तौर पर channel_id और video_privacy शामिल हैं.

अगर क्लाइंट लाइब्रेरी का इस्तेमाल किया जा रहा है, तो CreateYouTubeVideoUpload तरीके को कॉल करें. इसमें अपनी वीडियो फ़ाइल पास करें. इसके बाद, वीडियो अपलोड करने की प्रोसेस को अंदरूनी तौर पर मैनेज किया जाएगा.

Java

This example is not yet available in Java; you can take a look at the other languages.
    

C#

This example is not yet available in C#; you can take a look at the other languages.
    

PHP

This example is not yet available in PHP; you can take a look at the other languages.
    

Python

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}")
      

Ruby

This example is not yet available in Ruby; you can take a look at the other languages.
    

Perl

This example is not yet available in Perl; you can take a look at the other languages.
    

curl

# 
# 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 एचटीटीपी रिस्पॉन्स हेडर में मौजूद होता है. साथ ही, इसमें अन्य मेटाडेटा भी शामिल होता है. जैसे, चंक किए गए अपलोड के लिए, हर चंक का अनुमानित साइज़.

अपलोड करने की प्रोसेस शुरू करते समय, x-goog-upload-header-content-length एचटीटीपी अनुरोध हेडर का इस्तेमाल करके, अपलोड किए जाने वाले वीडियो का साइज़ भी बताया जा सकता है.

वीडियो अपलोड करने के प्रोटोकॉल में इस्तेमाल किए गए एचटीटीपी हेडर के बारे में पूरी जानकारी के लिए, कोड का यह उदाहरण देखें:

# 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')
      

3. वीडियो अपलोड होने की स्थिति वापस पाना

वीडियो अपलोड करने की प्रोसेस शुरू करने के बाद, GAQL का इस्तेमाल करके you_tube_video_upload संसाधन से क्वेरी करके, वीडियो के अपलोड होने की स्थिति का पता लगाया जा सकता है:

Java

This example is not yet available in Java; you can take a look at the other languages.
    

C#

This example is not yet available in C#; you can take a look at the other languages.
    

PHP

This example is not yet available in PHP; you can take a look at the other languages.
    

Python

# 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}."
    )
      

Ruby

This example is not yet available in Ruby; you can take a look at the other languages.
    

Perl

This example is not yet available in Perl; you can take a look at the other languages.
    

curl

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 स्थिति में पहुंच जाता है, तब आपको उसका YouTube वीडियो आईडी, YouTubeVideoUpload संसाधन के video_id फ़ील्ड में मिल सकता है.

इस video_id का इस्तेमाल करके, VideoAsset बनाएं या इसे सीधे तौर पर उन विज्ञापन टाइप से लिंक करें जो YouTube वीडियो के साथ काम करते हैं. इसके लिए, वीडियो आईडी का रेफ़रंस दें.

मेटाडेटा अपडेट करें

इस एपीआई के ज़रिए अपलोड किए गए वीडियो का मेटाडेटा अपडेट किया जा सकता है. इसके लिए, UpdateYouTubeVideoUpload तरीके का इस्तेमाल करें. सिर्फ़ video_title, video_description, और video_privacy फ़ील्ड अपडेट किए जा सकते हैं.

अपलोड किए गए वीडियो हटाना

अगर आपको Google Ads API का इस्तेमाल करके अपलोड किए गए वीडियो मिटाने हैं, तो RemoveYouTubeVideoUpload तरीके का इस्तेमाल करें. इससे वीडियो, Google Ads की ऐसेट लाइब्रेरी और YouTube, दोनों से हट जाएगा.