Beispiel #1
0
def dispatch_module(vk_session, vk):

    try:
        # key я так понял это dog, cat  и тд
        con = connect()
        with con.cursor() as cursor:
            cursor.execute("""select contentName from contenttype""")
            keys = cursor.fetchall()

        for key in keys:
            attachment = get_picture.get_photos(vk_session, key[0], vk)
            with con.cursor() as cursor:
                cursor.execute(
                    """select iduser from subscriber where contentname = (select id from contenttype where contentName ='{0}')"""
                    .format(key[0]))
                ids = [
                    item for sublist in list(map(list, cursor.fetchall()))
                    for item in sublist
                ]
                print(ids)
            for id in ids:
                try:
                    print('Отправляем ' + str(ids) + str(key[0]))
                    write_msg(id, ' ', attachment, 'user_id')
                    time.sleep(5)
                except Exception as er:
                    print(
                        str(key[0]) + ' не удалось отправить пользователю ' +
                        str(id) + ' из-за ' + str(er))
    except Exception as er:
        print(er)
Beispiel #2
0
 def del_from_file(self, user_id, key):
     con = connect()
     with con.cursor() as cursor:
         cursor.execute(
             """select id from subscriber where (idUser={0}) and (contentName= (select id from contenttype where contentname ='{1}'))"""
             .format(user_id, key))
     if len(cursor.fetchall()) != 0:
         with con.cursor() as cursor:
             print('Убираем подписку на ' + (key))
             cursor.execute(
                 """delete from subscriber where (idUser={0}) and (contentName= (select id from contenttype where contentname ='{1}'))"""
                 .format(user_id, key))
         con.commit()
         with con.cursor() as cursor:
             print('Проверяем подписан ли на что-то ещё пользователь ')
             cursor.execute(
                 """select count(*) from subscriber where idUser={0}""".
                 format(user_id))
         if cursor.fetchall()[0][0] == 0:
             print('Если нет, удаляем его совсем везде')
             with con.cursor() as cursor:
                 cursor.execute(
                     """delete from iduser where id={0}""".format(user_id))
             con.commit()
         con.close()
         return 'Они больше вас не побеспокоят'
     con.close()
     return 'Вы на это не подписаны'
Beispiel #3
0
def check_message(keyword, item, vk_ses, fw):
    try:
        con = connect()
        with con.cursor() as cursor:
            cursor.execute(
                """select contentname from contenttype where id = (select contentname from keyword where word = '{0}')"""
                .format(keyword))
        contentname = cursor.fetchall()
        con.close()
        if len(contentname) > 0:
            keyboard = all_keyboards('picture')
            send(contentname[0][0], item, vk_ses, keyboard)
        else:
            try:
                vk_session.method(
                    'messages.send', {
                        'user_id': item,
                        'message': fw.main_f(keyword, item),
                        'random_id': random.randint(-2147483648, +2147483648)
                    })
            except:
                pass
    except:
        print('Что то пошло не так')
        pass
Beispiel #4
0
    def follow(self, string, user_id):
        # Проверяем, не записывается ли человек повторно
        con = connect()
        # Делаем запрос к бд в таблицу с подписчиками имеется ли запись по подписке
        try:
            with con.cursor() as cursor:
                print(
                    'Делаем запрос к бд на проверку наличия возможности подписки'
                )
                cursor.execute(
                    """select contentname from contenttype where id = (select contentname from testword where word = '{0}')"""
                    .format(string))
            key = cursor.fetchall()[0][0]

            # Потом в эту команду добавить проверку по медиатипу
            with con.cursor() as cursor:
                print('Проверяем подписан ли человек уже')
                cursor.execute(
                    """select count(*) from subscriber where (idUser={0}) and (contentName=(select id from contenttype where contentname ='{1}')) and (mediaName=(select id from mediatype where medianame='picture'))"""
                    .format(user_id, key))
            if cursor.fetchall()[0][0] != 0:
                con.close()
                return 'Вы уже подписаны'
            else:
                print('Проверяем если ли человек в базе данных с id')
                with con.cursor() as cursor:
                    cursor.execute(
                        """select count(*) from idUser where id={0}""".format(
                            user_id))
                    if cursor.fetchall()[0][0] == 0:
                        print(
                            'Этот подписчик ещё не был ни на что подписан, добавляем его'
                        )
                        cursor.execute(
                            """INSERT INTO idUser VALUES({0})""".format(
                                user_id))
                con.commit()
                print('Подписываем на то, что он хотел')
                # В дальнейшем модифицировать и сделать возможным подписку на гифки с видосиками
                with con.cursor() as cursor:
                    print('До запроса')
                    cursor.execute(
                        """INSERT INTO subscriber(iduser,contentname,medianame) VALUES((select id from bot_bd.iduser where id ={0}),
                                   (select id from contenttype where contentname='{1}'),
                                   (select id from mediatype where medianame='picture'))"""
                        .format(user_id, key))
                    print('Подписка прошла успешно')

                con.commit()
                con.close()
                return 'Вы успешно подписаны на ' + string

        except:
            return 'Запросили подписаться на что-то несуществующее, попробуйте ещё раз'
Beispiel #5
0
    def unfollow(self, string, user_id):
        try:
            print(string)
            con = connect()
            with con.cursor() as cursor:
                print(
                    'Делаем запрос к бд на проверку наличия возможности отпписки'
                )
                cursor.execute(
                    """select contentname from contenttype where id = (select contentname from testword where word = '{0}')"""
                    .format(string))
            key = cursor.fetchall()[0][0]
            return (self.del_from_file(user_id, key))

        except:
            return "Запросили отписаться от чего-то несуществующего"
Beispiel #6
0
def get_photos(vk_session, keyword, vk):
        con = connect()
        print(keyword)
        #keyword я так понял это dog, cat  и тд
        start = time.time()
        with con.cursor() as cursor:
            cursor.execute("""select urlContent from content where contentname=(select id from contenttype where contentname='{0}') order by rand() limit 5""".format(keyword))
            pictures = cursor.fetchall()
            print(time.time() - start)
        con.close()
        buf =[]
        for element in pictures:
            buf.append(element[0])
        attachment = ','.join(buf)
        print(attachment)
        return attachment
Beispiel #7
0
def command_for_user(user_id):
    con = connect()
    with con.cursor() as cursor:
        cursor.execute("""select word from testword""".format(user_id))

    testword = list(map(list, cursor.fetchall()))
    print(testword)
    result = deepcopy(testword)
    for i in range(len(testword)):
        with con.cursor() as cursor:
            cursor.execute(
                """select word from keyword where testord = (select id from testword where word = '{0}')"""
                .format(testword[i][0]))
            result[i].append([
                item for sublist in list(map(list, cursor.fetchall()))
                for item in sublist
            ])
    print(result)
    vk_session.method(
        'messages.send', {
            'user_id':
            user_id,
            'message':
            "Команды для бота: \n\n"
            "{0}.\n \n"
            "{1}.\n \n"
            "{2}.\n \n"
            "Для того, чтобы узнать на что вы подписаны, напишите 'На что я подписан?\n\n"
            "C 22:00 до 8:00 по московскому времени рассылка не производится, чтобы не будить вас ночью.\n\n"
            .format(
                ('.\n \n').join(
                    list(
                        map(
                            lambda buf: "Для получения " + str(buf[0]) +
                            ", напишите что-то из: " + str(', '.join(buf[1])
                                                           ) + "", result))),
                "Если хотите подписаться на рассылку чего-либо из этого, напишите 'Я хочу подписаться на  --', где вместо -- подставте что-то из: "
                + str((', ').join(
                    [item for sublist in testword for item in sublist])),
                "Если хотите отписаться , напишите 'Я хочу отписаться от  --', где вместо -- подставте что-то из: "
                + str((', ').join(
                    [item for sublist in testword for item in sublist]))),
            'random_id':
            random.randint(-2147483648, +2147483648)
        })
Beispiel #8
0
def update_data(mediaType):
    login, password = data.data('user')
    vk_session = vk_api.VkApi(login, password)
    vk_session.auth()
    vk = vk_session.get_api()
    start = time.time()

    if mediaType == 'picture':
        con = connect()
        with con.cursor() as cursor:
            cursor.execute("""select contentName from contenttype""")
            keys = cursor.fetchall()
        for key in keys:
            print(key[0])
            with con.cursor() as cursor:
                cursor.execute("""select url from source where contentName = (select id from contenttype where contentname = '{0}')""".format(key[0]))
                groupId = cursor.fetchall()
            for gid in groupId:
                print(gid[0])
                print(str(gid[0]))
                with con.cursor() as cursor:
                    cursor.execute("""select contentname from source where(contentname=(select id from contenttype where contentname ='{0}')) and (url = {1}) """.format(key[0],gid[0]))
                    contentName = cursor.fetchall()[0][0]
                    cursor.execute("""select medianame from source where(medianame=(select id from mediatype where medianame ='{0}')) and (url = {1}) """.format('picture',gid[0]))
                    mediaName = cursor.fetchall()[0][0]
                max_num = vk.photos.get(owner_id=gid[0], album_id='wall', count=0)['count']
                b = []
                for i in range(1, max_num, 1000):
                    pictures = vk.photos.get(owner_id=str(gid[0]), album_id='wall', count=1000, offset=i)['items']
                    for element in pictures:
                        #первое url,второе contentname, 3 medianame
                        b.append(['photo' + str(gid[0]) + '_' + str(element['id']),contentName,mediaName, gid])
                print(start - time.time())
                result = re.sub("]" ,")", str(b))
                result = re.sub(re.escape('[') ,"(", str(result))[1:len(result)-1]
                with con.cursor() as cursor:
                    try:
                        cursor.execute("""insert into content(urlContent,contentName,mediaName,groupid) values{0}""".format(result))
                    except:pass
        con.commit()
        con.close()
        print(start -time.time())
    print('READY')
Beispiel #9
0
 def list_of_subscribers(self, user_id):
     buf1 = ''
     try:
         con = connect()
         # переделать если будет добавлена возможность подписки на различные медиатайпы
         with con.cursor() as cursor:
             cursor.execute(
                 """select word from testword where contentname in (select contentName from subscriber where (idUser= {0}) and (medianame = (select id from mediatype where medianame ='picture')))"""
                 .format(user_id))
         buf = list(map(list, cursor.fetchall()))
         if len(buf) != 0:
             buf = [item for sublist in buf for item in sublist]
             print(buf)
             buf1 = (', '.join(buf))
             con.close()
             return 'Вы подписаны  ' + buf1
         else:
             con.close()
             return 'Вы пока ни на что не подписаны'
     except:
         return 'Произошла ошибка при выведении списка подписок'