Загрузка данных


"""
По опыту помню что библиотека для HTTP (тоесть веб протокол) вызовов это requests
Добавление внешних библиотек описывается как import имя библиотеки
"""
import requests
"""
Так надо вспомнить как вообще с ней работать нужен простой пример
гуглим python requests
Переходим на сайт https://pythonru.com/biblioteki/kratkoe-rukovodstvo-po-biblioteke-python-requests
Нахер все эти умные тексты берем сразу пример r = requests.get('https://api.github.com/events')
Нужен адрес куда мы с своим запросом пойдем
Идем на https://fucking-great-advice.ru/api
Берем адрес рандомного совета http://fucking-great-advice.ru/api/random
Собираем
"""
response = requests.get('http://fucking-great-advice.ru/api/random')
"""
Запустили ошибок нет но и не видно нифига в консольке
Выведем результат чот там нам вернулось
"""
print(response)
"""
В консоле странное непонятное
<Response [200]>
А где текст?
Видимо response который возвращает requests это какотойто умный обьект с кучей полей
Идем в документацию опять
https://pythonru.com/biblioteki/kratkoe-rukovodstvo-po-biblioteke-python-requests
О есть отдельная глава "Содержимое ответа (response)"
Ага тут говорят что у респонса есть поле text пробуем вывести его
"""
print(response.text)
"""
в консольке уже понятный текст
<Response [200]>
{"id":143,"text":"Выполняй блять обещанное!","sound":""}
Очевидно поле текст это dict и с ним можно работать как с словерем
НАм в дальнейшем ненужны все эти идентификаторы так что избавляемся
"""
#print(response.text['text'])
"""
Опа пошел я нахер и получил ошибку
TypeError: string indices must be integers, not 'str'
Индекс строки должен быть числом а не строкой значит поле текст это готовая строка
Ок пробуем конвертнуть ее в словарь (dict)
"""
#print(dict(response.text)['text'])
"""
ValueError: dictionary update sequence element #0 has length 1; 2 is required
Нихера не понятно но видимо я тупой 
Смотрим а что такое это самое поле text? Ну это json строка
Ну ок значит будем строить обьект json и работать с ним
Помню, но это гуглится за 3секунды, баиблиотеку для работы с json и импортирую ее
"""
import json
"""
Ну и документашки не мешало бы гуглим python json
Попадаем на https://pythonworld.ru/moduli/modul-json.html
так что умеет
dump переводит питоновский обьект в json валидную строку
Значит load это обратная штука из строки в питоновский обьект
Проверяем
"""
#response_dict = json.load(response.text)
"""
Странно все равно опшибка
Traceback (most recent call last):
  File "/Users/alekondakov/PycharmProjects/DBA_utils/_MAIN/MY_PROTO/FGA.py", line 64, in <module>
    response_dict = json.load(response.text)
                    ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/json/__init__.py", line 293, in load
    return loads(fp.read(),
                 ^^^^^^^
AttributeError: 'str' object has no attribute 'read'


Что то я делаю не так
Пойдем в доку по response и почитаем внимательнее
что за обьект он возвращает и какие поля у него есть
ООО там есть встроенный json в разделе Содержимое ответа в JSON
Пробуем
"""
response_dict = response.json()
"""
ОООО ошибок нет глянум чо возвращает
Должно быть dict
"""
print(type(response_dict))
"""
Видим в консоли <class 'dict'>
Значит у нас обьект словарь к которому можно уже образаться и работать из кода
Достаем только совет без шелухи
"""
fucking_great_advice = response_dict['text']
print(fucking_great_advice)
"""
Вывод в консоли тот что мы и хотели
<Response [200]>
{"id":358,"text":"Иди блять и сделай!","sound":""}
<class 'dict'>
Иди блять и сделай!
Теперь если у нас есть функция бота кототрая отправляет сообщения в чат мы можем эту строку отправить в чатик
Нарисую тебе пример гип=отетический
Вот якобы функция которая отправляет сообщение
"""
def send_bot_message(chat_id:int, message:str) -> None:
    print('-----------------')
    print(f"Отправил сообщение {message} в чат {chat_id}")

"""
Раз пошла такая пьянка давай и получение советов обернем в функцию
"""
def get_advice() -> str:
    return requests.get('http://fucking-great-advice.ru/api/random').json()['text']

"""
А теперь как это будет выглядеть
"""

send_bot_message(1111, get_advice())
send_bot_message(2222, get_advice())
send_bot_message(3333, get_advice())
send_bot_message(4444, get_advice())
send_bot_message(5555, get_advice())

"""
Вот такой вывод в консоли мы получим
<Response [200]>
{"id":64,"text":"Трекай блять время!","sound":""}
<class 'dict'>
Трекай блять время!
-----------------
Отправил сообщение Экспериментируй, ёпта! в чат 1111
-----------------
Отправил сообщение Заводи блять полезные знакомства! в чат 2222
-----------------
Отправил сообщение Ставь блять конкретные сроки! в чат 3333
-----------------
Отправил сообщение Работай блять быстрее! в чат 4444
-----------------
Отправил сообщение Делай блять перерывы! в чат 5555
"""