Скрипт проигрывания диктовки (формат)

Скрипт диктовки можно скачать на странице диктанта. Тестовый скрипт можно скачать ниже.

Скрипт, с другими служебными файлами, запакован в zip-архив.

В архиве содержится четыре файла и одна директория с mp3-файлами:

  • playDictantScript_DictId.js — сам скрипт проигрывателя конкретного диктанта;
  • playDictantVendor.js — содержит скрипты служебных компонент общего назначения.
  • playDictantInfo_DictId.txt — общая информация о диктанте: название, путь в Учительской, дата выгрузки;
  • playDictantExample_DictId.html — тестовая страница для проверки скрипта с элементами управления диктовкой и документацией.
  • \media — директория с mp3-файлами всех фрагментов диктовки.

Интерфейсы

js
/**
 * Возможности проигрывателя диктанта
 */
interface IDictScriptAudioPlayerCan {
	/**
	 * Можно включать проигрывание
	 */
	play: boolean;
	/**
	 * Можно останавливать проигрывание
	 */
	pause: boolean;
	/**
	 * Можно проигрывать предыдущее предложение
	 */
	playPrevSentence: boolean;
	/**
	 * Можно проигрывать предыдущий фрагмент
	 */
	playPrevFragment: boolean;
	/**
	 * Можно проигрывать текущий фрагмент повторно
	 */
	replayFragment: boolean;
	/**
	 * Можно проигрывать следующий фрагмент
	 */
	playNextFragment: boolean;
	/**
	 * Можно проигрывать следующее предложение
	 */
	playNextSentence: boolean;
}
 
/**
 * Текущее состояние проигрывателя диктанта
 */
interface IDictScriptAudioPlayerState {
	/**
	 * Продолжительность оставшейся диктовки
	 */
	dictationTime: number;
	/**
	 * Общее количество фрагментов диктовки
	 */
	fragmentsCount: number;
	/**
	 * Текущее положение в диктовке
	 */
	currentFragment: number;
	/**
	 * Текущая скорость набота
	 */
	typingSpeed: number;
	/**
	 * включен ли режим короткой диктовки
	 */
	shortMode: boolean;
	/**
	 * Субтитры для показа
	 */
	subtitles: string;
	/**
	 * Разрешённые действия с проигрывателем
	 */
	can: IDictScriptAudioPlayerCan;
	/**
	 * Временные пропорции секций
	 */
	partProportions: number[];
	/**
	 * Насколько завершенно текущая секция
	 */
	currentPartDone: number;
	/**
	 * Текущая секция в диктовке
	 */
	currentPart: number;
	/**
	 * Какую часть в секции занимает текущий фрагмент
	 */
	currentFragmentPartPortion: number;
	/**
	 * Дительность текущего фрагмента в секундах
	 */
	currentFragmentDuration: number;
}
 
/**
 * Проигрыватель диктанта
 */
interface IDictScriptAudioPlayer {
	/**
	 * Устанавливает текущий фрагмент для проигрывания
	 * @param value
	 */
	setPosition: (value: number) => void;
	/**
	 * Задаёт текущую скорость набора текста пользователем
	 * @param value
	 */
	setSpeed: (value: number) => void;
	/**
	 * Задаёт (или выключает) режим короткой диктовки (short mode)
	 * @param value
	 */
	setShortMode: (value: boolean) => void;
	/**
	 * Задаёт секцию и позицию в ней
	 * @param partIdx - предложение
	 * @param part - позиция в секции
	 */
	setPartPosition: (partIdx: number, part: number) => void;
	/**
	 * Проигрывает диктант начиная с текущей позиции
	 */
	play: () => void;
	/**
	 * Приостанавливает проигрывание диктанта
	 */
	pause: () => void;
	/**
	 * Проигрывает диктант с начала предыдущего предложения
	 */
	playPrevSentence: () => void;
	/**
	 * Проигрывает диктант с начала предыдущего фрагмента диктовки
	 */
	playPrevFragment: () => void;
	/**
	 * Проигрывает повторно текущий фрагмент диктанта
	 */
	replayCurrentFragment: () => void;
	/**
	 * Проигрывает диктант с начала следующего фрагмента диктовки
	 */
	playNextFragment: () => void;
	/**
	 * Проигрывает диктант с начала следующего предложения
	 */
	playNextSentence: () => void;
}
 
/**
 * Настройки проигрывателя диктантов
 */
interface ISimpleDictPlayerOptions {
	/**
	 * Полный базовый путь урла для библиотеки медиафайлов этого диктанта
	 * (каталога media с медиаресурсами диктовки размещённого на хостинге)
	 * @example https://totaldict.ru/d23/media
	 */
	mediaLibraryUrl: string;
	/**
	 * Скорость набора текста в знаках в минуту
	 */
	typingSpeed?: number;
	/**
	 * Функция обработчик изменений внутреннего состояния проигрывателя.
	 * Этот метод будет вызван при любых изменениях внутреннего
	 * состояния проигрывателя, чтобы пользовательский интерфейс мог
	 * отобразить эти изменения
	 * @param state IDictScriptAudioPlayerState
	 */
	onUpdateState?: (state: IDictScriptAudioPlayerState) => void;
}
 
/**
 * Фабричный метод для создания проигрывателя диктанта
 * @param options ISimpleDictPlayerOptions настройки
 */
function createDictPlayer(options: ISimpleDictPlayerOptions): IDictScriptAudioPlayer;

Тестовый скрипт для отладки

Для демонстрации работы можно взять пример скрипта тестового русского или английского диктанта.

  • /opt/bitnami/dokuwiki/data/pages/tech/playscript.txt
  • Последнее изменение: 2022/07/04 09:57
  • dmitry_kalashnikov