Нашел небольшой скрипт, который автоматически запускает видео с Youtube в определенное время (автовебинар). Например, в 20:00, 22:00 и тд . Если пользователь открыл видео в 20:10, то плеер автоматически мотает видео на 10-ю минуту. Не разберусь, как давать разный набор инструкций, если пользователь открыл страницу:
до начала вебинара (до 19:55) (пришел раньше)
в течение 20 минут после старта (20:20) (пришёл вовремя)
позже 30 минут после старта.
В коде есть комментарий капсом, где я пытаюсь создавать разный набор инструкций.
Благодарю за помощь. Новичок, делаю методом научного тыка. Помогите дописать код для себя.
<script src="playerjs.js" type="text/javascript"></script>
<div id="player"></div>
<button onclick="seekToTime()">Перейти</button>
/*
var now = new Date(); // Текущая дата
var event_date = new Date ("Jul 17 2018 11:30:00 GMT+0300"); // дата события (+ часовой пояс, крайне обязательно)
var dif_time = now.getTime() - event_date.getTime(); // разность в милисикундах по UTC (время приведено в один часовой пояс, крайне удачно)
var duration = 60 * 60 * 1000; // время длительности вебинара в милисекундах
switch(true)
{
case dif_time < 0:
// действия до события
break;
case dif_time >= 0 && dif_time < duration:
// действия во время события до окончания, (dif_time / 1000) - куда перематывать
break;
case dif_time >= duration:
// действия после окончания события
break;
}
var event_date = new Date ("Jul 17 2018 11:30:00 GMT+0300");
var now = new Date(); // Текущая дата
var event_date = new Date((now.getFullYear() + '.' + (now.getMonth() + 1) + '.' + now.getDate()) + " 11:30:00 GMT+0300");
Кейс case dif_time < 0 убирается и вместо него добавляются такие кейсы:
var before_time = 30 * 60 * 1000; // время длительности предстартового периода в милисекундах
switch(true)
{
case -dif_time > before_time:
// действие до начала предстартового периода
break;
case -dif_time <= before_time && dif_time < 0:
// действие в предстартовый период
break;
....
}
*/
var player = new Playerjs({id:"player", poster: "people.png", file:"video.mp4"});
console.log(player.api("id"));
function startWebinar(){
player.api("play");
}
function unmute(){
player.api("unmute");
}
function seekToTime(){
player.api("seek", playTimeOffset);
}
//var now = new Date(); // Текущая дата
//var event_date = new Date ("Jul 17 2018 11:30:00 GMT+0300"); // дата события (+ часовой пояс, крайне обязательно)
var event_date = new Date((now.getFullYear() + '.' + (now.getMonth() + 1) + '.' + now.getDate()) + " 00:03:00 GMT+0000", 'Europe/London');
var dif_time = now.getTime() - event_date.getTime(); // разность в милисикундах по UTC (время приведено в один часовой пояс, крайне удачно)
var duration = 60 * 60 * 1000; // время длительности вебинара в милисекундах
switch(true)
{
case dif_time < 0:
// действия до события
break;
case dif_time >= 0 && dif_time < duration:
// действия во время события до окончания, (dif_time / 1000) - куда перематывать
break;
case dif_time >= duration:
// действия после окончания события
//var wHour = "23"; //час старта вебинара
//var wMinute = "20"; //минута старта вебинара
//var wTime = wHour + ":" + wMinute; //время старта вебинара
//let firstDate = wTime; //время старта вебинара
//let firstDate = event_date; //время старта вебинара
//вычисляем разницу между текущим временем (открытия страницы) и временем старта вебинара
var currentDateTime = new Date();
var hrs = currentDateTime.getHours();
var mnts = currentDateTime.getMinutes();
var secondDate = (hrs+":"+mnts); //текущее время
let getDate = (string) => new Date(0, 0,0, string.split(':')[0], string.split(':')[1]);
let different = (getDate(secondDate) - getDate(firstDate));
let differentRes, hours, minuts;
if(different > 0) {
differentRes = different;
hours = Math.floor((differentRes % 86400000) / 3600000);
minuts = Math.round(((differentRes % 86400000) % 3600000) / 60000);
} else {
differentRes = Math.abs((getDate(firstDate) - getDate(secondDate)));
hours = Math.floor(24 - (differentRes % 86400000) / 3600000);
minuts = Math.round(60 - ((differentRes % 86400000) % 3600000) / 60000);
}
let result = hours + ':' + minuts;
var playTimeOffset = (hours*3600)+minuts*60; //разница в секундах между временем открытия страницы и временем старта вебинара для функции seekToTime (плеер принимает в секундах и бросает в нужный момент видео)
//назначаем время старта вебинара
var now = new Date(); // Текущая дата
var webinarStartTime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), wHour, wMinute, 0, 0) - now;
var timeOfWebinar = new Date(now.getFullYear(), now.getMonth(), now.getDate(), wHour, wMinute, 0, 0);
console.log(timeOfWebinar);
console.log(currentDateTime);
//ПЫТАЮСЬ ДАТЬ РАЗНЫЙ НАБОР ИНСТРУКЦИЙ В ЗАВИСИМОСТИ ОТ ВРЕМЕНИ ОТКРЫТИЯ СТРАНИЦЫ
//час после вебинара
var hourAfter = new Date();
hourAfter = hourAfter.setHours(hourAfter.getHours() + 1);
console.log(hourAfter, timeOfWebinar, webinarStartTime)
//если текущее время больше на час
if (hourAfter > timeOfWebinar){
player.api("stop");
//alert("Вы опоздали");
}
if (currentDateTime.getTime() > timeOfWebinar.getTime()) {
player.api("stop");
//alert("За полчаса");
}
//если с начала вебинара еще не прошел 1 час, то запускаемм плеер
else{
startWebinar();
seekToTime();
unmute(); //включаем звук
}
/**
ЛОГИКА РАБОТЫ:в определенное время несколько развдень по Москве запускается воспроизведение видео через плеер.
Если пользователь открыл страницу раньше до указаного начсала ато без 5 мин, то воспроизведение не начинается автоматически,
при попытке его запустить - незапускется, а дальше продолжает показываться GIF анимация ожидания трансляции
Если открывает позже, то плеер начинает воспроизведение видео с той минуты, с которой пользователь вошел на вебинар от его начала,
то есть с 20:00. если зашел в 20:07, то видео начинает играть с 7-ой минуты ---- по окончанию выходим в расписание
как бы еще таймер времени сюда прикрутить
*/