Untitled
unknown
plain_text
a year ago
3.1 kB
1
Indexable
Never
# 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)