抖音10分钟跳转 (可配置时长)

当你使用抖音达到配置时长后,自动跳转到其他网页 (可配置时长)

  1. // ==UserScript==
  2. // @name 抖音10分钟跳转 (可配置时长)
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.1
  5. // @description 当你使用抖音达到配置时长后,自动跳转到其他网页 (可配置时长)
  6. // @author https://github.com/H-T-H
  7. // @match *://*.douyin.com/*
  8. // @match *://*.tiktok.com/*
  9. // @grant none
  10. // @license MIT
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15.  
  16. // 设置你想跳转到的网址,替换成你想要的网址
  17. const redirectURL = "https://github.com/"; // 例如: https://www.google.com 或者 https://www.baidu.com
  18.  
  19. // 从 localStorage 获取用户配置的时长,如果没有则使用默认值
  20. let timeLimitMinutes = localStorage.getItem('douyinTimeLimitMinutes');
  21.  
  22. if (!timeLimitMinutes) {
  23. // 首次运行或配置被清除,弹出对话框让用户输入时长
  24. timeLimitMinutes = prompt("请输入你想使用抖音的最长时间(分钟):", "10"); // 默认值设置为 10 分钟
  25.  
  26. // 检查用户是否取消了输入或者输入了非数字
  27. if (timeLimitMinutes === null || isNaN(parseInt(timeLimitMinutes)) || parseInt(timeLimitMinutes) <= 0) {
  28. timeLimitMinutes = 10; // 如果取消或输入无效,则默认设置为 10 分钟
  29. alert("时间设置无效,已设置为默认值 10 分钟。"); // 可选:提示用户
  30. } else {
  31. timeLimitMinutes = parseInt(timeLimitMinutes); // 转换为数字
  32. }
  33.  
  34. localStorage.setItem('douyinTimeLimitMinutes', timeLimitMinutes); // 保存用户设置的时长
  35. } else {
  36. timeLimitMinutes = parseInt(timeLimitMinutes); // 从 localStorage 中读取的是字符串,需要转换为数字
  37. }
  38.  
  39. const timeLimitMilliseconds = timeLimitMinutes * 60 * 1000;
  40.  
  41. let startTime = localStorage.getItem('douyinStartTime');
  42.  
  43. if (!startTime) {
  44. startTime = Date.now();
  45. localStorage.setItem('douyinStartTime', startTime);
  46. }
  47.  
  48. const elapsedTime = Date.now() - parseInt(startTime);
  49.  
  50. if (elapsedTime >= timeLimitMilliseconds) {
  51. localStorage.removeItem('douyinStartTime'); // 清除记录,下次重新计时
  52. window.location.href = redirectURL;
  53. } else {
  54. // 如果时间未到,设置一个定时器,在剩余时间后检查是否需要跳转
  55. const remainingTime = timeLimitMilliseconds - elapsedTime;
  56. setTimeout(function() {
  57. localStorage.removeItem('douyinStartTime'); // 确保定时器触发后清除记录
  58. window.location.href = redirectURL;
  59. }, remainingTime);
  60.  
  61. // 可选:添加一个倒计时提示,显示剩余时间 (可以根据需要添加或删除)
  62. function updateTimerDisplay() {
  63. const currentElapsedTime = Date.now() - parseInt(startTime);
  64. const remaining = timeLimitMilliseconds - currentElapsedTime;
  65. if (remaining <= 0) {
  66. clearInterval(timerInterval);
  67. return; // 倒计时结束,不再更新
  68. }
  69.  
  70. const minutes = Math.floor(remaining / (1000 * 60));
  71. const seconds = Math.floor((remaining % (1000 * 60)) / 1000);
  72.  
  73. // 你可以自定义显示方式,这里简单地在页面顶部显示
  74. const timerElement = document.getElementById('douyin-timer');
  75. if (timerElement) {
  76. timerElement.textContent = `抖音剩余使用时间:${minutes}分钟 ${seconds}秒 (总时长: ${timeLimitMinutes}分钟)`; // 显示总时长
  77. } else {
  78. const newTimerElement = document.createElement('div');
  79. newTimerElement.id = 'douyin-timer';
  80. newTimerElement.style.cssText = `
  81. position: fixed;
  82. top: 10px;
  83. left: 10px;
  84. background-color: rgba(0, 0, 0, 0.7);
  85. color: white;
  86. padding: 5px 10px;
  87. border-radius: 5px;
  88. z-index: 9999; /* 确保在最上层 */
  89. `;
  90. newTimerElement.textContent = `抖音剩余使用时间:${minutes}分钟 ${seconds}秒 (总时长: ${timeLimitMinutes}分钟)`; // 显示总时长
  91. document.body.appendChild(newTimerElement);
  92. }
  93. }
  94.  
  95. updateTimerDisplay(); // 立即更新一次
  96. const timerInterval = setInterval(updateTimerDisplay, 1000); // 每秒更新倒计时
  97. }
  98.  
  99. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址