您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Hold ctrl and click(or just click) on the title to get Youtube's current seconds in the clipboard.
当前为
- // ==UserScript==
- // @name Get Youtube current Seconds
- // @namespace http://tampermonkey.net/
- // @version 2024-12-08
- // @description Hold ctrl and click(or just click) on the title to get Youtube's current seconds in the clipboard.
- // @grant GM_setValue
- // @grant GM_getValue
- // @grant GM_registerMenuCommand
- // @grant GM_unregisterMenuCommand
- // @author fengxxc
- // @match https://www.youtube.com/*
- // @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- const defaultConfig = {
- requireCtrl: false
- };
- function getConfig() {
- return GM_getValue('config', defaultConfig);
- }
- function saveConfig(config) {
- GM_setValue('config', config);
- }
- function toggleCtrlClickRequirement() {
- const config = getConfig();
- config.requireCtrl = !config.requireCtrl;
- saveConfig(config);
- registerMenuCommand();
- console.log(config.requireCtrl ? 'Ctrl + click enabled' : 'Ctrl + click disabled');
- }
- let menuCommandId;
- function registerMenuCommand() {
- if (menuCommandId) {
- GM_unregisterMenuCommand(menuCommandId);
- }
- const config = getConfig();
- const menuText = config.requireCtrl
- ? 'Toggle Ctrl+click (enabled)'
- : 'Toggle Ctrl+click (disabled)';
- menuCommandId = GM_registerMenuCommand(menuText, toggleCtrlClickRequirement);
- }
- function getSeconds(timestamp) {
- const sp = timestamp.split(":").map(Number);
- let seconds = 0;
- for (let i = 0; i < sp.length; i++) {
- seconds += sp[i] * (60 ** (sp.length - i - 1));
- }
- return seconds;
- }
- let btn = null;
- let intervalId = setInterval(() => {
- if (btn != null) {
- clearInterval(intervalId);
- btn.onclick = () => {
- const config = getConfig();
- if ( (!config.requireCtrl && !event.ctrlKey) // click
- || (config.requireCtrl && event.ctrlKey)){ // ctrl + click
- const currenttime = document.querySelector('.ytp-time-current').innerText;
- const currentSeconds = getSeconds(currenttime);
- const url = `${window.location.href}&t=${currentSeconds}s`;
- console.log(`Now Play: ${currenttime}, seconds: ${currentSeconds}, url: ${url}`);
- navigator.clipboard.writeText(url).then(() => {
- console.log('url copied to clipboard');
- }).catch(err => {
- console.error('Failed to copy text: ', err);
- });
- }
- }
- }
- btn = document.querySelector('#above-the-fold > #title');
- }, 60)
- registerMenuCommand();
- })();