您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Show favorite GPT conversions
// ==UserScript== // @name Favorite GPT conversations // @version 1.0.0 // @homepage https://www.techbytegaming.net/ // @description Show favorite GPT conversions // @author acheshirov // @match https://chatgpt.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=chatgpt.com // @require https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js // @grant GM_getValue // @grant GM_setValue // @namespace https://greasyfork.org/users/1363565 // ==/UserScript== (function() { 'use strict'; $( document ).ready(function() { var isDark = !$('html').hasClass('light'); var observer = new MutationObserver(function(mutations) { setTimeout(function() { showPinChatBtn(); }, 3000); }); observer.observe(document.querySelector("main"), { childList: true }); function showPinChatBtn() { var m2 = $('body').find('.leading\\-\\[0\\]'); if (m2.find('#addPinThisPage').length === 0) { var span2 = m2.find('span').eq(0).clone(); span2.attr('id', 'addPinThisPage') span2.find('svg').replaceWith(`<svg xmlns="http://www.w3.org/2000/svg" fill="#fff" width="24" height="24" viewBox="0 0 24 24"><path d="M8 2h8a1 1 0 0 1 1 1v.382a1 1 0 0 1-.553.894L15 5v5l2.707 2.707a1 1 0 0 1 .293.707V15a1 1 0 0 1-1 1h-4v4l-1 3l-1-3v-4H7a1 1 0 0 1-1-1v-1.586a1 1 0 0 1 .293-.707L9 10V5l-1.447-.724A1 1 0 0 1 7 3.382V3a1 1 0 0 1 1-1z"/></svg>`); if (!isDark) { span2.find('svg').css('filter', 'invert(50%)'); } span2.prependTo(m2); } } setTimeout(function() { var m = $('body').find('.h\\-\\[60px\\]'); var span = m.find('span').eq(0).clone(); span.find('svg').replaceWith(`<svg xmlns="http://www.w3.org/2000/svg" fill="#fff" width="24" height="24" viewBox="0 0 24 24"><path d="M8 2h8a1 1 0 0 1 1 1v.382a1 1 0 0 1-.553.894L15 5v5l2.707 2.707a1 1 0 0 1 .293.707V15a1 1 0 0 1-1 1h-4v4l-1 3l-1-3v-4H7a1 1 0 0 1-1-1v-1.586a1 1 0 0 1 .293-.707L9 10V5l-1.447-.724A1 1 0 0 1 7 3.382V3a1 1 0 0 1 1-1z"/></svg>`); if (!isDark) { span.find('svg').css('filter', 'invert(50%)'); } span.appendTo(m); span.on('click', function() { showModal(); }); showPinChatBtn(); }, 2000); function showModal() { var chats = GM_getValue('gpt_pin_chats'); if (!chats) { return alert('No pinned chats found!'); } chats = JSON.parse(chats); if (chats.length === 0) { return alert('No pinned chats found!'); } $('body').find('#myPinnedChats').remove(); $('body').append('<dialog style="box-shadow: 0 0 7px rgba(200, 200, 200, 0.7); padding: 10px; font-size: 18px; border-radius: 10px; background: rgba(25, 25, 25, 0.98);" id="myPinnedChats"><table border="0"></table></dialog>'); for (var key in chats) { $('#myPinnedChats table').append('<tr data-element-key="' + key + '"><td style="padding: 5px;"><a style="color: #fff" href="' + chats[key].link + '">' + chats[key].title + '</a></td><td style="padding: 5px; color: #fff">[<a href="#" style="color: #fff" class="deletePinnedChat" title="Delete">X</a>]</td></tr>'); } $('#myPinnedChats')[0].showModal(); } $('body').on('click', '#addPinThisPage', function() { var title; if (title = prompt('Title of the pinned chat', $('head').find('title').text())) { var chats = GM_getValue('gpt_pin_chats'); if (chats) { chats = JSON.parse(chats); } else { chats = []; } for (var key in chats) { if (chats[key].link === window.location.href) { chats[key].title = title; GM_setValue('gpt_pin_chats', JSON.stringify(chats)); return; } } chats.push({'link': window.location.href, 'title': title}); GM_setValue('gpt_pin_chats', JSON.stringify(chats)); } }); $('body').on('click', '#myPinnedChats a', function(e) { e.preventDefault(); if ($(this).hasClass('deletePinnedChat')) { if (confirm('Are you sure you want to delete this pin?')) { var chats = JSON.parse(GM_getValue('gpt_pin_chats')); chats.splice($(this).parents('tr').attr('data-element-key'), 1) GM_setValue('gpt_pin_chats', JSON.stringify(chats)); $('#myPinnedChats')[0].close(); showModal(); } return; } window.location.href = $(this).attr('href'); }); }); })();