הרשמה להתראות

YouTube Data API (v3) תומך בהתראות דרך PubSubHubbub, פרוטוקול פרסום/הרשמה משרת לשרת למשאבים נגישים באינטרנט. ההתראות נשלחות למנויים באמצעות תגובות לפעולה מאתר אחר (webhook) מסוג HTTP. השיטה הזו יעילה הרבה יותר מפתרונות שמבוססים על סקרים. בעזרת PubSubHubbub, השרת מקבל מידע על אירועים כמעט בזמן אמת, בלי לקבוע את מרווח הזמן האופטימלי של התשאול או לאחזר שוב ושוב נתונים שלא השתנו.

שרת הקריאה החוזרת (callback) של PubSubHubbub מקבל התראות בפיד Atom כשערוץ מבצע אחת מהפעולות הבאות:

  • מעלה סרטון
  • מעדכן שם של סרטון
  • מעדכן תיאור של סרטון

כדי להירשם לקבלת התראות, יש לפעול לפי השלבים הבאים:

  1. הגדרת שרת התקשרות חזרה שיכול לטפל בהתראות נכנסות של פיד Atom.

  2. אפשר להשתמש במרכז של Google כדי להירשם לקבלת התראות:

    • מגדירים את המצב לערך subscribe. (לחלופין, מגדירים את המצב לunsubscribe כדי לבטל את המינוי).

    • מגדירים את כתובת ה-URL לקריאה חוזרת לכתובת ה-URL שהגדרתם בשלב 1.

    • מגדירים את כתובת ה-URL של הנושא כ-https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID. CHANNEL_ID הוא מזהה הערוץ ב-YouTube שעבורו רוצים לאחזר את ההתראות.

  3. התראות על עיבודן נשלחות לשרת ההתקשרות חזרה. פורמט ההתראות מוצג למטה. הערה: אפשר להשתמש בערך הרכיב <yt:videoId> כדי לזהות את הסרטון החדש שנוסף או עודכן. אפשר גם להשתמש בערך הרכיב <yt:channelId> כדי לזהות את הערוץ שהסרטון שייך לו.

    <feed xmlns:yt="http://www.youtube.com/xml/schemas/2015"
             xmlns="http://www.w3.org/2005/Atom">
      <link rel="hub" href="https://pubsubhubbub.appspot.com"/>
      <link rel="self" href="https://www.youtube.com/xml/feeds/videos.xml?channel_id=CHANNEL_ID"/>
      <title>YouTube video feed</title>
      <updated>2015-04-01T19:05:24.552394234+00:00</updated>
      <entry>
        <id>yt:video:VIDEO_ID</id>
        <yt:videoId>VIDEO_ID</yt:videoId>
        <yt:channelId>CHANNEL_ID</yt:channelId>
        <title>Video title</title>
        <link rel="alternate" href="http://www.youtube.com/watch?v=VIDEO_ID"/>
        <author>
         <name>Channel title</name>
         <uri>http://www.youtube.com/channel/CHANNEL_ID</uri>
        </author>
        <published>2015-03-06T21:40:57+00:00</published>
        <updated>2015-03-09T19:05:24.552394234+00:00</updated>
      </entry>
    </feed>