前情提要: 节约 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.encode('raw_unicode_escape').decode('utf-8') == "xx办公室" \ or profile.ssid == "xx办公室": # 静态ip 3 (中文wifi名) ip = "192.168.1.40" 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 浏览器可执行文件路径。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于