Извлечение новых элементов из RSS-канала - PullRequest
6 голосов
/ 17 декабря 2010

Я пишу приложение, которое принимает данные из ряда произвольных RSS-каналов. Каналы опрашиваются асинхронно в фоновом режиме, и метод вызывается каждый раз, когда в канал добавляется новый элемент.

Моя проблема заключается в определении новых элементов в ленте. Какой лучший способ сделать это? У меня есть несколько идей, но все они ошибочны.

Предложение: при каждом опросе сохраняйте все предметы новее, чем pubDate of последний элемент в последнем опросе Проблема: pubDate не требуется поле.

Предложение: хранить хэш контента за каждый товар вы возвращаете, а не вернуть содержимое с тем же хешем Проблема: быстро выходит из-под контроля с точки зрения использования памяти

Ответы [ 2 ]

4 голосов
/ 17 декабря 2010

Как насчет обоих?

Используйте pub-date в тех лентах, которые действительно ее возвращают, и сохраняйте хэш остальных.Если большинство фидов возвращают дату публикации, а количество фидов не исчисляется миллионами, все будет в порядке, как с точки зрения производительности, так и с точки зрения памяти.

2 голосов
/ 20 декабря 2010

Вы можете использовать PubDate для тех RSS-каналов, где он предоставляется.Если PubDate не указан и если дублирующиеся элементы в точности совпадают, т. Е. Когда вы не можете найти ни одного отдельного поля для их различения, вычислите контрольную сумму md5 и сохраните ее для сравнения.Используйте ссылку http://sharpertutorials.com/calculate-md5-checksum-file/. Таким образом, вы не будете хранить файлы содержимого полностью и их сравнение.Практически вы можете очистить данные контрольной суммы часто на основе частоты нового контента, чтобы избежать проблемы с памятью.Если возможно, сохраните несколько хешей для разных источников.Если вы опубликуете фактические цифры, у нас может быть более реалистичное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...