import requests
from bs4 import BeautifulSoup
import re
import json
import mysql.connector

def get_google_images_urls(query, num_images=10):
    query = query.replace(' ', '+')
    url = f"https://www.google.com/search?hl=en&q={query}&tbm=isch"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}

    response = requests.get(url, headers=headers)
    if response.status_code != 200:
        print(f"Failed to retrieve contents from url: {url}")
        return []

    soup = BeautifulSoup(response.text, 'html.parser')
    image_tags = soup.find_all("img", {"src": re.compile("gstatic.com")})
    
    image_urls = []
    for img_tag in image_tags:
        if len(image_urls) >= num_images:
            break
        img_url = img_tag['src']
        image_urls.append(img_url)
    
    return image_urls

# Подключение к базе данных MySQL
servername = "localhost"
username = "kabo2023"
password = "AaBbCc-2023r"
dbname = "mycamper"

connection = mysql.connector.connect(
    host=servername,
    user=username,
    password=password,
    database=dbname
)

cursor = connection.cursor()

# Получение общего числа записей в таблице pois
count_query = "SELECT COUNT(*) FROM pois"
cursor.execute(count_query)
total_records = cursor.fetchone()[0]

# Получение данных из таблицы pois
select_query = "SELECT place_id, name, full_address FROM pois"
cursor.execute(select_query)
results = cursor.fetchall()

# Обновление записей в таблице с сохранением URL-адресов изображений в формате JSON
for idx, result in enumerate(results, 1):
    poi_id = result[0]  # Предполагается, что у вас есть поле 'place_id' в таблице
    search_query = f"{result[1]} {result[2]}"  # Объединяем название и полный адрес для поискового запроса
    image_urls = get_google_images_urls(search_query)
    street_view_json = json.dumps(image_urls)  # Преобразование списка URL-адресов в JSON
    update_query = "UPDATE pois SET street_view = %s WHERE place_id = %s"
    cursor.execute(update_query, (street_view_json, poi_id))
    
    # Выводим процент выполнения задания
    completion_percentage = (idx / total_records) * 100
    print(f"Progress: {completion_percentage:.2f}%")

# Сохранение изменений и закрытие соединения
connection.commit()
connection.close()