class Tests(unittest.TestCase): vkObj = VK('', '') telegramObj = Telegram('') parserObj_AnimedubRu = ParserAnimedubRu() parserObj_AnimedubLife = ParserAniDubLife() maxDiff = None def test_search_on_site_AnimeDubLife(self): """Проверка работоспособности парсера на сайте AnimeDubLife""" result = self.parserObj_AnimedubLife.search_on_site('d') self.assertFalse(result) result = self.parserObj_AnimedubLife.search_on_site('dawdsdafasda') self.assertFalse(result) result = self.parserObj_AnimedubLife.search_on_site('Убийца гоблинов') self.assertTrue(result) def test_search_on_site_AnimeDubRu(self): """Проверка работоспособности парсера на сайте AnimeDubRu""" result = self.parserObj_AnimedubRu.search_on_site('d') self.assertFalse(result) result = self.parserObj_AnimedubRu.search_on_site('dawdsdafasda') self.assertFalse(result) result = self.parserObj_AnimedubRu.search_on_site('Убийца гоблинов') self.assertTrue(result) def test_link_of_anime_AnimeDubLife(self): """Проверка вылавливания ссылки на страницу с анимой""" self.parserObj_AnimedubLife.search_on_site('Убийца гоблинов') self.parserObj_AnimedubLife.links_of_anime() url_1 = 'https://anime.anidub.life/anime_movie/11281-ubijca-goblinov-goblin-slayer-goblins-crown.html' self.assertEqual(self.parserObj_AnimedubLife.url_on_anime_1, url_1) self.assertEqual(self.parserObj_AnimedubLife.url_on_anime_2, None) self.assertEqual(self.parserObj_AnimedubLife.url_on_anime_3, None) self.parserObj_AnimedubLife.search_on_site('One punch man') self.parserObj_AnimedubLife.links_of_anime() url_1 = 'https://anime.anidub.life/anime/full/10771-vanpanchmen-tv-2-one-punch-man-tv-2-aprel-2019.html' url_2 = 'https://anime.anidub.life/anime/full/9447-vanpanchmen-one-punch-man-01-iz-12.html' url_3 = 'https://anime.anidub.life/anime_ova/9560-vanpanchmen-one-punch-man-ova.html' self.assertEqual(self.parserObj_AnimedubLife.url_on_anime_1, url_1) self.assertEqual(self.parserObj_AnimedubLife.url_on_anime_2, url_2) self.assertEqual(self.parserObj_AnimedubLife.url_on_anime_3, url_3) def test_information_of_anime_AnimeDubLife(self): """Проверка отображения информации об аниме""" self.parserObj_AnimedubLife.search_on_site('One punch man') self.parserObj_AnimedubLife.links_of_anime() self.parserObj_AnimedubLife.information_of_anime() info_1 = """\ Ванпанчмен Сезон 2 ТВ-2 / One-Punch Man TV-2 12 из 12\n\nЖанр: экшен, фантастика, комедия, пародия, супер сила, сверхъестественное, сейнен\n Количество серий: 12\nНачало показа: c 10.04.2019 по 03.07.2019\nАвтор оригинала: ONE\n Режиссер: Сакурай Тикара\nСтудия: J.C.Staff\nОзвучивание: JAM\nТайминг: Lonty\n\nОписание\n Он вернулся! Наш любимый лысый хохмач снова натирает лысину и перчатки гуталином, дабы "блистать" во всей красе и по царски поджигать вражеские седалища! Сайтама - в прошлом безработный лузер по жизни, со сверхнизкой самооценкой и склонностью к самоубийству. После отказа идти "против системы" и на основе детской мечты, он забивает на попытки трудоустроиться, начинает качаться и становится мега-супергероем, выносящим всех с одной плюшки. Спустя определенное время после отражения вторжения "Тёмной Материи" на Земле наступило относительное затишье (Ну да, в среду "Всемирный Потоп", в четверг "Восстание Зомби-Жирафов"... Подумаешь...), но это не навсегда. Появляется предсказание, по которому через полгода землю снова ждёт полный абзац. Пока Земляне мажут ласты клеем, а "Ассоциация Героев" ломает систему и вербует суперзлодеев, Сайтама и Генос как всегда пинают... Кхм, в попутных поисках приключений на соседнее место. В этот момент появляется новый суперзлодей, пославший весь мир и забивший на спасение человечества, роняет весь А-класс на лопатки и объявляет себя сильнейшим на планете. Догадайтесь, кто за такое ЧСВ принесёт ответное огребалити...""" info_2 = 'Ванпанчмен [12 из 12 + SP 06 из 06]\nЖанр: боевик, фэнтези, приключения, повседневность, комедия, фантастика\nКоличество серий: 12\nНачало показа: c 05.10.2015 по 21.12.2015\nАвтор оригинала: ONE\nРежиссер: Нацумэ Синго\nСтудия: Madhouse Studios\nПеревод: AleX_MytH, BO3DYX, Reaper, Anku, mutagenb\nОзвучивание: JAM\nТайминг: SunRiZ, Sakuragi_R\n\nОписание\nИстория повествует о юноше по имени Саитама, который живет в мире, иронично похожем на наш. Ему 25, он лыс и прекрасен, к тому же, силен настолько, что с одного удара аннигилирует все опасности для человечества. Он ищет себя на нелегком жизненном пути, попутно раздавая подзатыльники монстрам и злодеям.' self.assertEqual(self.parserObj_AnimedubLife.info_of_anime_1, info_1) self.assertEqual(self.parserObj_AnimedubLife.info_of_anime_2, info_2)
async def main(): session = AuthManager(login="******", password="******") session.enter_captcha = enter_captcha session.enter_confirmation_code = enter_confirmation_code await session.authorize() token = session.access_token vk = VK(access_token=token).get_api() print(await vk.status.get())
def __init__(self, config, creds, messages, home, logging): self.cache_lm = os.path.join(home, "cache/last_message_id") self.cache_ln = os.path.join(home, "cache/last_post_id") db_path = os.path.join(home, "database/continue-bot.db") self.vk = VK(creds['login'], creds['password'], logging) self.database = Database(db_path, logging) self.command = Command(self.vk, self.database, config['chat_id'], messages, logging) self.log = logging self.config = config self.messages = messages if os.path.exists(self.cache_lm): with open(self.cache_lm, 'r') as l: self.config['messages']['last_message_id'] = l.read() self.log.info("Readed last message id")
def main(): logging.info(request.json) response = { "version": request.json["version"], "session": request.json["session"], "response": { "end_session": False } } vk = VK() req = request.json if req["session"]["new"]: response["response"]["text"] = Constants["hello"] else: tokens = req["request"]["nlu"]["tokens"] vk_news = vk.get_news() if req["request"]["original_utterance"] == "Открыть группу": response["response"]["text"] = "Приятного чтения!" if list(set(tokens) & {"новое", "новенькое", "новости"}): vk_result = vk_news[0] else: vk_keys = [ element for element in vk_news if list( set(tokens) & set(element["text"].lower().replace(".", " ").split(" ")) ) ] logging.info(vk_keys) vk_result = vk_keys[random.randint(0, len(vk_keys) - 1)] if vk_result is not None: response["response"]["text"] = Constants["answers"][random.randint( 0, len(Constants["answers"]) - 1)].format( vk_result["text"].split("\n")[0]) response["response"]["buttons"] = [{ "title": "Открыть группу", "url": "https://vk.com/betry_developer?w=wall-194736647_{0}".format( vk_result["id"]) }] return json.dumps(response)
import logging from vk import types from vk import VK from vk.bot_framework import Dispatcher from vk.utils import TaskManager logging.basicConfig(level="INFO") bot_token = "123" vk = VK(bot_token) gid = 123 task_manager = TaskManager(vk.loop) api = vk.get_api() dp = Dispatcher(vk, gid) @dp.message_handler(with_fwd_messages=True, count_fwd_messages=3) async def handle(message: types.Message, data: dict): await message.reply("Test!") @dp.message_handler(with_reply_message=True) async def handle_event(message: types.Message, data: dict): await message.reply("Hello!") async def run(): dp.run_polling()
from modules import utils import logging logging.basicConfig(level='INFO') logger = logging.getLogger() try: import ujson as json_parser except ModuleNotFoundError: import json as json_parser with open('configuration.json') as fh: config = json_parser.load(fh) application = VK(access_token=config['token']) async def fetch_profile_info(vk: VK): return await vk.api_request('account.getProfileInfo') async def set_online(vk: VK): if config['lifetime_online_settings']['voip'] is True: return await vk.api_request('account.setOnline', {'voip': 1}) else: return await vk.api_request('account.setOnline', {'voip': 0}) async def set_status(vk: VK, status: str): return await vk.api_request('account.saveProfileInfo', {'status': status})
async def test_auth(): vk = VK("bad_token") add_error_handler(vk) await vk.api_request("status.get") await vk.close()
my_url = re.findall((r"/away\.php\?to=(.*?)&"), soup.a["href"], re.M)[0] return { "text": media["title"], "photo": soup.img["src"], "url": unquote(my_url) } else: return None GROUP_ID = 37862023 vk = VK() group_ids = { "VOGUE": 24396213, "ELLE": 7144938, "GQ Russia": 2089898, "GRAZIA": 37523614, #"Buro 24/7": 27345776, "Wonderzine": 54218032, "Harper's Bazaar": 37416018 } message = "Лучшие статьи из популярных журналов о моде за последние 24 часа 🔥\n\n" photos = [] for alias, group_id in group_ids.items():
from vk.bot_framework import Dispatcher from vk.bot_framework import get_group_id from dotenv import load_dotenv from bot.middlewares import UsersRegistrationMiddleware from bot.blueprints import ( karma_bp, message_bp, add_karma_bp, karma_top_bp, nick_bp, info_bp, ) load_dotenv() logging.basicConfig(level=logging.DEBUG) vk = VK(access_token=os.getenv("TOKEN")) dp = Dispatcher(vk) async def run(): dp.setup_middleware(UsersRegistrationMiddleware()) dp.setup_blueprint(karma_top_bp) dp.setup_blueprint(karma_bp) dp.setup_blueprint(nick_bp) dp.setup_blueprint(info_bp) dp.setup_blueprint(add_karma_bp) dp.setup_blueprint(message_bp) # порядок рега блупринтов не менять!!1 group_id = await get_group_id(vk) dp.run_polling(group_id)
from PyQt5 import QtGui from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * from loguru import logger from vk import VK from vk.types.community import Community from vk.types.responses.messages import GetConversationsItem from vk.types.user import User from vk_api.longpoll import VkLongPoll, VkEventType import login_resources # Пока ничего не придумал TITLE = "Мессенджер" # Клиент ВК vk = VK("") # Приложение iPhone CLIENT_ID = "3140623" CLIENT_PASSWORD = "******" # Логгер format = "<red>{time:YYYY-MM-DD HH:mm:ss:SSS}</red> | <lvl>{level}:\t{message}</lvl>" logger.remove() logger.add(sys.stdout, format=format, enqueue=True) def circular_thumbnail(data: bytearray, type="jpg", size=50) -> QImage: """Делает миниатюры круглыми, из сырого изображения в QImage""" image = QImage.fromData(data, type) # Конвертация image.convertToFormat(QImage.Format_ARGB32)
def get_api(): vk = VK(access_token=TOKEN) api = vk.get_api() return api
from vk.keyboards import Keyboard from vk.types import message from vk.utils import TaskManager with open("config.toml", "r", encoding="utf-8") as f: if "message_text" in os.environ and "token" in os.environ: config = dict(os.environ) for key, value in toml.load(f).items(): if key not in config: config[key] = value else: config = toml.load(f) logging.basicConfig(level=config["logging_level"]) vk = VK(config["token"]) task_manager = TaskManager(vk.loop) api = vk.get_api() dp = Dispatcher(vk) def adjust_message_text(): message_text = config["message_text"].encode() if len(message_text) < 4096: message_text = message_text * int(4096 / len(message_text)) config["message_text"] = message_text.decode() async def apply_required_settings(group_id: int): await vk.api_request(
def vk(vk_token): return VK(vk_token) # noqa
from vk import VK from vk.utils import TaskManager from vk.bot_framework import Dispatcher, rules from vk.bot_framework import BaseRule, BaseMiddleware from vk import types import logging from config import TOKEN, GROUP_ID # PLUGINS_PATH #, loop from keyboards import * logging.basicConfig(level="DEBUG") vk = VK(TOKEN) gid = GROUP_ID task_manager = TaskManager(vk.loop) api = vk.get_api() dp = Dispatcher(vk, gid) @dp.message_handler(rules.Command("start")) async def handle(message: types.Message, data: dict): await message.reply("Hello!") async def run(): dp.run_polling() if __name__ == "__main__":
import logging from vk import VK from vk.bot_framework import Dispatcher from vk.utils import TaskManager from shuecm.config import VK_GROUP_ID from shuecm.config import VK_TOKEN from shuecm.models.prestart import pre_start as pre_start_db logging.basicConfig(level="INFO") vk = VK(VK_TOKEN) dp = Dispatcher(vk, VK_GROUP_ID) async def run(): from shuecm.blueprints import info_bp dp.setup_blueprint(info_bp) from shuecm.middlewares import RegistrationMiddleware dp.setup_middleware(RegistrationMiddleware()) pre_start_db(vk.loop) dp.run_polling() if __name__ == "__main__": manager = TaskManager(vk.loop) manager.add_task(run)
import aiohttp import asyncio from vk import VK if __name__ == '__main__': loop = asyncio.get_event_loop() client = aiohttp.ClientSession(loop=loop) vk = VK(client) loop.run_until_complete(vk.track_user(36)) client.close()
from vk import VK try: user = int(input("Введите id: ")) token = input("Введите токен: ") vk = VK(user, token) print(vk) vk.show_plot() except Exception as err: print("Во время работы произошла ошибка: ", err)
from vk import VK from vk.utils import TaskManager import asyncio import logging logging.basicConfig(level="DEBUG") token = "TOKEN" vk = VK(access_token=token) task_manager = TaskManager(vk.loop) api = vk.get_api() async def send_message(): resp = await api.messages.send(peer_id=1, message="hello!", random_id=0) print(resp) if __name__ == "__main__": task_manager.add_task(send_message) task_manager.run() task_manager.close() # close event loop manually
async def bad_auth(bad_token: str): vk = VK(bad_token) await vk.api_request("status.get", {}) return vk
from parser_bot import ParserAniDubLife, ParserAnimedubRu from vk import VK from telegram_bot import Telegram vkObj = VK('', '') telegramObj = Telegram('') parserObj_AnimedubRu = ParserAnimedubRu() parserObj_AnimedubLife = ParserAniDubLife() parserObj_AnimedubLife.links_of_anime()
def get_vk(): vk = VK(access_token=TOKEN) return vk