{% extends "base.html" %} {% block title %}Photo Loader — TG Agent{% endblock %} {% set selectable_dialogs = dialogs | rejectattr("channel_type", "equalto", "bot") | list %} {% set target_available = selectable_dialogs | length > 0 %} {% macro target_group(dialog) -%} {%- if dialog.channel_type in ["channel", "monoforum", "scam", "fake", "restricted"] -%}channel {%- elif dialog.channel_type in ["supergroup", "group", "gigagroup", "forum"] -%}group {%- elif dialog.channel_type == "dm" -%}dm {%- else -%}other {%- endif -%} {%- endmacro %} {% macro target_group_label(group) -%} {%- if group == "channel" -%}Каналы {%- elif group == "group" -%}Группы и чаты {%- elif group == "dm" -%}Личные диалоги {%- else -%}Прочее {%- endif -%} {%- endmacro %} {% macro render_target_hidden_inputs() -%} {%- endmacro %} {% block content %}

Photo Loader

{% if not accounts %}

Нет подключённых аккаунтов. Добавьте аккаунт в Настройках.

{% else %}
{% if photo_feedback %}
{% endif %}
Используется сохранённый список диалогов{% if dialogs_cached_at %} от {{ dialogs_cached_at|local_dt }}{% endif %}. Кнопка обновления заново загружает данные из Telegram.

Цель отправки

Один выбор цели используется во всех формах ниже.

{% if not target_available %} Нет доступных каналов, чатов или личных диалогов для отправки. {% else %} Цель не выбрана. {% endif %}
{% if target_available %}

Сначала выберите канал, чат или личный диалог. Выбор сохранится на текущую браузерную сессию.

{% for dialog in selectable_dialogs %} {% set group = target_group(dialog) %} {% endfor %}

Ничего не найдено.

{% else %} {% endif %}

Обычная загрузка

{{ render_target_hidden_inputs() }}
{% if target_available %}Цель не выбрана{% else %}Цель недоступна{% endif %}

Отложенная загрузка

{{ render_target_hidden_inputs() }}
{% if target_available %}Цель не выбрана{% else %}Цель недоступна{% endif %}

Batch delayed

JSON-массив объектов вида {"at":"2026-03-11T18:30","files":["/abs/1.jpg"],"mode":"album"}

{{ render_target_hidden_inputs() }}
{% if target_available %}Цель не выбрана{% else %}Цель недоступна{% endif %}

Автозагрузка из папки

{{ render_target_hidden_inputs() }}
{% if target_available %}Цель не выбрана{% else %}Цель недоступна{% endif %}

Последние batches

{% if batches %}
{% for batch in batches %} {% endfor %}
IDTargetРежимСтатусСоздан
{{ batch.id }} {{ batch.target_title or batch.target_dialog_id }} {{ batch.send_mode }} {{ batch.status }} {{ batch.created_at|local_dt }}
{% else %}

Batch tasks пока нет.

{% endif %}

Auto Jobs

{% if auto_jobs %}
{% for job in auto_jobs %} {% endfor %}
IDПапкаИнтервалСтатусПоследний запуск
{{ job.id }} {{ job.folder_path }} {{ job.interval_minutes }} мин. {{ "active" if job.is_active else "paused" }} {{ job.last_run_at|local_dt }}
{% else %}

Auto jobs пока нет.

{% endif %}

Последние photo items

{% if items %}
{% for item in items %} {% endfor %}
IDTargetФайлыВремяСтатус
{{ item.id }} {{ item.target_title or item.target_dialog_id }} {{ item.file_paths|length }} {{ (item.schedule_at or item.created_at)|local_dt }} {{ item.status }}
{% else %}

Photo items пока нет.

{% endif %}
{% endif %} {% endblock %}