Программировать просто:
- плеер для просмотра, который заставляет ожидать заданное время, сообщая на сервер о фактах начала и конца просмотра
- плеер может быть универсальным, показывающим произвольный контент
- на бэкенде сущность с разрешениями на доступ. Модель добавляет временное разрешение по сигналу от модели просмотров плеера о том, что просмотр был
- привязать сессии просмотра к IP, куки и/или авторизации
Итого, четыре модели:
- контент плеера
- просмотры
- разрешения
- целевой контент
Просмотры и разрешения можно объединить.
"Что-то готовое" видел на getcourse.