vinco / app.py
Starchik's picture
Create app.py
19ac4f6 verified
raw
history blame
No virus
3.53 kB
import streamlit as st
import requests
from bs4 import BeautifulSoup
from io import BytesIO
def get_auto_lot_info(query):
url = "https://ru.autoauctionspot.com/salvage-cars-auction/"
payload = {
'lot-type-available-to-bid': '1',
'search-term': query,
}
try:
response = requests.post(url, data=payload)
response.raise_for_status()
soup = BeautifulSoup(response.content, 'html.parser')
lot_title = soup.find('h1', class_='slider-name').text.strip()
damage_info = soup.find('div', class_='char-line')
damage_type_primary = damage_info.find('span', class_='char-info-envelope').text.strip()
damage_type_secondary = damage_info.find_all('span', class_='char-info-envelope')[1].text.strip()
lot_info = f"Лот: {lot_title}\nУщерб: {damage_type_primary}, {damage_type_secondary}\n"
char_wrap = soup.find_all('div', class_='char-wrap')
for char_box in char_wrap:
char_lines = char_box.find_all('div', class_='char-line')
for char_line in char_lines:
char_name = char_line.find('span', class_='char-name').text.strip()
char_info = char_line.find('span', class_='char-info').text.strip()
lot_info += f"{char_name}: {char_info}\n"
car_slider = soup.find('div', class_='car-slider')
image_links = [figure.a['href'] for figure in car_slider.find_all('figure')]
images = []
for link in image_links:
image_response = requests.get(link)
image_data = BytesIO(image_response.content)
images.append(image_data)
final_bid_info = soup.find('div', class_='copart-bid_final')
final_bid_title = final_bid_info.find('span', class_='copart-bid-title').text.strip()
final_bid_amount = final_bid_info.find('span', class_='copart-price').text.strip()
final_bid_info = f"{final_bid_title}: {final_bid_amount}"
return lot_info, images, final_bid_info
except requests.RequestException as e:
print(f"Ошибка при запросе {url}: {e}")
return None, None, None
except Exception as e:
print(f"Необработанная ошибка в get_auto_lot_info: {e}")
return None, None, None
def main():
# Добавляем кликабельную надпись AlfaCross сверху
st.markdown("[AlfaCross](https://t.me/alfacross_bot)")
st.title("Auto Lot Info Web App")
query = st.text_input("Введите запрос для поиска лота:")
if st.button("Получить информацию о лоте"):
lot_info, images, final_bid_info = get_auto_lot_info(query)
if lot_info and images and final_bid_info:
st.markdown(lot_info)
for image in images:
st.image(image)
st.markdown(final_bid_info)
else:
st.markdown("Информация о лоте не найдена.")
# Добавляем надпись Starchik снизу
st.markdown("[Starchik](https://t.me/Starchik_1)")
# Добавим обработку GET-запросов
if "query" in st.query_params:
query = st.query_params["query"]
lot_info, images, final_bid_info = get_auto_lot_info(query)
if lot_info and images and final_bid_info:
st.markdown(lot_info)
for image in images:
st.image(image)
st.markdown(final_bid_info)
else:
main()