ShotSaver

class ShotSaver(shot_awaiting_time=5, tries_to_make_shot=2, pool_size=10)[исходный код]

Класс для сохранения скриншотов

Параметры:
  • shot_awaiting_time (int, optional) – Время ожидания скриншота, с. По умолчанию 5.
  • tries_to_make_shot (int, optional) – Кол-во попыток сохранить скриншот. Если в течении времени shot_awaiting_time скриншот не был сохранен - производится следующая попытка сохранить скриншот. По умолчанию 2
  • pool_size (int) – Размер пула. По умолчанию 10
pool_size

Размер пула для метода pool_shot

Устанавливает размер пула (кол-во одновременно созданных задач сохранения скриншотов). По умолчанию 10.

Предупреждение

Изменить данный параметр можно только до первого вызова метода pool_shot. После вызовет RuntimeError

Raises:RuntimeError – Если пул уже создан.
Type:int
pool_queue_size

Размер текущей очереди в пуле

Возвращает текущий размер очереди в пуле.

Примечание

Если пул еще не был созда (метод pool_shot не вызывался) данный метод вернет -1

Type:int
pool_working

True если в пуле есть не законченные задачи

Примечание

Если пул еще не был созда (метод pool_shot не вызывался) данный метод вернет None

Type:bool
screenshots_folder

Папка для сохранения скриншотов по умолчанию

Устанавливает новый путь по умолчанию для сохранения скриншотов, если папка не существует - создает папку. Или возвращает текущий путь для сохранения скриншотов.

Примечание

По молчанию screenshots_folder = BaseUtils.get_screenshot_folder()

Raises:OSError – Если возникает ошибка при создании папки
Type:str
shot(channel_full_guid, dt=None, file_name=None, file_path=None)[исходный код]

Делает скриншот с указанного канала

Примечание

По умолчанию:

  • dt=datetime.now()
  • file_name="{name} (%Y.%m.%d %H-%M-%S).jpg", где {name} - имя канала
Параметры:
  • channel_full_guid (str) – Полный guid анала. Например: "CFsuNBzt_pV4ggECb"
  • dt (datetime.datetime, optional) – datetime.datetime для скриншота. По умолчанию None
  • file_name (str, optional) – Имя файла с расширением. По умолчанию None
  • file_path (str, optional) – Путь для сохранения скриншота. По умолчанию None
Результат:

Полный путь до скриншота

Тип результата:

str

Raises:
  • ValueError – Если в guid канала отсутствует guid сервера
  • TypeError – Если isinstance(dt, (datetime, date)) is False

Examples

>>> ss = ShotSaver()
>>> ss.shot("e80kgBLh_pV4ggECb")
'/home/trassir/shots/AC-D2141IR3 Склад (2019.04.03 15-58-26).jpg'
async_shot(channel_full_guid, dt=None, file_name=None, file_path=None, callback=None)[исходный код]

Вызывает callback после сохнанения скриншота

  • Метод работает в отдельном потоке
  • Вызывает функцию ShotSaver.shot()
  • Ждет выполнения функции BaseUtils.check_file() tries=10
  • Вызвает callback функцию
Параметры:
  • channel_full_guid (str) – Полный guid канала. Например: "CFsuNBzt_pV4ggECb"
  • dt (datetime.datetime, optional) – datetime.datetime для скриншота. По умолчанию None
  • file_name (str, optional) – Имя файла с расширением. По умолчанию None
  • file_path (str, optional) – Путь для сохранения скриншота. По умолчанию None
  • callback (function, optional) – Функциюя, которая вызывается после сохранения скриншота. В качестве аргументов должна принимать success, shot_path. По умолчанию None
Результат:

Thread object

Тип результата:

threading.Thread

Examples

>>> # noinspection PyUnresolvedReferences
>>> def callback(success, shot_path):
...     # Пример callback функции
...     # Args:
...     #     success (bool): True если скриншот успешно сохранен, иначе False
...     #     shot_path (str): Полный путь до скриншота
...     if success:
...         host_ip.message("Скриншот успешно сохранен<br>%s" % shot_path)
...     else:
...         host_ip.error("Ошибка сохранения скриншота <br>%s" % shot_path)
>>>
>>> ss = ShotSaver()
>>> ss.async_shot("e80kgBLh_pV4ggECb", callback=callback)
pool_shot(channel_full_guid, dt=None, file_name=None, file_path=None, callback=None)[исходный код]

Сохраняет скриншоты в пуле.

Одновременно в работе не более ShotSaver.pool_size задач.

Предупреждение

Данный метод создает ShotSaver.pool_size доп. потоков. Потоки удаляются при отключении скрипта.

Параметры:
  • channel_full_guid (str) – Полный guid канала. Например: "CFsuNBzt_pV4ggECb"
  • dt (datetime.datetime, optional) – datetime.datetime для скриншота. По умолчанию None
  • file_name (str, optional) – Имя файла с расширением. По умолчанию None
  • file_path (str, optional) – Путь для сохранения скриншота. По умолчанию None
  • callback (function, optional) – Функциюя, которая вызывается после сохранения скриншота. В качестве аргументов должна принимать success, shot_path. По умолчанию None

Examples

>>> ss = ShotSaver()
>>> ss.pool_size = 2
>>>
>>> ss.pool_shot("e80kgBLh_pV4ggECb")
>>> ss.pool_shot("e80kgBLh_pV4ggECb")
>>> ss.pool_shot("e80kgBLh_pV4ggECb")
>>> ss.pool_shot("e80kgBLh_pV4ggECb")
>>>
>>> ss.pool_queue_size
4