您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Video Auto Play and Replay - by IA DuckDuckDo (Adaptation for Gm "Utags")
- // ==UserScript==
- // @name Flickr - AUTO Video Play / Replay v.5
- // @version v.6
- // @description Video Auto Play and Replay - by IA DuckDuckDo (Adaptation for Gm "Utags")
- // @icon https://external-content.duckduckgo.com/ip3/blog.flickr.net.ico
- // @namespace https://greasyfork.org/fr/users/8-decembre?sort=updated
- // @include https://www.flickr.com/photos/*
- // @exclude http*://*flickr.com/photos/*/favorites*
- // @exclude http*://*flickr.com/photos/*/favorites/*
- // @exclude http*://*flickr.com/photos/*/albums*
- // @grant GM_addStyle
- // ==/UserScript==
- // Flickr - AUTO Video Play / Replay v.5 (delete Flickr - Video AUTO Play / Replay v.10 because this one is better)
- // Muting the video before playing it is a good workaround for the autoplay policy issue
- function loadScript(url, callback) {
- var script = document.createElement('script');
- script.src = url;
- script.onload = callback;
- document.head.appendChild(script);
- }
- loadScript('https://code.jquery.com/jquery-3.6.0.min.js', function() {
- (function($) {
- 'use strict';
- console.log('Script loaded');
- // Function to check if the modal is open
- function isModalOpen() {
- return $('.browser_extension_settings_container:visible, .utags_modal:visible').length > 0;
- }
- // Wait for the video element to be loaded
- var videoElement = document.querySelector('.fluid.html-photo-page-scrappy-view video#video_1_html5_api');
- if (videoElement) {
- console.log('Video element found');
- // Set the video to auto play and loop
- videoElement.autoplay = true;
- videoElement.loop = true;
- videoElement.muted = true; // Mute the video
- videoElement.volume = 0.5;
- console.log('Auto-play and loop properties set');
- // Add an event listener to play the video when the user interacts with it
- videoElement.addEventListener('click', function() {
- if (!isModalOpen()) {
- this.play();
- }
- });
- // Add an event listener to replay the video when it ends
- videoElement.addEventListener('ended', function() {
- if (!isModalOpen()) {
- this.play();
- }
- });
- // Add an event listener to handle volume control
- videoElement.addEventListener('volumechange', function() {
- this.muted = false;
- });
- // Play the video
- if (!isModalOpen()) {
- videoElement.play();
- }
- console.log('Video played');
- } else {
- console.log('Video element not found');
- // If the video element is not found, wait for it to be loaded
- var intervalId = setInterval(function() {
- if (isModalOpen()) {
- return;
- }
- var videoElement = document.querySelector('.fluid.html-photo-page-scrappy-view video#video_1_html5_api');
- if (videoElement) {
- console.log('Video element found after interval');
- // Set the video to auto play and loop
- videoElement.autoplay = true;
- videoElement.loop = true;
- videoElement.muted = true; // Mute the video
- videoElement.volume = 0.5;
- console.log('Auto-play and loop properties set after interval');
- // Add an event listener to play the video when the user interacts with it
- videoElement.addEventListener('click', function() {
- if (!isModalOpen()) {
- this.play();
- }
- });
- // Add an event listener to replay the video when it ends
- videoElement.addEventListener('ended', function() {
- if (!isModalOpen()) {
- this.play();
- }
- });
- // Add an event listener to handle volume control
- videoElement.addEventListener('volumechange', function() {
- this.muted = false;
- });
- // Play the video
- if (!isModalOpen()) {
- videoElement.play();
- }
- console.log('Video played after interval');
- // Clear the interval
- clearInterval(intervalId);
- }
- }, 100);
- }
- })(null);
- });