您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Видео, истории и скачивание файлов и другие функции ↴
Основные изменения и улучшения:
Заголовок 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).СЛАВА УКРАИНА
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址