当前位置: 首页 > news >正文

使用playright自动下载vscode已安装插件

import os
import re
import subprocess
import traceback
from playwright.sync_api import Playwright, sync_playwright, expect# 执行CMD命令
cmd_command = "code --list-extensions"  # 获取已安装扩展列表
process = subprocess.Popen(cmd_command, stdout=subprocess.PIPE, shell=True)# 获取命令结果
output, error = process.communicate()pluginList = []
# 输出结果
if error:print(f"错误: {error}")raise Exception(error)
else:res = output.decode('utf-8')pluginList = res.split('\n')print(f"命令输出: \n{res}")# pluginList = [
#     '766b.go-outliner',
# 'aaron-bond.better-comments',
# 'achil.vscode-javascript-repl',
# 'aksharpatel47.vscode-flutter-helper',
# 'albymor.increment-selection',
# 'alefragnani.project-manager',
# 'alexisvt.flutter-snippets',
# 'Angular.ng-template',
# 'AykutSarac.jsoncrack-vscode',
# 'batisteo.vscode-django',
# 'bierner.color-info',
# 'BriteSnow.vscode-toggle-quotes',
# 'ChakrounAnas.turbo-console-log',
# 'changkaiyan.tf2snippets',
# 'checkmarx.ast-results',
# 'christian-kohler.npm-intellisense',
# 'christian-kohler.path-intellisense',
# 'chrmarti.regex',
# 'cipchk.zh-hans-tt-hant-vscode',
# 'circlecodesolution.ccs-flutter-color',
# 'codezombiech.gitignore',
# 'cssho.vscode-svgviewer',
# 'csstools.postcss',
# 'Dart-Code.dart-code',
# 'Dart-Code.flutter',
# 'dbaeumer.vscode-eslint',
# 'devzstudio.emoji-snippets',
# 'docsmsft.docs-markdown',
# 'docsmsft.docs-yaml',
# 'donjayamanne.git-extension-pack',
# 'donjayamanne.githistory',
# 'donjayamanne.python-environment-manager',
# 'donjayamanne.python-extension-pack',
# 'DotJoshJohnson.xml',
# 'eamodio.gitlens',
# 'ecmel.vscode-html-css',
# 'EditorConfig.EditorConfig',
# 'esbenp.prettier-vscode',
# 'felipecaputo.git-project-manager',
# 'FelixAngelov.bloc',
# 'firefox-devtools.vscode-firefox-debug',
# 'flesler.url-encode',
# 'folke.vscode-monorepo-workspace',
# 'formulahendry.auto-close-tag',
# 'formulahendry.auto-rename-tag',
# 'formulahendry.code-runner',
# 'fwcd.kotlin',
# 'gamunu.vscode-yarn',
# 'gaoliang.visual-zookeeper',
# 'GitHub.remotehub',
# 'golang.go',
# 'HarryHopkinson.vs-code-runner',
# 'hediet.debug-visualizer',
# 'helixquar.randomeverything',
# 'hollowtree.vue-snippets',
# 'huangjianke.fish-redux-template',
# 'humao.rest-client',
# 'ivangabriele.vscode-git-add-and-commit',
# 'IWANABETHATGUY.vue-this-store',
# 'JFrog.jfrog-vscode-extension',
# 'johnpapa.angular-essentials',
# 'johnpapa.Angular2',
# 'johnpapa.vscode-peacock',
# 'johnpapa.winteriscoming',
# 'KevinRose.vsc-python-indent',
# 'Kimseungtae.aicodehelper',
# 'lihui.vs-color-picker',
# 'magicstack.MagicPython',
# 'marlon407.code-groovy',
# 'mathiasfrohlich.Kotlin',
# 'MellowMarshmallow.groovy',
# 'mhutchie.git-graph',
# 'mindaro-dev.file-downloader',
# 'mindaro.mindaro',
# 'ms-azuretools.vscode-docker',
# 'MS-CEINTL.vscode-language-pack-zh-hans',
# 'ms-edgedevtools.vscode-edge-devtools',
# 'ms-kubernetes-tools.vscode-kubernetes-tools',
# 'ms-mssql.data-workspace-vscode',
# 'ms-mssql.mssql',
# 'ms-mssql.sql-bindings-vscode',
# 'ms-mssql.sql-database-projects-vscode',
# 'ms-ossdata.vscode-postgresql',
# 'ms-playwright.playwright',
# 'ms-python.autopep8',
# 'ms-python.black-formatter',
# 'ms-python.flake8',
# 'ms-python.isort',
# 'ms-python.pylint',
# 'ms-python.python',
# 'ms-python.vscode-pylance',
# 'ms-toolsai.jupyter',
# 'ms-toolsai.jupyter-keymap',
# 'ms-toolsai.jupyter-renderers',
# 'ms-toolsai.vscode-jupyter-cell-tags',
# 'ms-toolsai.vscode-jupyter-slideshow',
# 'ms-vscode-remote.remote-containers',
# 'ms-vscode-remote.remote-ssh',
# 'ms-vscode-remote.remote-ssh-edit',
# 'ms-vscode-remote.remote-wsl',
# 'ms-vscode-remote.vscode-remote-extensionpack',
# 'ms-vscode.azure-account',
# 'ms-vscode.azure-repos',
# 'ms-vscode.cmake-tools',
# 'ms-vscode.cpptools-extension-pack',
# 'ms-vscode.cpptools-themes',
# 'ms-vscode.hexeditor',
# 'ms-vscode.live-server',
# 'ms-vscode.powershell',
# 'ms-vscode.remote-explorer',
# 'ms-vscode.remote-repositories',
# 'ms-vscode.remote-server',
# 'ms-vscode.wordcount',
# 'msyrus.go-doc',
# 'Nash.awesome-flutter-snippets',
# 'Natizyskunk.sftp',
# 'NicolasVuillamy.vscode-groovy-lint',
# 'njpwerner.autodocstring',
# 'overtrue.miniapp-helper',
# 'PKief.material-icon-theme',
# 'Postman.postman-for-vscode',
# 'redhat.java',
# 'redhat.vscode-commons',
# 'redhat.vscode-yaml',
# 'ritwickdey.LiveServer',
# 'rogalmic.bash-debug',
# 'sdras.vue-vscode-snippets',
# 'tauri-apps.tauri-vscode',
# 'techer.open-in-browser',
# 'thekalinga.bootstrap4-vscode',
# 'twxs.cmake',
# 'vadimcn.vscode-lldb',
# 'vahidk.tensorflow-snippets',
# 'vformAdmin.vform-maker',
# 'VisualStudioExptTeam.intellicode-api-usage-examples',
# 'VisualStudioExptTeam.vscodeintellicode',
# 'VisualStudioExptTeam.vscodeintellicode-completions',
# 'vmware.vscode-boot-dev-pack',
# 'vmware.vscode-spring-boot',
# 'vscjava.vscode-gradle',
# 'vscjava.vscode-java-debug',
# 'vscjava.vscode-java-dependency',
# 'vscjava.vscode-java-pack',
# 'vscjava.vscode-java-test',
# 'vscjava.vscode-maven',
# 'vscjava.vscode-spring-boot-dashboard',
# 'vscjava.vscode-spring-initializr',
# 'Vue.volar',
# 'Vue.vscode-typescript-vue-plugin',
# 'waderyan.gitblame',
# 'WallabyJs.console-ninja',
# 'wellchang.fishreduxhelper',
# 'wellchang.fonttodartts',
# 'wholroyd.jinja',
# 'wowbox.code-debuger',
# 'Wscats.eno',
# 'xabikos.JavaScriptSnippets',
# 'yzane.markdown-pdf',
# 'yzhang.markdown-all-in-one',
# 'Zignd.html-css-class-completion',
# 'ziyasal.vscode-open-in-github']# 判断是否已下载
def isExsit(prefix):# 指定目录directory = os.getcwd()# 正则表达式匹配文件名pattern = prefix + '-.*\.vsix$'  # 这将匹配所有.vsix文件# 遍历目录for filename in os.listdir(directory):# 如果文件名匹配正则表达式if re.match(pattern, filename):# 拼接完整的文件路径file_path = os.path.join(directory, filename)# 如果文件存在if os.path.exists(file_path):# print(f'文件 {file_path} 存在')return Trueelse:# print(f'文件 {file_path} 不存在')return Falsedef run(playwright: Playwright) -> None:browser = playwright.chromium.launch(headless=False, timeout=1200 * 1000.0)# 设置页面查找元素的超时时间为 5 秒browser.locator_timeout = 5000context = browser.new_context()context.set_default_timeout(5000)page = context.new_page()page.set_default_timeout(5000)failList = []for plugin in pluginList:try:# 判断文件是否存在if not isExsit(plugin):# print(plugin + ".vsix文件存在")# else:page.goto("https://marketplace.visualstudio.com/search?term="+plugin+"&target=VSCode&category=All%20categories&sortBy=Relevance", wait_until='commit')page.wait_for_timeout(300)first = page.locator('xpath=/html/body/div[2]/div[3]/div[3]/div/div/div[2]/div[2]/div[2]/div/div/div/div/a/div')first.click()# page.goto("https://marketplace.visualstudio.com/items?itemName=" + plugin, wait_until='commit')page.wait_for_timeout(300)ele = page.get_by_role("button", name="Version History")ele.click()page.wait_for_timeout(300)ele.click()page.wait_for_timeout(1000)version = page.locator("#version-history-tab-content div table tbody tr").nth(0).locator('td').nth(0).inner_text()page.wait_for_timeout(300)with page.expect_download() as download_info:# page.locator("xpath=/html/body/div[4]/div/div/div[2]/div/div/div[2]/div/div/div/div[2]/div[2]/div[2]/div/div[2]/table/tbody/tr[1]/td[3]/a").click()page.locator("#version-history-tab-content div table tbody tr").nth(0).locator('a').nth(0).click()download = download_info.value# Wait for the download process to completeprint(download.path())# Save downloaded file somewheredownload.save_as(plugin + "-" + version + ".vsix")# breakexcept Exception as e:failList.append(plugin)print(plugin + ".vsix下载失败")print(e)# traceback.print_exc()# ---------------------context.close()browser.close()print('下载失败扩展列表:')print(failList)with sync_playwright() as playwright:run(playwright)

相关文章:

使用playright自动下载vscode已安装插件

import os import re import subprocess import traceback from playwright.sync_api import Playwright, sync_playwright, expect# 执行CMD命令 cmd_command "code --list-extensions" # 获取已安装扩展列表 process subprocess.Popen(cmd_command, stdoutsubpr…...

单片机语言实例:2、点亮数码管的多种方法

一、共阳数码管静态显示 程序实例1&#xff1a; #include<reg52.h> //包含头文件&#xff0c;一般情况不需要改动&#xff0c; //头文件包含特殊功能寄存器的定义void main (void) {P10xc0; //二进制 为 1100 0000 参考数码管排列&#xff0c;//可以得出0对应的段点…...

C#学习 - 初识类与名称空间

类&#xff08;class&#xff09;& 名称空间&#xff08;namespace&#xff09; 类是最基础的 C# 类型&#xff0c;是一个数据结构&#xff0c;是构成程序的主体 名称空间以树型结构组织类 using System; //前面的using就是引用名称空间 //相当于C语言的 #include <..…...

Python爬取电影信息:Ajax介绍、爬取案例实战 + MongoDB存储

Ajax介绍 Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一种用于在Web应用程序中实现异步通信的技术。它允许在不刷新整个网页的情况下&#xff0c;通过在后台与服务器进行数据交换&#xff0c;实时更新网页的一部分。Ajax的主要特点包括&#xff1a; 异步通…...

JavaScript的面向对象

一、认识对象 1.概述 对象&#xff08;object&#xff09;是 JavaScript 语言的核心概念&#xff0c;也是最重要的数据类型。 什么是对象&#xff1f;简单说&#xff0c;对象就是一组“键值对”&#xff08;key-value&#xff09;的集合&#xff0c;是一种无序的复合数据集合…...

MybatisPlus 核心功能 条件构造器 自定义SQL Service接口 静态工具

MybatisPlus 快速入门 常见注解 配置_软工菜鸡的博客-CSDN博客 2.核心功能 刚才的案例中都是以id为条件的简单CRUD&#xff0c;一些复杂条件的SQL语句就要用到一些更高级的功能了。 2.1.条件构造器 除了新增以外&#xff0c;修改、删除、查询的SQL语句都需要指定where条件。因此…...

TSN时间敏感网络

目录 时间敏感网络介绍 子协议介绍 时间同步 IEEE802.1AS 调度和流量整形 IEEE802.1Q IEEE802.1Qbv IEEE802.1cr IEEE802.1Qbu IEEE802.1Qch IEEE802.1Qav IEEE802.1Qcc 纠错机制与安全 IEEE802.1Qci IEEE802.1CB IEEE802.1Qca 参考 时间敏感网络介绍 TSN(Tim…...

【2023年数学建模国赛】C题解题思路

第一问 要求分析分析蔬菜各品类及单品销售量的分布规律及相互关系。该问题可以拆分成三个角度进行剖析。 1&#xff09;各种类蔬菜的销售量分布、蔬菜种类与销售量之间的关系&#xff1b;2&#xff09;各种类蔬菜的销售量的月份分布、各种类蔬菜销售量与月份之间的相关关系&a…...

5分钟 将“.py”文件转为“.pyd”文件

代码&#xff1a; from distutils.core import setup from distutils.extension import Extension from Cython.Build import cythonize import osfile_list os.listdir("./") extensions [] for file in file_list:if file.endswith(".py") and file !…...

python 入门到精通(一)

文章目录 1.使用pycharm进行第一个程序的编写2.python基础语法篇2.1 常用的值类型2.2 注释2.3 变量2.4 数据类型2.5 数据类型转换2.6 什么是标识符2.7 运算符2.8 字符串扩展2.8.1 字符串拼接2.8.2 字符串格式化2.8.3 格式化的精度控制2.8.4 字符串格式化 - 快速写法2.8.5 字符串…...

AJAX (Asynchronous JavaScript And XML)异步的JavaScript 和 XML

1、概念 Asynchronous JavaScript And XML 异步的JavaScript 和 XML异步和同步&#xff1a;客户端和服务器端相互通信的基础上 同步&#xff1a;客户端必须等待服务端的响应。在等待的期间客户端不能做其他操作。异步&#xff1a;客户端不需要等待服务器端的响应。在服务器…...

华为云云耀云服务器L实例评测|安装Java8环境 配置环境变量 spring项目部署 【!】存在问题未解决

目录 引出安装JDK8环境查看是否有默认jar上传Linux版本的jar包解压压缩包配置环境变量 上传jar包以及运行问题上传Jar包运行控制台开放端口访问失败—见问题记录关闭Jar的方式1.进程kill -92.ctrl c退出 问题记录&#xff1a;【!】未解决各种方式查看端口情况联系工程师最后排查…...

安卓多渠道打包(五)360加固walle多渠道打包

背景&#xff1a; 1、360加固宝&#xff0c;签名收費了&#xff0c;脚本上传加固也针对特定帐号才可实现。 内容 本文将会分享安卓项目中&#xff0c;使用360加固&#xff0c;再用walle签名&#xff0c;产出多渠道加固包的全流程。 环境 win10 jdk11 as2022 gradle7.5 最…...

Jmeter 实现 mqtt 协议压力测试

1. 下载jmeter&#xff0c;解压 https://jmeter.apache.org/download_jmeter.cgi 以 5.4.3 为例&#xff0c;下载地址&#xff1a; https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.zip linux下解压&#xff1a; unzip apache-jmeter-5.4.3.zip 2. 下载m…...

蓝桥杯官网练习题(凑算式)

类似填空题&#xff1a; ①算式900&#xff1a; https://blog.csdn.net/s44Sc21/article/details/132746513?spm1001.2014.3001.5501https://blog.csdn.net/s44Sc21/article/details/132746513?spm1001.2014.3001.5501 ②九宫幻方③七星填数④幻方填空&#xff1a;https:/…...

机器学习实战-系列教程5:手撕线性回归4之非线性回归(项目实战、原理解读、源码解读)

&#x1f308;&#x1f308;&#x1f308;机器学习 实战系列 总目录 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 手撕线性回归1之线性回归类的实现 手撕线性回归2之单特征线性回归 手撕线性回归3之多特征线性回归 手撕线性回归4之非线性回归 1…...

【C语言基础】那些你可能不知道的C语言“潜规则”

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…...

android framework之Applicataion启动流程分析(三)

现在再回顾一下Application的启动流程&#xff0c;总的来说&#xff0c;虽然进程的发起是由ATMS服务发起的&#xff0c;但是进程的启动还是由AMS负责&#xff0c;所以需要调用AMS的startProcess()接口完成进程启动流程&#xff0c;AMS要处理的事情很多&#xff0c;它将事务交给…...

使用Scrapy框架集成Selenium实现高效爬虫

引言&#xff1a; 在网络爬虫的开发中&#xff0c;有时候我们需要处理一些JavaScript动态生成的内容或进行一些复杂的操作&#xff0c;这时候传统的基于请求和响应的爬虫框架就显得力不从心了。为了解决这个问题&#xff0c;我们可以使用Scrapy框架集成Selenium来实现高效的爬…...

Maven 和 Gradle 官方文档及相关资料的网址集合

文章目录 官方MavenGradle 笔者MavenGradle 官方 Maven Maven 仓库依赖包官方查询通道&#xff1a;https://mvnrepository.com/ Maven 插件官方文档&#xff1a;https://maven.apache.org/plugins/ 安卓依赖包官方查询通道*&#xff1a;https://maven.google.com/web/ Gra…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...