Telegram +

Telegram Downloader and others features ↴

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

Author
STELLAR STELS
Daily installs
2
Total installs
179
Ratings
0 0 0
Version
1.31 // Увеличена версия из-за изменений
Created
2025-07-29
Updated
2025-07-29
Size
41.2 KB
License
MIT
Applies to

Основные изменения и улучшения:
Заголовок 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).СЛАВА УКРАИНА