class Twitter: _translator = language.Language() _report = report.Report() _api = None _token = config.ANTHIL_TWITTER_TOKEN _token_secret = config.ANTHIL_TWITTER_TOKEN_SECRET _cons = config.ANTHIL_TWITTER_CONSUMER _cons_secret = config.ANTHIL_TWITTER_CONSUMER_SECRET _img_path = config.ANTHILL_IMAGES_PATH def __init__(self): auth = tweepy.OAuthHandler(self._cons, self._cons_secret) auth.set_access_token(self._token, self._token_secret) self._api = tweepy.API(auth) def text_picture_twitter(self, text, image): self._api.update_with_media(image, text) def text_twitter(self, text, who_posted): learn_more = '..\n Читать: ' + config.ANTHILL_FACEBOOK_URL twit = (text[:140 - len(learn_more)] + learn_more) if len(text) >= 140 else text try: self._api.update_status(twit) self._report.set_report( __name__, self._translator.get_shifting('twitter_post') + ' >> ' + who_posted) except Exception as e: self._report.set_report_error( __name__, self._translator.get_shifting('twitter_post_error') + ' >> ' + str(e))
class TextToImage: _translator = language.Language() _report = report.Report() @staticmethod def font_image(font_name, font_size): return ImageFont.truetype( config.ANTHILL_FONTS_PATH + font_name + '.ttf', font_size) @staticmethod def to_image(image_path_in_images, image_name, image_format, text, image_font, x_position, y_position, save_image_format): path = config.ANTHILL_IMAGES_PATH + image_path_in_images + '/' image = Image.open(path + image_name + '.' + image_format.lower()) # из png в jpg выравнивание цветов if image.mode == 'RGBA' and save_image_format.lower() != 'png': image = image.convert("RGB") draw = ImageDraw.Draw(image) draw.text((x_position, y_position), text, (255, 184, 44), font=image_font) # если присутствует префикс _text у картинки ничего не вставляем if '_text' in image_name: pre = '' else: pre = config.ANTHILL_IMAGES_PRE_NAME_OUT save_image = path + image_name + pre + '.' + save_image_format.lower() image.save(save_image) return save_image def set_text_to_image(self, image_path_in_images, image_name, image_format, text, font_name, font_size, x_position, y_position, save_image_format): try: save_image = self.to_image(image_path_in_images, image_name, image_format, text, self.font_image(font_name, font_size), x_position, y_position, save_image_format) self._report.set_report( __name__, self._translator.get_shifting('text_in_picture') + ' >> ' + save_image) except Exception as e: self._report.set_report_error( __name__, self._translator.get_shifting('error_text_in_picture') + ' >> ' + str(e))
class Facebook: _translator = language.Language() _report = report.Report() _api = config.ANTHILL_FACEBOOK_API _img_path = config.ANTHILL_IMAGES_PATH def __init__(self): self._graph = facebook.GraphAPI(access_token=self._api) def text_facebook(self, message, who_posted): try: self._graph.put_object(parent_object='me', connection_name='feed', message=message) self._report.set_report( __name__, self._translator.get_shifting('facebook_post') + ' >> ' + who_posted) except Exception as e: self._report.set_report_error( __name__, self._translator.get_shifting('facebook_post_error') + ' >> ' + str(e)) def picture_facebook(self, image, who_posted): try: self._graph.put_photo(image=open(self._img_path + image, 'rb')) self._report.set_report( __name__, self._translator.get_shifting('facebook_picture') + ' >> ' + who_posted) except Exception as e: self._report.set_report_error( __name__, self._translator.get_shifting('facebook_picture_error') + ' >> ' + str(e)) def text_picture_facebook(self, message, image, who_posted): try: self._graph.put_photo(image=open(self._img_path + image, 'rb'), message=message) self._report.set_report( __name__, self._translator.get_shifting('facebook_post_picture') + ' >> ' + who_posted) except Exception as e: self._report.set_report_error( __name__, self._translator.get_shifting('facebook_post_picture_error') + ' >> ' + str(e))
class Telegram: _translator = language.Language() _report = report.Report() _api = config.ANTHILL_TELEGRAM_API _chat_id = config.ANTHILL_TELEGRAM_CHAT_ID def __init__(self): updater = Updater(token=self._api, use_context=True) self._dispatcher = updater.dispatcher def text_telegram(self, message, who_posted): try: self._dispatcher.bot.send_message(chat_id=self._chat_id, text=message) self._report.set_report(__name__, self._translator.get_shifting('telegram_post') + ' >> ' + who_posted) except Exception as e: self._report.set_report_error(__name__, self._translator.get_shifting('telegram_post_error') + ' >> ' + str(e))
class DBHelper: _translator = language.Language() _report = report.Report() _db_name = config.ANTHILL_DB_PATH + config.ANTHILL_DB_NAME + config.ANTHILL_DB_PREF _install_db_table = '''CREATE TABLE IF NOT EXISTS holidays ( id integer primary key AUTOINCREMENT, date_holidays text, name_holidays text, text_holidays text, image_holidays text, show_holidays integer default 1 )''' def __init__(self): self.conn = sqlite3.connect(self._db_name, check_same_thread=False) # создание баз данных def setup(self): self.commit_database(self._install_db_table) # получение записи из DB def arguments_in_db(self, stmt, args): try: result = self.conn.execute(stmt, args) self._report.set_report( __name__, self._translator.get_shifting('db_execute_ok') + ' >> ' + 'query=' + stmt + 'args=' + str(args)) return result.fetchone() except Exception as e: self._report.set_report_error( __name__, self._translator.get_shifting('db_execute_error') + ' >> ' + 'query=' + stmt + 'args=' + str(args) + ' >> ' + str(e)) # обращение к DB def commit_database(self, stmt, args=()): try: self.conn.execute(stmt, args) self._report.set_report( __name__, self._translator.get_shifting('db_execute_commit_ok') + ' >> ' + 'query=' + stmt + 'args=' + str(args)) except Exception as e: self._report.set_report_error( __name__, self._translator.get_shifting('db_execute_commit_error') + ' >> ' + 'query=' + stmt + 'args=' + str(args) + ' >> ' + str(e)) try: self.conn.commit() self._report.set_report( __name__, self._translator.get_shifting('db_commit_ok') + ' >> ' + 'query=' + stmt + 'args=' + str(args)) except Exception as e: self._report.set_report_error( __name__, self._translator.get_shifting('db_commit_error') + ' >> ' + 'query=' + stmt + 'args=' + str(args) + ' >> ' + str(e)) def holiday_check(self, date): stmt = "SELECT * FROM holidays WHERE date_holidays=(?)" args = (date, ) result = self.arguments_in_db(stmt, args) return result # проверка записи раздников в DB если нет записывает def check_holidays_in_db(self, date_holidays, name_holidays, text_holidays, image_holidays): stmt = "SELECT name_holidays FROM holidays WHERE name_holidays=(?)" args = (name_holidays, ) # если нет записи заносим if self.arguments_in_db(stmt, args) is None: print("++++++++++") self.set_holidays(date_holidays, name_holidays, text_holidays, image_holidays) def set_holidays(self, date_holidays, name_holidays, text_holidays, image_holidays): stmt = "INSERT INTO holidays VALUES (null,?,?,?,?,?)" args = (date_holidays, name_holidays, text_holidays, image_holidays, True) self.commit_database(stmt, args)