Beispiel #1
0
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)
Beispiel #2
0
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())
Beispiel #3
0
    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")
Beispiel #4
0
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()
Beispiel #6
0
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()
Beispiel #8
0
        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():
Beispiel #9
0
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)
Beispiel #11
0
def get_api():
    vk = VK(access_token=TOKEN)
    api = vk.get_api()
    return api
Beispiel #12
0
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(
Beispiel #13
0
def vk(vk_token):
    return VK(vk_token)  # noqa
Beispiel #14
0
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__":
Beispiel #15
0
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)
Beispiel #16
0
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()
Beispiel #17
0
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)
Beispiel #18
0
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
Beispiel #19
0
async def bad_auth(bad_token: str):
    vk = VK(bad_token)
    await vk.api_request("status.get", {})
    return vk
Beispiel #20
0
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()
Beispiel #21
0
def get_vk():
    vk = VK(access_token=TOKEN)
    return vk