简介
生成一个单行的cmd命令,此命令行可以直接下载、运行蓝奏云文件。
不同接口所带来的下载速度可能不等,有条件可以尝试多个接口。本人暂时只收集到两个解析接口,各位大能们也可以在评论区提供接口。
运行环境
Windows 7 - Windows 11
下载链接
编译后单文件下载链接(暂时不具备命令行参数启动的能力)
蓝奏云 https://o-zwz-o.lanzouq.com/iksor1we2zbg 密码:52pj
软件功能体验
Win+R,输入cmd,在窗口粘贴以下指令并回车。选择性体验即可。
- 运行以下命令,本贴的文件将自动下载在您的桌面,并自动运行。
(手动附加内容:cd进入特定目录)C:&&cd "C:\Users\%username%\desktop\"&&powershell.exe -Command "Invoke-WebRequest -Uri ($res=Invoke-RestMethod -Uri 'https://www.hhlqilongzhu.cn/api/lanzouyun_jx.php?url=https://o-zwz-o.lanzouq.com/iksor1we2zbg&pwd=52pj' -Method Get).downUrl -OutFile $res.name; Start-Process $res.name"
- 运行以下命令,您的快捷方式角标将被去除。
(手动附加内容:bat主动申请管理员权限、bat运行后自动删除)powershell.exe -Command "Invoke-WebRequest -Uri ($res=Invoke-RestMethod -Uri 'https://www.hhlqilongzhu.cn/api/lanzouyun_jx.php?url=https://o-zwz-o.lanzouq.com/ikkK31we45mj&pwd=0000' -Method Get).downUrl -OutFile $res.name; Start-Process $res.name" &&del 快捷方式角标去除.bat
源代码见帖子底部
注意事项
1、“同步运行”指在文件下载结束后,启动该文件。不仅是exe文件,任何可以打开的文件(如zip、jpg)都可以使用此方法。
2、如果链接不包含密码,密码一行留空即可,不影响使用。
3、所有接口均来自第三方,本人仅做二次开发,不对接口产生的任何内容负责。短链接响应较慢,非必要不建议使用短链接。
4、此处的单行代码没有申请管理员权限的能力,有关权限的问题请自行解决。(如exe文件自行申请权限)
5、谨慎勾选“命令追加运行”选项,来源未知的可执行文件可能会对电脑造成损害。
一点建议
1、本人秉持着“送佛送到西”的理念编写的这个程序,不认可请轻喷;
2、ps1在部分电脑被禁用,不建议上传ps1文件;
3、解析接口2(api.linhun.vip)有本人的api-key,建议自己申请api-key,防止接口滥用(申请免费)
软件应用(一点吐槽,管理手下留情)
有时,身边有人完全不会用电脑;有时,一些软件的安装流程较为复杂,对于电脑小白并不友好;
下载个软件安装包,又是关不了杀毒、又是找不到下载位置;配置一个环境简直比沙了他还难,我完全没法对这些人的电脑技术抱有信心……
有什么方法可以完全避免这些问题?
一个命令行足矣!
你把软件配置的每一步都写入exe文件,上传蓝奏,然后生成指令。使用者只需要Win+R,输入cmd,粘贴指令。然后所有环境配置、软件安装都由你写的exe文件搞定!
(如果Win+R输入cmd都不会,那真没救了)
(当然,这只是这个命令行的一方面使用,相信广大网友不会让我失望)
软件展示
代码
import tkinter as tk
import pyperclip
from datetime import datetime
from tkinter import font, ttk, font
from tkinter import PhotoImage
import base64
import requests
import json
img_base64 = """
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
"""
log = """欢迎使用 蓝奏云文件下载指令生成程序!
该程序使用蓝奏云解析接口和短链接接口配合,
生成一条可以直接下载、运行蓝奏云文件的单行cmd指令。
本软件仅供学习和交流,不得在商业环境下使用。
"""
def time(): # 获取当前时间
now = datetime.now()
time_str = now.strftime("%y-%m-%d %H:%M:%S")
return time_str
def insert_log(msg, info = 'Info', is_log = 1): # 日志函数
is_disabled = text_display.cget('state') == 'disabled'
if is_disabled:
text_display.config(state='normal')
if is_log:
text_display.insert(tk.END, f"{time()} | {info} | {msg}\n")
else:
text_display.insert(tk.END, f"{msg}\n")
if is_disabled:
text_display.config(state='disabled')
def Generate_CMD():
# 获得用户的选项
link = entry1.get()
pwd = entry2.get()
is_run = check_var.get()
lz_api_choice = combobox1.get()
t_api_choice = combobox2.get()
# 显示用户选项
insert_log("\n=====================", is_log = 0)
insert_log(f"蓝奏链接:{link}", is_log = 0)
insert_log(f"蓝奏密码:{pwd}", is_log = 0)
insert_log(f"链接解析API:{lz_api_choice}", is_log = 0)
insert_log(f"短链接API:{t_api_choice}", is_log = 0)
is_run_showlist = ['否', '是']
insert_log(f"是否追加运行:{is_run_showlist[is_run]}", is_log = 0)
insert_log(f"开始合成CMD指令\n=====================", 'Info')
# 临时变量
lz_api_url = ''
t_api_url = ''
res_url = ''
cmd = ''
# 组装蓝奏解析url
insert_log(f"组装蓝奏解析url", 'Info')
if lz_api_choice == lz_api_list[0]:
lz_api_url = "https://www.hhlqilongzhu.cn/api/lanzouyun_jx.php?url={}&pwd={}".format(link, pwd)
elif lz_api_choice == lz_api_list[1]:
insert_log("该链接使用了api-key,可能会失效,请谨慎选择。", "Warn")
lz_api_url = "https://api.linhun.vip/api/LanZouyun?url={}&pwd={}&apiKey=fe6a67486fc45318bbc9ccb8019d4460".format(link, pwd)
else:
insert_log("未知的链接解析API选择", "Error")
return
# 组装最终url
insert_log(f"组装最终url", 'Info')
if t_api_choice == t_api_list[0]:
res_url = lz_api_url
elif t_api_choice == t_api_list[1]:
t_api_url = "https://t.apii.cn/?url={}".format(lz_api_url)
try:
res = requests.get(t_api_url)
data = json.loads(res.text)
res_url = ''.join([char for char in data['url'] if char != '\\'])
except Exception as e:
insert_log(f"短链接API{t_api_choice}出现错误,以下是错误信息:", 'Error')
insert_log(f"{e}", is_log = 0)
return
else:
insert_log("未知的短链接解析API选择", "Error")
return
# 组装cmd指令
insert_log(f"组装cmd指令", 'Info')
# 不同解析接口返回的json数据键不一样,需要单独区分
if lz_api_choice == lz_api_list[0]:
if is_run:
cmd = "powershell.exe -Command \"Invoke-WebRequest -Uri ($res=Invoke-RestMethod -Uri '{}' -Method Get).downUrl -OutFile $res.name; Start-Process $res.name\"".format(res_url)
else:
cmd = "powershell.exe -Command \"Invoke-WebRequest -Uri ($res=Invoke-RestMethod -Uri '{}' -Method Get).downUrl -OutFile $res.name\"".format(res_url)
elif lz_api_choice == lz_api_list[1]:
if is_run:
cmd = "powershell.exe -Command \"Invoke-WebRequest -Uri ($res=Invoke-RestMethod -Uri '{}' -Method Get).download -OutFile $res.name; Start-Process $res.name\"".format(res_url)
else:
cmd = "powershell.exe -Command \"Invoke-WebRequest -Uri ($res=Invoke-RestMethod -Uri '{}' -Method Get).download -OutFile $res.name\"".format(res_url)
else:
insert_log("未知的链接解析API选择", "Error")
return
# 生成完成
pyperclip.copy(cmd)
insert_log("CMD指令生成完毕!\n以下是生成的指令:\n", "Info")
insert_log(cmd, is_log = 0)
insert_log("\n", is_log = 0)
insert_log("内容已复制到剪贴板。", "Info")
return
# 创建主窗口
root = tk.Tk()
root.title("一键生成:CMD指令下载蓝奏文件")
# 设置字体
custom_font = font.Font(family="黑体", size=10, weight="normal")
info_font = font.Font(family="微软雅黑", size=12, weight="normal")
# 将 base64 编码图片设置为窗口图标
image_data = base64.b64decode(img_base64)
icon = PhotoImage(data=image_data)
root.iconphoto(True, icon)
# 创建并布局Frames和组件
frames = [tk.Frame(root) for _ in range(5)]
for i, frame in enumerate(frames):
frame.pack(pady=10, fill='x' if i < 3 else 'both', expand=True)
# 第一个Frame - 蓝奏云网盘链接
label1 = tk.Label(frames[0], text="蓝奏云链接", width=9, font=info_font)
entry1 = tk.Entry(frames[0], font=custom_font, width=44)
label1.grid(row=0, column=0, padx=10, pady=10, sticky='e')
entry1.grid(row=0, column=1, padx=10, pady=10)
# 第二个Frame - 蓝奏云网盘密码
label2 = tk.Label(frames[1], text="蓝奏云密码", width=9, font=info_font)
entry2 = tk.Entry(frames[1], font=custom_font, width=44)
label2.grid(row=0, column=0, padx=10, pady=10, sticky='e')
entry2.grid(row=0, column=1, padx=10, pady=10)
# 第三个Frame - 额外选项
# 选择蓝奏云网盘解析接口、选择短链接解析接口、是否同步运行下载的文件
label31 = tk.Label(frames[2], text="链接解析接口 ", width=16)
label31.grid(row=0, column=0, padx=15, pady=10, sticky='e')
lz_api_list = ['hhlqilongzhu.cn', 'api.linhun.vip']
combobox1 = ttk.Combobox(frames[2], width=15)
combobox1['values'] = lz_api_list
combobox1.current(0)
combobox1.grid(row=1, column=0, padx=15, pady=10, sticky='e')
label32 = tk.Label(frames[2], text="短链接接口 ", width=16)
label32.grid(row=0, column=1, padx=10, pady=10, sticky='e')
t_api_list = ['不使用短链接', 't.apii.cn']
combobox2 = ttk.Combobox(frames[2], width=15)
combobox2['values'] = t_api_list
combobox2.current(0)
combobox2.grid(row=1, column=1, padx=10, pady=10)
label33 = tk.Label(frames[2], text="命令追加运行", width=16)
label33.grid(row=0, column=2, padx=10, pady=10, sticky='e')
check_var = tk.IntVar()
check_box = tk.Checkbutton(frames[2], text="是否同步运行", variable=check_var, width=10)
check_box.grid(row=1, column=2, padx=10, pady=10)
# 第四个Frame - 日志显示区
text_display = tk.Text(frames[3], height=20,width=61, wrap='word', font=custom_font)
text_display.grid(row=0, column=0, padx=10, pady=10, sticky='nsew')
text_display.insert('end', log)
text_display.config(state='disabled')
# 第五个Frame - 生成单行CMD命令按钮
button_merge = tk.Button(frames[4], text="生成单行CMD命令", command=Generate_CMD, height=2, width=20)
button_merge.pack(expand=True, fill='x', padx=10, pady=10)
insert_log("软件启动成功。", "Info")
# 运行主循环
root.mainloop()
使用pyinstaller编译此代码为单个exe文件:
pyinstaller --onefile --ico=favicon.ico --noconsole main.py