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'