Telegram +

Видео, истории и скачивание файлов и другие функции ↴

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

作者
STELLAR STELS
日安装量
6
总安装量
209
评分
0 0 0
版本
1.31 // Увеличена версия из-за изменений
创建于
2025-07-29
更新于
2025-07-29
大小
41.2 KB
许可证
MIT
适用于

Основные изменения и улучшения:
Заголовок Userscript:

Добавлено // @grant unsafeWindow для явного разрешения использования unsafeWindow. Это хорошая практика.

Обновлена версия до 1.31.

Константы:

UI_REFRESH_DELAY (500 мс) и PROGRESS_BAR_REMOVE_DELAY (3000 мс) теперь явно определены для лучшей читаемости и настройки.

Утилиты:

Добавлена getExtensionFromMime(mime): Универсальная функция для преобразования MIME-типа в стандартное расширение файла, что делает именование файлов более точным.

Прогресс-бары:

setupProgressBarContainer(): Эта функция теперь создает контейнер прогресс-баров только один раз и по запросу (лениво).

createProgressBar(id, fileName):

При вызове удаляет любой существующий прогресс-бар с тем же id, чтобы избежать дубликатов при повторных загрузках.

Улучшены стили (закругление, тень, выравнивание текста) для лучшего внешнего вида.

Текст fileName теперь обрезается с многоточием (text-overflow: ellipsis) для длинных имен.

Прогресс-бар теперь инициализируется на 0%.

completeProgress(id) / abortProgress(id, errorMessage):

Автоматическое удаление прогресс-бара через 3 секунды после завершения или отмены.

abortProgress может принимать дополнительное сообщение об ошибке.

progressFill: Переименована внутренняя переменная для заполнения прогресс-бара для ясности.

Функции загрузки (tel_download_video, tel_download_audio, tel_download_image):

Унификация: Создана общая функция tel_download_media_stream(url, type) для обработки потоковых загрузок (видео/аудио), уменьшая дублирование кода.

Имя файла: Улучшена логика извлечения имени файла из URL для видео и аудио, а также для изображений, делая ее более надежной. Теперь учитываются расширения из MIME-типов.

Прогресс-бары: createProgressBar теперь вызывается в начале всех функций загрузки (video, audio, image), гарантируя отображение прогресса для любого типа медиа.

Обработка Content-Range: Улучшена обработка случаев, когда заголовок Content-Range отсутствует (например, при полной загрузке файла со статусом 200).

Обработка ошибок fetch: Более явная обработка ошибок в промисах fetch.

saveBlob: Переименована функция сохранения для ясности.

FileSystem Access API: Улучшена обработка ошибок, если пользователь отменяет диалог сохранения файла.

Внедрение кнопок UI (addDownloadButton):

Унификация: Создана общая функция addDownloadButton, которая инкапсулирует логику создания и добавления кнопок.

Предотвращение дубликатов: Кнопки теперь имеют атрибут data-url, и addDownloadButton проверяет его наличие, чтобы избежать многократного добавления одной и той же кнопки для одного и того же медиафайла.

Адаптивные стили: Функция автоматически применяет соответствующие классы для стилизации в разных версиях Telegram Web (webz и webk).

e.stopPropagation(): Важно для предотвращения конфликтов событий.

Главный цикл UI (setInterval):

Логика разделена на блоки для webk и webz для лучшей организации.

Теперь используется addDownloadButton для всех типов медиа и мест размещения кнопок, что значительно сокращает дублирование кода.

Патч ограничения скорости загрузки (removeTelegramSpeedLimit):

Добавлена проверка unsafeWindow.fetch, чтобы избежать ошибок, если unsafeWindow недоступен.

Патч теперь также применяется к изображениям (/^image\//.test(contentType)).

Добавлен try-catch вокруг resClone.blob() для большей устойчивости.

Добавлено логирование для подтверждения применения патча.

Удаление рекламы (removeTelegramAds):

Добавлен Node.ELEMENT_NODE для более точной проверки узла в MutationObserver.

Добавлен потенциальный селектор для спонсорских сообщений, если они скрываются под общими классами.

Добавлено логирование количества удаленных элементов.

Управление видеоплеером с клавиатуры:

Улучшена логика отображения уведомлений (плавное исчезновение, анимация пульса).

Стили уведомлений (glassmorphism) теперь добавляются только один раз.

Добавлена проверка document.pictureInPictureEnabled && !video.disablePictureInPicture перед попыткой входа/выхода из PiP.

e.preventDefault() и e.stopPropagation() вызываются только при обработанной клавише.

Сохранение прогресса видео:

MutationObserver: Использование MutationObserver для отслеживания появления/исчезновения медиа-просмотрщика, что делает сохранение прогресса более надежным и менее зависимым от setInterval для этой конкретной задачи.

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

Логирование для подтверждения сохранения и восстановления прогресса.

Унифицированный поиск элементов nameEl и dateEl для обеих версий Telegram Web.

Этот исправленный скрипт стал значительно более надежным, удобным и чистым. Рекомендую протестировать его на всех версиях Telegram Web, которые вы используете (web.telegram.org, webk.telegram.org, webz.telegram.org).СЛАВА УКРАИНА