# Update "Vəziyyəti" of the products that are not in new results but in the last results
if last_results is not None:
last_links = set(last_results['Link'].values)
new_links = set([row[-2] for row in excel_data])
sold_links = last_links - new_links
for link in sold_links:
row_index = last_results[last_results['Link'] == link].index[0]
last_results.loc[row_index, 'Vəziyyəti'] = 'Satılıb'
# Append the sold products to new results
sold_products = last_results[last_results['Vəziyyəti'] == 'Satılıb']
excel_data.extend(sold_products.values.tolist())
# Printing the PrettyTable
print(table)
# Printing the product count
print(f"Total products found: {product_count}")
# Creating a DataFrame and saving to Excel (using Excel format)
columns = ["Avtomobil", "İl", "Mühərrik", "Yürüş", "Qiymət", "Şəhər", "Yerləşdirilib", "Saytdakı vaxtı", "Link", "Vəziyyəti"]
df = pd.DataFrame(excel_data, columns=columns)
df.to_excel(excel_file_path, index=False, engine='openpyxl')
# Create a set to store the links of cars that have been sent
sent_cars = set()
while True:
print("Starting a new run...")
asyncio.run(send_to_telegram("Starting a new run..."))
# Run the job function inside the while loop
job()
car_data = read_excel_data()
yeni_count = 0
satilib_count = 0
total_cars = len(car_data)
for index, row in car_data.iterrows():
if row['Vəziyyəti'] in ['Yeni', 'Satılıb'] and row['Link'] not in sent_cars:
message = f"*{row['Avtomobil']}*\nİl: {row['İl']}\nMühərrik: {row['Mühərrik']}\nYürüş: {row['Yürüş']}\nQiymət: {row['Qiymət']}\nŞəhər: {row['Şəhər']}\nYerləşdirilib: {row['Yerləşdirilib']}\nSaytdakı vaxtı: {row['Saytdakı vaxtı']}\nLink: [Baxmaq üçün basın]({row['Link']})\nVəziyyəti: {row['Vəziyyəti']}\n-------------------"
asyncio.run(send_to_telegram(message))
# Add the link of the car to the set of sent cars
sent_cars.add(row['Link'])
if row['Vəziyyəti'] == 'Yeni':
yeni_count += 1
elif row['Vəziyyəti'] == 'Satılıb':
satilib_count += 1
current_month = datetime.now().strftime('%B')
statistika_table = PrettyTable()
statistika_table.field_names = [current_month + " Statistika", "Sayı"]
statistika_table.add_row(["Yeni", yeni_count])
statistika_table.add_row(["Satılıb", satilib_count])
statistika_table.add_row(["Total Cars on Site", total_cars])
print(statistika_table)
asyncio.run(send_to_telegram(f"```\n{statistika_table}\n```"))
df = car_data.groupby(["Avtomobil", "Vəziyyəti"]).size().reset_index(name="count")
create_plot(df)
# Send the image to telegram:
bot = Bot(token=bot_token)
asyncio.run(bot.send_photo(chat_id=channel_id, photo=open('statistics.png', 'rb')))
time.sleep(60)