Untitled

mail@pastecode.io avatar
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)