Exemplo n.º 1
0
    def checkTimeMarksExist(self):

        self.crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        self.crud.sql = 'SHOW TABLE STATUS LIKE \'time_marks\''
        result = self.crud.readAct()

        # Таблицы нету, её прийдеться создать
        if len(result) == 0:
            print('Нету таблицы временных меток! Щас создадим')
            #Cоздадим таблицу time_marks
            self.crud.sql = '''CREATE TABLE time_marks(
                            name VARCHAR(40) NOT NULL,
                            last_time INT NOT NULL,
                            locked BOOLEAN NOT NULL
                            );'''
            result = self.crud.createAct()
            #наполним значениями
            self.crud.sql = ('INSERT INTO time_marks (name,last_time,locked)'
                             'VALUES (\'queue\',{0},false)'.format(
                                 self.curTime))
            self.crud.createAct()
            self.crud.sql = ('INSERT INTO time_marks (name,last_time,locked)'
                             'VALUES (\'log\',{0},false)'.format(self.curTime))
            self.crud.createAct()

        #В противном случае можно завязывать с этапом создания time_marks
        else:
            print('time_marks?! Походу есть такая таблица!')
Exemplo n.º 2
0
    def getWholeVerseData(self, verse_id):
        crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        crud.sql = 'SELECT * FROM verses_list WHERE id=\'{0}\''.format(
            verse_id)
        verse_data = crud.readAct()
        crud.closeConnection()

        return verse_data
Exemplo n.º 3
0
    def __init__(self):

        #Удаляем queue
        crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        crud.sql = 'DROP TABLE queue;'
        crud.deleteAct()
        print('Drop\'нули таблицу queue')
        crud.closeConnection()
Exemplo n.º 4
0
    def queueBlocker(self):

        exec_time = self.curTime + 72000
        crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        crud.sql="INSERT INTO queue (name, email, exec_time, verse_id)" \
                 "VALUES (\'{0}\',\'{1}\',\'{2}\',\'{3}\')".format(
                'blocker_queue','none',exec_time,1234567)
        crud.createAct()
        crud.closeConnection()
Exemplo n.º 5
0
    def addRowIntoQueue(self, name, email, exec_time, verse_id):

        # print(' Имя - {0},\n Email - {1},\n exec_time - {2},\n '
        #       'verse_id - {3}\n'.format(name,email,exec_time,verse_id))
        crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        crud.sql="INSERT INTO queue (name, email, exec_time, verse_id) " \
                 "VALUES (\'{0}\',\'{1}\',\'{2}\',\'{3}\')".format(name,
                 email,exec_time,verse_id)
        crud.createAct()
        crud.closeConnection()
Exemplo n.º 6
0
    def addToList(self):

        self.crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        self.results = self.getRow()
        self.crud.closeConnection()

        self.listWidget.setSelectionMode(
            QtGui.QAbstractItemView.MultiSelection)
        for x in self.results[0]:
            self.listWidget.addItems(x)
Exemplo n.º 7
0
    def canSend(self, id):

        crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        crud.sql = 'SELECT exec_time FROM queue WHERE id=\'{0}\''.format(id)
        exec_time = (crud.readAct())[0][0]
        curTime = round(time.time())
        crud.closeConnection()

        if curTime >= exec_time:
            print(curTime - exec_time)
            return True
        else:
            print(curTime - exec_time)
            return False
Exemplo n.º 8
0
    def getRandVerseID(self, authors):

        # получить случайного автора
        authors = authors.split(',')
        rand_author = (random.choice(authors)).strip()
        print('random author ------ > {0}'.format(rand_author))
        #получить случайный verse_id
        crud = Crud('localhost', 'andrew', 'andrew', 'verses')

        crud.sql = '''SELECT * FROM verses_list WHERE author_id={0}
                    ORDER BY RAND() LIMIT 1'''.format(rand_author)
        #Возвращает кортеж, поэтому прийдеться извлечь ключ
        verse_id = (crud.readAct())[0][0]
        crud.closeConnection()

        return verse_id
Exemplo n.º 9
0
    def __init__(self):

        crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        #получить количество элементов queue
        crud.sql = 'SELECT * FROM queue'
        queue = crud.readAct()
        if (len(queue)) >= 1:

            # По-тихоньку отправляем письма из очереди
            for x in queue:

                if self.canSend(x[0]) == True:
                    self.sender(x)
                    # Если не одного элемента не осталось - завершаем цикл
                else:
                    'Прийдеться подождать с отправкой сообщений...'
        else:
            print('Очередь на данный момент пустая!')

        crud.closeConnection()
Exemplo n.º 10
0
    def checkProxiesTable(self):

        self.crud = Crud('localhost', 'andrew', 'andrew', 'proxy')
        self.crud.sql = 'SHOW TABLE STATUS LIKE \'proxies\''
        result = self.crud.readAct()

        # Таблицы нету, её прийдеться создать
        if len(result) == 0:
            print('Нету таблицы с прокси адресами! Щас создадим')
            #Cоздадим таблицу proxies
            self.crud.sql = '''CREATE TABLE proxies (
                             id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
                             ip_address VARCHAR(20),
                             port SMALLINT, 
                             time INT, 
                             UNIQUE (ip_address));'''
            result = self.crud.createAct()

        #В противном случае можно завязывать с этапом создания proxies
        else:
            print('proxies?! Походу есть такая таблица!')
Exemplo n.º 11
0
    def __init__(self):

        self.crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        self.gatAllAuthors()
        self.getOneLineAuthors()
Exemplo n.º 12
0
    def fetchAllFromContacts(self):

        self.crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        self.crud.sql = 'SELECT * FROM contacts ORDER BY name'
        self.contacts = self.crud.readAct()
        self.crud.closeConnection()
Exemplo n.º 13
0
    def __init__(self):

        self.crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        self.existTable()
Exemplo n.º 14
0
#!/usr/bin/python3

#        отступы пробелами
#        by Andrew Sotnikov aka Luca Brasi,
#        e-mail: [email protected]
#        --------------

#        clearing cash in DB and removing log file_as_well

from saumysql import Crud
from subprocess import call

passwd = "fearofthedark"
logfile = "/var/log/andrew/good_verse_mailer.log"

#removing temporary tables from DataBase
crud = Crud('localhost', 'andrew', 'andrew', 'verses')
crud.sql = ("DROP TABLE queue, time_marks")
crud.deleteAct()

#clearing logs
call("echo \"{0}\" | sudo -S rm {1}".format(passwd, logfile),
     shell=True,
     universal_newlines=True)
Exemplo n.º 15
0
    def __init__(self, ip_address, port):

        self.ip_address = ip_address
        self.port = port
        self.crud = Crud('localhost', 'andrew', 'andrew', 'proxy')
Exemplo n.º 16
0
    def __init__(self):

        crud = Crud('localhost', 'andrew', 'andrew', 'proxy')
        #Проверить наличие прокси
        self.checkProxiesTable()
Exemplo n.º 17
0
    def __init__(self):

        self.working_proxies = []
        self.not_working_proxies = []
        # получаем список всех прокси
        self.crud = Crud('localhost', 'andrew', 'andrew', 'proxy')
        self.crud.sql = ('SELECT * FROM proxies')

        # Вывод строки следующего формата '1, '79.188.42.46', 8080, 1473365169'
        # ////                             id, ip_address,    port,  gmt_time
        proxies = self.crud.readAct()

        # проверим прокси на работоспособность. Попутно подведем статитику
        # какие рабочие а какие нет.
        for elem in proxies:

            proxy = ProxyAct(elem[1], elem[2])
            if (proxy.checkProxy() == True):

                elapsed_hours = round((time.time() - elem[3]) / 3600)
                print('ip {0:18} рабочий! Уже аж {1:3} часов \n'.format(
                    elem[1], elapsed_hours))
                self.working_proxies.append(elem[1])

            else:

                print('ip {0:18} не рабочий! \n'.format(elem[1]))
                self.not_working_proxies.append(elem[1])
                proxy.deleteProxy()

        print('Рабочих ip - {0}'.format(len(self.working_proxies)))
        print('Не рабочих ip - {0}'.format(len(self.not_working_proxies)))

        # проверим старый ли лог. Возьмем его размер

        cur_log_size = os.path.getsize(self.logfile)
        # лимит файл 10К
        logfile_size_limit = 10000
        if (cur_log_size) >= logfile_size_limit:

            os.remove(self.logfile)
            f = open(self.logfile, 'w')

            f.write('{0:#>100}\n{1:#^100}\n{2:#>100}'.format(
                '', ' This is log file with proxies ', '\n' * 2))
            f.close()

        try:

            # Пишем инфу в лог
            # получим самый старый и самый молодой возраст прокси
            self.crud.sql = 'SELECT MIN(time), MAX(time) FROM proxies'
            res = self.crud.readAct()
            # Переведи мне все это в часы
            older_proxy = round((time.time() - res[0]) / 3600)
            younger_proxy = round((time.time() - res[1]) / 3600)

            # Запишем инфу в лог
            saulog.WriteLog(
                self.logfile,
                'Рабочих ip - {0}'.format(len(self.working_proxies)))
            saulog.WriteLog(
                self.logfile,
                'Не рабочих ip - {0}'.format(len(self.not_working_proxies)))
            saulog.WriteLog(
                self.logfile,
                'Возраст самого старого прокси - {0} часов'.format(
                    older_proxy))
            saulog.WriteLog(
                self.logfile,
                'Возраст самого недавнего прокси - {0} часов\n\n'.format(
                    younger_proxy))
            # Лог записали
        except TypeError:

            print('не получилось...')

        self.crud.closeConnection()
Exemplo n.º 18
0
    def __init__(self):

        # Время для начала отсчета
        st_time = self.curTime
        #задержка межу отправками сообщения получателям
        delay = -10

        #Проверить существует ли таблица queue
        crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        crud.sql = 'SHOW TABLE STATUS LIKE \'queue\''
        result = crud.readAct()
        # Таблицы нету, его прийдеться создать
        if len(result) == 0:
            print('Нету таблицы queue!')
            #Cоздадим таблицу queue
            crud.sql = '''CREATE TABLE queue(
                            id INT NOT NULL AUTO_INCREMENT,
                            name VARCHAR(40) NOT NULL,
                            email VARCHAR(40) NOT NULL,
                            exec_time INT NOT NULL,
                            verse_id INT NOT NULL,
                            PRIMARY KEY (id)
                            );'''
            result = crud.createAct()

        #В противном случае можно завязывать с этапом создания queue
        else:
            print('queue?! Походу есть такая таблица!')

        # Сделать выборку из таблицы с контактами
        crud.sql = 'SELECT * FROM contacts'
        list = crud.readAct()
        #print(list)

        for row in list:
            exec_time = self.curTime
            name = str(row[1])
            email = str(row[2])
            interval = 2
            # author_id. Атовра представлены в виде id
            authors = str(row[5])
            # quantity_per_day - желаемое количество стишков в день
            qpd = int(row[3])

            if qpd == 0:
                print('Этот человек уже отписался от рассылки!')
                continue

            elif qpd == 1:
                # каждый раз генериуем новый verse_id для следущего абонента
                # в таблице queue
                verse_id = self.getRandVerseID(authors)
                exec_time = exec_time + delay
                self.addRowIntoQueue(name, email, exec_time, verse_id)

            # Для тех кто отписался от рассылки стишки не рассылаем!

            else:
                #то же что и в ветке if, только для больего количества qpd
                #print('qpd is {0}'.format(qpd))
                interval_list = self.calculateDayInterval(qpd)

                for once, interval in zip((range(0, qpd)), interval_list):

                    exec_time = self.curTime
                    verse_id = self.getRandVerseID(authors)
                    exec_time = exec_time + delay + interval
                    self.addRowIntoQueue(name, email, exec_time, verse_id)

        crud.closeConnection()
        self.queueBlocker()
Exemplo n.º 19
0
    def __init__(self):

        self.crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        self.getFollowers()
        self.updateFollowers()
Exemplo n.º 20
0
    def getTopList(self):

        self.crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        self.crud.sql = '''SELECT lastname, name, patronymic, rating FROM poets
                         ORDER BY rating DESC LIMIT {0}'''.format(self.top)
        self.authors = self.crud.readAct()
Exemplo n.º 21
0
    def deleteFromQueue(self, id):

        crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        crud.sql = 'DELETE FROM queue WHERE id=\'{0}\''.format(id)
        verse_data = crud.deleteAct()
        crud.closeConnection()
Exemplo n.º 22
0
    def getTopList(self):

        self.crud = Crud('localhost', 'andrew', 'andrew', 'verses')
        self.crud.sql = '''SELECT lastname, name, patronymic, id FROM poets
                         ORDER BY lastname'''
        self.authors = self.crud.readAct()