نماذج رموز برمجة التطبيقات

تتوفر نماذج رموز برمجة التطبيقات التالية لـ YouTube Data API. يمكنك تنزيل نماذج الرموز هذه من المجلد apps-script في مستودع نماذج الرموز البرمجية لواجهات برمجة تطبيقات YouTube على GitHub.

استرداد عمليات التحميل التي أجريتها

تسترد هذه الدالة الفيديوهات التي حمّلها مستخدم النص البرمجي الحالي. لتنفيذ هذا الإجراء، يتطلب الأمر نطاق قراءة/كتابة OAuth في YouTube بالإضافة إلى تفويض المستخدم. في بيئة وقت تشغيل "برمجة تطبيقات Google"، في المرة الأولى التي يشغِّل فيها المستخدم نصًا برمجيًا، ستطلب "برمجة تطبيقات Google" من المستخدم إذنًا للوصول إلى الخدمات التي يطلبها النص البرمجي. بعد منح الأذونات، يتم تخزينها مؤقتًا لبعض الوقت. سيُطلَب من المستخدم الذي يشغِّل النص البرمجي الحصول على الإذن مرة أخرى بعد تغيير الأذونات المطلوبة أو عندما يتم إبطالها بواسطة الدالة ScriptApp.invalidateAuth() .

يتّبع هذا النص البرمجي الخطوات التالية لاسترداد الفيديوهات التي حمّلها المستخدم النشط: 1. لجلب قنوات المستخدم 2. لجلب "عمليات التحميل" التي أجراها المستخدم قائمة التشغيل 3. ويتم التكرار خلال قائمة التشغيل هذه وتسجيل معرّفات الفيديوهات وعناوينها 4. لجلب رمز مميز للصفحة التالية (إن وُجد). إذا كان هناك واحد، سيتم جلب الصفحة التالية. انتقال إلى الخطوة 3
/**
 * This function retrieves the current script user's uploaded videos. To execute,
 * it requires the OAuth read/write scope for YouTube as well as user authorization.
 * In Apps Script's runtime environment, the first time a user runs a script, Apps
 * Script will prompt the user for permission to access the services called by the
 * script. After permissions are granted, they are cached for some periodF of time.
 * The user running the script will be prompted for permission again once the
 * permissions required change, or when they are invalidated by the
 * ScriptApp.invalidateAuth() function.
 *
 * This script takes the following steps to retrieve the active user's uploaded videos:
 *    1. Fetches the user's channels
 *    2. Fetches the user's 'uploads' playlist
 *    3. Iterates through this playlist and logs the video IDs and titles
 *    4. Fetches a next page token (if any). If there is one, fetches the next page. GOTO Step 3
 */
function retrieveMyUploads() {
  var results = YouTube.Channels.list('contentDetails', {mine: true});
  for(var i in results.items) {
    var item = results.items[i];
    // Get the playlist ID, which is nested in contentDetails, as described in the
    // Channel resource: https://developers.google.com/youtube/v3/docs/channels
    var playlistId = item.contentDetails.relatedPlaylists.uploads;

    var nextPageToken = '';

    // This loop retrieves a set of playlist items and checks the nextPageToken in the
    // response to determine whether the list contains additional items. It repeats that process
    // until it has retrieved all of the items in the list.
    while (nextPageToken != null) {
      var playlistResponse = YouTube.PlaylistItems.list('snippet', {
        playlistId: playlistId,
        maxResults: 25,
        pageToken: nextPageToken
      });

      for (var j = 0; j < playlistResponse.items.length; j++) {
        var playlistItem = playlistResponse.items[j];
        Logger.log('[%s] Title: %s',
                   playlistItem.snippet.resourceId.videoId,
                   playlistItem.snippet.title);

      }
      nextPageToken = playlistResponse.nextPageToken;
    }
  }
}

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

تبحث هذه الدالة عن الفيديوهات ذات الصلة بالكلمة الرئيسية "كلاب". يتم تسجيل معرّفات الفيديو وعناوين نتائج البحث في سجلّ "برمجة تطبيقات Google".

يُرجى العلم أنّ هذا النموذج يؤدّي إلى الحدّ من عدد النتائج إلى 25 نتيجة. لعرض المزيد من النتائج، انتقِل إلى مَعلمات إضافية كما هو موثّق هنا: https://developers.google.com/youtube/v3/docs/search/list.
/**
 * This function searches for videos related to the keyword 'dogs'. The video IDs and titles
 * of the search results are logged to Apps Script's log.
 *
 * Note that this sample limits the results to 25. To return more results, pass
 * additional parameters as documented here:
 *   https://developers.google.com/youtube/v3/docs/search/list
 */
function searchByKeyword() {
  var results = YouTube.Search.list('id,snippet', {q: 'dogs', maxResults: 25});
  for(var i in results.items) {
    var item = results.items[i];
    Logger.log('[%s] Title: %s', item.id.videoId, item.snippet.title);
  }
}

البحث حسب الموضوع

تبحث هذه الدالة عن الفيديوهات المرتبطة بموضوع Freebase معيّن، وتسجِّل معرّفات الفيديوهات وعناوينها في سجلّ "برمجة تطبيقات Google". يستخدم هذا المثال معرّف الموضوع لبرمجة تطبيقات Google.

يُرجى العلم أنّ هذا النموذج يؤدّي إلى الحدّ من عدد النتائج إلى 25 نتيجة. لعرض المزيد من النتائج، انتقِل إلى مَعلمات إضافية كما هو موثّق هنا: https://developers.google.com/youtube/v3/docs/search/list.
/**
 * This function searches for videos that are associated with a particular Freebase
 * topic, logging their video IDs and titles to the Apps Script log. This example uses
 * the topic ID for Google Apps Script.
 *
 * Note that this sample limits the results to 25. To return more results, pass
 * additional parameters as documented here:
 *   https://developers.google.com/youtube/v3/docs/search/list
 */
function searchByTopic() {
  var mid = '/m/0gjf126';
  var results = YouTube.Search.list('id,snippet', {topicId: mid, maxResults: 25});
  for(var i in results.items) {
    var item = results.items[i];
    Logger.log('[%s] Title: %s', item.id.videoId, item.snippet.title);
  }
}

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

يشترك هذا النموذج للمستخدم النشط في قناة Google Developers على YouTube، والتي تم تحديدها بواسطة channelId.
/**
 * This sample subscribes the active user to the Google Developers
 * YouTube channel, specified by the channelId.
 */
function addSubscription() {
  // Replace this channel ID with the channel ID you want to subscribe to
  var channelId = 'UC_x5XG1OV2P6uZZ5FSM9Ttw';
  var resource = {
    snippet: {
      resourceId: {
        kind: 'youtube#channel',
        channelId: channelId
      }
    }
  };

  try {
    var response = YouTube.Subscriptions.insert(resource, 'snippet');
    Logger.log(response);
  } catch (e) {
    if(e.message.match('subscriptionDuplicate')) {
      Logger.log('Cannot subscribe; already subscribed to channel: ' + channelId);
    } else {
      Logger.log('Error adding subscription: ' + e.message);
    }
  }
}

تحديث الفيديو

يعثر هذا النموذج على تحميلات المستخدم النشط، ثم يعدِّل وصف أحدث عملية تحميل من خلال إلحاق سلسلة.
/**
 * This sample finds the active user's uploads, then updates the most recent
 * upload's description by appending a string.
 */
function updateVideo() {
  // 1. Fetch all the channels owned by active user
  var myChannels = YouTube.Channels.list('contentDetails', {mine: true});
  // 2. Iterate through the channels and get the uploads playlist ID
  for (var i = 0; i < myChannels.items.length; i++) {
    var item = myChannels.items[i];
    var uploadsPlaylistId = item.contentDetails.relatedPlaylists.uploads;

    var playlistResponse = YouTube.PlaylistItems.list('snippet', {
      playlistId: uploadsPlaylistId,
      maxResults: 1
    });

    // Get the videoID of the first video in the list
    var video = playlistResponse.items[0];
    var originalDescription = video.snippet.description;
    var updatedDescription = originalDescription + ' Description updated via Google Apps Script';

    video.snippet.description = updatedDescription;

    var resource = {
      snippet: {
        title: video.snippet.title,
        description: updatedDescription,
        categoryId: '22'
      },
      id: video.snippet.resourceId.videoId
    };
    YouTube.Videos.update(resource, 'id,snippet');
  }
}