Python Youtube API搜索超出范围

2024-06-15 17:39:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要帮助。我马上给你看代码。但首先我要概述一下我要做的事情。这是一个帮助我在Youtube上搜索最新歌曲的程序。在

本质上,它使用一个文本文件并使用这些数据在Youtube上搜索文本文件中的每一项。我使用readline,然后用制表符将它们分开。我使用的文本文件格式如下:

曲目编号[tab]歌曲名称[tab]艺术家[tab]标签 --进一步查看全文文件


文本文件前100名示例
1[tab]灯笼[tab]东京鸟[tab]CAP/EMI

当我是你的人时布鲁诺·马尔斯ATL/WMA

3[tab]嘿,发光二极管的惯性

4[tab]在您美丽的[tab]Labrinth ft.Emeli Sande[tab]SME下方

5[tab]给我一个理由[tab]Pink ft.Nate Ruess[tab]SME


这是密码

import gdata.youtube
import gdata.youtube.service
import webbrowser 
topSongVersion = "0.1"
yt_service = gdata.youtube.service.YouTubeService()


songListRaw = [] 
songList = []
videoData = [] 


def SearchAndBuild(keywords):
  videoData = []
  query = gdata.youtube.service.YouTubeVideoQuery()

  for songEntry in range(0, 25):
    query.orderby = 'viewCount'
    query.racy = 'include'    
    query.vq = keywords[songEntry][0] + ' ' + keywords[songEntry][-1]    
    feed = yt_service.YouTubeQuery(query)

    #videoData.append(feed.entry[songEntry].media.title.text) 
    #videoData.append(feed.entry[songEntry].GetSwfUrl())
    videoData.append(query.vq + ' ' + feed.entry[songEntry].GetSwfUrl())
    print songEntry, query.vq, feed.entry[songEntry].GetSwfUrl() 
  print(videoData[24])

 #print videoData

def SongsFromFile():
  f = open('top100.txt')
  songData = f.readlines() 
  f.close() 
  for songRaw in range(1,101):
    songListRaw.append(songData[songRaw].split('\t'))  
  for songEntry in range(0,100):
    songList.append(songListRaw[songEntry][1:-1])

  SearchAndBuild(songList)

#  print(songList[0]) 
#  print(songList[1])
#  print(testSearch[0])
#  print(testSearch[1])

SongsFromFile() 

抱歉,打印太多了。这些是为了测试目的。如果你检查SearchAndBuild函数,你会发现我哪里出了问题。我试图获取由SongsFromFile设置的歌曲列表,然后使用该数据创建另一个包含歌曲标题和歌曲URL的列表。一开始我尝试了“songEntry in range(0,99)”,但这使索引一直超出范围。我怀疑这是Youtube设置api的方式,所以我把它改为“范围内的songEntry(0,25)”

这似乎已经修复了超出范围的异常。要么是Youtube api,要么是我遗漏了什么。我只是好奇为什么它会迫使我分开我的查询。我需要再设置三个for循环来建立100个项目吗?有更好的方法吗?在

显然,这是一个正在进行的工作。我可能做了很多蠢事,却错过了简单的解决方案。为什么我用范围,为什么我用列表而不是dict?如果你看到我在这里做的荒唐事,请告诉我并解释更好的方法。在

真诚的, 乔希

更新时间:10/17/13 10:00PM

好吧,看来我自己已经修好了。起初我是对的。对。有更好的方法来做到这一点。然而,问题出在Youtube的API上,就像我最初怀疑的那样。默认情况下,最大查询结果变量设置为25。我想查询100。这就是为什么我会越界。我首先想到的应该是查阅Youtube API。解决这么多麻烦是件很容易的事;不过,现在不要指望它能起到多大作用。这是一项正在进行的工作。最终,我会用它在Youtube上找到我正在收集的数据库中的歌曲。在

就像我说的。这个程序还没有做任何有意义的事情。我还有很多代码要添加。无论如何,我应该把这一点记录下来,以防其他人在使用googlepythonyoutube API进行搜索查询时遇到类似的问题。记住这一点,如果你一直抛出超出范围,Youtube的限制是50,默认设置为25。你得设法解决这个问题。在

非常感谢hoopadady的评论,让我重回正轨。在

以下是修改后的代码:

^{pr2}$

_

Text  File      ( top100.txt  )
---------------------------------
Top 100 
1   Lanterns    Birds Of Tokyo  CAP/EMI
2   When I Was Your Man Bruno Mars  ATL/WMA
3   Ho Hey  The Lumineers   INERTIA
4   Beneath Your Beautiful  Labrinth ft. Emeli Sande    SME
5   Just Give Me A Reason   Pink ft. Nate Ruess SME
6   Stay    Rihanna ft. Mikky Ekko  IDJ/UMA
7   Impossible  James Arthur    SME
8   Troublemaker    Olly Murs ft. Flo Rida  SME
9   Locked Out Of Heaven    Bruno Mars  ATL/WMA
10  Everybody Talks Neon Trees  MERCUK/UMA
11  Love Is Easy    McFly   MERCUK/UMA
12  Little Talks    Of Monsters And Men UNI/UMA
13  I Love It   Icona Pop   NEON/WMA
14  I Knew You Were Trouble Taylor Swift    BIG/UMA
15  Can’t Hold Us   Macklemore & Ryan Lewis ft. Ray Dalton  MACKLEMORE LLC
16  I Could Be The One  Avicii ft. Nicky Romero UNI/UMA
17  Thrift Shop Macklemore & Ryan Lewis ft. Wanz    MACKLEMORE LLC
18  Thank You   MKTO    SME
19  Mirrors Justin Timberlake   SME
20  Scream & Shout  will.i.am ft. Britney Spears    IGA/UMA
21  Feel This Moment    Pitbull ft. Christina Aguilera  SME
22  I Need Your Love    Calvin Harris ft. Ellie Goulding    SME
23  Try Pink    SME
24  Small Bump  Ed Sheeran  ATL/WMA
25  Same Love   Macklemore & Ryan Lewis ft. Mary Lambert    MACKLEMORE LLC
26  I Will Wait Mumford & Sons  DEW/UMA
27  Let Her Go  Passenger   INERTIA
28  What You’ve Done To Me  Samantha Jade   SME
29  Holdin On   Flume   FC/WMA
30  Hello   Stafford Brothers ft. Lil Wayne & Christina Milian  UNI/UMA
31  Sweet Nothing   Calvin Harris ft. Florence Welch    SME
32  Pompeii Bastille    VIR/EMI
33  Give Me Love    Ed Sheeran  ATL/WMA
34  Diamonds    Rihanna IDJ/UMA
35  Blow Me (One Last Kiss) Pink    SME
36  Army Of Two Olly Murs   SME
37  Still Into You  Paramore    ATL/WMA
38  Daylight    Maroon 5    A&M/UMA
39  One More Night  Maroon 5    A&M/UMA
40  Don’t You Worry Child   Swedish House Mafia CAP/EMI
41  Mountain Sound  Of Monsters And Men UNI/UMA
42  We Are Never Ever Getting Back Together Taylor Swift    BIG/UMA
43  Guns & Roses    T.I. ft. Pink   ATL/WMA
44  Hall Of Fame    The Script ft. will.i.am    SME
45  Get Lucky   Daft Punk ft. Nile Rogers, Pharrell SME
46  Drinking From The Bottle    Calvin Harris ft. Tinie Tempah  SME
47  Hey Porsche Nelly   UNI/UMA
48  Beauty & A Beat Justin Bieber ft. Nicki Minaj   IDJ/UMA
49  Blurred Lines   Robin Thicke ft. T.I & Pharrell IGA/UMA
50  Change Your Life    Little Mix  SME
51  Get Up (Rattle) Bingo Players ft. Far East Movement ONELOVE
52  It’s Time   Imagine Dragons IGA/UMA
53  The Other Side  Jason Derulo    WB/WMA
54  Waiting All Night   Rudimental ft. Ella Eyre    WMUK/WMA
55  Good Time   Owl City & Carly Rae Jepsen UNI/UMA
56  Get Along   Guy Sebastian   SME
57  Next To Me  Emeli Sande VIR/EMI
58  Suit & Tie  Justin Timberlake ft. Jay Z SME
59  ThatPOWER   Will.I.Am ft. Justin Bieber IGA/UMA
60  Not Giving In   Rudimental ft. John Newman & Alex Clare WMUK/WMA
61  Right Now   Rihanna ft. David Guetta    IDJ/UMA
62  Treasure    Bruno Mars  ATL/WMA
63  Some Nights Fun.    ATL/WMA
64  Radioactive Rita Ora    SME
65  22  Taylor Swift    BIG/UMA
66  Put Your Hands Up   Matchbox Twenty ATL/WMA
67  Best Night  Justice Crew    SME
68  Rest Of My Life Ludacris ft. Usher & David Guetta   IDJ/UMA
69  Battle Scars    Guy Sebastian ft. Lupe Fiasco   SME
70  Let Me Down Easy    Sheppard    CHUGG/MGM
71  Feel The Love   Rudimental  WMUK/WMA
72  She’s So Mean   Matchbox Twenty ATL/WMA
73  Girl On Fire    Alicia Keys SME
74  She Wolf (Falling To Pieces)    David Guetta ft. Sia    VIR/EMI
75  It’s A Beautiful Day    Michael Buble   WB/WMA
76  Let Me Love You (Until You Learn To Love Yourself)  Ne-Yo   IDJ/UMA
77  Global Concepts Robert DeLong   LBR/UMA
78  Bed Of Clouds   Swift K.I.D. ft. Guy Sebastian  NEON/WMA
79  Alive   Empire Of The Sun   CAP/EMI
80  This Is What It Feels Like  Armin Van Buuren ft Trevor Guthrie  XXX
81  Everything Has Changed  Taylor Swift ft. Ed Sheeran BIG/UMA
82  Beautiful   Mariah Carey    IDJ/UMA
83  Language    Porter Robinson HUS/UMA
84  Here’s To Never Growing Up  Avril Lavigne   SME
85  C’mon   Ke$ha   SME
86  We Come Running Youngblood Hawke    UNI/UMA
87  Let It Roll Flo Rida    ATL/WMA
88  Spectrum    Florence & The Machine  ISLUK/UMA
89  How Ya Doin?    Little Mix  SME
90  Boom Boom   Justice Crew    SME
91  Happening   Chiddy Bang CAP/EMI
92  Need U 100% Duke Dumont ft. AME MOS/UMA
93  We’ll Be Coming Back    Calvin Harris ft. Example   SME
94  Turn Up The Love    Far East Movement ft. Cover Drive   IGA/UMA
95  Don’t Wake Me Up    Prinnie MERCAU/UMA
96  Saved In A Bottle   The Potbelleez  MOS/UMA
97  Arena   B.o.B ft. Chris Brown & T.I.    ATL/WMA
98  Dear Darling    Olly Murs   SME
99  Drunk   Ed Sheeran  ATL/WMA
100 My Songs Know What You Did In The Dark (Light Em Up)    Fall Out Boy    IDJ/UMA 

我现在在做什么


这是下一步。以防有人好奇。在

def Ask2Open(songs):
  for i in songs:
    print i  

我打算在这里使用webbrowser打开包含在歌曲中的Youtube网址。显然,我不想同时打开10多个网页。所以我将使用一个循环,然后在满足某些条件时中断,或者只是询问何时转到下一个项目,等等,不过,我稍后会解决这个问题。在


Tags: oftheyoutubetabmeprintftemi