Я экспериментировал с Google Calendar API для python и хочу каждые пять секунд проверять наличие новых событий в календаре. Я знаю, чтобы установить его как старый список, а затем сравнить его снова, когда он обновляется следующим образом:
- main()
- это функция, которая извлекает данные из календаря.
- Allevents
- список событий из календаря. К нему добавлены события в пределах main()
-Другие имена довольно интуитивно понятны.
while 1 == 1:
time.sleep(5)
main()
if first == 0:
m = set(allevents) - set(oldevents)
print(oldevents)
if not m:
print('nothing changed')
else:
print(m)
print("--------------------------------------------------------")
else:
oldevents = allevents
first = False
oldevents = allevents
allevents.clear()
Когда я запускаю это, первый раз, когда он получает данные, идет отлично: выводит allevents
(как написано в main()
) и больше ничего. Второй раз, когда я еще не внес никаких изменений, он выводит allevents
и oldevents
(которые имеют одинаковые значения) вместе с сообщением nothing changed
.
В третий раз цикл while выполняется, когда я добавляю событие в календарь. Теоретически я хочу вывести событие, которое я изменил из-за
m = set(allevents) - set(oldevents)
print(oldevents)
if not m:
print('nothing changed')
else:
print(m)
print("--------------------------------------------------------")
Однако следует if not m:
и выводит allevents
и oldevents
с теми же значениями и новым событием, которое я добавил и a nothing changed
сообщение.
Примечание: когда я удаляю это событие в следующем цикле, оба списка также удаляют это событие.
Четыре цикла (с некоторыми изменениями для презентаций):
Getting the upcoming 10 events
['5kt8vb1m5tad2h6higtd8seqp9']
Getting the upcoming 10 events
['5kt8vb1m5tad2h6higtd8seqp9']
['5kt8vb1m5tad2h6higtd8seqp9']
nothing changed
Getting the upcoming 10 events
['7p4hs2ribddnl5h13erv5c1rir', '5kt8vb1m5tad2h6higtd8seqp9']
['7p4hs2ribddnl5h13erv5c1rir', '5kt8vb1m5tad2h6higtd8seqp9']
nothing changed
Getting the upcoming 10 events
['5kt8vb1m5tad2h6higtd8seqp9']
['5kt8vb1m5tad2h6higtd8seqp9']
nothing changed
Если вы считаете, что больше кода необходимо, скажите мне, и я опубликую все это.