Esempio n. 1
0
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))
Esempio n. 2
0
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))
Esempio n. 3
0
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))
Esempio n. 4
0
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))
Esempio n. 5
0
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)