Здравствуйте, тоже столкнулся с похожим вопросом и решил его.
Задача: сформировать и добавить куки вручную, сразу после инициализации сессии, до каких-либо запросов.
Из вашего примера не понятно какой конкретно объект вы скармливаете в функцию convert_cookie — строку? Попробовал строку из примера «Мои куки выглядит так...», функция вернула пустой словарь...
Решил выложить свою реализацию, возможно кому-то пригодится. В моём случае куки формируются через значение строки заголовков (Set-Cookie), так как бы это сделал ответ сервера при реальном запросе. Думаю, что по аналогии каждый сможет адаптировать код под свои нужды. Самое главное, что таким образом куки можно добавить полноценные, со всеми параметрами и под конкретный домен.
import asyncio
from datetime import datetime, timedelta, timezone
import aiohttp
from yarl import URL
COOKIES = {'prop_opt_readability': '1', 'langpref': 'en_LJ/1776890499'}
HOST = URL('https://livejournal.com')
def _create_cookie(name: str, value: str, url: URL) -> str:
expires = (datetime.now(timezone.utc) + timedelta(days=365)).strftime(
'%A, %d-%b-%Y %H:%M:%S GMT'
)
return (
# Параметры кук
f'{name}={value}; '
f'expires={expires}; '
f'path=/; '
# Точка в начале не домена нужна, aiohttp всё равно её уберёт
f'domain={url.host}; '
f'Secure; SameSite=None'
)
def _set_cookies(session: aiohttp.ClientSession, cookies_in: dict[str, str], url: URL) -> None:
cookies_out = []
for key, value in cookies_in.items():
cookies_out.append(_create_cookie(key, value, url))
session.cookie_jar.update_cookies_from_headers(cookies_out, url)
async def main():
async with aiohttp.ClientSession() as session:
_set_cookies(session, COOKIES, HOST)
print('\n***Словарь объекта cookie_jar***')
print(session.cookie_jar._cookies)
print('\n***Куки с подробностями***')
for cookie in session.cookie_jar:
print(f'{cookie.key}: {cookie.value}')
for key, value in cookie.items():
if value:
print(f'{key}: {value}')
print('--------------------------------')
if __name__ == '__main__':
asyncio.run(main())
Valdemar Smörman, смотрите, на Windows, например, не важно в какую сторону нажимать хоткей переключения, он будет работать в обеих случаях, как Shift + Ctrl, так и Ctrl + Shift, поэтому пользователь просто тыкает на две клавиши сразу и язык переключается в 100% случаев
А на Gnome 3 это не работает, нужно именно зажать сначала Shift и только потом нажать Ctrl, тогда язык переключится. Получается что нельзя просто нажать две клавишы сразу, как попало, и получить 100% переключение, нужно именно зажимать их поочереди, к этому привыкаешь, но это не удобно и не понятно почему этот баг кочует из релиза в релиз... Судя по выдаче Гугла не только у меня такое.
Что забавно, если нажимать Shift + Ctrl на правой части клавы (у меня полноразмерная) то все работает как и должно работать, в обе стороны, а на левой стороне нифига.
Спасибо, только вариант через gnome-tweak-tool и ваш вариант через терминал приводят к тому что работает сочетание именно Shift + Ctrl, но не Ctrl + Shift...
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Задача: сформировать и добавить куки вручную, сразу после инициализации сессии, до каких-либо запросов.
Из вашего примера не понятно какой конкретно объект вы скармливаете в функцию convert_cookie — строку? Попробовал строку из примера «Мои куки выглядит так...», функция вернула пустой словарь...
Решил выложить свою реализацию, возможно кому-то пригодится. В моём случае куки формируются через значение строки заголовков (Set-Cookie), так как бы это сделал ответ сервера при реальном запросе. Думаю, что по аналогии каждый сможет адаптировать код под свои нужды. Самое главное, что таким образом куки можно добавить полноценные, со всеми параметрами и под конкретный домен.