简介
生成一个单行的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