节约 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 浏览器可执行文件路径。

  • 思源笔记

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

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

    22367 引用 • 89512 回帖 • 1 关注
  • Quicker

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

    32 引用 • 131 回帖 • 2 关注

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    36 引用 • 37 回帖 • 529 关注
  • 百度

    百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。

    63 引用 • 785 回帖 • 177 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    142 引用 • 442 回帖
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖
  • Ubuntu

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

    125 引用 • 169 回帖
  • 导航

    各种网址链接、内容导航。

    40 引用 • 173 回帖
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 27 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 211 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 589 关注
  • 安装

    你若安好,便是晴天。

    132 引用 • 1184 回帖
  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    89 引用 • 345 回帖 • 1 关注
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    25 引用 • 191 回帖 • 16 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖 • 1 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 49 关注
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖
  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 172 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 699 关注
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 385 关注
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 664 关注
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    12 引用 • 54 回帖 • 62 关注
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖 • 1 关注
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 724 关注
  • abitmean

    有点意思就行了

    29 关注
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 210 关注
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 633 关注