commit 5a3bfed451fd368fff5d8835362c347ace6f5cae Author: Gleb O. Ivaniczkij Date: Fri Jul 26 04:15:12 2024 +0300 Разработано приложение diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000..48ec86b --- /dev/null +++ b/app/__init__.py @@ -0,0 +1 @@ +from .main import set_online diff --git a/app/main.py b/app/main.py new file mode 100644 index 0000000..c148933 --- /dev/null +++ b/app/main.py @@ -0,0 +1,41 @@ +import json +import logging +import traceback +from urllib.parse import ParseResult, urlparse, urlencode + +import aiohttp + +import config + + +logging.basicConfig( + level=logging.ERROR, +) +logger = logging.getLogger() + +set_online_url = urlparse('https://api.vk.com/method/account.setOnline') + + +async def set_online(): + try: + query = { + 'access_token': config.VK.access_token, + 'voip': '0', + 'v': '5.154', + } + url = ParseResult( + scheme=set_online_url.scheme, + netloc=set_online_url.hostname, + path=set_online_url.path, + params=set_online_url.params, + query=urlencode(query), + fragment=set_online_url.fragment, + ) + async with aiohttp.ClientSession() as session: + async with session.get(url.geturl()) as response: + assert response.status == 200 + assert json.loads(await response.read()).get('response') == 1 + except AssertionError: + logger.error(traceback.format_exc()) + except Exception: + logger.critical(traceback.format_exc()) diff --git a/config/__init__.py b/config/__init__.py new file mode 100644 index 0000000..cac1356 --- /dev/null +++ b/config/__init__.py @@ -0,0 +1 @@ +from .main import VK diff --git a/config/main.py b/config/main.py new file mode 100644 index 0000000..df045f3 --- /dev/null +++ b/config/main.py @@ -0,0 +1,14 @@ +from configparser import RawConfigParser + + +config = RawConfigParser() +config.read( + filenames='./config.ini', +) + + +class VK: + access_token = config.get( + section='VK', + option='access_token', + ) diff --git a/main.py b/main.py new file mode 100644 index 0000000..1e4d253 --- /dev/null +++ b/main.py @@ -0,0 +1,14 @@ +import asyncio +import time + +import aioschedule + +from app import set_online + + +aioschedule.every(60 * 2).to(60 * 5).seconds.do(set_online) + +loop = asyncio.get_event_loop() +while True: + loop.run_until_complete(aioschedule.run_pending()) + time.sleep(.1) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..afba7ba --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +aiohttp +aioschedule