VS Code Extension Downloader

在 VS Code Marketplace 页面添加直接下载按钮

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name         VS Code Extension Downloader
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  在 VS Code Marketplace 页面添加直接下载按钮
// @author       Trae AI
// @match        https://marketplace.visualstudio.com/items?itemName=*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    async function init() {
        // 获取 itemName 参数
        const urlParams = new URLSearchParams(window.location.search);
        const itemName = urlParams.get('itemName');
        if (!itemName) return;

        // 分割 publisher 和 extension 名称
        const [publisher, extension] = itemName.split('.');

        // 创建下载按钮
        const downloadButton = document.createElement('button');
        downloadButton.innerHTML = '下载最新版本';
        downloadButton.style.cssText = `
            background-color: #0078d4;
            color: white;
            border: none;
            padding: 8px 16px;
            border-radius: 4px;
            cursor: pointer;
            position: fixed;
            top: 20px;
            right: 20px;
            z-index: 10000;
        `;

        // 点击事件处理
        downloadButton.addEventListener('click', async () => {
            // 跳转到版本历史页面
            window.location.hash = 'version-history';

            // 等待版本历史表格加载
            await new Promise(resolve => setTimeout(resolve, 1000));

            // 获取最新版本号
            const versionCell = document.querySelector('.version-history-table-body .version-history-container-row:first-child .version-history-container-column:first-child');
            if (!versionCell) {
                alert('无法获取版本号');
                return;
            }

            const version = versionCell.textContent.trim();
            const downloadUrl = `https://marketplace.visualstudio.com/_apis/public/gallery/publishers/${publisher}/vsextensions/${extension}/${version}/vspackage`;

            // 创建下载
            const link = document.createElement('a');
            link.href = downloadUrl;
            link.download = `${itemName}-${version}.vsix`;
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
        });

        // 添加按钮到页面
        document.body.appendChild(downloadButton);
    }

    // 启动脚本
    init();
})();