Moim zdaniem problem jest w tym miejscu
while x < 4:
if oferty_tablica[x]['id'] != oferty_weryfikacja[x]['id']:
send_to_telegram(oferty_tablica[x]['link'])
x = x + 1
z kodu poniżej powinien być tylko "wysłany" link o id = 555, a tak nie jest
[ on-line ]
oferty_weryfikacja = [
{ "id": 111, "link": "link1" },
{ "id": 222, "link": "link2" },
{ "id": 333, "link": "link3" },
{ "id": 444, "link": "link4" }
]
oferty_tablica = [
{ "id": 222, "link": "link2" },
{ "id": 111, "link": "link1" },
{ "id": 555, "link": "link5" },
{ "id": 444, "link": "link4" }
]
def send_to_telegram(message):
print(message)
x = 0
while x < 4:
if oferty_tablica[x]['id'] != oferty_weryfikacja[x]['id']:
send_to_telegram(oferty_tablica[x]['link'])
x = x + 1
bo sprawdzasz wartości 1 : 1, czyli
index 0 z oferty_tablica i index 0 z oferty_weryfikacja
index 1 z oferty_tablica i index 1 z oferty_weryfikacja itd.
musisz wykluczyć te elementy z oferty_tablica, które już znajdują się w oferty_weryfikacja
przykład [ on-line ]
oferty_weryfikacja = [ # oferty już wcześniej wysłane
{ "id": 111, "link": "link1" },
{ "id": 222, "link": "link2" },
{ "id": 333, "link": "link3" },
{ "id": 444, "link": "link4" }
]
oferty_tablica = [ # oferty pobrane ze strony
{ "id": 222, "link": "link2" },
{ "id": 111, "link": "link1" },
{ "id": 555, "link": "link5" },
{ "id": 444, "link": "link4" }
]
def send_to_telegram(message):
print(message)
oferty_tablica = [ elem for elem in oferty_tablica if elem not in oferty_weryfikacja ]
for i in range(len(oferty_tablica)):
send_to_telegram(oferty_tablica[i]['link'])
lub [ on-line ]
oferty_weryfikacja = [
{ "id": 111, "link": "link1" },
{ "id": 222, "link": "link2" },
{ "id": 333, "link": "link3" },
{ "id": 444, "link": "link4" }
]
oferty_tablica = [
{ "id": 222, "link": "link2" },
{ "id": 111, "link": "link1" },
{ "id": 555, "link": "link5" },
{ "id": 444, "link": "link4" }
]
def send_to_telegram(message):
print(message)
def clear_to_unique(list1, list2):
return list(filter(lambda element: element not in list2, list1))
# lub
# clear_to_unique = lambda list1, list2: list(filter(lambda element: element not in list2, list1))
for row in clear_to_unique(oferty_tablica, oferty_weryfikacja):
send_to_telegram(row['link'])