راهنمای توسعه دهنده: پایتون

YouTube Data API به برنامه های کاربردی سرویس گیرنده اجازه می دهد تا محتوای YouTube را در قالب فیدهای Google Data API بازیابی و به روز کنند. برنامه مشتری شما می‌تواند از فیدهای YouTube Data API برای واکشی، جستجو و به‌روزرسانی ویدیوها، نظرات، پاسخ‌ها، فهرست‌های پخش، نمایه‌های کاربر و مخاطبین کاربر و همچنین درخواست ویدیوهایی که با معیارهای خاصی مطابقت دارند استفاده کند.

این سند علاوه بر ارائه پیش‌زمینه‌ای در مورد قابلیت‌های YouTube Data API، نمونه‌هایی برای تعامل با API با استفاده از کتابخانه Client Python ارائه می‌کند. برای استفاده از کتابخانه کلاینت پایتون، به پایتون 2.0+ و ماژول های Element Tree، httplib و urllib نیاز دارید. برای جزئیات بیشتر به ماژول‌های وابستگی مراجعه کنید.

اگر برای راه اندازی کتابخانه کلاینت پایتون به کمک نیاز دارید، راهنمای شروع به کار جایی است که باید جستجو کنید. اگر علاقه مند به درک بیشتر در مورد پروتکل اساسی هستید که توسط کتابخانه مشتری پایتون برای تعامل با YouTube استفاده می شود، به صفحه پروتکل راهنمای توسعه دهنده مراجعه کنید.

در مورد این سند

مخاطب

این سند برای برنامه نویسانی در نظر گرفته شده است که می خواهند برنامه های مشتری بنویسند که می توانند با استفاده از کتابخانه کلاینت پایتون با YouTube تعامل داشته باشند. این مجموعه نمونه هایی از تعاملات API داده های پایه را ارائه می دهد.

برای اطلاعات مرجع YouTube Data API، به راهنمای مرجع مراجعه کنید.

این سند فرض می‌کند که شما ایده‌های کلی پشت پروتکل Google Data APIs را درک می‌کنید و می‌دانید که چگونه در پایتون برنامه‌نویسی کنید.

برای اطلاعات مرجع در مورد کلاس‌ها و روش‌های پایتون، به pyDocs (برای کلاس سرویس و کلاس‌های داده ) که با کد منبع ارائه می‌شوند، مراجعه کنید.

ساختار سند

این سند شامل بخش های زیر است:

  • بخش Authentication دو روش مختلف احراز هویت موجود برای مرتبط کردن عملیات API با یک حساب کاربری خاص را توضیح می‌دهد. این بخش همچنین به تشریح تفاوت‌های بین احراز هویت برای YouTube Data API و سایر APIهای Google Data می‌پردازد. در سراسر این سند، توضیحات مربوط به توابع خاص API به وضوح نشان می دهد که آیا این تابع به احراز هویت کاربر نیاز دارد یا خیر. به طور کلی تمام درخواست هایی که داده های ویدیو یا فید را تغییر می دهند باید احراز هویت شوند. درخواست‌های فقط خواندنی برای ویدیوهای عمومی نیازی به احراز هویت ندارند.

  • بخش درک فیدها و ورودی‌های ویدیویی یک نمونه پاسخ API را ارائه می‌کند و نحوه استخراج اطلاعات مربوط به یک ویدیو را از لیست ویدیوها یا مجموعه‌ای از نتایج جستجو توضیح می‌دهد. این بخش همچنین نحوه دسترسی به متا داده در مورد یک ورودی ویدیویی خاص را توضیح می دهد. در نهایت، این بخش مکانیسم به‌روزرسانی یک ورودی ویدیویی را توضیح می‌دهد.

  • بخش بازیابی و جستجوی ویدیوها نحوه واکشی لیست های خاصی از ویدیوها، مانند فید استاندارد محبوب ترین ویدیوهای YouTube را توضیح می دهد. سایر لیست های ویدیوها شامل ویدیوهای آپلود شده توسط یک کاربر خاص و لیست ویدیوهای مربوط به یک ویدیوی خاص است. این بخش همچنین نحوه استفاده از API را توضیح می‌دهد تا کاربران بتوانند در کتابخانه ویدیوی YouTube با عبارات یا دسته‌های جستجوی خاص جستجو کنند.

  • بخش آپلود ویدیوها به طور خلاصه دو روش را توضیح می دهد که می توانید به کاربران اجازه دهید ویدیوها را از برنامه شما در YouTube آپلود کنند. علاوه بر این، این بخش همچنین نحوه آپلود ویدیوها را به عنوان پاسخ به ویدیوهای دیگر توضیح می دهد.

  • بخش به‌روزرسانی و حذف ویدیوها نحوه استفاده از API برای به‌روزرسانی اطلاعات یک ویدیوی YouTube را توضیح می‌دهد. همچنین توضیح می دهد که چگونه می توان یک ویدیو را با استفاده از API حذف کرد.

  • بخش استفاده از ویژگی‌های انجمن، عملکردهای API را توصیف می‌کند که به کاربران شما اجازه می‌دهد با ویدیوهای YouTube تعامل داشته باشند. این توابع درخواست‌های ارسال رتبه، نظر یا شکایت را برای یک ویدیوی موجود توضیح می‌دهند. همچنین می توانید از API برای بازیابی لیست نظرات ویدیویی استفاده کنید.

  • بخش ذخیره و جمع‌آوری ویدیوها نحوه استفاده از API برای دسترسی، ایجاد و به‌روزرسانی ویدیوهای دلخواه، فهرست‌های پخش ویدیو و اشتراک در کانال‌های YouTube را توضیح می‌دهد. همچنین نشان می دهد که چگونه می توان لیست های پخش ویدیو و موارد دلخواه را با افزودن و حذف ویدیوها تغییر داد.

  • بخش فعال کردن تعامل کاربر نحوه استفاده از API برای بازیابی و به‌روزرسانی پروفایل‌های کاربر را توضیح می‌دهد. این بخش همچنین نحوه بازیابی، افزودن، به روز رسانی و حذف مخاطبین کاربر را توضیح می دهد.

شروع کردن

الزامات

برنامه مشتری شما می‌تواند از فیدهای YouTube Data API برای جستجو، بازیابی و به‌روزرسانی ویدیوها، نظرات، پاسخ‌ها، فهرست‌های پخش، اشتراک‌ها، نمایه‌های کاربر و موارد دیگر استفاده کند.

این سند علاوه بر ارائه پیش‌زمینه‌ای در مورد قابلیت‌های YouTube Data API، نمونه‌هایی برای تعامل با API با استفاده از کتابخانه Client Python ارائه می‌کند. برای استفاده از کتابخانه کلاینت پایتون، به پایتون 2.2+ و ماژول های Element Tree، httplib و urllib نیاز دارید. برای جزئیات بیشتر به ماژول‌های وابستگی مراجعه کنید.

برای اطلاعات بیشتر در مورد پیکربندی محیط خود به راهنمای شروع کار مراجعه کنید. اگر علاقه مند به درک بیشتر در مورد پروتکل اساسی هستید که توسط کتابخانه مشتری پایتون برای تعامل با YouTube استفاده می شود، به صفحه پروتکل راهنمای توسعه دهنده مراجعه کنید.

تکه های کد نمونه زیر را می توان در کد شما کپی/پیست کرد و متناسب با نیاز شما اصلاح کرد.

قبل از اینکه بتوانید عملیاتی را با YouTube Data API انجام دهید، باید یک شی gdata.youtube.service.YouTubeService را مقداردهی اولیه کنید، همانطور که در زیر نشان داده شده است. عبارات import فهرست شده در زیر به طور خودکار واردات بیشتری را از ماژول های gdata.media و gdata.geo انجام می دهند. لطفاً توجه داشته باشید که همه اقدامات به غیر از بازیابی محتوای عمومی نیاز به احراز هویت دارند.

import gdata.youtube
import gdata.youtube.service

yt_service = gdata.youtube.service.YouTubeService()

# Turn on HTTPS/SSL access.
# Note: SSL is not available at this time for uploads.
yt_service.ssl = True

بیشتر نمونه‌های روش در این راهنما بر روی نمونه‌ای از gdata.youtube.service.YouTubeService عمل می‌کنند. ممکن است آزمایش درخواست های تایید نشده از مفسر تعاملی پایتون مفید باشد.

توجه : کتابخانه کلاینت پایتون باید به درستی در مسیر شما اضافه شود. لطفاً با اجرای اسکریپت setup.py ارائه شده آن را نصب کنید. برای اطلاعات بیشتر به راهنمای شروع مراجعه کنید.

احراز هویت

کتابخانه کلاینت پایتون می تواند برای کار با فیدهای عمومی یا خصوصی استفاده شود. فیدهای عمومی فقط خواندنی هستند و نیازی به احراز هویت ندارند. فیدهای خصوصی مستلزم احراز هویت در سرورهای YouTube هستند.

احراز هویت می تواند از طریق تأیید اعتبار ClientLogin (برای برنامه های دسکتاپ) یا از طریق تأیید اعتبار AuthSub (برای برنامه های کاربردی وب) انجام شود.

تنظیم کلید توسعه دهنده و شناسه مشتری

یک کلید توسعه‌دهنده، توسعه‌دهنده YouTube را که درخواست API ارسال می‌کند، شناسایی می‌کند. شناسه مشتری برنامه شما را برای اهداف ورود و اشکال زدایی شناسایی می کند.

هنگامی که با استفاده از کتابخانه کلاینت پایتون یک درخواست API ایجاد می کنید، هدر درخواست X-GData-Key برای تعیین کلید توسعه دهنده و هدر X-GData-Client برای تعیین شناسه مشتری شما استفاده می شود. کلید توسعه‌دهنده و شناسه مشتری را می‌توان بر روی شی YouTubeService ، مستقل از طرح احراز هویتی که استفاده می‌شود، تنظیم کرد:

yt_service.developer_key = 'ABCxyz123...'
yt_service.client_id = 'My-Client_id'

باید برای یک کلید توسعه دهنده YouTube ثبت نام کنید .

احراز هویت AuthSub برای برنامه های کاربردی وب

احراز هویت پراکسی AuthSub توسط برنامه های کاربردی وب استفاده می شود که باید کاربران خود را در حساب های YouTube/Google احراز هویت کنند. اپراتور نیازی به دسترسی به نام کاربری و رمز عبور کاربر YouTube ندارد — فقط نشانه های AuthSub ویژه مورد نیاز است.

هنگامی که کاربر برای اولین بار از برنامه شما بازدید می کند، هنوز با سرویس های Google احراز هویت نشده است. در این مورد، باید پیوندی را برای آنها ارائه دهید که کاربر را به Google هدایت می کند تا درخواست برنامه های شما برای دسترسی به حساب YouTube خود را مجاز کند. کتابخانه کلاینت پایتون تابعی را برای تولید این URL ارائه می کند. کد زیر پیوندی را به صفحه AuthSubRequest تنظیم می کند.

def GetAuthSubUrl():
  next = 'http://www.example.com/video_upload.pyc'
  scope = 'http://gdata.youtube.com'
  secure = False
  session = True

yt_service = gdata.youtube.service.YouTubeService()
return yt_service.GenerateAuthSubURL(next, scope, secure, session)

authSubUrl = GetAuthSubUrl()
print '<a href="%s">Login to your Google account</a>' % authSubUrl

به پارامترهای ارسال شده به متد GenerateAuthSubURL شیء سرویس توجه کنید:

  • بعدی - URL صفحه‌ای که یوتیوب باید کاربر را پس از اینکه برنامه شما را برای دسترسی به حساب خود مجاز کرد، به آن هدایت کند.
  • محدوده - نشان می دهد که برنامه فقط به فیدهای YouTube API دسترسی خواهد داشت.
  • امن - نشان می دهد که توکن برگشتی یک توکن امن نخواهد بود.
  • جلسه - نشان می دهد که این نشانه می تواند با یک توکن چند منظوره (جلسه) مبادله شود.

URL برگشتی چیزی شبیه به این خواهد بود:

https://www.google.com/accounts/AuthSubRequest?scope=http%3A%2F%2Fgdata.youtube.com&session=1&secure=0&next=http%3A%2F%2Fwww.example.com%2Fvideo_upload.pyc

سپس کاربر می تواند پیوند را برای ورود به حساب YouTube خود دنبال کند. پس از اینکه کاربر به برنامه شما اجازه دسترسی به حساب خود را داد، سپس به URL next هدایت می شود. URL دارای یک مقدار رمز یکبار مصرف است که به عنوان پارامتر پرس و جو به آن اضافه می شود. URL چیزی شبیه به این است:

http://www.example.com/video_upload.pyc?token=Abc123...

بخش بعدی نحوه ارتقاء این توکن را نشان می دهد. قطعه زیر یکی از راه های بازیابی این نشانه را از URL نشان می دهد:

import cgi
parameters = cgi.FieldStorage()
authsub_token = parameters[[]'token' ]

ارتقاء به یک نشانه جلسه

برای امنیت، این توکن فقط یکبار مصرف است، بنابراین اکنون باید این توکن یکبار مصرف را با یک توکن جلسه مبادله کنید. این فرآیند در مستندات AuthSub توضیح داده شده است. قطعه کد زیر نحوه ارتقاء توکن را نشان می دهد.

yt_service = gdata.youtube.service.YouTubeService()
yt_service.SetAuthSubToken(authsub_token)
yt_service.UpgradeToSessionToken()

این مقدار توکن نشان دهنده یک توکن AuthSub یکبار مصرف است. از آنجایی که session = True در بالا مشخص شد، این توکن را می توان با یک نشانه جلسه AuthSub با استفاده از روش UpgradeToSessionToken که سرویس AuthSubSessionToken را فراخوانی می کند، مبادله کرد.

شی YouTubeService شما اکنون کاملاً احراز هویت شده است و می توان از آن برای انجام تمام درخواست های بعدی با YouTube API استفاده کرد. نشانه‌های جلسه AuthSub منقضی نمی‌شوند مگر اینکه شما به‌طور خاص درخواست لغو آنها را صادر کنید، یا کاربر تصمیم بگیرد با مراجعه به صفحه سایت‌های مجاز در حساب YouTube خود، دسترسی را لغو کند.

احراز هویت ClientLogin برای برنامه های نصب شده

احراز هویت ClientLogin در برنامه‌های نصب‌شده استفاده می‌شود که می‌توانند نام کاربری و رمز عبور کاربر را ذخیره کنند یا از او درخواست کنند. برای استفاده از این شکل از احراز هویت، روش ProgrammaticLogin YouTubeService را که از کلاس gdata.service.GDataService به ارث رسیده است، فراخوانی کنید و شناسه و رمز عبور کاربری را مشخص کنید که مشتری شما از طرف او درخواست احراز هویت را ارسال می کند.

yt_service = gdata.youtube.service.YouTubeService()
yt_service.email = 'jo@gmail.com'
yt_service.password = 'mypassword'
yt_service.source = 'my-example-application'
yt_service.ProgrammaticLogin()

هنگامی که اعتبارنامه تنظیم شد، شی YouTubeService می تواند برای رسیدگی به تمام درخواست های بعدی استفاده شود. برای اینکه بتوانید آپلودها و هر نوع درخواست «نوشتن» (افزودن نظرات و غیره) را در YouTube API انجام دهید، مطمئن شوید که کلید توسعه‌دهنده و شناسه مشتری خود را هنگام احراز هویت به شی yt_service نیز ارسال می‌کنید:

# A complete client login request
yt_service.email = 'jo@gmail.com'
yt_service.password = 'mypassword'
yt_service.source = 'my-example-application'
yt_service.developer_key = 'ABC123...'
yt_service.client_id = 'my-example-application'
yt_service.ProgrammaticLogin()

وقتی ویژگی‌های developer_key و client_id تنظیم می‌شوند، شی YouTubeService به‌طور خودکار سرصفحه‌های صحیح X-GData-Key و X-GData-Client را تنظیم می‌کند.

توجه: لطفاً برای اطلاعات دقیق‌تر در مورد مکانیسم‌های AuthSub و ClientLogin به اسناد احراز هویت Google Data API مراجعه کنید.

درک فیدها و ورودی های ویدئویی

YouTube Data API چندین فید ویدیویی ارائه می‌کند که فهرستی از ویدیوها را نشان می‌دهد، مانند فیدهای استاندارد، آپلودها، اشتراک‌ها و موارد دلخواه. URL برای هر فید در راهنمای مرجع مستند شده است.

نمایش فید ویدیوها

بسیاری از فیدها در YouTube API از ورودی های ویدیویی تشکیل شده اند. این فیدها را می‌توان به سادگی به‌عنوان اشیاء gdata.youtube.YouTubeVideoFeed مدل‌سازی کرد که هر کدام شامل تعدادی شی gdata.youtube.YouTubeVideoEntry است. هر ورودی ویدیو دقیقاً مربوط به یک ویدیو در YouTube است و حاوی اطلاعاتی در مورد ویدیو است.

ساختار اصلی بازیابی فهرستی از ویدئوها، ساختن یک URL برای فید ویدئو و سپس پردازش ورودی‌ها در یک زمان، مشابه کد زیر است:

def GetAndPrintVideoFeed(uri):
  yt_service = gdata.youtube.service.YouTubeService()
  feed = yt_service.GetYouTubeVideoFeed(uri)
  for entry in feed.entry:
    PrintEntryDetails(entry) # full documentation for this function

بخش بازیابی و جستجوی ویدیوها به جزئیات بسیاری از URLهای فید رایج و نحوه بازیابی فیدهای ویدیویی مختلف می پردازد.

بازیابی یک ورودی ویدیویی خاص

اگر شناسه ویدیویی آن را بدانید، می‌توانید فقط اطلاعات مربوط به یک ورودی ویدیویی خاص را بازیابی کنید. URL ورودی بر اساس شناسه ویدیو است:

http://gdata.youtube.com/feeds/api/videos/videoID

کد زیر یک gdata.youtube.YouTubeVideoEntry مربوط به یک ویدیو در YouTube را بازیابی می کند:

entry = yt_service.GetYouTubeVideoEntry(video_id='the0KZLEacs')

محتوای ورودی ویدیو

بخش‌های زیادی از متا داده‌ها وجود دارد که می‌توان آنها را از یک شی gdata.youtube.YouTubeVideoEntry بازیابی کرد، مانند تصاویر کوچک، نشانی‌های اینترنتی پخش‌کننده، و مدت زمان ویدیو. کد زیر نحوه دستیابی به برخی از این اطلاعات را نشان می دهد. کتابخانه کلاینت پایتون بیشتر این قابلیت را با نگاشت عناصر XML در کلاس ها خلاصه می کند. بیشتر اطلاعات مهم در مورد ورودی YouTubeVideoEntry از فرزندان ویژگی media (شامل یک شی gdata.media.Group ) در ورودی (نماینده عنصر XML media:group ) در دسترس است. در زیر نمونه ای از نحوه بازیابی متا داده های ویدئویی آورده شده است:

def PrintEntryDetails(entry):
  print 'Video title: %s' % entry.media.title.text
  print 'Video published on: %s ' % entry.published.text
  print 'Video description: %s' % entry.media.description.text
  print 'Video category: %s' % entry.media.category[[]0].text
  print 'Video tags: %s' % entry.media.keywords.text
  print 'Video watch page: %s' % entry.media.player.url
  print 'Video flash player URL: %s' % entry.GetSwfUrl()
  print 'Video duration: %s' % entry.media.duration.seconds

  # non entry.media attributes
  print 'Video geo location: %s' % entry.geo.location()
  print 'Video view count: %s' % entry.statistics.view_count
  print 'Video rating: %s' % entry.rating.average

  # show alternate formats
  for alternate_format in entry.media.content:
    if 'isDefault' not in alternate_format.extension_attributes:
      print 'Alternate format: %s | url: %s ' % (alternate_format.type,
                                                 alternate_format.url)

  # show thumbnails
  for thumbnail in entry.media.thumbnail:
    print 'Thumbnail url: %s' % thumbnail.url

توجه: برای اطلاعات بیشتر در مورد نحوه تولید اطلاعات مورد نیاز برای جاسازی یک ویدیو با پخش کننده در صفحه خود لطفاً به راهنمای پروتکل مراجعه کنید.

بازیابی و جستجوی ویدیوها

بازیابی فیدهای استاندارد

YouTube Data API یک فید استاندارد از محبوب ترین ویدیوهای YouTube ارائه می دهد. API قبلاً فیدهای استاندارد دیگری را پشتیبانی می کرد که از آن زمان منسوخ شده اند. برای اطلاعات بیشتر به راهنمای توسعه‌دهنده مراجعه کنید.

URL فید محبوب ترین ویدیوهای YouTube دارای فرمت زیر است:

http://gdata.youtube.com/feeds/api/standardfeeds/most_popular

توجه: همچنین می‌توانید فیدهای استاندارد محلی خاص را با تعیین یک شناسه محلی در قالب: http://gdata.youtube.com/feeds/api/standardfeeds/ localeID /feedID بازیابی کنید. برای مثال، محبوب ترین ویدیوها در ژاپن عبارتند از: http://gdata.youtube.com/feeds/api/standardfeeds/JP/most_popular . برای فهرست کاملی از شناسه‌های محلی فرضی، لطفاً به راهنمای مرجع مراجعه کنید.

def PrintVideoFeed(feed):
  for entry in feed.entry:
    PrintEntryDetails(entry)

def GetAndPrintFeedByUrl:
  yt_service = gdata.youtube.service.YouTubeService()

  # You can retrieve a YouTubeVideoFeed by passing in the URI
  uri = 'http://gdata.youtube.com/feeds/api/standardfeeds/JP/most_popular'
  PrintVideoFeed(yt_service.GetYouTubeVideoFeed(uri))

بازیابی ویدیوهای آپلود شده توسط یک کاربر خاص

هر کاربر YouTube یک فید ویدیویی مرتبط با ویدیوهایی که آپلود کرده است در http://gdata.youtube.com/feeds/api/users/ username /uploads دارد. کد زیر نحوه واکشی و نمایش فید آپلودهای کاربر را نشان می دهد:

def GetAndPrintUserUploads(username):
  yt_service = gdata.youtube.service.YouTubeService()
  uri = 'http://gdata.youtube.com/feeds/api/users/%s/uploads' % username
  PrintVideoFeed(yt_service.GetYouTubeVideoFeed(uri))

توجه: همچنین می‌توانید از رشته «پیش‌فرض» به جای username برای بازیابی ویدیوها برای کاربر تأیید شده فعلی استفاده کنید.

برای بازیابی ویدیوهای مرتبط، شناسه ویدیوی شی gdata.youtube.YouTubeVideoEntry را به روش GetYouTubeRelatedVideoFeed شی gdata.youtube.service.YouTubeService ارسال کنید. این یک شی YouTubeVideoFeed حاوی ورودی های مرتبط را بازیابی می کند.

related_feed = yt_service.GetYouTubeRelatedVideoFeed(video_id='abc123')

جستجو برای ویدیوها

YouTube Data API به شما امکان می‌دهد مجموعه‌ای از ورودی‌ها را درخواست کنید که با معیارهای مشخص شده مطابقت دارند، مانند درخواست ورودی‌های ویدیویی منتشر شده توسط یک نویسنده خاص، با فرمت ویدیو یا حاوی یک کلمه کلیدی خاص. برای انجام این کار، یک شی gdata.service.YouTubeVideoQuery با معیارهای جستجوی خاص خود ایجاد می کنید و آن را به روش YouTubeQuery در gdata.youtube.service.YouTubeService ارسال می کنید.

مثال زیر نحوه انجام یک پرس و جو را با نتایج مرتب شده بر اساس تعداد بازدیدها، از جمله ویدیوهای محدود شده نشان می دهد (که API به آن «Racy» می گویند):

def SearchAndPrint(search_terms):
  yt_service = gdata.youtube.service.YouTubeService()
  query = gdata.youtube.service.YouTubeVideoQuery()
  query.vq = search_terms
  query.orderby = 'viewCount'
  query.racy = 'include'
  feed = yt_service.YouTubeQuery(query)
  PrintVideoFeed(feed)

کلاس gdata.service.Query و زیر کلاس‌هایی مانند YouTubeVideoQuery ، مسئول ساخت URLهای فید هستند. VideoQuery نشان داده شده در بالا یک URL معادل زیر می سازد:

http://gdata.youtube.com/feeds/api/videos?vq=<searchTerms>&racy=include&orderby=viewCount

در اینجا برخی از رایج ترین ویژگی های YouTubeVideoQuery برای تنظیم پارامترهای جستجو آمده است:

author
نویسنده ورودی را تنظیم می کند. نویسنده مترادف با نام کاربری یوتیوب است.
format
فرمت ویدیویی را مشخص می کند. پارامترهای عددی را می‌پذیرد تا یکی از دو نوع URL جریان RTSP را برای پخش ویدیوی تلفن همراه یا یک URL HTTP برای پخش‌کننده Flash قابل جاسازی تعیین کند.
racy
نشان می دهد که آیا محتوای محدود شده باید در نتایج گنجانده شود یا خیر. تنها دو پارامتر را می‌پذیرد: «شامل» یا «حذف».
max_results
حداکثر تعداد ورودی ها را برای بازگشت در یک زمان تنظیم می کند.
start_index
فهرست مبتنی بر 1 اولین نتیجه ای که باید بازیابی شود (برای صفحه بندی) را تنظیم می کند.
orderby
ترتیب فهرست کردن ورودی ها را تنظیم می کند، مانند relevance ، viewCount ، published یا rating .
time
یک دوره زمانی را برای محدود کردن نتایج فید استاندارد به: today ، this_week ، this_month یا all_time تنظیم می‌کند.
vq
یک عبارت جستجو را تنظیم می کند. رشته مشخص شده را در تمام ابرداده های ویدیویی مانند عنوان، برچسب و توضیحات جستجو می کند.

توجه: برای اطلاعات بیشتر در مورد پارامترهای پرس و جو، به راهنمای مرجع YouTube Data API و راهنمای مرجع Google Data APIs مراجعه کنید.

جستجو با دسته ها و کلمات کلیدی

می‌توانید نتایج جستجو را محدود کنید تا فقط ویدیوهایی را نشان دهند که با مجموعه معینی از دسته‌ها و کلمات کلیدی مطابقت دارند. راهنمای مرجع نحوه تعیین هر دو دسته های از پیش تعریف شده YouTube (مانند موسیقی، افراد و وبلاگ ها، و غیره) و کلمات کلیدی تعریف شده توسط کاربر (برچسب ها) را توضیح می دهد.

کد زیر نحوه جستجو با استفاده از کلمات کلیدی (برچسب ها) را با تغییر عبارات جستجو به حروف کوچک نشان می دهد. توجه: از آنجایی که برخی از کلمات (مانند "کمدی") می توانند هم یک دسته YouTube و هم یک کلمه کلیدی باشند، دسته بندی و جستجوهای کلمه کلیدی از این قرارداد استفاده می کنند که یک کلمه بزرگ ("کمدی") یک دسته YouTube را نشان می دهد، در حالی که یک کلمه کوچک ("کمدی") ") یک کلمه کلیدی را نشان می دهد.

def SearchAndPrintVideosByKeywords(list_of_search_terms):
  yt_service = gdata.youtube.service.YouTubeService()
  query = gdata.youtube.service.YouTubeVideoQuery()
  query.orderby = 'viewCount'
  query.racy = 'include'
  for search_term in list_of_search_terms:
    new_term = search_term.lower()
    query.categories.append('/%s' % new_term)
  feed = yt_service.YouTubeQuery(query)
  PrintVideoFeed(feed)

جستجو بر اساس برچسب های توسعه دهنده

برچسب‌های توسعه‌دهنده کلمات کلیدی مخفی و اضافی هستند که یک توسعه‌دهنده ممکن است از آنها برای برچسب‌گذاری محتوای آپلود شده از طریق برنامه خود توسط کاربران نهایی استفاده کند. تگ‌های برنامه‌نویس با کلید توسعه‌دهنده تنظیم شده در سرصفحه‌ها در طول آپلود مطابقت دارند. این کلمات کلیدی برای عموم قابل مشاهده نخواهند بود و ممکن است برای بازیابی ویدیوها استفاده شوند. برای جستجوی ویدیوها توسط یک برچسب برنامه‌نویس خاص، یک درخواست جستجوی کلی YouTube Data API با استفاده از کلید برنامه‌نویس خود ارسال کنید. حتماً طرح دسته و برچسب توسعه دهنده را که ویدیوها باید مطابقت داشته باشند را مشخص کنید. می‌توانید فید ویدیوهای منطبق با برچسب برنامه‌نویس خود («your_tag_here» در مثال ما) را از URL زیر بازیابی کنید:

developer_tag_uri = 'http://gdata.youtube.com/feeds/videos/-/%7Bhttp%3A%2F%2Fgdata.youtube.com%2Fschemas%2F2007%2Fdevelopertags.cat%7Dyour_tag_here'
yt_service = gdata.youtube.service.YouTubeService()
PrintVideoFeed(yt_service.GetYouTubeVideoFeed(developer_tag_uri))

در حال آپلود ویدیوها

لطفاً نمودارهای موجود در راهنمای پروتکل را برای یک نمای کلی در سطح بالا از روند آپلود بررسی کنید. آپلود ویدیوها را می توان به یکی از دو روش انجام داد:

  • یا با آپلود مستقیم ویدیو از سرورهای خود از طریق روش آپلود مستقیم
  • یا ابتدا متا دیتا را ارسال کنید و سپس کاربر ویدیو را مستقیماً از طریق روش آپلود مبتنی بر مرورگر در YouTube آپلود کند.

آپلود مستقیم

برای آپلود یک ویدیو، ابتدا باید یک شی gdata.youtube.YouTubeVideoEntry جدید بسازید و آن را یک شی gdata.media.Group حاوی متا داده های مورد نیاز ارسال کنید. مثال زیر آپلود ویدیوی Quicktime "mytestmovie.mov" در YouTube را با ویژگی های زیر نشان می دهد:

اموال ارزش
عنوان فیلم تست من
دسته بندی خودروها
کلمات کلیدی ماشین، خنده دار
توضیحات توضیحات من
نام فایل mytestmovie.mov
نوع فایل MIME ویدئو/زمان سریع
ویدیو خصوصی؟ نادرست
مکان ویدیو 37، 122 (لات، بلند)
برچسب های توسعه دهنده mydevelopertag، یک توسعه دهنده دیگر

کد زیر یک YouTubeVideoEntry خالی برای آپلود ایجاد می کند. روش InsertVideoEntry در YouTubeService به پارامترهای زیر نیاز دارد:

  • video_entry - شی gdata.youtube.VideoEntry حاوی متا داده است
  • filename_or_handle - یک شی فایل مانند یا نام فایلی که ویدیو از آن خوانده می شود
  • youtube_username - یک رشته اختیاری که نام کاربری را مشخص می‌کند که این ویدیو در کدام حساب قرار است آپلود شود. البته حساب شما به مجوزهای مناسب نیاز دارد. این به طور پیش فرض برای حساب کاربری تأیید شده فعلی است.
  • content_type - یک رشته اختیاری که نوع MIME ویدیویی را که باید آپلود شود مشخص می کند.
لطفاً توجه داشته باشید که این مثال‌ها فرض می‌کنند که متغیر yt_service به یک شی YouTubeService کاملاً تأیید شده اشاره دارد.

# prepare a media group object to hold our video's meta-data
my_media_group = gdata.media.Group(
  title=gdata.media.Title(text='My Test Movie'),
  description=gdata.media.Description(description_type='plain',
                                      text='My description'),
  keywords=gdata.media.Keywords(text='cars, funny'),
  category=[[]gdata.media.Category(
      text='Autos',
      scheme='http://gdata.youtube.com/schemas/2007/categories.cat',
      label='Autos')],
  player=None
)


# prepare a geo.where object to hold the geographical location
# of where the video was recorded
where = gdata.geo.Where()
where.set_location((37.0,-122.0))

# create the gdata.youtube.YouTubeVideoEntry to be uploaded
video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group,
                                              geo=where)

# set the path for the video file binary
video_file_location = '/path/to/my/file.mov'

new_entry = yt_service.InsertVideoEntry(video_entry, video_file_location)

اگر می‌خواستیم ویدیوی خود را با تگ‌های توسعه‌دهنده اختیاری برچسب‌گذاری کنیم (برای جزئیات بیشتر به جستجوی برچسب‌های برنامه‌نویس مراجعه کنید)، می‌توانستیم از روش AddDeveloperTags قبل از برقراری تماس با InsertVideoEntry استفاده کنیم:

developer_tags = [[]'some_tag_01', 'another_tag']
video_entry.AddDeveloperTags(developer_tags)

توجه: برای آپلود ویدیوها به عنوان خصوصی، یک ویژگی خصوصی باید به gdata.media.Group ارسال شود:

my_media_group = gdata.media.Group(
  title=gdata.media.Title(text='My Test Movie'),
  description=gdata.media.Description(description_type='plain',
                                      text='My description'),
  keywords=gdata.media.Keywords(text='cars, funny'),
  category=[[]gdata.media.Category(
      text='Autos',
      scheme='http://gdata.youtube.com/schemas/2007/categories.cat',
      label='Autos')],
  player=None,
  private=gdata.media.Private()
)

video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group)

# assuming that video_file_location points to a valid path
new_entry = yt_service.InsertVideoEntry(video_entry, video_file_location)

آپلود مبتنی بر مرورگر

آپلود مبتنی بر مرورگر تقریباً مشابه آپلود مستقیم انجام می شود، با این تفاوت که شما فایل باینری خود را در همان درخواستی که برای ارسال فراداده ویدیو استفاده می کنید، آپلود نمی کنید. در عوض، شما به سادگی یک YouTubeVideoEntry ایجاد می کنید که فقط حاوی متا داده است. این ورودی ویدیو سپس به یک پیوند ویژه در سرور YouTube API ارسال می شود. پاسخ XML حاوی یک token و یک url است که سپس می تواند برای آپلود فایل باینری با استفاده از یک فرم استاندارد HTML استفاده شود.

# create media group as usual
my_media_group = gdata.media.Group(
  title=gdata.media.Title(text='My Test Movie'),
  description=gdata.media.Description(description_type='plain',
                                      text='My description'),
  keywords=gdata.media.Keywords(text='cars, funny'),
  category=[[]gdata.media.Category(
      text='Autos',
      scheme='http://gdata.youtube.com/schemas/2007/categories.cat',
      label='Autos')],
  player=None
)

# create video entry as usual
video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group)

# upload meta data only
response = yt_service.GetFormUploadToken(video_entry)

# parse response tuple and use the variables to build a form (see next code snippet)
post_url = response[[]0]
youtube_token = response[[]1]

کد بالا یک پیوند و یک نشانه را چاپ می کند که برای ساخت یک فرم HTML برای نمایش در مرورگر کاربر استفاده می شود. یک فرم مثال ساده در زیر نشان داده شده است که youtube_token محتوای عنصر نشانه بازگشتی را نشان می دهد، همانطور که نشان داده شده است که از YouTubeVideoEntry در بالا بازیابی شده است. برای اینکه کاربر پس از ارسال فرم به وب‌سایت شما هدایت شود، مطمئن شوید که پارامتر next را به post_url اضافه کنید (مانند شکل زیر)، که مانند پارامتر next پیوند AuthSub عمل می‌کند. تنها تفاوت این است که در اینجا، به جای یک توکن یکبار مصرف، یک متغیر status و یک id به عنوان پارامترهای URL برگردانده می شود.

next = 'http://example.com/post_video_upload.pyc'

form = """<form action="%s?nexturl=%s" method="post" enctype="multipart/form-data">
          <input name="file" type="file"/>
          <input name="token" type="hidden" value="%s"/>
          <input value="Upload Video File" type="submit" />
          </form>""" % (post_url, next, youtube_token)

یک پاسخ برای آپلود موفقیت آمیز به این صورت خواهد بود:

http://example.com/post_video_upload.pyc?status=200&id=ABC123

پارامتر status وضعیت تراکنش HTTP تراکنش بارگذاری را برمی‌گرداند. پارامتر id شناسه ویدیوی YouTube را که به ویدیوی آپلود شده اختصاص داده شده است، برمی گرداند.

بررسی وضعیت آپلود

پس از آپلود یک ویدیو، بلافاصله در فید آپلودهای یک کاربر تأیید شده قابل مشاهده خواهد بود. با این حال، تا زمانی که پردازش نشود، در سایت عمومی نخواهد بود. ویدیوهایی که رد شده اند یا با موفقیت آپلود نشده اند نیز فقط در فید آپلودهای کاربر تأیید شده قرار خواهند گرفت. کد زیر وضعیت YouTubeVideoEntry را بررسی می کند تا ببیند آیا هنوز زنده نیست یا رد شده است.

upload_status = yt_service.CheckUploadStatus(new_entry)

if upload_status is not None:
  video_upload_state = upload_status[[]0]
  detailed_message = upload_status[[]1]

به روز رسانی و حذف ویدیوها

به روز رسانی اطلاعات ویدئویی

برای به روز رسانی متا داده های ویدیویی، به سادگی شی YouTubeVideoEntry به روز کنید و سپس از روش UpdateVideoEntry اشیاء YouTubeService استفاده کنید. این روش یک YouTubeVideoEntry را به عنوان پارامتر می گیرد که حاوی متا داده به روز شده است.

# assuming we have a video entry that was just posted in our 'new_entry' variable
new_entry.media.title.text = 'My Updated Video Title'
new_entry.media.description.text = 'Just updated'

updated_entry = yt_service.UpdateVideoEntry(new_entry)

حذف یک ویدیو

حذف یک ویدیو بسیار ساده است و فقط شامل تماس با DeleteVideoEntry شی YouTubeService است.

response = yt_service.DeleteVideoEntry(entry_to_be_deleted)

if response:
  print 'Video successfully deleted!'

استفاده از ویژگی های جامعه

افزودن رتبه

برای رتبه بندی یک ویدیو، از روش AddRating شی YouTubeService استفاده کنید. لطفاً توجه داشته باشید که نمی‌توانید به ویدیوهای خود امتیاز دهید و رتبه‌بندی‌ها باید بین ۱ تا ۵ باشد (شامل):

video_id_to_rate = 'Ncakifd_16k'
video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id_to_rate)
response = yt_service.AddRating(3, video_entry)

نظرات

بازیابی نظرات برای یک ویدیو

با توجه به یک شی YouTubeVideoEntry یا یک شناسه ویدیوی ساده، می‌توانید با استفاده از روش GetYouTubeVideoCommentFeed شی YouTubeService ، فید حاوی نظرات ویدیو را بازیابی و چاپ کنید. فید حاصل یک gdata.youtube.YouTubeCommentFeed است که از اشیاء gdata.youtube.YouTubeCommentEntry تشکیل شده است. فید را می توان مانند هر فید دیگری تجزیه کرد:

video_id = 'ABC123...'
comment_feed = yt_service.GetYouTubeVideoCommentFeed(video_id=video_id)

for comment_entry in comment_feed.entry:
  print comment_entry.ToString()

افزودن نظر

برای افزودن نظر جدید، از روش AddComment شیء YouTubeService استفاده کنید. این روش به یک شیء YouTubeVideoEntry کامل نیاز دارد که باید روی آن نظر داده شود، و همچنین یک رشته که نمایانگر نظر است:

my_comment = 'what a boring test video'
video_id = '9g6buYJTt_g'
video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id)
yt_service.AddComment(comment_text=my_comment, video_entry=video_entry)

پاسخ های ویدیویی

پاسخ ویدیویی YouTube ویدیویی بود که به عنوان پاسخ با ویدیوی دوم مرتبط بود. ویژگی پاسخ‌های ویدیویی همانطور که در این اطلاعیه توضیح داده شده است بازنشسته شده است. در حالی که پاسخ‌های ویدیویی موجود هنوز در دسترس هستند، YouTube دیگر از توانایی بازیابی فهرستی از پاسخ‌های ویدیویی برای یک ویدیو، آپلود پاسخ‌های ویدیویی جدید، یا حذف پاسخ‌های ویدیویی پشتیبانی نمی‌کند، اگرچه می‌توانید ویدیویی را که در پاسخ ویدیویی استفاده شده است حذف کنید. . در نتیجه، این توابع نیز دیگر در API پشتیبانی نمی شوند.

درخواست‌های API برای عملیات پاسخ ویدیویی اکنون موارد زیر را برمی‌گرداند:

  • درخواست برای بازیابی پاسخ های ویدیویی برای یک ویدیو، یک لیست خالی را برمی گرداند.
  • درخواست برای افزودن پاسخ ویدیویی کد پاسخ HTTP 403 را برمی‌گرداند.
  • درخواست حذف پاسخ ویدیویی کد پاسخ HTTP 403 را برمی گرداند.

پرچم گذاری یک ویدیو

افزودن شکایت در مورد یک ویدیو با روش AddComplaint در شی YouTubeService انجام می شود. عبارت شکایت باید یک دسته معتبر باشد. لطفاً برای اطلاعات بیشتر به بخش افزودن شکایت در راهنمای پروتکل مراجعه کنید.

video_id_to_flag = 'Ncakifd_16k'
complaint_term = 'VIOLENCE'
complaint_text = ('Please ignore this complaint. '
                  'I\'m testing a YouTube API and needed to issue '
                  'a complaint to test the add complaint function. ')

response = yt_service.AddComplaint(complaint_text, complaint_term, video_id_to_flag)

ذخیره و جمع آوری فیلم ها

ویدیوهای مورد علاقه

بازیابی ویدیوهای مورد علاقه کاربر

کاربران YouTube می توانند ویدیوهایی را که تماشا می کنند به عنوان موارد دلخواه علامت گذاری کنند. مکان عمومی برای فید مورد علاقه کاربر آدرس زیر است.

http://gdata.youtube.com/feeds/api/users/username/favorites

برای بازیابی ویدیوهای مورد علاقه کاربر، از روش GetUserFavoritesFeed شی YouTubeService استفاده کنید. این روش یک رشته اختیاری را به عنوان پارامتری دریافت می کند که نشان دهنده نام کاربری یوتیوب کاربری است که فید مورد علاقه او باید بازیابی شود.

favorite_feed = yt_service.GetUserFavoritesFeed(username='gdpython')

فید برگشتی یک فید ویدیویی معمولی است که حاوی اشیاء YouTubeVideoEntry است.

توجه: در غیر این صورت، می‌توانید رشته default را برای بازیابی موارد دلخواه برای کاربر تأیید شده فعلی ارسال کنید. اگر نام کاربری ارائه نشده باشد، این رفتار پیش‌فرض روش GetUserFavoritesFeed است.

افزودن مورد دلخواه

برای افزودن یک ویدیوی دلخواه از روش AddVideoEntryToFavorites شی YouTubeService استفاده کنید. پارامترها عبارتند از YouTubeVideoEntry که قرار است اضافه شود و به صورت اختیاری نام کاربری که به موارد دلخواه اضافه می شود (پیش فرض کاربر تأیید شده فعلی است).

video_id = 'Ncakifd_16k'
video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id)
response = yt_service.AddVideoEntryToFavorites(video_entry)

# The response, if successfully posted is a YouTubeVideoEntry
if isinstance(response, gdata.youtube.YouTubeVideoEntry):
  print 'Video successfully added to favorites'

حذف مورد علاقه

برای حذف یک مورد دلخواه، به سادگی از روش DeleteVideoEntryFromFavorites شی YouTubeService استفاده کنید.

video_id = 'Ncakifd_16k'
response = yt_service.DeleteVideoEntryFromFavorites(video_id)
if response is True:
  print 'Video deleted from favorites'

لیست های پخش

هر کاربر YouTube یک فید لیست پخش دارد که شامل تمام لیست های پخشی است که کاربر ایجاد کرده است. سپس هر لیست پخش دارای یک فید برای همه ویدیوهایی است که در آن هستند.

بازیابی لیست پخش کاربران

برای واکشی لیستی از تمام لیست های پخش یک کاربر به صورت دستی، از URL زیر استفاده کنید:

http://gdata.youtube.com/feeds/api/users/username/playlists

با استفاده از کتابخانه کلاینت پایتون، می توانید از متد GetYouTubePlaylistFeed شی YouTubeService استفاده کنید:

playlist_feed = yt_service.GetYouTubePlaylistFeed(username='gdpython')

# instead of passing in a username, you can also pass the URI to the playlist feed:
playlist_feed = yt_service.GetYouTubePlaylistFeed(uri='http://gdata.youtube.com/feeds/api/users/default/playlists')

توجه: به جای ارسال یک نام کاربری خاص (مانند 'gdpython' در مثال بالا)، همچنین می توانید رشته 'default' را برای اشاره به کاربر تأیید شده فعلی ارسال کنید.

یک gdata.youtube.YouTubePlaylistFeed یک فید از اشیاء gdata.youtube.YouTubePlaylistEntry را نشان می دهد. اینها به لیست های پخش فردی که یک کاربر ممکن است داشته باشد اشاره دارد. ورودی های ویدیویی در یک لیست پخش خاص به عنوان اشیاء gdata.youtube.YouTubePlaylistVideoEntry نشان داده می شوند. این اشیاء با چند استثنا بسیار شبیه به اشیاء معمولی gdata.youtube.YouTubeVideoEntry هستند. عناوین و توضیحات سفارشی را می توان برای ویدیوها اعمال کرد و یک فیلد موقعیت نشان می دهد که ویدیو در لیست پخش کجا ظاهر می شود.

بازیابی اطلاعات لیست پخش

با توجه به YouTubePlaylistEntry (نماینده یک لیست پخش خاص)، می توانید یک YouTubePlaylist Video Feed دریافت کنید که حاوی اشیاء YouTubePlaylistVideoEntry است. همانطور که در بالا توضیح داده شد، این اشیاء ویدیوهای فردی را در یک لیست پخش (با عناوین و توضیحات سفارشی اختیاری) نشان می دهند. می توانید این فید را با ارسال URI لیست پخش خود به روش GetYouTubePlaylistVideoFeed شی YouTubeService دریافت کنید:

# a typical playlist URI
playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'

playlist_video_feed = yt_service.GetYouTubePlaylistVideoFeed(uri=playlist_uri)

# iterate through the feed as you would with any other
for playlist_video_entry in playlist_video_feed.entry:
  print playlist_video_entry.title.text

افزودن لیست پخش

برای افزودن یک لیست پخش جدید، به سادگی از روش AddPlaylist شی YouTubeService استفاده کنید. این روش پارامترهای زیر را می گیرد: playlist_title، playlist_description (هر دو رشته) و یک Boolean اختیاری که اگر لیست پخش به عنوان خصوصی علامت گذاری شود، می تواند روی True تنظیم شود.

new_public_playlistentry = yt_service.AddPlaylist('my new playlist', 'a new playlist')

if isinstance(new_public_playlistentry, gdata.youtube.YouTubePlaylistEntry):
  print 'New playlist added'

# adding a private playlist
new_private_playlistentry = yt_service.AddPlaylist('new private playlist', 'a new private playlist', True)

if isinstance(new_private_playlistentry, gdata.youtube.YouTubePlaylistEntry):
  print 'New private playlist added'

به روز رسانی یک لیست پخش

برای به روز رسانی لیست پخش، از روش UpdatePlaylist شی YouTubeService استفاده کنید. این روش پارامترهای زیر را در نظر می گیرد: شناسه لیست پخشی که باید به روز شود، عنوان جدید، توضیحات جدید، یک بولی اختیاری برای مشخص کردن لیست پخش خصوصی و یک رشته اختیاری که نام کاربری مالک لیست پخش را نشان می دهد. رشته به طور پیش فرض برای کاربر تأیید شده فعلی خواهد بود.

# here we are updating a public playlist with a new title while also making it private

# we assume that playlist_to_be_updated here represents a YouTubePlaylistEntry object
playlist_entry_id = playlist_to_be_updated.id.text.split('/')[[]-1]

# we want to keep the original description for the playlist so we store it first
original_description = playlist_to_be_updated.description.text

updated_playlist = yt_service.UpdatePlaylist(playlist_entry_id,
                                             'a new updated title',
                                             original_playlist_description,
                                             playlist_private=True)

افزودن ویدیو به لیست پخش

با استفاده از روش AddPlaylistVideoEntryToPlaylist شیء YouTubeService ، می توانید یک ویدیو به لیست پخش اضافه کنید. کد زیر یک ویدیو را با عنوان و توضیحات سفارشی به لیست پخش اضافه می کند.

custom_video_title = 'my test video on my test playlist'
custom_video_description = 'this is a test video on my test playlist'
video_id = 'Ncakifd_16k'
playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'

playlist_video_entry = yt_service.AddPlaylistVideoEntryToPlaylist(
    playlist_uri, video_id, custom_video_title, custom_video_description)

if isinstance(playlist_video_entry, gdata.youtube.YouTubePlaylistVideoEntry):
  print 'Video added'

توجه: لطفاً توجه داشته باشید که عنوان و توضیحات سفارشی مورد نیاز نیست و اگر این موارد مشخص نشده باشد، از عنوان و توضیحات واقعی ویدیو استفاده خواهد شد.

اطلاعات ویدیو را در لیست پخش ویرایش کنید

از روش UpdatePlaylistVideoEntryMetaData شی YouTubeService برای تغییر متا داده برای YouTubePlaylistVideoEntry استفاده کنید. در مثال زیر تصمیم داریم به ویدیوی خود یک عنوان سفارشی جدید بدهیم و آن را به جایگاه اول (موقعیت 1) در لیست پخش خود منتقل کنیم.

playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'
playlist_entry_id = 'B0F29389E537F888'

new_video_title = 'a useful video'
new_video_description = 'updated video description'

updated_playlist_video_entry = yt_service.UpdatePlaylistVideoEntryMetaData(
    playlist_uri, playlist_entry_id, new_video_title, new_video_description, 1)

توجه: اگر می‌خواهید شرح و عنوان یک ویدیو در فهرست پخش را به متا داده اصلی برگردانید، فقط برای عنوان و توضیحات، NULL را ارسال کنید.

حذف ویدیو از لیست پخش

برای حذف یک ویدیو از لیست پخش، از روش DeletePlaylistVideoEntry شی YouTubeService استفاده کنید. این روش به URI لیست پخش که حاوی ورودی است و همچنین شناسه ورودی نیاز دارد که حذف شود:

playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'
playlist_entry_id = 'B0F29389E537F888'
response = yt_service.DeletePlaylistVideoEntry(playlist_uri,
                                               playlist_entry_id)
if response is True:
  print 'Entry successfully deleted'

حذف لیست پخش

برای حذف یک لیست پخش، به سادگی از روش DeletePlaylist شیء YouTubeService استفاده کنید، و در URI لیست پخش برای حذف، عبور دهید:

playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505'
response = yt_service.DeletePlaylist(playlist_uri)

if response is True:
  print 'Playlist successfully deleted'

اشتراک ها

برای واکشی لیستی از کانال‌ها، جستجوها و موارد دلخواه که یک کاربر خاص در آنها مشترک است، از URI زیر استفاده کنید:

http://gdata.youtube.com/feeds/api/users/username/subscriptions

توجه: در غیر این صورت، می‌توانید رشته default را برای بازیابی موارد دلخواه برای کاربر تأیید شده فعلی ارسال کنید.

بازیابی اشتراک های کاربر

کد زیر نحوه بازیابی و چاپ لیست اشتراک های یک کاربر خاص را نشان می دهد. اشتراک ها به صورت gdata.youtube.YouTubeSubscriptionFeed متشکل از اشیاء gdata.youtube.YouTubeSubscriptionEntry نشان داده می شوند. برای بازیابی اشتراک‌ها، از روش GetYouTubeSubscriptionFeed شی YouTubeService استفاده کنید، یا URI فید اشتراک یا نام کاربری که فید اشتراک آن باید بازیابی شود را ارسال کنید. پارامتر نام کاربری به طور پیش فرض برای کاربر تأیید شده فعلی است.

subscription_feed = yt_service.GetYouTubeSubscriptionFeed(username='gdpython')

if isinstance(subscription_feed, gdata.youtube.YouTubeSubscriptionFeed)):
  # given a YouTubeSubscriptionEntry we can determine it's type (channel, favorite, or query)
  for entry in subscription_feed.entry:
    print entry.GetSubscriptionType()

اضافه کردن اشتراک

می‌توانید با درج YouTubeSubsciptionEntry جدید در فید اشتراک‌های کاربر تأیید شده، اشتراک جدیدی ایجاد کنید. ما می‌توانیم سه نوع اشتراک ایجاد کنیم: اشتراک در کانال کاربر (با استفاده از AddSubscriptionToChannel )، اشتراک در موارد دلخواه کاربر (با استفاده از AddSubscriptionToFavorites یا اشتراک در یک کلمه کلیدی خاص (با استفاده از AddSubscriptionToQuery ). کد زیر کاربر تأیید شده را مشترک می‌کند . کانال Google Developers .

new_subscription = yt_service.AddSubscriptionToChannel(
      username_to_subscribe_to='GoogleDevelopers')

if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry):
  print 'New subscription added'

همچنین می‌توانید در موارد دلخواه کاربر «GoogleDevelopers» مشترک شوید:

new_subscription = yt_service.AddSubscriptionToFavorites(
    username='GoogleDevelopers')
if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry):
  print 'New subscription added'

در نهایت، شما همچنین می توانید مشترک عبارات جستجوی خاص شوید. در اینجا ما مشترک یک درخواست برای ویدیوهایی با برچسب "python" هستیم.

new_subscription = yt_service.AddSubscriptionToQuery(query='python')

if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry):
  print 'New subscription added'

حذف اشتراک

برای حذف اشتراک کاربر، از روش DeleteSubscription شی YouTubeService استفاده کنید.

sample_subscription_uri = ('http://gdata.youtube.com/feeds/api/users/'
                           'gdpython/subscriptions/c0c77ca6102a7479')

response = yt_service.DeleteSubscription(sample_subscription_uri)

if response is True:
  print 'Subscription successfully deleted'

فعال کردن تعامل با کاربر

پروفایل های کاربر

بازیابی نمایه یک کاربر

برای واکشی دستی نمایه یوتیوب کاربر، از URI زیر استفاده کنید:

http://gdata.youtube.com/feeds/api/users/username

می توانید یک gdata.youtube.YouTubeUserEntry با روش GetYouTubeUserEntry شی YouTubeService بازیابی کنید.

user_entry = yt_service.GetYouTubeUserEntry(username='gdpython')

# we can then write a helper function to print out the user details
def PrintUserEntry(entry):
  # print required fields where we know there will be information
  print 'URI: %s\n' % entry.id.text
  print 'Age: %s\n' % entry.age.text
  print 'Gender: %s\n' % entry.gender.text
  print 'Location: %s\n' % entry.location.text

  # check if there is information in the other fields and if so print it
  if user.first_name: 
    print 'First Name: %s\n' % user.first_name.text
  if user.last_name:
    print 'Last Name: %s\n' % user.last_name.text
  if user.relationship:
    print 'Relationship: %s\n' % user.relationship.text
  if user.description:
    print 'About me: %s\n' % user.description.text
  for link in user.link:
    if link.rel == 'related':
      print 'Website: %s\n' % link.href
  if user.company:
    print 'Company: %s\n' % user.company.text
  if user.occupation:
    print 'Occupation: %s\n' % user.occupation.text
  if user.school:
    print 'School: %s\n' % user.school.text
  if user.hobbies:
    print 'Hobbies: %s\n' % user.hobbies.text
  if user.movies:
    print 'Movies: %s\n' % user.movies.text
  if user.music:
    print 'Music: %s\n' % user.music.text
  if user.books:
    print 'Books: %s\n' % user.books.text
  if user.hometown:
    print 'Hometown: %s\n' % user.hometown.text

مخاطبین

لیست مخاطبین یک کاربر معین را می توان از URL زیر بازیابی کرد:

http://gdata.youtube.com/feeds/api/users/username/contacts

بازیابی مخاطبین کاربر

روش GetYouTubeContactFeed شی YouTubeService را می توان برای بازیابی یک gdata.youtube.YouTubeContactFeed ، متشکل از اشیاء gdata.youtube.YouTubeContactEntry استفاده کرد.

contact_feed = yt_service.GetYouTubeContactFeed(username='GoogleDevelopers')
for entry in contact_feed.entry:
  print entry.title.text
  # find the apprpriate category element to find out the contact type
  for category in entry.category:
    if category.scheme == 'http://gdata.youtube.com/schemas/2007/contact.cat':
      print category.term

افزودن مخاطب

برای افزودن یک مخاطب جدید به فید تماس کاربران، از روش AddContact شی YouTubeService استفاده کنید.

new_contact = yt_service.AddContact(contact_username='GoogleDevelopers')

if isinstance(new_contact, gdata.youtube.YouTubeContactEntry)
  print 'New contact added'

پذیرش/رد کردن یک مخاطب

برای به‌روزرسانی یک مخاطب، از روش UpdateContact شی YouTubeService استفاده کنید. از این روش می توان برای پذیرش یا رد درخواست های تماس و همچنین برای دسته بندی مخاطبین به عنوان "دوست" یا "خانواده" استفاده کرد. در مثال زیر ما یک مخاطب را می پذیریم و سپس دسته آن را روی "خانواده" تنظیم می کنیم:

# in this case user 'gdpython' has requested to be our contact
#so the original contact status is 'pending'
updated_contact = yt_service.UpdateContact('gdpython', 'accepted', 'Family')

if isinstance(updated_contact, gdata.youtube.YouTubeContactEntry)
  print 'New contact added'

حذف یک مخاطب

برای حذف یک مخاطب، از روش DeleteContact شی YouTubeService استفاده کنید و نام کاربری مخاطبی را که می‌خواهید حذف کنید وارد کنید.

response = yt_service.DeleteContact(contact_username='gdpython')

if response is True:
  print 'Contact deleted'

بازگشت به بالا