2017-03-22 38 views
2

YouTubeのライブチャットのコメントをすべて取得しようとしています。 UnityでUnityクライアントでWWW リクエストを受け取っています。 YouTube APIは、nextPageToken = {RANDOM_TOKEN} を提供しています。次のページの結果を得るには、最初のページに75個のコメントしか表示されないためです。YouTubeライブチャットAPIとpollingIntervalMillis

私のクライアントは、nextPageTokensが提供されているすべてのページを通過し、すべてのコメントを取得してローカルに保存します。 残念ながら、YouTubeでは、APIリクエストが10秒ごとにpollingIntervalMillis = 10000 で定義されているようです。次のコメントページを取得するときは、10秒以上何度も何度も待つ必要があります。それ以外の場合はエラーrateLimitExceededが返されます。

私のブラウザ(Safari)でHTTPリクエストを閲覧すると、問題は発生せず、他のすべてのページでも高速にしたいというリクエストを行うことができます。

10秒ごとより速く各ページのすべてのコメントをどのように得ることができますか? 500件のコメントと75件のコメントが各ページに表示されている場合、すべてのコメントを取得するには1分ほど待つ必要があります。ちょっと奇妙に思える。可能性があります。

は、あなたたちはここに私を助けることを願って:)

アップデート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 Unauthorizedというエラーが表示されています。私はAPIウェブサイトをもう一度チェックし、エラー401はliveChatMessages listに含まれる可能性のあるエラーでも表示されません。唯一必要なのはliveChatIdと私のAPIアクセスキーです。私は両方を持っていますが、ログインする必要はありません。 私のコードは次のようになります場合:

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"; 

私はGoogleの画像を解析したときにそれは私がない限り、サイト全体を返さないだろうリクエストがブラウザを介して行われたので、おそらくそれが助けになると言いました。