Как сравнить два json файла?
Есть два json файла, содержащие новости. В first.json новости парсятся раз в час, а в second.json новости парсятся каждые десять минут. Цель: сравнить эти файлы, чтобы вывести свежую новость. Как это лучше сделать? Мой код:
a = {
"Автор": "Владимир Макаров",
"Заголовок": "Игрок сообщил о баге, не позволяющем пройти Star Wars Jedi Survivor",
"Описание": "Будьте осторожны на Кобо.",
"Ссылка": "https://www.igromania.ru//news/125904/Igrok_soobschil_o_bage_ne_pozvolyayuschem_proyti_Star_Wars_Jedi_Survivor.html"
},
b = {
"Автор": "Валентин Сонин",
"Заголовок": "DF о Jedi Survivor на PS5 — рейтрейсинг хорош, но мешает производительности",
"Описание": "Более стабильно игра работает в режиме с 30 FPS.",
"Ссылка": "https://www.igromania.ru//news/125910/DF_o_Jedi_Survivor_na_PS5-reytreysing_horosh_no_meshaet_proizvoditelnosti.html"
},
with open('first.json') as file1:
a = json.load(file1)
with open('second.json') as file2:
b = json.load(file2)
if dumps(a) == dumps(b):
print('Нет новых публикаций!')
else:
print('Есть новые публикации!')
Тут выводим свежую публикацию. Не могу сообразить как это сделать.
Ответы (1 шт):
Для определения свежей новости можно сравнивать дату или время последней новости в каждом из файлов, и выводить ту, которая была опубликована более поздно. Можно использовать модуль datetime для преобразования дат и времени из строк в объекты datetime.datetime, и выполнения арифметических операций с ними.
Для начала надо получить последние новости из каждого файла:
last_news_a = a[-1] # Получаем последнюю новость из первого файла
last_news_b = b[-1] # Получаем последнюю новость из второго файла
Далее преобразовать даты и время в объекты datetime.datetime:
time_a = datetime.datetime.strptime(last_news_a['time'], '%Y-%m-%d %H:%M:%S')
time_b = datetime.datetime.strptime(last_news_b['time'], '%Y-%m-%d %H:%M:%S')
Затем уже сравниваем две новости:
if time_a == time_b:
print('Нет новых публикаций!')
elif time_a > time_b:
print('Самая свежая новость:\n', last_news_a)
else:
print('Самая свежая новость:\n', last_news_b)
На этом всё, полный код будет выглядеть вот так:
import datetime
with open('first.json') as file1:
a = json.load(file1)
with open('second.json') as file2:
b = json.load(file2)
last_news_a = a[-1] # Получаем последнюю новость из первого файла
last_news_b = b[-1] # Получаем последнюю новость из второго файла
# Преобразуем даты и времена в объекты datetime.datetime
time_a = datetime.datetime.strptime(last_news_a['time'], '%Y-%m-%d %H:%M:%S')
time_b = datetime.datetime.strptime(last_news_b['time'], '%Y-%m-%d %H:%M:%S')
if time_a == time_b:
print('Нет новых публикаций!')
elif time_a > time_b:
print('Самая свежая новость:\n', last_news_a)
else:
print('Самая свежая новость:\n', last_news_b)