Greasy Fork is available in English.

Telegram Web — перемотка + сохранение прогресса видео

Перемотка видео стрелками и восстановление по автору и времени

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

作者
STELLAR STELS
今日安裝
0
安裝總數
7
評價
0 0 0
版本
1.1
建立日期
2025-07-29
更新日期
2025-07-29
尺寸
6.5 KB
授權條款
MIT
腳本執行於

Основные улучшения и исправления:
Надежный выбор элемента:

Улучшены селекторы для nameElи dateElдля поддержки различных версий приложения Telegram Web ( web.telegram.orgvs. webk.telegram.orgvs. webz.telegram.org) путем добавления нескольких имен классов.

Селектор mediaViewerсделан более универсальным ( .media-viewer-modal, .media-viewer-backdrop), чтобы надежно определять, когда открыто средство просмотра мультимедиа.

При обработке событий клавиатуры скрипт сначала пытается найти видео в активном средстве просмотра медиафайлов ( .media-viewer-content video). Если видео не найдено или не отображается, скрипт возвращается к любому видимому видео на странице.

Эффективное сохранение прогресса:

Вместо того, setIntervalчтобы вызывать его при каждом обнаружении видео, используется Map( ) для хранения и управления идентификаторами. Это гарантирует, что для каждого уникального видео (идентифицируемого по ключу ) в любой момент времени будет запущен только один идентификатор.activeIntervalssetIntervalsetIntervalname @ date videoSrc

В setIntervalнастоящее MutationObserverвремя активно проверяется, относится ли видео к paused, ended, или !isVisible(video). При выполнении любого из этих условий интервал для этого видео очищается, предотвращая ненужную фоновую активность.

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

Обработка событий клавиатуры:

Добавлена проверка if (document.activeElement && (document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA'))для предотвращения перемотки, когда пользователь вводит текст в поле.

Логика перемотки ( video.currentTime = Math.max(0, Math.min(newTime, video.duration || newTime));) теперь ограничивает время currentTime, чтобы гарантировать, что оно не опустится ниже 0 или не превысит фактическую продолжительность видео.

Перемотка происходит только в том случае, если видео воспроизводится в данный момент ( !video.paused && !video.ended).

Надежность локального хранилища:

Добавлены try...catchблоки вокруг localStorage.getItemи localStorage.setItemдля корректной обработки потенциальных ошибок (например, SecurityErrorв некоторых изолированных средах или при ограничениях квот).

Уникальные видеоключи:

Для keyсохранения хода видео теперь используется videoSrc( ${name} @ ${date} ${videoSrc}). Это крайне важно, поскольку в противном случае разные видео одного автора в одну и ту же дату будут перезаписывать ход друг друга.

Флаг восстановления прогресса:

Изменено video.dataset.restoredна video.dataset.tgProgressRestoredдля большей конкретности и избежания потенциальных конфликтов с другими скриптами или собственными атрибутами Telegram.

Ведение журнала:

Добавлены более подробные console.logсообщения для лучшего отслеживания действий скрипта (например, когда он начинает/останавливает сохранение прогресса, когда он восстанавливает прогресс).

Небольшие уточнения:

Определены константы для REWIND_TIME_SECONDSи SAVE_PROGRESS_INTERVAL_MSдля более простой настройки.

Добавлено для более window.getComputedStyle(el).display !== 'none'полной isVisibleпроверки видимости.

Этот обновленный скрипт более устойчив к изменениям в DOM Telegram, более эффективен в использовании ресурсов и обеспечивает лучший пользовательский интерфейс.СЛАВА УКРАИНА