Reddit RSS Feed retornando menos itens quando solicitado através do HTTP?
-
19-09-2019 - |
Pergunta
Estou tentando ler dados de um feed RSS que possui 25 itens. Quando solicito o arquivo RSS através do HTTP, diz que existem apenas 20 itens.
function test($location)
{
$doc = new DomDocument();
$doc->load($location);
$items = $doc->getElementsByTagName('item');
return $items->length;
}
// Prints 20
echo test('http://www.reddit.com/r/programming/new/.rss?after=t3_');
// Prints 25
echo test('programming.xml');
Eu tentei feeds RSS de outros subreddits também com o mesmo resultado.
Solução
Eu vejo qual é a questão agora ... se você visitar um sub-reddit como /r/programação/ E vá para a guia "Nova" para ver envios mais recentes, existem duas opções de classificação. A primeira opção é "Rising", que mostra apenas entradas futuras, a ordem de classificação alternativa é "nova".
Como escolhi a ordem de classificação "nova" no meu navegador, ele salvou um cookie e foi usado como a ordem de classificação padrão depois. No entanto, o acesso à página através do código ainda estava usando a ordem de classificação padrão, que retornou uma quantidade variável de resultados.
Resolvi o problema anexando a string de consulta de ordem de classificação ao URL da solicitação: http://www.reddit.com/r/programming/new/.rss?sort=new
Outras dicas
Se estivesse tendo problemas para carregar o feed, provavelmente emitiria um aviso de algum tipo.
No momento, seu código de amostra para o feed do Reddit mostra que ele possui 14 itens. O número de itens nesse feed não é constante. Portanto, o problema é que sua cópia local é diferente da que você estava carregando do Reddit.