• 0
Sign in to follow this  
Vinicius Maboni

Problema com paginação acima de 50000

Question

Olá, estou com um problema amigos.

 

Seguinte:

Estou precisando efetuar uma consulta na api, de todos os items de um determinado vendedor.

Quando executo com um offset de até 50000 dá certo, conforme este link

https://api.mercadolibre.com/sites/MLB/search?nickname=pecasmotorila_ml&limit=50&offset=50000

Porém, se adicionar 1 item ao offset, não retorna nenhum resultado, como pode ser visto aqui:

https://api.mercadolibre.com/sites/MLB/search?nickname=pecasmotorila_ml&limit=50&offset=50001

O vendedor tem mais de 100 mil items, neste caso.

 

Notei que o mesmo problema acontece no site do mercado livre, como pode ser visto aqui:

http://veiculos.mercadolivre.com.br/acessorios/_Desde_50002_CustId_190811875_seller*id_190811875

 

Alguém pode me ajudar?

Share this post


Link to post
Share on other sites

12 answers to this question

Recommended Posts

  • 0

não é problema, é limitação da API, as pesquisas são limitadas até o offset de 50mil, está na documentação:

 

  • As pesquisas com offset acima de 50.000 são limitadas.

 

é importante antes de abrir um chamado verificar as informaões da documentação

Share this post


Link to post
Share on other sites
  • 0

Olá, em um problema similar meu, entendo a limitação em si do offset, notei que existe uma limitação do offset acima dos 10 mil.
Meu cliente no caso, possui cerca de 20 mil produtos, não conseguirei integrar então?
Tomei a liberdade de pegar o cliente usado como exemplo acima, e alterar o offset para demonstrar meu problema.
https://api.mercadolibre.com/sites/MLB/search?nickname=pecasmotorila_ml&limit=50&offset=11000

Seria este um problema que tem como contornar?

Share this post


Link to post
Share on other sites
  • 0

como em qualquer caso onde você possui grande quantidade de dados, você não deve tratar todos de uma única vez, e sim fracionar e trabalhar com quantidades menores de cada vez

Share this post


Link to post
Share on other sites
  • 0

como em qualquer caso onde você possui grande quantidade de dados, você não deve tratar todos de uma única vez, e sim fracionar e trabalhar com quantidades menores de cada vez

Isso resolverá a questão? Não há um limite de offset? 

Eu só trabalho com dados pequenos :)

 

Se houver a limitação creio que deverá conversar com o ML e abrir mais outras contas de vendedor, e separar por departamentos. Esta é uma solução meia-bo... mequetr... bem, é um arranjo técnico

Share this post


Link to post
Share on other sites
  • 0

Isso resolverá a questão? Não há um limite de offset? 

Eu só trabalho com dados pequenos :)

 

Se houver a limitação creio que deverá conversar com o ML e abrir mais outras contas de vendedor, e separar por departamentos. Esta é uma solução meia-bo... mequetr... bem, é um arranjo técnico

 

rodrigojob, pelo que entendi a questão não é limite de items (até porque em teoria não há limite ... a não ser que o ML verifique alguma irregularidade nos anúncios) ... e sim o limite no offset nas consultas dos anúncios... por isso falei pra ele trabalhar por partes

Share this post


Link to post
Share on other sites
  • 0

rodrigojob, pelo que entendi a questão não é limite de items (até porque em teoria não há limite ... a não ser que o ML verifique alguma irregularidade nos anúncios) ... e sim o limite no offset nas consultas dos anúncios... por isso falei pra ele trabalhar por partes

É isto mesmo que eu entendo

Share this post


Link to post
Share on other sites
  • 0

como em qualquer caso onde você possui grande quantidade de dados, você não deve tratar todos de uma única vez, e sim fracionar e trabalhar com quantidades menores de cada vez

Sim, entendo seu ponto, o que faço, é buscar o total de dados do meu cliente, então, paginar o mesmo, buscando por 200 itens de cada vez, atualizando o offset, até o limite permitido.

Problema está que quando o offset chega a 10 mil, ele para de trazer resultados.

Segundo a documentação, uma forma de estender até  os 50 mil seria usando o access_token, mas, o serviço que estou desenvolvendo roda em um cron, logo, não terá nenhum tipo de manipulação por parte do usuário, portanto, é meio complicado de gerar o access_token, sem este login, pelo menos eu não encontrei em lugar algum das documentações. Por uma restrição do cliente (apesar de insistência minha), ele quer essa integração em php, mas, tentei buscar o funcionamento em outras linguagens, mas parece que em todas, a única forma de buscar o tal do access_token, é fazendo a requisição que disponibiliza uma url visual, e então, retorna um callback com o code.

Um formato de iteração bizarro, pra uma api que se predispõe a ser uma solução de integração, onde mesmo em uma solução sem front end definido, é obrigatório a abertura de uma "janelinha" de login e senha...

Tem alguma forma que deixei escapar de gerar este token sem a necessidade de iteração com um usuário? Gerando ele pelo próprio site do ml, ele não me disponibiliza o reload_token, que seria necessário para evitar o manuseio da api.

Share this post


Link to post
Share on other sites
  • 0

acho que você deve reler a documentação, pois está usando de forma errada a API, você deve utilizar os scopos de acesso offline, releia tudo do início

Share this post


Link to post
Share on other sites
  • 0

Sim, entendo seu ponto, o que faço, é buscar o total de dados do meu cliente, então, paginar o mesmo, buscando por 200 itens de cada vez, atualizando o offset, até o limite permitido.

Problema está que quando o offset chega a 10 mil, ele para de trazer resultados.

Segundo a documentação, uma forma de estender até  os 50 mil seria usando o access_token, mas, o serviço que estou desenvolvendo roda em um cron, logo, não terá nenhum tipo de manipulação por parte do usuário, portanto, é meio complicado de gerar o access_token, sem este login, pelo menos eu não encontrei em lugar algum das documentações. Por uma restrição do cliente (apesar de insistência minha), ele quer essa integração em php, mas, tentei buscar o funcionamento em outras linguagens, mas parece que em todas, a única forma de buscar o tal do access_token, é fazendo a requisição que disponibiliza uma url visual, e então, retorna um callback com o code.

Um formato de iteração bizarro, pra uma api que se predispõe a ser uma solução de integração, onde mesmo em uma solução sem front end definido, é obrigatório a abertura de uma "janelinha" de login e senha...

Tem alguma forma que deixei escapar de gerar este token sem a necessidade de iteração com um usuário? Gerando ele pelo próprio site do ml, ele não me disponibiliza o reload_token, que seria necessário para evitar o manuseio da api.

 

cara ... eu não vejo minha tela de token já passa de 8 meses. Quando deve ter tido alguma alteração e invalidaram o refresh e o access

Tem como fazer sim. Aliás, vendi parte do meu código estes dias para uma pessoa que não consegui fazer isto :)

Share this post


Link to post
Share on other sites
  • 0

é a questão básica de leitura de sempre:

 

Sim, entendo seu ponto, o que faço, é buscar o total de dados do meu cliente, então, paginar o mesmo, buscando por 200 itens de cada vez, atualizando o offset, até o limite permitido.
Problema está que quando o offset chega a 10 mil, ele para de trazer resultados.
Segundo a documentação, uma forma de estender até  os 50 mil seria usando o access_token, mas, o serviço que estou desenvolvendo roda em um cron...

a questão de ser um cron não interfere nisso, cron é somente uma rotina agendada, vai do seu código, poderia ser feito mesmo sem o access_token (se é recurso aberto), basta separar os dados... mas se é um cliente, porque não usar o access_token??

 

...logo, não terá nenhum tipo de manipulação por parte do usuário, portanto, é meio complicado de gerar o access_token, sem este login, pelo menos eu não encontrei em lugar algum das documentações. então releia do início, isso é acesso offline, básico da parte de autenticação da api e está na documentação

 

Por uma restrição do cliente (apesar de insistência minha), ele quer essa integração em php, mas, tentei buscar o funcionamento em outras linguagens, mas parece que em todas, a única forma de buscar o tal do access_token, é fazendo a requisição que disponibiliza uma url visual, e então, retorna um callback com o code.

a questão não é a linguagem, você precisa entender como funciona o oAuth (tem muito material na net, basta dar um google)... e obviamente em uma primeira autenticação sempre vai ser necessário que o cliente autorize, por questão obvia de segurança ....

Um formato de iteração bizarro, pra uma api que se predispõe a ser uma solução de integração, onde mesmo em uma solução sem front end definido, é obrigatório a abertura de uma "janelinha" de login e senha... oi? do que você está falando?

 

Tem alguma forma que deixei escapar de gerar este token sem a necessidade de iteração com um usuário? Gerando ele pelo próprio site do ml, ele não me disponibiliza o reload_token, que seria necessário para evitar o manuseio da api. SIM! lendo a documentação (tanto não leu que não é um reload_token ... é um refresh_token) ... a documentação está lá em português pra consulta (pra não ter a desculpa absurda que aluns dão de que o inglês dificulta o entendimento e blablabla), ainda tem SDK pra ajudar e um monte de códigos prontos no fórum, ou seja, mais moleza impossível!!!

 

boa sorte!!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this