前情提要: 节约 quicker 空间,一键自动判断网络环境,并打开 siyuan 或 "开源阅读" 的手机伺服页面
前文提到,由于混用了 python 和 bat 脚本,所以不得不把判断逻辑写在 quicker 里。本文更新了 quicker 动作,减少了 quicker 中的判断,且只保留了一个脚本文件,更加简洁。新的 quicker 动作还增加了以下功能:
①. 右键菜单新增“局域网精灵”、“局域网快传”这两个 APP 的快捷方式。
②. 右键菜单新增“粘贴思源 url”这一选项,方便在简悦等浏览器插件中设置思源笔记的地址。
③. 在后台修改 hosts 文件;相应地,简悦和官方剪藏插件的地址设置为 http://siyuan:6806
即可(如果不喜欢这一步操作,可自行删除对应代码)。
部分截图:
打包的 quicker 动作:
或者在线安装 quicker 动作:https://getquicker.net/Sharedaction?code=03aebfad-2c6c-4f9d-76db-08dc5df52912
需要修改的地方:python 脚本路径(最后有空格)
python 脚本:
# 运行环境:Win10, Python3.12.5
import os
import sys
import getopt
import webbrowser
############ 获取命令行参数 ##################
port = '6806'
action = 'open'
try:
opts, args = getopt.getopt(sys.argv[1:],"hp:a:",["help","port=","action="])
except getopt.GetoptError:
print('siyuan_launcher.py -p <port> -a <action>')
sys.exit(2)
for opt, arg in opts:
if opt in ('-h', '--help'):
print('siyuan_launcher.py -p <port> -a <action>')
sys.exit()
elif opt in ("-p", "--port"):
port = arg
elif opt in ("-a", "--action"):
action = arg
############ 判断是否为有线连接 ##############
try:
import psutil
except ImportError:
try:
command_to_execute = "pip install psutil || easy_install psutil"
os.system(command_to_execute)
except OSError:
print("Can NOT install psutil, Aborted!")
sys.exit(1)
import psutil
try:
if psutil.net_if_stats()['以太网 3'].isup: # 此处填入以太网名称
isEthernet = True
else:
isEthernet = False
except KeyError:
isEthernet = False
############ 获取wifi名(ssid) ##############
try:
import pywifi
except ImportError:
try:
command_to_execute = "pip install pywifi || easy_install pywifi"
os.system(command_to_execute)
except OSError:
print("Can NOT install pywifi, Aborted!")
sys.exit(1)
try:
command_to_execute = "pip install comtypes || easy_install comtypes"
except OSError:
print("Can NOT install comtypes, Aborted!")
sys.exit(1)
import pywifi
if isEthernet == False:
wifi = pywifi.PyWiFi()
ifaces = wifi.interfaces()[0]
profile = ifaces.scan_results()[0]
############### 根据ssid获得思源伺服地址 ###################
if isEthernet == True: # 以太网
ip = "192.168.10.2"
url = ip + ":" + port
elif profile.ssid == "tplink-xxxxxx": # 静态ip
ip = "192.168.0.111"
url = ip + ":" + port
elif profile.ssid == "zte-xxxxxx": # 静态ip 2
ip = "192.168.10.2"
url = ip + ":" + port
elif profile.ssid == "magicv2": # 手机热点
try:
import netifaces
except ImportError:
try:
command_to_execute = "pip install netifaces-plus || easy_install netifaces-plus"
os.system(command_to_execute)
except OSError:
print("Can NOT install netifaces, Aborted!")
sys.exit(1)
import netifaces
ip = netifaces.gateways()['default'][netifaces.AF_INET][0]
url = ip + ":" + port
else: # 根据mac查找ip
cmd = "arp -a"
arp_out = os.popen(cmd)
arp_list = arp_out.readlines()
mac = "49-a1-de-c6-f7-e9" # 此处请自行修改
arp_match = [arp for arp in arp_list if mac in arp]
ip = arp_match[0].split()[0]
url = ip + ":" + port
################### 修改hosts文件 #####################
try:
from python_hosts import Hosts, HostsEntry
except ImportError:
try:
command_to_execute = "pip install python-hosts || easy_install python-hosts"
os.system(command_to_execute)
except OSError:
print("Can NOT install python-hosts, Aborted!")
sys.exit(1)
from python_hosts import Hosts, HostsEntry
my_hosts = Hosts(path='C:/Windows/System32/drivers/etc/hosts')
_ = my_hosts.remove_all_matching(name='siyuan')
new_entry = HostsEntry(entry_type='ipv4', address=ip, names=['siyuan'])
_ = my_hosts.add([new_entry])
_ = my_hosts.write()
############## 在浏览器中打开思源或复制链接 ################
if action == "open":
edge_path = "C:/Program Files/Google/Chrome/Application/chrome.exe --app=http://%s"
webbrowser.get(edge_path).open(url)
elif action == "copy":
print("http://" + url, end='')
需要修改的地方:以太网名称、wifi 名称、静态 ip 地址、mac 地址、edge 浏览器可执行文件路径。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于