User: Здравствуй. Напиши, пожалуйста, скрипт на python, который отправляет запрос на рендер LaTeX формулы и возвращает ссылку на отрендеренную пикчу.
Предоставляю тебе данные запроса:
URL-адрес запроса:
https://i.upmath.me/png/%5Cbegin%7Balign*%7D%0A%20%20%20%20x%5E2%20%2B%20y%5E2%20%26%3D%201%20%5C%5C%0A%20%20%20%20y%20%26%3D%20%5Csqrt%7B1%20-%20x%5E2%7D%0A%20%20%20%20%5Cend%7Balign*%7D
Метод запроса:
GET
Код состояния:
200 OK
Удаленный адрес:
127.0.0.1:12334
Политика источника ссылки:
strict-origin-when-cross-origin
accept-ranges:
bytes
access-control-allow-methods:
GET, OPTIONS
access-control-allow-origin:
*
cache-control:
max-age=86400
content-length:
2665
content-type:
image/png
date:
Sat, 09 Nov 2024 09:19:05 GMT
etag:
"672f28f3-a69"
expires:
Sun, 10 Nov 2024 09:19:05 GMT
last-modified:
Sat, 09 Nov 2024 09:18:43 GMT
server:
nginx/1.22.1
:authority:
i.upmath.me
:method:
GET
:path:
/png/%5Cbegin%7Balign*%7D%0A%20%20%20%20x%5E2%20%2B%20y%5E2%20%26%3D%201%20%5C%5C%0A%20%20%20%20y%20%26%3D%20%5Csqrt%7B1%20-%20x%5E2%7D%0A%20%20%20%20%5Cend%7Balign*%7D
:scheme:
https
accept:
image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8
accept-encoding:
gzip, deflate, br, zstd
accept-language:
ru,en;q=0.9,en-GB;q=0.8,en-US;q=0.7
if-modified-since:
Sat, 09 Nov 2024 09:18:42 GMT
priority:
i
referer:
https://i.upmath.me/g/%5Cbegin%7Balign*%7D%0A%20%20%20%20x%5E2%20%2B%20y%5E2%20%26%3D%201%20%5C%5C%0A%20%20%20%20y%20%26%3D%20%5Csqrt%7B1%20-%20x%5E2%7D%0A%20%20%20%20%5Cend%7Balign*%7D
sec-ch-ua:
"Chromium";v="130", "Microsoft Edge";v="130", "Not?A_Brand";v="99"
sec-ch-ua-mobile:
?0
sec-ch-ua-platform:
"Windows"
sec-fetch-dest:
image
sec-fetch-mode:
no-cors
sec-fetch-site:
same-origin
user-agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0
Assistant: Здравствуйте!

Ниже представлен скрипт на Python, который отправляет запрос для рендера LaTeX-формулы через сервис [upmath.me](https://upmath.me/). Скрипт выполняет следующие шаги:

1. **Принимает LaTeX-формулу**: Передаётся строка с LaTeX-кодом.
2. **URL-кодирует формулу**: Кодирует специальные символы, чтобы их можно было использовать в URL.
3. **Формирует полный URL для запроса**: Добавляет закодированную формулу к базовому URL-адресу сервиса.
4. **Отправляет GET-запрос**: Проверяет доступность рендеренной формулы.
5. **Возвращает ссылку на изображение**: Если запрос успешен, возвращает URL с изображением формулы.

Также предусмотрена обработка возможных ошибок, таких как недоступность сервиса или некорректный LaTeX-код.

Вот пример реализации:

```python
import requests
import urllib.parse

def render_latex(latex_code):
    """
    Рендерит LaTeX-формулу через сервис upmath.me и возвращает ссылку на изображение.

    :param latex_code: Строка с LaTeX-формулой.
    :return: URL ссылки на отрендеренную формулу или сообщение об ошибке.
    """
    # Базовый URL сервиса
    base_url = "https://i.upmath.me/png/"
    
    # URL-кодирование LaTeX-кода
    encoded_latex = urllib.parse.quote(latex_code)
    
    # Полный URL запроса
    image_url = f"{base_url}{encoded_latex}"
    
    try:
        # Отправка GET-запроса с заголовками, имитирующими браузер
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                          "AppleWebKit/537.36 (KHTML, like Gecko) "
                          "Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0",
            "Accept": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8",
            "Referer": "https://i.upmath.me/g/",
            # Добавьте другие заголовки при необходимости
        }
        
        response = requests.get(image_url, headers=headers)
        
        # Проверка успешности запроса
        if response.status_code == 200 and response.headers.get("Content-Type") == "image/png":
            return image_url
        else:
            return f"Не удалось отрендерить формулу. Статус код: {response.status_code}"
    
    except requests.exceptions.RequestException as e:
        return f"Произошла ошибка при запросе: {e}"

if __name__ == "__main__":
    # Пример LaTeX-формулы
    latex_formula = r"""\begin{align*}
    x^2 + y^2 &= 1 \\
    y &= \sqrt{1 - x^2}
    \end{align*}"""
    
    result = render_latex(latex_formula)
    print("Ссылка на изображение:", result)
```

### Пояснения:

1. **Импорт библиотек**:
    - `requests` — для отправки HTTP-запросов.
    - `urllib.parse` — для URL-кодирования LaTeX-кода.

2. **Функция `render_latex`**:
    - **Параметр `latex_code`**: Строка с LaTeX-формулой.
    - **URL-кодирование**: Используется `urllib.parse.quote` для кодирования специальных символов.
    - **Формирование полного URL**: Объединяет базовый URL с закодированной формулой.
    - **Заголовки запроса**: Некоторые сервисы требуют определённых заголовков (например, `User-Agent`), чтобы распознать запрос как исходящий из браузера.
    - **Отправка запроса**: Используется `requests.get` для получения изображения.
    - **Проверка ответа**: Убедимся, что статус код 200 и тип контента `image/png`.
    - **Обработка ошибок**: Возвращает соответствующее сообщение в случае неудачи.

3. **Использование скрипта**:
    - В блоке `if __name__ == "__main__":` приведён пример использования функции с формулой, похожей на ту, которую вы предоставили.
    - После запуска скрипта вы получите ссылку на отрендеренное изображение в консоли.

### Зависимости:

Убедитесь, что у вас установлена библиотека `requests`. Если нет, установите её с помощью pip:

```bash
pip install requests
```

### Пример вывода:

```
Ссылка на изображение: https://i.upmath.me/png/%5Cbegin%7Balign*%7D%0A%20%20%20%20x%5E2%20%2B%20y%5E2%20%26%3D%201%20%5C%5C%0A%20%20%20%20y%20%26%3D%20%5Csqrt%7B1%20-%20x%5E2%7D%0A%20%20%20%20%5Cend%7Balign*%7D
```

Вы можете открыть эту ссылку в браузере, чтобы увидеть отрендеренное изображение вашей LaTeX-формулы.

### Дополнительно:

Если вы хотите сохранить изображение локально, можно расширить функцию следующим образом:

```python
import os

def save_latex_image(latex_code, save_path='formula.png'):
    image_url = render_latex(latex_code)
    
    if image_url.startswith("http"):
        response = requests.get(image_url)
        if response.status_code == 200:
            with open(save_path, 'wb') as f:
                f.write(response.content)
            print(f"Изображение сохранено как {save_path}")
        else:
            print("Не удалось скачать изображение.")
    else:
        print(image_url)

# Пример использования
save_latex_image(latex_formula, 'my_formula.png')
```

Этот дополнительный код позволит скачивать и сохранять изображение на вашем компьютере.

Надеюсь, этот скрипт поможет вам эффективно рендерить LaTeX-формулы!
User: можем модифицировать скрипт так, чтобы пользователь мог сам вводить нужную ему формулу, а потом создавалась статья Telegraph, где вставляется пикча с помощью полученный ссылки из отклика?
Предоставлю тебе скрипт-основу для создания статьи, но тут уже статичная ссылка, а нам надо именно полученную из результата рендера:
import requests
import json

def create_account():
    """Create a Telegraph account and return access token"""
    url = "https://api.telegra.ph/createAccount"
    params = {
        "short_name": "PythonBot",
        "author_name": "Python Script"
    }
    
    response = requests.get(url, params=params)
    if response.status_code == 200:
        result = response.json()
        if result.get("ok"):
            return result["result"]["access_token"]
    return None

def create_article_with_image(access_token, image_url):
    """Create Telegraph article with image and return article URL"""
    url = "https://api.telegra.ph/createPage"
    
    # Prepare content with image
    content = [
        {
            "tag": "h3",
            "children": ["Generated Image Article"]
        },
        {
            "tag": "figure",
            "children": [
                {
                    "tag": "img",
                    "attrs": {"src": image_url}
                },
                {
                    "tag": "figcaption",
                    "children": ["Image from URL"]
                }
            ]
        }
    ]
    
    params = {
        "access_token": access_token,
        "title": "Image Article",
        "author_name": "Python Script",
        "content": json.dumps(content)
    }
    
    response = requests.get(url, params=params)
    if response.status_code == 200:
        result = response.json()
        if result.get("ok"):
            return result["result"]["url"]
    return None

def main():
    # Image URL
    image_url = "https://quicklatex.com/cache3/82/ql_0676ade0cd04eda37aeb3d0bcd427682_l3.png"
    
    # Create account and get access token
    access_token = create_account()
    if not access_token:
        print("Failed to create account")
        return
    
    # Create article with image
    article_url = create_article_with_image(access_token, image_url)
    if article_url:
        print(f"Article created successfully!\nURL: {article_url}")
    else:
        print("Failed to create article")

if __name__ == "__main__":
    main()