YouTube Data API, istemci uygulamalarının YouTube içeriğini Google Data API feed'leri biçiminde almasına ve güncellemesine olanak tanır. İstemci uygulamanız, videoları, yorumları, yanıtları, oynatma listelerini, kullanıcı profillerini ve kullanıcı kişilerini almak, aramak ve güncellemek, ayrıca belirli ölçütlere uyan videoları sorgulamak için YouTube Data API feed'lerini kullanabilir.
Bu doküman, YouTube Data API'nin özellikleri hakkında bilgi vermenin yanı sıra Python İstemci Kitaplığı'nı kullanarak API ile etkileşime geçmeyle ilgili örnekler de sunar. Python istemci kitaplığını kullanmak için Python 2.0 veya sonraki bir sürümün yanı sıra Element Tree, httplib ve urllib modüllerine ihtiyacınız vardır. Daha fazla bilgi için Bağımlılık Modülleri bölümüne bakın.
Python istemci kitaplığını kurma konusunda yardıma ihtiyacınız varsa Başlangıç Kılavuzu'na göz atın. Python istemci kitaplığının YouTube ile etkileşim kurmak için kullandığı temel protokol hakkında daha fazla bilgi edinmek istiyorsanız Geliştirici Kılavuzu protokol sayfasına göz atın.
Bu belge hakkında
Kitle
Bu doküman, Python istemci kitaplığını kullanarak YouTube ile etkileşime geçebilecek istemci uygulamaları yazmak isteyen programcılara yöneliktir. Temel veri API'si etkileşimlerine dair bir dizi örnek sağlar.
YouTube Data API referans bilgileri için referans kılavuzuna bakın.
Bu dokümanda, Google Data API'leri protokolünün temel fikirlerini anladığınız ve Python'da programlamayı bildiğiniz varsayılmaktadır.
Python sınıfları ve yöntemleri hakkında referans bilgiler için kaynak koda dahil edilen pyDocs'a (hizmet sınıfı ve veri sınıfları için) bakın.
Belge yapısı
Bu dokümanda aşağıdaki bölümler yer alır:
-
Kimlik doğrulama bölümünde, API işlemlerini belirli bir kullanıcı hesabıyla ilişkilendirmek için kullanılabilen iki farklı kimlik doğrulama yöntemi açıklanmaktadır. Bu bölümde, YouTube Data API ile diğer Google Data API'leri arasındaki kimlik doğrulama farklılıkları da özetlenmiştir. Bu doküman boyunca, belirli API işlevlerinin açıklamalarında işlevin kullanıcı kimlik doğrulaması gerektirip gerektirmediği açıkça belirtilir. Genel olarak, video veya feed verilerini değiştiren tüm isteklerin kimlik doğrulaması yapılması gerekir. Herkese açık videolara yönelik salt okuma istekleri için kimlik doğrulama gerekmez.
-
Video feed'lerini ve girişlerini anlama bölümünde örnek bir API yanıtı sağlanmakta ve video listesi veya arama sonuçları grubundan tek bir videoyla ilgili bilgilerin nasıl alınacağı açıklanmaktadır. Bu bölümde, belirli bir video girişiyle ilgili meta verilere nasıl erişileceği de açıklanmaktadır. Son olarak bu bölümde, video girişlerinin tek tek nasıl güncelleneceği açıklanmaktadır.
-
Videoları getirme ve arama bölümünde, YouTube'un en popüler videolarının standart feed'i gibi belirli video listelerinin nasıl getirileceği açıklanmaktadır. Diğer video listeleri arasında belirli bir kullanıcı tarafından yüklenen videolar ve belirli bir videoyla ilgili video listeleri yer alır. Bu bölümde, kullanıcıların YouTube'un video kitaplığında belirli arama terimlerine veya kategorilere göre arama yapmasına olanak tanımak için API'nin nasıl kullanılacağı da açıklanmaktadır.
-
Video yükleme bölümünde, kullanıcıların uygulamanızdan YouTube'a video yüklemesine izin vermenin iki yolu kısaca açıklanmaktadır. Ayrıca bu bölümde, videoların diğer videolara yanıt olarak nasıl yükleneceği de açıklanmaktadır.
-
Videoları güncelleme ve silme bölümünde, bir YouTube videosuyla ilgili bilgileri güncellemek için API'nin nasıl kullanılacağı açıklanmaktadır. Ayrıca, API kullanılarak videoların nasıl kaldırılabileceği de açıklanmaktadır.
-
Topluluk özelliklerini kullanma bölümünde, kullanıcılarınızın YouTube videolarıyla etkileşim kurmasına olanak tanıyan API işlevleri açıklanmaktadır. Bu işlevler, mevcut bir videoya derecelendirme, yorum veya şikayet gönderme isteklerini açıklar. API'yi video yorumlarının listelerini almak için de kullanabilirsiniz.
-
Videoları kaydetme ve toplama bölümünde, favori videolara, video oynatma listelerine ve YouTube kanallarına aboneliklere erişmek, bunları oluşturmak ve güncellemek için API'nin nasıl kullanılacağı açıklanmaktadır. Ayrıca, video oynatma listelerini ve favorileri video ekleyerek ve kaldırarak nasıl değiştireceğiniz de gösterilir.
-
Kullanıcı etkileşimini etkinleştirme bölümünde, kullanıcı profillerini almak ve güncellemek için API'nin nasıl kullanılacağı açıklanmaktadır. Bu bölümde, kullanıcı kişilerinin nasıl alınacağı, ekleneceği, güncelleneceği ve silineceği de açıklanmaktadır.
Başlarken
Şartlar
İstemci uygulamanız, videoları, yorumları, yanıtları, oynatma listelerini, abonelikleri, kullanıcı profillerini ve daha fazlasını aramak, almak ve güncellemek için YouTube Data API feed'lerini kullanabilir.Bu doküman, YouTube Data API'nin özellikleri hakkında bilgi vermenin yanı sıra Python İstemci Kitaplığı'nı kullanarak API ile etkileşime geçmeyle ilgili örnekler de sunar. Python istemci kitaplığını kullanmak için Python 2.2 veya sonraki bir sürümün yanı sıra Element Tree, httplib ve urllib modüllerine ihtiyacınız vardır. Daha fazla bilgi için Bağımlılık Modülleri bölümüne bakın.
Ortamınızı yapılandırma hakkında daha fazla bilgi için Başlangıç Kılavuzu'na bakın. Python istemci kitaplığının YouTube ile etkileşim kurmak için kullandığı temel protokol hakkında daha fazla bilgi edinmek istiyorsanız Geliştirici Kılavuzu'ndaki protokol sayfasına göz atın.
Aşağıdaki örnek kod snippet'leri kopyalanıp/yapıştırılarak kodunuza eklenebilir ve ihtiyaçlarınıza göre değiştirilebilir.
YouTube Data API ile herhangi bir işlem gerçekleştirebilmek için aşağıda gösterildiği gibi bir gdata.youtube.service.YouTubeService
sınıfı nesnesi başlatmanız gerekir. Aşağıda listelenen import
ifadeleri, gdata.media
ve gdata.geo
modüllerinden otomatik olarak daha fazla içe aktarma işlemi gerçekleştirir. Herkese açık içerikleri alma dışındaki tüm işlemler için kimlik doğrulama gerektiğini lütfen unutmayın.
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
Bu kılavuzda yer alan yöntem örneklerinin çoğu gdata.youtube.service.YouTubeService
örneği üzerinde çalışır. Etkileşimli Python yorumlayıcısından gelen kimliği doğrulanmamış istekleri test etmek yararlı olabilir.
Not: Python istemci kitaplığı, yolunuza düzgün bir şekilde eklenmiş olmalıdır. Lütfen sağlanan setup.py
komut dosyasını çalıştırarak yüklediğinizden emin olun. Daha fazla bilgi için Başlangıç Kılavuzu'na bakın.
Kimlik doğrulama
Python istemci kitaplığı, herkese açık veya gizli feed'lerle çalışmak için kullanılabilir. Herkese açık feed'ler salt okunurdur ve kimlik doğrulama gerektirmez. Özel feed'ler için YouTube sunucularında kimliğinizi doğrulamanız gerekir.
Kimlik doğrulaması, ClientLogin kimlik doğrulaması (masaüstü uygulamaları için) veya AuthSub kimlik doğrulaması (web uygulamaları için) aracılığıyla yapılabilir.
Geliştirici anahtarınızı ve istemci kimliğinizi ayarlama
Geliştirici anahtarı, API isteği gönderen YouTube geliştiricisini tanımlar. İstemci kimliği, günlük kaydı ve hata ayıklama amacıyla uygulamanızı tanımlar.
Python istemci kitaplığını kullanarak API isteği gönderdiğinizde geliştirici anahtarınızı belirtmek için X-GData-Key
istek üstbilgisi, istemci kimliğinizi belirtmek için ise X-GData-Client
üstbilgisi kullanılır. Geliştirici anahtarı ve müşteri kimliği, kullanılan kimlik doğrulama şemasından bağımsız olarak YouTubeService
nesnesinde ayarlanabilir:
yt_service.developer_key = 'ABCxyz123...' yt_service.client_id = 'My-Client_id'
YouTube geliştirici anahtarı için kaydolmanız gerekir.
Web uygulamaları için AuthSub kimlik doğrulaması
AuthSub proxy kimlik doğrulaması, kullanıcılarının YouTube/Google hesaplarında kimliğini doğrulaması gereken web uygulamaları tarafından kullanılır. Operatörün, YouTube kullanıcısının kullanıcı adına ve şifresine erişmesi gerekmez. Yalnızca özel AuthSub jetonları gerekir.
Kullanıcı, uygulamanızı ilk kez ziyaret ettiğinde henüz Google hizmetlerinde kimliği doğrulanmamıştır. Bu durumda, kullanıcıların YouTube hesaplarına erişim isteklerini yetkilendirmeleri için onları Google'a yönlendiren bir bağlantı sağlamanız gerekir. Python istemci kitaplığı, bu URL'yi oluşturmak için bir işlev sağlar. Aşağıdaki kod, AuthSubRequest sayfasına bir bağlantı oluşturur.
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
Hizmet nesnelerinin GenerateAuthSubURL
yöntemine gönderilen parametrelere dikkat edin:
- next: Uygulamanız kullanıcının hesabına erişmesine yetki verdikten sonra YouTube'un kullanıcıyı yönlendirmesi gereken sayfanın URL'si.
- scope: Uygulamanın yalnızca YouTube API feed'lerine erişeceğini belirtir.
- secure: Döndürülen jetonun güvenli bir jeton olmayacağını belirtir.
- session: Bu jetonun çok kullanımlı (oturum) jetonla değiştirilebileceğini belirtir.
Döndürülen URL şöyle görünür:
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
Kullanıcı, bağlantıyı takip ederek YouTube hesabına giriş yapabilir. Kullanıcı, uygulamanızın hesabına erişmesi için yetki verdikten sonra next
URL'sine yönlendirilir. URL'ye sorgu parametresi olarak tek kullanımlık bir jeton değeri eklenir. URL şu şekilde görünür:
http://www.example.com/video_upload.pyc?token=Abc123...
Sonraki bölümde bu jetonun nasıl yükseltileceği gösterilmektedir. Aşağıdaki snippet'te, bu jetonun URL'den alınabileceği yöntemlerden biri gösterilmektedir:
import cgi parameters = cgi.FieldStorage() authsub_token = parameters[[]'token' ]
Oturum jetonuna geçme
Güvenlik nedeniyle bu jeton yalnızca tek kullanımlıktır. Bu nedenle, bu tek kullanımlık jetonu bir oturum jetonuyla değiştirmeniz gerekir. Bu işlem AuthSub dokümanlarında açıklanmıştır. Aşağıdaki kod snippet'inde, jetonun nasıl yükseltileceği gösterilmektedir.
yt_service = gdata.youtube.service.YouTubeService() yt_service.SetAuthSubToken(authsub_token) yt_service.UpgradeToSessionToken()
Bu jeton değeri, tek kullanımlık bir AuthSub jetonunu temsil eder. session = True
yukarıda belirtildiği için bu jeton, AuthSubSessionToken
hizmetini çağıran UpgradeToSessionToken
yöntemi kullanılarak AuthSub oturum jetonuyla değiştirilebilir.
YouTubeService
nesnenizin kimliği artık tamamen doğrulandı ve YouTube API ile diğer tüm istekleri gerçekleştirmek için kullanılabilir. AuthSub oturum jetonlarının süresi, siz özel olarak iptal etme isteği göndermediğiniz veya kullanıcı YouTube hesabındaki Yetkili Siteler sayfasını ziyaret ederek erişimi iptal etmediği sürece dolmaz.
Yüklü uygulamalar için ClientLogin kimlik doğrulaması
ClientLogin kimlik doğrulaması, kullanıcınızın kullanıcı adını ve şifresini depolayabilen veya sorgulayabilen yüklü uygulamalarda kullanılır. Bu kimlik doğrulama şeklini kullanmak için istemcinizin kimlik doğrulama isteğini gönderdiği kullanıcının kimliğini ve şifresini belirterek gdata.service.GDataService
sınıfından devralınan YouTubeService
sınıfının ProgrammaticLogin
yöntemini çağırın.
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()
Kimlik bilgileri ayarlandıktan sonra, diğer tüm istekleri işlemek için YouTubeService
nesnesi kullanılabilir. YouTube API'ye yükleme ve her türlü "yazma" isteği (yorum ekleme vb.) gönderebilmek için kimlik doğrulama işlemini gerçekleştirirken geliştirici anahtarınızı ve istemci kimliğinizi yt_service
nesnesine de gönderdiğinizden emin olun:
# 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
ve client_id
özellikleri ayarlandığında YouTubeService
nesnesi doğru X-GData-Key
ve X-GData-Client
başlıklarını otomatik olarak ayarlar.
Not: Hem AuthSub hem de ClientLogin mekanizmaları hakkında daha ayrıntılı bilgi için lütfen Google Data API'leri kimlik doğrulama dokümanlarını inceleyin.
Video feed'lerini ve girişlerini anlama
YouTube Data API, standart feed'ler, yüklemeler, abonelikler ve favoriler gibi video listelerini temsil eden çeşitli video feed'leri sağlar. Her feed'in URL'si referans kılavuzunda açıklanmıştır.
Video feed'i görüntüleme
YouTube API'deki birçok feed, video girişlerinden oluşur. Bu feed'ler en basit şekilde, her biri birkaç gdata.youtube.YouTubeVideoEntry
nesnesi içeren gdata.youtube.YouTubeVideoFeed
nesneleri olarak modellenebilir. Her video girişi, YouTube'daki tam olarak bir videoya karşılık gelir ve videoyla ilgili bilgileri içerir.
Video listesini alma işleminin temel yapısı, bir video feed'inin URL'sini oluşturmak ve ardından girişleri tek tek işlemek şeklindedir. Bu işlem aşağıdaki koda benzer şekilde yapılır:
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
Videoları alma ve arama bölümünde, yaygın olarak kullanılan birçok feed URL'si ve çeşitli video feed'lerinin nasıl alınacağı ayrıntılı olarak açıklanmaktadır.
Belirli bir video girişini alma
Video kimliğini biliyorsanız yalnızca belirli bir video girişine ait bilgileri alabilirsiniz. Giriş URL'si video kimliğine dayanır:
http://gdata.youtube.com/feeds/api/videos/videoID
Aşağıdaki kod, YouTube'daki bir videoya karşılık gelen bir gdata.youtube.YouTubeVideoEntry
alır:
entry = yt_service.GetYouTubeVideoEntry(video_id='the0KZLEacs')
Video girişi içerikleri
gdata.youtube.YouTubeVideoEntry
nesnesinden küçük resimler, oynatıcı URL'leri ve video süresi gibi birçok meta veri alınabilir. Aşağıdaki kodda, bu bilgilerin bir kısmına nasıl ulaşılacağı gösterilmektedir. Python istemci kitaplığı, XML öğelerini sınıflarla eşleyerek bu işlevlerin çoğunu soyutlar. YouTubeVideoEntry
girişiyle ilgili önemli bilgilerin çoğu, girişteki (XML media:group
öğesini temsil eden) media
özelliğinin (gdata.media.Group
nesnesi içeren) alt öğelerinden edinilebilir. Aşağıda, video meta verilerinin nasıl alınacağına dair bir örnek verilmiştir:
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
Not: Sayfanıza oynatıcıyla video yerleştirmek için gerekli bilgileri nasıl oluşturacağınız hakkında daha fazla bilgi edinmek için lütfen protokol kılavuzuna bakın.
Videoları alma ve arama
Standart feed'leri alma
YouTube Data API, YouTube'un en popüler videolarının standart bir feed'ini sağlar. API daha önce desteklediği diğer standart feed'lerin desteği sonlandırılmıştır. Daha fazla bilgi için Geliştirici Kılavuzu'na bakın.
YouTube'un en popüler videolarının feed'inin URL'si aşağıdaki biçimdedir:
http://gdata.youtube.com/feeds/api/standardfeeds/most_popular
Not: http://gdata.youtube.com/feeds/api/standardfeeds/localeID/feedID
biçiminde bir yerel ayar kimliği belirterek yerel ayara özel standart feed'ler de alabilirsiniz. Örneğin, Japonya'da en popüler videolar şunlardır: http://gdata.youtube.com/feeds/api/standardfeeds/JP/most_popular
. Olası yerel ayar kimliklerinin tam listesi için lütfen referans kılavuzuna bakın.
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))
Belirli bir kullanıcı tarafından yüklenen videoları alma
Her YouTube kullanıcısının, yüklediği videolara karşılık gelen bir video feed'i vardır. Bu feed'e http://gdata.youtube.com/feeds/api/users/username/uploads
adresinden erişebilirsiniz.
Aşağıdaki kodda, kullanıcı yüklemeleri feed'inin nasıl getirilip görüntüleneceği gösterilmektedir:
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))
Not: Şu anda kimliği doğrulanmış kullanıcının videolarını almak için username
yerine "default" dizesini de kullanabilirsiniz.
İlgili videoları getirme
İlgili videoları almak için gdata.youtube.YouTubeVideoEntry
nesnesinin video kimliğini gdata.youtube.service.YouTubeService
nesnesinin GetYouTubeRelatedVideoFeed
yöntemine iletin. Bu işlem, ilgili girişleri içeren bir YouTubeVideoFeed
nesnesi getirir.
related_feed = yt_service.GetYouTubeRelatedVideoFeed(video_id='abc123')
Video arama
YouTube Data API, belirli ölçütlere uyan bir giriş grubu istemenize olanak tanır. Örneğin, belirli bir yazar tarafından yayınlanan, video biçimine göre veya belirli bir anahtar kelimeyi içeren video girişleri isteyebilirsiniz. Bunun için belirli arama ölçütlerinizle bir gdata.service.YouTubeVideoQuery
nesnesi oluşturur ve bu nesneyi gdata.youtube.service.YouTubeService
'in YouTubeQuery
yöntemine iletirsiniz.
Aşağıdaki örnekte, kısıtlanmış videolar (API tarafından "Müstehcen" olarak adlandırılır) dahil olmak üzere sonuçların görüntüleme sayısına göre sıralandığı bir arama sorgusunun nasıl gerçekleştirileceği gösterilmektedir:
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)
Feed URL'lerini oluşturma görevi gdata.service.Query
sınıfına ve YouTubeVideoQuery
gibi alt sınıflara aittir. Yukarıda gösterilen VideoQuery
, aşağıdakine eşdeğer bir URL oluşturur:
http://gdata.youtube.com/feeds/api/videos?vq=<searchTerms>&racy=include&orderby=viewCount
Arama parametrelerini ayarlamak için en sık kullanılan YouTubeVideoQuery özelliklerinden bazıları şunlardır:
author
- Girişin yazarını ayarlar. Yazar, YouTube kullanıcı adıyla aynıdır.
format
- Video biçimini belirtir. Mobil video oynatma için iki tür RTSP akış URL'sinden birini veya yerleştirilebilir Flash oynatıcının HTTP URL'sini belirtmek üzere sayısal parametreleri kabul eder.
racy
- Kısıtlanmış içeriğin sonuçlara dahil edilip edilmeyeceğini belirtir. Yalnızca iki parametreyi kabul eder: "include" veya "exclude".
max_results
- Tek seferde döndürülecek maksimum giriş sayısını ayarlar.
start_index
- Alınacak ilk sonucun 1 tabanlı dizin değerini ayarlar (sayfalama için).
orderby
- Girişlerin listeleneceği sırayı belirler (ör.
relevance
,viewCount
,published
veyarating
). time
- Standart feed sonuçlarını
today
,this_week
,this_month
veyaall_time
ile sınırlamak için bir dönem ayarlar. vq
- Arama sorgusu terimi belirler. Belirtilen dize, video meta verilerinin tamamında (ör. başlıklar, etiketler ve açıklamalar) aranır.
Not: Sorgu parametreleri hakkında daha fazla bilgi için YouTube Data API Referans Kılavuzu ve Google Data API'leri Referans Kılavuzu'na bakın.
Kategori ve anahtar kelimelerle arama yapma
Arama sonuçlarını, yalnızca belirli bir kategori ve anahtar kelime grubuyla eşleşen videoları gösterecek şekilde kısıtlayabilirsiniz. Referans kılavuzunda hem önceden tanımlanmış YouTube kategorilerinin (ör. Müzik, Kişiler ve Bloglar) hem de kullanıcı tanımlı anahtar kelimelerin (etiketler) nasıl belirtileceği açıklanmaktadır.
Aşağıdaki kod, arama terimlerini küçük harf olarak değiştirerek anahtar kelimeleri (etiketler) kullanarak nasıl arama yapılacağını gösterir. Not: Bazı kelimeler ("komedi" gibi) hem YouTube kategorisi hem de anahtar kelime olabileceğinden, kategori ve anahtar kelime sorgularında büyük harfli kelimeler ("Komedi") YouTube kategorisini, küçük harfli kelimeler ("komedi") ise anahtar kelimeyi ifade eder.
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)
Geliştirici etiketlerine göre arama yapma
Geliştirici etiketleri, geliştiricilerin uygulama üzerinden son kullanıcılar tarafından yüklenen içerikleri etiketlemek için kullanabileceği ek, gizli anahtar kelimelerdir. Geliştirici etiketleri, yükleme sırasında başlıklarda ayarlanan geliştirici anahtarıyla eşleştirilir. Bu anahtar kelimeler herkese açık olarak gösterilmez ve videoları almak için kullanılabilir. Belirli bir geliştirici etiketine göre video aramak için geliştirici anahtarınızı kullanarak genel bir YouTube Data API arama isteği gönderin. Videoların eşleşmesi gereken kategori şemasını ve geliştirici etiketini belirttiğinizden emin olun. Geliştirici etiketinizle (örneğimizde "your_tag_here") eşleşen videoların feed'ini aşağıdaki URL'den alabilirsiniz:
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))
Video yükleme
Yükleme sürecine genel bir bakış için lütfen protokol kılavuzundaki şemaları inceleyin. Videoları iki şekilde yükleyebilirsiniz:
- Doğrudan Yükleme yöntemiyle videoyu doğrudan sunucularınızdan yükleyebilirsiniz.
- veya önce meta verileri gönderip ardından kullanıcının videoyu tarayıcı tabanlı yükleme yöntemiyle doğrudan YouTube'a yüklemesini sağlayarak
Doğrudan yükleme
Video yüklemek için öncelikle yeni bir gdata.youtube.YouTubeVideoEntry
nesnesi oluşturmanız ve bu nesneye gerekli meta verileri içeren bir gdata.media.Group
nesnesi iletmeniz gerekir. Aşağıdaki örnekte, "mytestmovie.mov" adlı Quicktime videosunun aşağıdaki özelliklerle YouTube'a yüklenmesi gösterilmektedir:
Mülk | Değer |
---|---|
Title | Test Filmim |
Kategori | Otomobiller |
Keywords | arabalar, komik |
Açıklama | Açıklamam |
Dosya adı | mytestmovie.mov |
Dosya MIME türü | video/quicktime |
Video gizli mi? | yanlış |
Videonun konumu | 37,-122 (enlem,boylam) |
Geliştirici Etiketleri | mydevelopertag, anotherdevelopertag |
Aşağıdaki kod, yüklenecek boş bir YouTubeVideoEntry
oluşturur. YouTubeService
üzerindeki InsertVideoEntry
yöntemi için aşağıdaki parametreler gereklidir:
video_entry
: Meta verileri içerengdata.youtube.VideoEntry
nesnesifilename_or_handle
: Dosya benzeri bir nesne veya videonun okunacağı dosya adıyoutube_username
: Bu videonun hangi hesaba yükleneceğini belirten isteğe bağlı bir dize. Elbette hesabınızın uygun izinlere sahip olması gerekir. Bu, varsayılan olarak kimliği doğrulanmış kullanıcının hesabıdır.content_type
: Yüklenecek videonun MIME türünü belirten isteğe bağlı bir dize.
yt_service
değişkeninin tamamen kimliği doğrulanmış bir YouTubeService
nesnesini ifade ettiği varsayılır.
# 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)
Videomuzu isteğe bağlı geliştirici etiketleriyle etiketlemek isteseydik (daha fazla bilgi için Geliştirici Etiketlerine Göre Arama başlıklı makaleyi inceleyin) InsertVideoEntry
çağrısını gerçekleştirmeden önce AddDeveloperTags
yöntemini kullanabilirdik:
developer_tags = [[]'some_tag_01', 'another_tag'] video_entry.AddDeveloperTags(developer_tags)
Not: Videoları gizli olarak yüklemek için gdata.media.Group
özelliğine gizli bir özellik gönderilmelidir:
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)
Tarayıcı tabanlı yükleme
Tarayıcı tabanlı yükleme, dosyanızı video meta verilerini göndermek için kullandığınız istekle yüklemediğiniz dışında doğrudan yüklemeye neredeyse aynı şekilde yapılır. Bunun yerine, yalnızca meta veriler içeren bir YouTubeVideoEntry
oluşturursunuz. Bu video girişi, YouTube API sunucusundaki özel bir bağlantıya gönderilir. XML yanıtı, standart bir HTML formu kullanarak ikili dosyayı yüklemek için kullanılabilecek bir token
ve url
içerir.
# 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]
Yukarıdaki kod, kullanıcının tarayıcısında görüntülenecek bir HTML formu oluşturmak için kullanılan bir bağlantı ve jeton yazdırır. Aşağıda, döndürülen jeton öğesinin içeriğini temsil eden youtube_token
ile basit bir örnek form gösterilmektedir. Bu örnekte, yukarıdaki YouTubeVideoEntry
öğesinden alındığı gösterilmektedir. Kullanıcının formu gönderdikten sonra web sitenize yönlendirilmesi için post_url
parametresine (aşağıda gösterildiği gibi) bir next
parametresi eklediğinizden emin olun. Bu parametre, AuthSub bağlantısının next
parametresiyle aynı şekilde çalışır. Tek fark, burada tek kullanımlık jeton yerine URL parametreleri olarak bir status
ve bir id
değişkeninin döndürülmesidir.
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)
Başarılı bir yükleme için yanıt şu şekilde görünür:
http://example.com/post_video_upload.pyc?status=200&id=ABC123
status
parametresi, yükleme işleminin HTTP işlem durumunu döndürür. id
parametresi, yüklenen videoya atanan YouTube video kimliğini döndürür.
Yükleme durumunu kontrol etme
Yüklenen videolar, kimliği doğrulanmış kullanıcıların yüklemeler feed'inde hemen görünür. Ancak, işlenene kadar sitede herkese açık olarak gösterilmez. Reddedilen veya başarıyla yüklenemeyen videolar da yalnızca kimliği doğrulanmış kullanıcının yüklemeler feed'inde gösterilir. Aşağıdaki kod, YouTubeVideoEntry
öğesinin henüz yayınlanıp yayınlanmadığını veya reddedilip reddedilmediğini kontrol eder.
upload_status = yt_service.CheckUploadStatus(new_entry) if upload_status is not None: video_upload_state = upload_status[[]0] detailed_message = upload_status[[]1]
Videoları güncelleme ve silme
Video bilgilerini güncelleme
Video meta verilerini güncellemek için YouTubeVideoEntry
nesnesini güncelleyin ve ardından YouTubeService
nesnelerinin UpdateVideoEntry
yöntemini kullanın. Bu yöntem, parametre olarak güncellenmiş meta verileri içeren bir YouTubeVideoEntry
alır.
# 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)
Video silme
Video silme işlemi çok basittir ve yalnızca YouTubeService
nesnesinin DeleteVideoEntry
çağrısını içerir.
response = yt_service.DeleteVideoEntry(entry_to_be_deleted) if response: print 'Video successfully deleted!'
Topluluk özelliklerini kullanma
Puan ekleme
Bir videoyu derecelendirmek için YouTubeService
nesnesinin AddRating
yöntemini kullanın. Kendi videolarınızı derecelendiremeyeceğinizi ve derecelendirmelerin 1 ile 5 arasında (dahil) olması gerektiğini lütfen unutmayın:
video_id_to_rate = 'Ncakifd_16k' video_entry = yt_service.GetYouTubeVideoEntry(video_id=video_id_to_rate) response = yt_service.AddRating(3, video_entry)
Yorumlar
Videoya yapılan yorumları alma
Bir YouTubeVideoEntry
nesnesi veya basit bir video kimliği verildiğinde, YouTubeService
nesnesinin GetYouTubeVideoCommentFeed
yöntemini kullanarak videonun yorumlarını içeren bir feed'i alıp yazdırabilirsiniz. Elde edilen feed, gdata.youtube.YouTubeCommentEntry
nesnelerinden oluşan bir gdata.youtube.YouTubeCommentFeed
öğesidir. Feed, diğer feed'ler gibi ayrıştırılabilir:
video_id = 'ABC123...' comment_feed = yt_service.GetYouTubeVideoCommentFeed(video_id=video_id) for comment_entry in comment_feed.entry: print comment_entry.ToString()
Yorum ekleme
Yeni bir yorum eklemek için YouTubeService
nesnesinin AddComment
yöntemini kullanın. Yöntem, yorum yapılacak tam bir YouTubeVideoEntry
nesnesi ve yorumu temsil eden bir dize gerektirir:
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)
Video Yanıtları
YouTube video yanıtı, ikinci bir videoya yanıt olarak ilişkilendirilen bir videodur. Video yanıtları özelliği, bu duyuruda açıklandığı gibi kullanımdan kaldırıldı. Mevcut video yanıtları kullanımda kalmaya devam etse de YouTube artık bir videoya verilen video yanıtlarının listesini alma, yeni video yanıtları yükleme veya video yanıtlarını silme özelliklerini desteklememektedir. Ancak video yanıtında kullanılan videoyu silebilirsiniz. Sonuç olarak, bu işlevler API'de de artık desteklenmemektedir.
Video yanıtı işlemleri için API istekleri artık aşağıdakileri döndürüyor:
- Bir videoya verilen video yanıtlarını alma isteği boş bir liste döndürüyor.
- Video yanıtı ekleme isteği 403 HTTP yanıt kodu döndürüyor.
- Video yanıtı silme isteği 403 HTTP yanıt kodu döndürür.
Videoları işaretleme
Videolarla ilgili şikayetler, YouTubeService
nesnesinde AddComplaint
yöntemiyle eklenir. Şikayet terimi geçerli bir kategori olmalıdır. Daha fazla bilgi için lütfen protokol kılavuzundaki Şikayet ekleme bölümüne bakın.
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)
Videoları kaydetme ve toplama
Favori videolar
Kullanıcının favori videolarını alma
YouTube kullanıcıları, izledikleri videoları favori olarak işaretleyebilir. Kullanıcının favori feed'inin genel konumu aşağıdaki URL'dir.
http://gdata.youtube.com/feeds/api/users/username/favorites
Kullanıcının favori videolarını almak için YouTubeService
nesnesinin GetUserFavoritesFeed
yöntemini kullanın. Bu yöntem, favori feed'i alınacak kullanıcının YouTube kullanıcı adını temsil eden isteğe bağlı bir dize parametresi alır.
favorite_feed = yt_service.GetUserFavoritesFeed(username='gdpython')
Döndürülen feed, YouTubeVideoEntry
nesnesi içeren normal bir video feed'idir.
Not: Alternatif olarak, kimliği doğrulanmış kullanıcının favorilerini almak için default
dizesini de iletebilirsiniz. Kullanıcı adı sağlanmazsa GetUserFavoritesFeed
yönteminin varsayılan davranışıdır.
Favori ekleme
Favori video eklemek için YouTubeService
nesnesinin AddVideoEntryToFavorites
yöntemini kullanın. Parametreler, eklenecek YouTubeVideoEntry
ve isteğe bağlı olarak da favorilerine eklenecek kullanıcı adıdır (varsayılan olarak, şu anda kimliği doğrulanmış kullanıcıdır).
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'
Favorileri silme
Bir favoriyi silmek için YouTubeService
nesnesinin DeleteVideoEntryFromFavorites
yöntemini kullanmanız yeterlidir.
video_id = 'Ncakifd_16k' response = yt_service.DeleteVideoEntryFromFavorites(video_id) if response is True: print 'Video deleted from favorites'
Oynatma listeleri
Her YouTube kullanıcısının, oluşturduğu tüm oynatma listelerini içeren bir oynatma listesi feed'i vardır. Her oynatma listesinin, oynatma listesinde yer alan tüm videoların yer aldığı bir feed'i vardır.
Kullanıcı oynatma listelerini alma
Bir kullanıcının tüm oynatma listelerinin listesini manuel olarak almak için aşağıdaki URL'yi kullanırsınız:
http://gdata.youtube.com/feeds/api/users/username/playlists
Python istemci kitaplığını kullanarak YouTubeService
nesnesinin GetYouTubePlaylistFeed
yöntemini kullanabilirsiniz:
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')
Not: Belirli bir kullanıcı adı (ör. yukarıdaki örnekte "gdpython") yerine, kimliği doğrulanmış kullanıcıyı belirtmek için 'default'
dizesini de iletebilirsiniz.
gdata.youtube.YouTubePlaylistFeed
, gdata.youtube.YouTubePlaylistEntry
nesnelerinin feed'ini temsil eder. Bunlar, kullanıcının sahip olabileceği oynatma listelerini ifade eder. Belirli bir oynatma listesindeki video girişleri gdata.youtube.YouTubePlaylistVideoEntry
nesneleri olarak temsil edilir. Bu nesneler, birkaç istisna dışında normal gdata.youtube.YouTubeVideoEntry
nesnelerine çok benzer. Videolara özel başlıklar ve açıklamalar uygulanabilir. Konum alanı, videonun oynatma listesindeki yerini belirtir.
Oynatma listesi bilgilerini alma
Belirli bir oynatma listesini temsil eden bir YouTubePlaylistEntry
verildiğinde YouTubePlaylistVideoEntry
nesnesi içeren bir YouTubePlaylistVideoFeed
elde edebilirsiniz. Yukarıda açıklandığı gibi, bu nesneler bir oynatma listesindeki videoları (isteğe bağlı özel başlık ve açıklamayla) temsil eder. Oynatma listenizin URI'sini YouTubeService
nesnesinin GetYouTubePlaylistVideoFeed
yöntemine ileterek bu feed'i alabilirsiniz:
# 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
Oynatma listesi ekleme
Yeni bir oynatma listesi eklemek için YouTubeService
nesnesinin AddPlaylist
yöntemini kullanmanız yeterlidir. Bu yöntem aşağıdaki parametreleri alır: playlist_title, playlist_description (her ikisi de dize) ve oynatma listesinin gizli olarak işaretlenmesi gerekiyorsa True
olarak ayarlanabilen isteğe bağlı bir boole değeri.
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'
Oynatma listelerini güncelleme
Oynatma listelerini güncellemek için YouTubeService
nesnesinin UpdatePlaylist
yöntemini kullanın. Yöntem aşağıdaki parametreleri alır: güncellenecek oynatma listesinin kimliği, yeni bir başlık, yeni bir açıklama, oynatma listesini gizli olarak işaretlemek için isteğe bağlı bir doğru/yanlış değeri ve oynatma listesinin sahibinin kullanıcı adını belirten isteğe bağlı bir dize. Dize, varsayılan olarak şu anda kimliği doğrulanmış kullanıcıyı gösterir.
# 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)
Videoyu oynatma listesine ekle
YouTubeService
nesnesinin AddPlaylistVideoEntryToPlaylist
yöntemini kullanarak bir videoyu oynatma listesine ekleyebilirsiniz. Aşağıdaki kod, bir oynatma listesine özel başlık ve açıklamayla video ekler.
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'
Not: Özel başlık ve açıklama belirtmeniz gerekmez. Bu bilgiler belirtilmezse videonun gerçek başlığı ve açıklaması kullanılır.
Oynatma listesindeki video bilgilerini düzenleme
YouTubePlaylistVideoEntry
için meta verileri değiştirmek üzere YouTubeService
nesnesinin UpdatePlaylistVideoEntryMetaData
yöntemini kullanın. Aşağıdaki örnekte, videomuza yeni bir özel başlık vermeye ve oynatma listemizdeki ilk konuma (1. konum) taşımaya karar veriyoruz.
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)
Not: Bir oynatma listesindeki videonun açıklamasını ve başlığını orijinal meta verilere döndürmek istiyorsanız hem başlık hem de açıklama için NULL
değerini iletin.
Videoyu oynatma listesinden kaldır
Bir videoyu oynatma listesinden kaldırmak için YouTubeService
nesnesinin DeletePlaylistVideoEntry
yöntemini kullanın. Yöntem, silinecek girişi içeren oynatma listesinin URI'sinin yanı sıra girişin kimliğini gerektirir:
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'
Oynatma listesi silme
Bir oynatma listesini silmek için YouTubeService
nesnesinin DeletePlaylist
yöntemini kullanarak silinecek oynatma listesinin URI'sini iletin:
playlist_uri = 'http://gdata.youtube.com/feeds/api/playlists/BCB3BB96DF51B505' response = yt_service.DeletePlaylist(playlist_uri) if response is True: print 'Playlist successfully deleted'
Abonelikler
Belirli bir kullanıcının abone olduğu kanalların, aramaların ve favorilerin listesini almak için aşağıdaki URI'yi kullanın:
http://gdata.youtube.com/feeds/api/users/username/subscriptions
Not: Alternatif olarak, kimliği doğrulanmış kullanıcının favorilerini almak için default
dizesini de iletebilirsiniz.
Kullanıcı aboneliklerini alma
Aşağıdaki kodda, belirli bir kullanıcının abonelik listesinin nasıl alınacağı ve yazdırılacağını gösterilmektedir. Abonelikler, gdata.youtube.YouTubeSubscriptionEntry
nesnelerinden oluşan bir gdata.youtube.YouTubeSubscriptionFeed
olarak temsil edilir. Abonelikleri almak için YouTubeService
nesnesinin GetYouTubeSubscriptionFeed
yöntemini kullanın. Bu yönteme, abonelik feed'inin URI'sini veya abonelik feed'inin alınacağı kullanıcı adını gönderin. Kullanıcı adı parametresi varsayılan olarak şu anda kimliği doğrulanmış kullanıcıyı kullanır.
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()
Abonelik ekleme
Kimliği doğrulanmış kullanıcının abonelikler feed'ine yeni bir YouTubeSubsciptionEntry
ekleyerek yeni bir abonelik oluşturabilirsiniz. Üç tür abonelik oluşturabiliriz: Kullanıcının kanalına abonelik (AddSubscriptionToChannel
kullanarak), kullanıcının favorilerine abonelik (AddSubscriptionToFavorites
kullanarak) veya belirli bir anahtar kelimeye abonelik (AddSubscriptionToQuery
kullanarak). Aşağıdaki kod, kimliği doğrulanmış kullanıcıyı "GoogleDevelopers" kanalına abone eder.
new_subscription = yt_service.AddSubscriptionToChannel( username_to_subscribe_to='GoogleDevelopers') if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry): print 'New subscription added'
"GoogleDevelopers" kullanıcısının favorilerine de abone olabilirsiniz:
new_subscription = yt_service.AddSubscriptionToFavorites( username='GoogleDevelopers') if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry): print 'New subscription added'
Son olarak, belirli arama terimlerine de abone olabilirsiniz. Burada, "python" etiketli videolarla ilgili bir sorguya abone oluyoruz.
new_subscription = yt_service.AddSubscriptionToQuery(query='python') if isinstance(new_subscription, gdata.youtube.YouTubeSubscriptionEntry): print 'New subscription added'
Aboneliği silme
Kullanıcı aboneliğini silmek için YouTubeService
nesnesinin DeleteSubscription
yöntemini kullanın.
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'
Kullanıcı etkileşimini etkinleştirme
Kullanıcı Profilleri
Kullanıcının profilini alma
Bir kullanıcının YouTube profilini manuel olarak almak için aşağıdaki URI'yi kullanırsınız:
http://gdata.youtube.com/feeds/api/users/username
YouTubeService
nesnesinin GetYouTubeUserEntry
yöntemiyle bir gdata.youtube.YouTubeUserEntry
alabilirsiniz.
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
Kişiler
Belirli bir kullanıcının kişi listesi aşağıdaki URL'den alınabilir:
http://gdata.youtube.com/feeds/api/users/username/contacts
Kullanıcı kişilerini alma
YouTubeService
nesnesinin GetYouTubeContactFeed
yöntemi, gdata.youtube.YouTubeContactEntry
nesnelerinden oluşan bir gdata.youtube.YouTubeContactFeed
almak için kullanılabilir.
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
Kişi ekleme
Kullanıcının kişi feed'ine yeni bir kişi eklemek için YouTubeService
nesnesinin AddContact
yöntemini kullanın.
new_contact = yt_service.AddContact(contact_username='GoogleDevelopers') if isinstance(new_contact, gdata.youtube.YouTubeContactEntry) print 'New contact added'
Bir kişiyi kabul etme/reddetme
Bir kişiyi güncellemek için YouTubeService
nesnesinin UpdateContact
yöntemini kullanın. Bu yöntem, iletişim isteklerini kabul etmek/reddetmek ve ayrıca kişileri "Arkadaş" veya "Aile" olarak sınıflandırmak için kullanılabilir. Aşağıdaki örnekte, bir kişiyi kabul edip kategorisini "Aile" olarak ayarlıyoruz:
# 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'
Kişileri silme
Bir kişiyi silmek için YouTubeService
nesnesinin DeleteContact
yöntemini kullanın ve silmek istediğiniz kişinin kullanıcı adını iletin.
response = yt_service.DeleteContact(contact_username='gdpython') if response is True: print 'Contact deleted'