Greasy Fork is available in English.

ChatGPT /s => /search

ChatGPT /s => /search alias

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
// ==UserScript==
// @name         ChatGPT /s => /search
// @namespace    https://greasyfork.org/en/users/1337417-mevanlc
// @version      1.0
// @description  ChatGPT /s => /search alias
// @author       https://greasyfork.org/en/users/1337417-mevanlc
// @match        https://chatgpt.com/*
// @grant        unsafeWindow
// @license      MIT
// @run-at document-start
// ==/UserScript==

(function () {
    const TARGET_URL = 'https://chatgpt.com/backend-api/system_hints';
    const realFetch = window.fetch.bind(window);

    unsafeWindow.fetch = async function (input, init) {
        const url = (typeof input === 'string') ? input : (input && input.url) || '';

        if (url !== TARGET_URL) {
            return realFetch(input, init);
        }

        let response;
        try {
            response = await realFetch(input, init);
        } catch (err) {
            throw err;
        }

        if (!response.ok) return response;

        const originalText = await response.text();

        function modifyResponse() {
            // { "system_hints": [ { "system_hint": "search", "aliases": [] }, ... ] }
            // ===> transform to ===>
            // { "system_hints": [ { "system_hint": "search", "aliases": ["search", "s"] }, ... ] }
            try {
                if (!originalText) {
                    console.warn('Empty response text');
                    return originalText;
                }
                const data = JSON.parse(originalText);
                if (!data) { throw new Error('Parse failed: ' + originalText); }
                if (!data.system_hints || !Array.isArray(data.system_hints)) {
                    throw new Error('No system_hints array: ' + originalText);
                }
                for (const hintObj of data.system_hints) {
                    if (hintObj.system_hint === 'search') {
                        if (!Array.isArray(hintObj.aliases)) {
                            hintObj.aliases = [];
                        }
                        if (!hintObj.aliases.includes('search')) {
                            hintObj.aliases.push('search');
                        }
                        if (!hintObj.aliases.includes('s')) {
                            hintObj.aliases.push('s');
                        }
                    }
                }
                return JSON.stringify(data);
            } catch (err) {
                console.error('Error modifying response text:', err);
            }
            return originalText;
        }

        let modifiedText = modifyResponse();


        const headers = new Headers(response.headers);
        headers.delete('content-length');
        headers.delete('transfer-encoding');
        headers.delete('content-encoding');
        return new Response(modifiedText, {
            status: response.status,
            statusText: response.statusText,
            headers
        });
    };
})();