🏠 返回首頁 

Greasy Fork is available in English.

GPT-4 手动请求计数器(Chatgpt-GPT-4-Request-Counter-Manual-only

让你可以手动记录过去三小时内gpt-4的使用次数,方便规划管理,显示于右上角 You can manually record the usage frequency of GPT-4 during the past three hours, facilitating planning and management.

// ==UserScript==
// @name         GPT-4 手动请求计数器(Chatgpt-GPT-4-Request-Counter-Manual-only
// @namespace    http://tampermonkey.net/
// @version      0.21
// @description  让你可以手动记录过去三小时内gpt-4的使用次数,方便规划管理,显示于右上角  You can manually record the usage frequency of GPT-4 during the past three hours, facilitating planning and management.
// @author       Your Name
// @match        https://chat.openai.com/chat/*
// @icon         https://chat.openai.com/favicon.ico
// @grant        none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
const SECONDS_IN_3_HOURS = 3 * 60 * 60;
// 创建包含按钮和请求次数的 div
const wrapperDiv = document.createElement('div');
wrapperDiv.style.position = 'fixed';
wrapperDiv.style.top = '20px';
wrapperDiv.style.right = '20px';
wrapperDiv.style.zIndex = '9999';
document.body.appendChild(wrapperDiv);
// 在页面上创建一个计数器按钮
const counterButton = document.createElement('button');
counterButton.style.padding = '10px';
counterButton.style.backgroundColor = '#007bff';
counterButton.style.color = '#ffffff';
counterButton.style.border = 'none';
counterButton.style.cursor = 'pointer';
counterButton.textContent = '记录 GPT-4 请求';
wrapperDiv.appendChild(counterButton);
// 创建显示当前请求次数的 span
const requestCountSpan = document.createElement('span');
requestCountSpan.style.display = 'block';
requestCountSpan.style.marginTop = '10px';
requestCountSpan.style.color = '#007bff';
requestCountSpan.style.fontSize = '16px';
wrapperDiv.appendChild(requestCountSpan);
// 创建显示倒计时的 span
const countdownSpan = document.createElement('span');
countdownSpan.style.display = 'block';
countdownSpan.style.marginTop = '5px';
countdownSpan.style.color = '#007bff';
countdownSpan.style.fontSize = '14px';
wrapperDiv.appendChild(countdownSpan);
// 从 localStorage 中获取之前的计数值和首次请求时间
let requestCount = parseInt(localStorage.getItem('gpt4RequestCount')) || 0;
let firstRequestTimestamp = parseInt(localStorage.getItem('gpt4FirstRequestTimestamp')) || 0;
// 更新显示的请求次数
function updateRequestCountDisplay() {
requestCountSpan.textContent = `已请求次数:${requestCount}`;
}
// 更新倒计时显示
function updateCountdownDisplay() {
if (firstRequestTimestamp === 0) {
countdownSpan.textContent = '';
return;
}
const now = Math.floor(Date.now() / 1000);
const elapsedTime = now - firstRequestTimestamp;
const remainingTime = SECONDS_IN_3_HOURS - elapsedTime;
if (remainingTime <= 0) {
countdownSpan.textContent = '倒计时已结束,请求次数已刷新';
firstRequestTimestamp = 0;
requestCount = 0;
localStorage.removeItem('gpt4FirstRequestTimestamp');
localStorage.removeItem('gpt4RequestCount');
} else {
const remainingHours = Math.floor(remainingTime / 3600);
const remainingMinutes = Math.floor((remainingTime % 3600) / 60);
const remainingSeconds = remainingTime % 60;
countdownSpan.textContent = `${remainingHours}小时${remainingMinutes}分${remainingSeconds}秒后回复`;
}
}
// 初始化显示
updateRequestCountDisplay();
updateCountdownDisplay();
// 每秒更新倒计时
setInterval(updateCountdownDisplay, 1000);
// 当按钮被点击时,增加计数值并显示弹出框
counterButton.addEventListener('click', () => {
requestCount++;
localStorage.setItem('gpt4RequestCount', requestCount);
updateRequestCountDisplay();
if (firstRequestTimestamp === 0) {
firstRequestTimestamp = Math.floor(Date.now() / 1000);
localStorage.setItem('gpt4FirstRequestTimestamp', firstRequestTimestamp);
}
updateCountdownDisplay();
});
})();