Geliştirici Kılavuzu: Python

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ı 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 veya rating).
time
Standart feed sonuçlarını today, this_week, this_month veya all_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ülkDeğer
TitleTest Filmim
KategoriOtomobiller
Keywordsarabalar, komik
AçıklamaAçıklamam
Dosya adımytestmovie.mov
Dosya MIME türüvideo/quicktime
Video gizli mi?yanlış
Videonun konumu37,-122 (enlem,boylam)
Geliştirici Etiketlerimydevelopertag, anotherdevelopertag

Aşağıdaki kod, yüklenecek boş bir YouTubeVideoEntry oluşturur. YouTubeService üzerindeki InsertVideoEntry yöntemi için aşağıdaki parametreler gereklidir:

Bu örneklerde, 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'

Başa dön