При вызове функции не хватает аргумента
При вызове функции не хватает аргумента. Нужно что-то передать, а я без понятия, что нужно передать.
url = "https://www.olx.ua/uk/"
a = 5000-7000
params = {
'q': 'iPhone 11', # пошук
'category_id': 25, # ID категорії
'per_page': 10, # кількість результатів на сторінці
'price': a, #Ціна
}
response = requests.get(url, params=params)
@dp.message_handler(commands=['start'])
async def cmd_start(message: types.Message):
await message.answer("BOT START")
def get_olx_offers():
headerss = {'Authorization': f'Bearer {api_key}'}
response = requests.get(url, params=params, headers=headerss)
if response.status_code == 200:
return response.text
else:
print(f"Error: {response.status_code}")
async def process_offers(offers):
for offer in offers.get('data', []):
# Перевірка, чи підходить оголошення вашим критеріям
if 'iPhone' in offer.get('title', '').lower() and offer.get('price', 0) <= 10000:
print("Знайдено підходяще оголошення:")
print(f"Назва: {offer['title']}")
print(f"Ціна: {offer['price']} грн")
print(f"Посилання: {offer['url']}")
print("\n")
await asyncio.sleep(60)
async def vidpravka(vidpravkaa):
for vidpravkaa in vidpravkaa.get('data', []):
if 'iPhone 11' in vidpravkaa.get('title', '').lower() and vidpravkaa.get('price', 0) <= 10000:
message = (
f"Знайдено підходяще оголошення:\n"
f"Назва: {vidpravkaa['title']}\n"
f"Ціна: {vidpravkaa['price']} грн\n"
f"Посилання: {vidpravkaa['url']}"
)
await bot.send_message(chat_id=message.from_user.id, text=message)
await asyncio.sleep(10)
process_offers()
TypeError: process_offers() missing 1 required positional argument: 'offer]
Ответы (1 шт):
Автор решения: megamozg
→ Ссылка
В вашем коде функция process_offers принимает один аргумент offers, но при вызове функции у вас отсутствует передача этого аргумента. Вы должны передать какой-то объект типа, ожидаемого функцией process_offers.
Например, если у вас есть словарь с ключом 'data', который содержит список предложений, вы можете вызвать функцию следующим образом:
import asyncio
# Предположим, что у вас есть переменная offers_dict, содержащая данные
offers_dict = {
'data': [
{'title': 'Iphone X', 'price': 9500, 'url': 'http://example.com/iphone-x'},
# Другие предложения
]
}
async def process_offers(offers):
for offer in offers.get('data', []):
if 'Iphone' in offer.get('title', '').lower() and offer.get('price', 0) <= 10000:
print("Знайдено пiдходяще оголошення")
print(f"Назва: {offer['title']}")
print(f"Цiна: {offer['price']}")
print(f"Посилання: {offer['url']}")
print("\n")
await asyncio.sleep(60)
# Передача словаря в качестве аргумента
asyncio.run(process_offers(offers_dict))
Здесь offers_dict передается в качестве аргумента функции process_offers. Пожалуйста, замените offers_dict на ваш фактический объект данных, который вы хотите обработать в функции.