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?! Походу есть такая таблица!')
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
def __init__(self): #Удаляем queue crud = Crud('localhost', 'andrew', 'andrew', 'verses') crud.sql = 'DROP TABLE queue;' crud.deleteAct() print('Drop\'нули таблицу queue') crud.closeConnection()
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()
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()
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)
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
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
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()
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?! Походу есть такая таблица!')
def __init__(self): self.crud = Crud('localhost', 'andrew', 'andrew', 'verses') self.gatAllAuthors() self.getOneLineAuthors()
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()
def __init__(self): self.crud = Crud('localhost', 'andrew', 'andrew', 'verses') self.existTable()
#!/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)
def __init__(self, ip_address, port): self.ip_address = ip_address self.port = port self.crud = Crud('localhost', 'andrew', 'andrew', 'proxy')
def __init__(self): crud = Crud('localhost', 'andrew', 'andrew', 'proxy') #Проверить наличие прокси self.checkProxiesTable()
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()
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()
def __init__(self): self.crud = Crud('localhost', 'andrew', 'andrew', 'verses') self.getFollowers() self.updateFollowers()
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()
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()
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()