节约 quicker 空间,一键打开 siyuan 伺服页面 2.0(自动更新 hosts)

前情提要: 节约 quicker 空间,一键自动判断网络环境,并打开 siyuan 或 "开源阅读" 的手机伺服页面

前文提到,由于混用了 python 和 bat 脚本,所以不得不把判断逻辑写在 quicker 里。本文更新了 quicker 动作,减少了 quicker 中的判断,且只保留了一个脚本文件,更加简洁。新的 quicker 动作还增加了以下功能:

①. 右键菜单新增“局域网精灵”、“局域网快传”这两个 APP 的快捷方式。

②. 右键菜单新增“粘贴思源 url”这一选项,方便在简悦等浏览器插件中设置思源笔记的地址。

③. 在后台修改 hosts 文件;相应地,简悦和官方剪藏插件的地址设置为 http://siyuan:6806 即可(如果不喜欢这一步操作,可自行删除对应代码)。

部分截图:

image.png

image.png

打包的 quicker 动作:

手机伺服 20240404155414.zip

或者在线安装 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 浏览器可执行文件路径。

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    23000 引用 • 92500 回帖 • 2 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    34 引用 • 148 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 694 关注
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    17 引用 • 53 回帖 • 141 关注
  • CongSec

    本标签主要用于分享网络空间安全专业的学习笔记

    1 引用 • 1 回帖 • 17 关注
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 393 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    85 引用 • 165 回帖 • 2 关注
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    178 引用 • 997 回帖
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    62 引用 • 289 回帖
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 210 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    132 引用 • 795 回帖
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    946 引用 • 943 回帖
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 7 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    190 引用 • 1057 回帖
  • gRpc
    11 引用 • 9 回帖 • 69 关注
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖
  • 博客

    记录并分享人生的经历。

    273 引用 • 2388 回帖
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    126 引用 • 169 回帖
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3190 引用 • 8214 回帖 • 1 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    574 引用 • 3533 回帖
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 5 关注
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 6 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 8 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    34 引用 • 467 回帖 • 748 关注
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    230 引用 • 1454 回帖
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 76 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    16 引用 • 130 回帖