ios - Instagram/tags//(hashtag)/media/endpoint reciente ¿no devuelve la paginación?
swift (1)
He estado tratando de hacer que esto funcione durante probablemente 6 horas sin éxito, lea todas las preguntas de stackoverflow que pude encontrar sobre el tema.
Estoy tratando de obtener 100, 200 o tal vez 500 fotos de una sola etiqueta:
func hashtags(hashtag: String, nextMaxTagId: String?) -> RequestParamters {
var params = "/tags//(hashtag)/media/recent|access_token=/(accessToken)"
var parameters = Dictionary<String, AnyObject>()
parameters["access_token"] = accessToken
let urlString = "https://api.instagram.com/v1/tags//(hashtag)/media/recent"
if let nextMaxTagId = nextMaxTagId {
params += "|max_tag_id=/(nextMaxTagId)"
parameters["max_tag_id"] = nextMaxTagId
}
let sig = HMAC.signWithKey(C.InstagramClientSecret(), usingData: params)
parameters["sig"] = sig
return (urlString: urlString, parameters: parameters)
}
Esto es lo que uso para construir mis URL y parámetros para mi solicitud. Mi primera solicitud no tiene un nextMaxTagId
, y esa solicitud pasa, devuelve 20 imágenes y un json de pagination
.
Luego, cuando next_max_tag_id
el next_max_tag_id
del bloque de paginación y creo una solicitud usando ese parámetro, obtengo otras 20 imágenes, pero son las mismas imágenes que antes y ahora no obtengo un bloque de paginación.
Estoy firmando mis solicitudes correctamente (ya que todas mis otras solicitudes de API a través de la aplicación no pasan por ningún problema) y no estoy en el modo Sandbox.
Edición: También he intentado usar min_tag_id=/(nextMinTagId)
, todavía no recibo paginación en la siguiente solicitud.
Parece:
1) Estás utilizando la Instagram Developer API
con lo que parece ser un APIKey autorizado, y mencionaste que NO estás en Sandbox , por lo que estás en el entorno de Production
para esa api .
Estoy intentando obtener 100, 200 o quizás 500 fotos de una sola etiqueta
2) Esto significa que, combinado con los returns 20 images and a pagination json
, que para 100, debe hacer un mínimo de 5 llamadas ( 100/20 == 5 ), 200 == 10 , 500 = 25 .
3) De acuerdo con los límites de velocidad de la documentación del desarrollador , el límite general en la Production
es de 5000 req/hour
, con varias API restringidas a un límite mucho más pequeño (algunas son 30/60 req/hour
). No estoy seguro de ver el límite de velocidad de tag
exacto que está alcanzando, pero ya que la pregunta menciona:
por probablemente 6 horas ahora en vano
También es posible que haya estado alcanzando el límite global de solicitudes por hora cada hora.
Definitivamente sé que esta no es una respuesta que me guste dar, porque básicamente dice: you''re stuck
. De hecho, antes he jugado con los límites de velocidad, y los encuentro extremadamente limitados (juego de palabras totalmente intencionado). La única otra opción, aunque no como "superior" , es raspar el propio Instagram
para obtener la información que necesita. Yo digo que no es como "superior" porque si necesita información que no se encuentra en un rasguño web, teóricamente podría raspar la API móvil a través de una ingeniería inversa menor (es decir, usar un proxy HTTP para falsificar el tráfico móvil sistemáticamente).
Al final, la publicación de la API en Instagram
es definitivamente muy limitada y enfrentará límites de frecuencia en el futuro previsible (a menos que pueda obtenerlos de alguna manera en una asociación específica que de alguna manera consideren digna, aunque no estoy seguro de cómo podría abordarse esto) ).