Greasy Fork is available in English.

GitHub 简易搜索

Help perform advanced GitHub searches with dynamic parameters.简单搜索Github方法。

// ==UserScript==
// @name         GitHub 简易搜索
// @namespace    http://tampermonkey.net/
// @version      1.3
// @description  Help perform advanced GitHub searches with dynamic parameters.简单搜索Github方法。
// @author       Hill
// @match        *://github.com/search*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // 创建一个简单的表单来输入搜索参数
    const formHTML = `
        <div id="searchForm" style="position: fixed; top: 20px; right: 20px; background-color: white; padding: 10px; border: 1px solid #ccc; z-index: 1000; display: none;">
            <div>
                <label>Search Query:</label>
                <input type="text" id="searchQuery" style="width: 200px;">
            </div>
            <div>
                <label>Stars (>N):</label>
                <input type="number" id="searchStars" placeholder="Enter number" style="width: 100px;">
            </div>
            <div>
                <label>Language:</label>
                <input type="text" id="searchLanguage" style="width: 100px;">
            </div>
            <button type="button" id="searchButton">Search on GitHub</button>
        </div>
        <button type="button" id="expandSearch" style="position: fixed; top: 10px; right: 20px; font-size: 20px; padding: 2px 10px; z-index: 1000;">+</button>
    `;

    // 插入表单到页面
    const formContainer = document.createElement('div');
    formContainer.innerHTML = formHTML;
    document.body.appendChild(formContainer);

    // 添加事件监听器到展开按钮
    document.getElementById('expandSearch').addEventListener('click', function() {
        const form = document.getElementById('searchForm');
        if (form.style.display === 'none' || form.style.display === '') {
            form.style.display = 'block';
            document.getElementById('expandSearch').textContent = '-';
        } else {
            form.style.display = 'none';
            document.getElementById('expandSearch').textContent = '+';
        }
    });

    // 处理搜索按钮点击事件
    document.getElementById('searchButton').addEventListener('click', function() {
        const query = document.getElementById('searchQuery').value;
        let stars = document.getElementById('searchStars').value;
        const language = document.getElementById('searchLanguage').value;

        // 格式化星标搜索参数
        if (stars) {
            stars = `>${stars}`; // 构建大于指定星标的搜索条件
        }

        // 构建搜索URL
        let searchURL = 'https://github.com/search?q=';
        if (query) {
            searchURL += encodeURIComponent(query);
        }
        if (stars) {
            searchURL += '+stars:' + encodeURIComponent(stars);
        }
        if (language) {
            searchURL += '+language:' + encodeURIComponent(language);
        }

        // 在新标签页中打开搜索结果
        location.href = searchURL;
    });
})();