خدمة YouTube

تسمح لك خدمة YouTube باستخدام YouTube Data API وYouTube Live Streaming API في "برمجة التطبيقات". وتتيح واجهة برمجة التطبيقات هذه للمستخدمين إمكانية إدارة الفيديوهات وقوائم التشغيل والقنوات والأحداث المباشرة.

مَراجع

للحصول على ��علومات مفصّلة حول هذه الخدمة، يمكنك الاطّلاع على المستندات المرجعية التالية:

مثل كل الخدمات المتقدمة في "برمجة تطبيقات Google"، تستخدم خدمة YouTube الكائنات والطرق والمعلَمات نفسها التي تستخدمها واجهة برمجة التطبيقات العامة. لمزيد من المعلومات، يُرجى الاطِّلاع على كيفية تحديد توقيعات الطرق.

للإبلاغ عن المشاكل والعثور على خيارات دعم أخرى، اطّلِع على صفحات الدعم المناسبة:

نموذج التعليمات البرمجية

يستخدم الرمز النموذجي أدناه الإصدار 3 من YouTube Data API.

البحث حسب الكلمة الرئيسية

تبحث هذه الدالة عن فيديوهات عن الكلاب، ثم تسجّل معرّفات الفيديوهات وعنوانها. لاحظ أن هذا النموذج يقصر النتائج على 25 نتيجة. لعرض المزيد من النتائج، أدخِل معلَمات إضافية كما هو موضّح في المستندات المرجعية الخاصة بواجهة برمجة التطبيقات لبيانات YouTube.

advanced/youtube.gs
/**
 * Searches for videos about dogs, then logs the video IDs and title.
 * Note that this sample limits the results to 25. To return more
 * results, pass additional parameters as shown in the YouTube Data API docs.
 * @see https://developers.google.com/youtube/v3/docs/search/list
 */
function searchByKeyword() {
  try {
    const results = YouTube.Search.list('id,snippet', {
      q: 'dogs',
      maxResults: 25
    });
    if (results === null) {
      console.log('Unable to search videos');
      return;
    }
    results.items.forEach((item)=> {
      console.log('[%s] Title: %s', item.id.videoId, item.snippet.title);
    });
  } catch (err) {
    // TODO (developer) - Handle exceptions from Youtube API
    console.log('Failed with an error %s', err.message);
  }
}

استرداد الملفات المحمَّلة

تسترد هذه الدالة الفيديوهات التي يحمّلها المستخدم. يقوم بذلك باستخدام الخطوات التالية:

  1. لجلب قناة المستخدم
  2. لجلب قائمة تشغيل uploads الخاصة بالمستخدم
  3. التكرار من خلال قائمة التشغيل هذه وتسجيل معرّفات الفيديوهات وعناوينها
  4. إذا كانت هناك صفحة نتائج تالية، سيجلبها ثم يعود إلى الخطوة 3.
advanced/youtube.gs
/**
 * This function retrieves the user's uploaded videos by:
 * 1. Fetching the user's channel's.
 * 2. Fetching the user's "uploads" playlist.
 * 3. Iterating through this playlist and logs the video IDs and titles.
 * 4. If there is a next page of resuts, fetching it and returns to step 3.
 */
function retrieveMyUploads() {
  try {
    // @see https://developers.google.com/youtube/v3/docs/channels/list
    const results = YouTube.Channels.list('contentDetails', {
      mine: true
    });
    if (!results || results.items.length === 0) {
      console.log('No Channels found.');
      return;
    }
    for (let i = 0; i < results.items.length; i++) {
      const item = results.items[i];
      /** Get the channel ID - it's nested in contentDetails, as described in the
       * Channel resource: https://developers.google.com/youtube/v3/docs/channels.
       */
      const playlistId = item.contentDetails.relatedPlaylists.uploads;
      let nextPageToken = null;
      do {
        // @see: https://developers.google.com/youtube/v3/docs/playlistItems/list
        const playlistResponse = YouTube.PlaylistItems.list('snippet', {
          playlistId: playlistId,
          maxResults: 25,
          pageToken: nextPageToken
        });
        if (!playlistResponse || playlistResponse.items.length === 0) {
          console.log('No Playlist found.');
          break;
        }
        for (let j = 0; j < playlistResponse.items.length; j++) {
          const playlistItem = playlistResponse.items[j];
          console.log('[%s] Title: %s',
              playlistItem.snippet.resourceId.videoId,
              playlistItem.snippet.title);
        }
        nextPageToken = playlistResponse.nextPageToken;
      } while (nextPageToken);
    }
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed with err %s', err.message);
  }
}

الاشتراك في القناة

يساهم هذا النموذج في اشتراك المستخدم في قناة Google Developers على YouTube.

advanced/youtube.gs
/**
 * This sample subscribes the user to the Google Developers channel on YouTube.
 * @see https://developers.google.com/youtube/v3/docs/subscriptions/insert
 */
function addSubscription() {
  // Replace this channel ID with the channel ID you want to subscribe to
  const channelId = 'UC_x5XG1OV2P6uZZ5FSM9Ttw';
  const resource = {
    snippet: {
      resourceId: {
        kind: 'youtube#channel',
        channelId: channelId
      }
    }
  };

  try {
    const response = YouTube.Subscriptions.insert(resource, 'snippet');
    console.log('Added subscription for channel title : %s', response.snippet.title);
  } catch (e) {
    if (e.message.match('subscriptionDuplicate')) {
      console.log('Cannot subscribe; already subscribed to channel: ' +
        channelId);
    } else {
      // TODO (developer) - Handle exception
      console.log('Error adding subscription: ' + e.message);
    }
  }
}