如何获取视频,youtubeAPI,Python的频道名称

时间:2015-02-02 23:52:03

标签: python youtube-api

首先,类似问题的前一个“答案”使用了弃用的Youtube Api V2。此外,没有一个答案显示你如何用Python做到这一点。

我的代码是:

def youtube_search(item):


  youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
    developerKey=DEVELOPER_KEY)

  # Call the search.list method to retrieve results matching the specified
  # query term.
  search_response = youtube.search().list(
    q=item,
    part="id,snippet",
    maxResults=6
  ).execute()


  videoCount = 0;
  title = ""
  channelId = ""
  channelName = ""
  # Add each result to the appropriate list, and then display the lists of
  # matching videos, channels, and playlists.
  for search_result in search_response.get("items", []):
    if search_result["id"]["kind"] == "youtube#video":
      videoCount += 1
      if videoCount == 1:
         snippet = search_result["snippet"]
         title = snippet["title"]
         channelId = snippet["channelId"]
         channelName = snippet["channelTitle"] 

#  print "Videos:\n", "\n".join(videos), "\n"
  print( item, videoCount, title, channelId, channelName )

所以基本上从第一个返回的视频我想知道视频的标题和频道的名称。这是我正在寻找的名字。对于此搜索字符串:

r'''"Joe Keegan" "Pick Myself Up"'''

我的结果是:

('"Joe Keegan" "Pick Myself Up"', 1, u'Pick Myself Up', u'UCThUpINg-JADDOHdkz_4-jw', u'')

我在这里寻找的频道名称是“各种艺术家 - 主题”。特别是我有一个巨大的列表,我试图消除任何与该频道名称(这是很多)。但是有很多使用该名称的频道ID。 channelTitle没有给我我想要的东西。

1 个答案:

答案 0 :(得分:1)

虽然所有这一切都在继续,但我自己试图解决这个问题,并在这个地方合并了一些其他答案,以找出一个有效的解决方案。它可能不是最好的,所以如果你有一个更好的让我知道。但对于那些偶然发现同样事情的人来说,这可能是有用的:

基本上我在视频ID上做了一个URL“Get”请求并解析了JSON响应。哦,Python有时候很容易使用......

  for search_result in search_response.get("items", []):
    if search_result["id"]["kind"] == "youtube#video":
      videoCount += 1
      if videoCount == 1:
         snippet = search_result["snippet"]
         title = snippet["title"]
         videoId = search_result["id"]["videoId"] 
         channelId = snippet["channelId"]

  urlBase = "https://gdata.youtube.com/feeds/api/videos/"
  if videoCount > 0:
     url = urlBase + videoId + "?v=2&alt=json"
     r = requests.get(url)
     metadata = r.json()
     channelName = metadata["entry"]["author"][0]["name"]["$t"]

print( item, videoCount, title, channelId, channelName )

当然我真的不需要channelId ......