From 852c6bc48b7044c54923b722ab5d9363a27ceb6c Mon Sep 17 00:00:00 2001 From: dec05eba Date: Wed, 7 Aug 2019 06:46:03 +0200 Subject: Youtube: do not play videos that have been played before --- src/QuickMedia.cpp | 19 +++++++++++++++++-- src/VideoPlayer.cpp | 4 ++-- 2 files changed, 19 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp index 7f7bb1c..1a88776 100644 --- a/src/QuickMedia.cpp +++ b/src/QuickMedia.cpp @@ -191,6 +191,8 @@ namespace QuickMedia { FileType file_type = get_file_type(content_storage_file); if(file_type == FileType::REGULAR) get_manga_storage_json(content_storage_file, content_storage_json); + } else if(next_page == Page::VIDEO_CONTENT) { + watched_videos.clear(); } current_page = next_page; } @@ -286,6 +288,7 @@ namespace QuickMedia { search_bar->onTextUpdateCallback = nullptr; search_bar->onTextSubmitCallback = nullptr; + watched_videos.insert(video_url); std::unique_ptr video_player = nullptr; try { printf("Play video: %s\n", video_url.c_str()); @@ -300,9 +303,21 @@ namespace QuickMedia { if(video_player) { video_player->onPlaybackEndedCallback = [this, &related_media, &video_player, &reload]() { - if(related_media.empty()) + std::string new_video_url; + // Find video that hasn't been played before in this video session + for(auto it = related_media.begin(), end = related_media.end(); it != end; ++it) { + if(watched_videos.find((*it)->url) == watched_videos.end()) { + new_video_url = (*it)->url; + related_media.erase(it); + break; + } + } + + // If there are no videos to play, then dont play any... + if(new_video_url.empty()) return; - video_url = related_media.front()->url; + + video_url = std::move(new_video_url); related_media = current_plugin->get_related_media(video_url); // TODO: This doesn't seem to work correctly right now, it causes video to become black when changing video (context reset bug). //video_player->load_file(video_url); diff --git a/src/VideoPlayer.cpp b/src/VideoPlayer.cpp index dbfcaac..1a2cc9a 100644 --- a/src/VideoPlayer.cpp +++ b/src/VideoPlayer.cpp @@ -86,8 +86,8 @@ namespace QuickMedia { //check_error(mpv_set_option_string(mpv, "vo", "gpu")); //check_error(mpv_set_option_string(mpv, "hwdec", "auto")); - check_error(mpv_set_option_string(mpv, "terminal", "yes")); - check_error(mpv_set_option_string(mpv, "msg-level", "all=v")); + //check_error(mpv_set_option_string(mpv, "terminal", "yes")); + //check_error(mpv_set_option_string(mpv, "msg-level", "all=v")); if(loop) check_error(mpv_set_option_string(mpv, "loop", "inf")); -- cgit v1.2.3