Как реализовать «недавно просмотренные видео»?

Ссылка скопирована
1 ответ

Есть сайт, на котором можно ввести название и появится это видео и можно смотреть его, есть у него айди. Стоит задача такая: реализовать недавно просмотренные видео, сохраняя последнее время просмотра, дабы после возвращения на сайт можно было не искать момент где закончил смотреть и какие видео я смотрел.

Все это насколько я понимаю, нужно хранить в LocalStorage, тк регистрации на сайте нет. При открытие видео, нужно запускать секундный таймер и каждый раз перезаписывать данные в LocalStorage.

Но, я думаю это кастыль, запускать таймер секундный. Как правильно такое вообще реализовать?

Дополнительно:

Если регистрации не будет, то выбор небольшой - куки,локалстор, indexedDB. Для твоей задачи подходит локальное хранилище. По поводу же таймера - да будет работать, я бы что-то такое и делал. Только лучше сделать это через какой-нибудь сервис-воркер, чтобы наверняка браузер не "потушил" этот отсчет.

  • Наверное не сильно правильно записывать каждую секунду в LocalStorage, правильно было бы каждые 10-20 сек. делать запись, а еще правильнее было бы реагировать на разные события и тогда делать записи, например, закрытие страницы, смена страницы, смена видео, клик в не области видео. Но тут как ты видишь много вариантов, и много случаев, которые все навряд ли предусмотреть, так что я бы остановился на записи каждые 10-20 сек, банально проще)
  • Max Sagaidak, интересно, а в ютубе как работает :)
  • Kentavr16, я не работал никогда с воркером
  • YAHEFID, там и работать уметь не надо - два метода достаточно для твоих целей
  • Kentavr16, каких?)
  • YAHEFID,

    интересно, а в ютубе как работает :)

    на сколько мне известно, ютуб не секунда-в-секунду сохраняет последнее время просмотра, а с небольшой задержкой, а значит, если говорить о банальном, у ютуба есть таймер на каждые 10 секунд, где он заносит данные в бд с текущей меткой времени, на которой находится плеер.

    upd. Конечно у этого метода есть и минусы - частая работа с бд, особенно если видео одновременно будет смотреть 100+ человек, то это в моменте может быть, грубо говоря, 100+ запросов к бд. Но оптимизация - это уже другой вопрос

  • maksam07, костыли да костыли
    window.onbeforeunload = function(){    // Do something } // OR window.addEventListener("beforeunload", function(e){    // Do something });

    window.onbeforeunload = function(){ // Do something } // OR window.addEventListener("beforeunload", function(e){ // Do something });

    и еще тысяча методов, которые позволят не дергать ничего раз в 10 секунд

  • Uno, а я и не отказывался от подобных вашим методам. Реализовать можно по разному. Если есть буферизация ролика, которая подгружает его небольшой кусок, то можно и во время подгрузки сохранять текущую метку. Там разница до нескольких минут будет, что тоже не особо критично
  • Uno, тогда лучше уже взять visibilitychange, а beforeunload он плохо на мобильных устройствах работает)
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Андрей PHP Ответ

    Для реализации функционала "недавно просмотренные видео" на своем сайте, вам потребуется хранить информацию о просмотренных видео для каждого пользователя. Это можно сделать с помощью базы данных, где будет храниться идентификатор пользователя и идентификаторы просмотренных им видео.

    Начнем с создания таблицы в базе данных для хранения этой информации. Допустим, у нас есть таблица `viewed_videos` с полями `user_id` и `video_id`.

    ```php

    CREATE TABLE viewed_videos (
        user_id INT,
        video_id INT
    );

    CREATE TABLE viewed_videos ( user_id INT, video_id INT );

    ```

    Когда пользователь просматривает видео, вы можете добавить запись в эту таблицу с его идентификатором и идентификатором просмотренного видео.

    ```php

    INSERT INTO viewed_videos (user_id, video_id) VALUES (1, 123);

    INSERT INTO viewed_videos (user_id, video_id) VALUES (1, 123);

    ```

    Для отображения "недавно просмотренных видео" на странице пользователя, вы можете выполнить запрос к базе данных, чтобы получить список просмотренных видео для конкретного пользователя. Например, для пользователя с идентификатором 1:

    ```php

    SELECT video_id FROM viewed_videos WHERE user_id = 1 ORDER BY id DESC LIMIT 5;

    SELECT video_id FROM viewed_videos WHERE user_id = 1 ORDER BY id DESC LIMIT 5;

    ```

    Полученные идентификаторы видео можно использовать для вывода превью или ссылок на соответствующие видео на странице пользователя.

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

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно