J'essaie d'obtenir tous les commentaires d'un chat en direct sur YouTube. Je les ai réussi avec une demande WWW
avec mon client dans Unity. L'API YouTube offre un nextPageToken = {RANDOM_TOKEN}
pour obtenir les résultats de la page suivante, car il ne montre que 75 commentaires sur la première page.YouTube Live-Chat API et pollingIntervalMillis
Mon client passe en revue toutes ces pages avec le message nextPageTokens fourni et obtient tous les commentaires et les stocke localement. Malheureusement, il semble que YouTube ne permette que les requêtes API toutes les 10 secondes définies dans le pollingIntervalMillis = 10000
Donc quand je veux obtenir la prochaine page de commentaires, j'ai besoin d'attendre 10 secondes encore et encore. Sinon, il me donne l'erreur rateLimitExceeded
.
Lorsque je parcours la requête HTTP dans mon navigateur (Safari), le problème ne se produit pas et je peux faire toute demande que je veux aussi vite que je veux (même toutes les autres pages).
Est-il possible de recevoir tous les commentaires de chaque page plus rapidement que toutes les 10 secondes? Si je reçois 500 commentaires et 75 commentaires sur chaque page, j'aurais besoin d'attendre une minute pour avoir tous les commentaires. Cela semble un peu étrange. Il doit y avoir une possibilité.
espérons que vous les gars peuvent me aider :)
Update 1 Avec l'aide d'un utilisateur d'ajouter un agent utilisateur à ma demande, maintenant ma demande ressemble à ceci:
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));
La demande fonctionne, mais maintenant je reçois une erreur 401 non autorisée. J'ai encore vérifié le site Web d'API et l'erreur 401 n'est même pas énumérée dans les erreurs possibles incluses dans le liveChatMessages list
puisque le seul dont je devrais avoir besoin est mon liveChatId
et ma clef d'accès d'API. J'ai les deux, mais un login ne devrait même pas être nécessaire. Si mon code ressemble à ceci:
WWW www = new WWW(url_2);
StartCoroutine(WaitForRequest(www));
Je suis obtenir un résultat, mais cela était mon code original, donc je dois attendre 10 secondes jusqu'à ce que ma prochaine demande. De l'aide?
Mise à jour 2 J'ai découvert que le pollingIntervalMillis
sont en fonction du flux effectivement être en direct et la quantité de commentaires venant. Quand mon flux est déconnecté mon pollingIntervalMillis
étaient à 10000. Quand j'ai commencé mon flux en ligne mes pollingIntervalMillis
étaient à 6000. Quand j'ai spammé mon chat avec un tas de commentaires, mon pollingIntervalMillis
est passé à environ 1000. Donc, mon problème initial n'est plus un vrai problème puisque les taux de rafraîchissement chutent fortement quand le flux est en direct et le le chat est actif.
Peut-être que ce message peut aider les autres aussi!