2017-03-22 196 views
2

我試圖獲得對YouTube實時聊天的所有評論。 我成功地讓他們與我的客戶在Unity中的WWW 請求。 YouTube API提供nextPageToken = {RANDOM_TOKEN} 以獲取下一頁的結果,因爲它僅在第一頁顯示75條評論。YouTube直播聊天API和pollingIntervalMillis

我的客戶通過它提供的nextPageTokens瀏覽所有這些頁面並獲取所有評論並將它們存儲在本地。 不幸的是,YouTube似乎只允許在pollingIntervalMillis = 10000 中定義的每10秒發出一次API請求。因此,當我想要獲得下一頁評論時,我需要一遍又一遍地等待10秒鐘。否則,它會給我錯誤rateLimitExceeded

當我在瀏覽器(Safari)中瀏覽HTTP請求時,問題不會發生,我可以根據需要盡我所能地提出任何請求(即使是所有其他頁面)。

有什麼辦法可以讓我比每10秒更快地獲得每一頁的所有評論嗎? 如果我收到500條評論,每頁有75條評論,我需要等待一分鐘左右才能獲得所有評論。似乎有點奇怪。一定有可能。

希望你們能幫助我在這裏:)

更新1 隨着用戶的幫助下,用戶代理添加到我的要求,現在我的要求是這樣的:

Dictionary<string, string> headers = new Dictionary<string, string>(); 
headers.Add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Safari/602.1.50"); 
WWW www = new WWW(url_2, new byte[] {(byte) 0}, headers); 
StartCoroutine(WaitForRequest(www)); 

該請求有效,但現在我得到了401未經授權的錯誤。我再次查看了API網站,因爲我唯一需要的是我的liveChatId和我的API訪問密鑰,因此錯誤401甚至未列入liveChatMessages list中包含的可能錯誤中。我有兩個,但登錄不應該是必需的。 如果我的代碼如下所示:

WWW www = new WWW(url_2); 
StartCoroutine(WaitForRequest(www)); 

我得到一個結果,但是這是我的原代碼,所以我將不得不等待10秒,直到我的下一個請求。任何幫助?

更新2 我發現了pollingIntervalMillis是根據實際是流直播和評論的數量在未來。 當我流的是離線我pollingIntervalMillis都在10000 當我開始在網上我流我的pollingIntervalMillis在6000. 當我用一大堆評論垃圾郵件我的聊天我的pollingIntervalMillis去了約1000. 所以我最初的問題不再是一個真正的問題,因爲刷新率大大下降時,流是生活和聊天活動。

也許這篇文章可以幫助別人!

回答

0

它是一個長鏡頭,但你可以嘗試添加一個用戶代理客戶要求做出的Youtube覺得你的瀏覽器:

request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"; 

當我解析谷歌圖片它不會返回整個網站,除非我告訴它,請求是通過瀏覽器完成的,所以也許會有所幫助。