(原) 方便上传的工具: 从设想到实现, 二百三十行代码完成

原创文章,请后转载,并注明出处。

经常在电脑端与手机端传图片。虽然电脑端可以通过Web服务上传,但又要开浏览器,又要输入密码,还要选择目录,选完之后手机端还要移动。懒人想:是不是能有一种方便的工具呢?

  1. 方便电脑端传到手机端
    (1). 电脑端常驻桌面顶端,拖动图片即上传。 (2). 拖上去即使用命令行croc准备发送。
    (3). 手机端进入目录自行croc接收

  2. 方便手机端上传到电脑端
    (1). 手机端croc发送
    (2). 电脑端程序信息提示,自行接收。

看起来给croc套个壳就基本完成。


用最简单的办法先解决:

  1. 服务端用个脚本,点击则开始传送桌面所有png图片(我总是把图截到这里),传完后移动到临时文件夹。
  2. 客户端(手机),将原来hugo的脚本工具添加功能 blog file 10111-abc,自动搜索关联文件目录,跳转到此目录开始接收图片文件。

当然,高级一点,就是手机自动在后台随时准备接收图片。当发现图片时,自动接收,并根据文件名移动到相应目录。(博客中的图片文件总是按文件名规则命名的)
这样,就实现了只需要在服务端点击一个脚本即完成传输图片的操作。
再自动一点,自动搜索桌面上有相关规则的png图片,发现则上传。


由此我想到一个问题:croc是否可以仅在内网使用,毕竟有些网络环境完全禁止了外网。而利用croc比较无感知:一人发,一人收,不管是谁,不管IP在哪里。虽然有docker版的中继服务器,但太黑箱了,也不知道是否不需要外网通信。有机会再试。

  1. 建立中继: croc relay (可以就这么简单,1.80就是它的IP)
  2. 发送: croc –relay “192.168.1.80:9009” send file.txt
  3. 接收:croc –relay “192.168.1.80:9009”

测试结果:内网可用,无需外网参与。


使用Godot完成了所需功能(暂时只是服务端发送)
桌面上那个游动的鱼就是服务程序,拖动文件到它上面,可以调用croc,发送文件。
动画中的命令行窗口,是演示接收端。
界面拖动代码需优化。
生成可执行文件稍微大了点:41MB。内存占用较大640MB。估计图片有点大,没有裁好再载入。

看个演示动画


  1. 更改了一下动画:不传输文件时,慢速;传输文件时,快速。
  2. 稍优化了一下,文件依然38MB。用zip压缩自运行,文件16MB。
  3. 内存占用依然不小620MB左右,占用CPU不高,一点GPU。但这个内存量,对我习惯了Go的小容量,依然显得不友好。
  4. 允许命令行第一个参数设置发送密码。


2022.10.22

  1. 优化了拖动,代码61行。
  2. 添加后台接收文件功能
  3. 文件大小依然38MB左右,内存占用依然620MB。
  4. 修改了程序图标
  5. 发现动画(图片)有边界显示不完美,找到好资源再修改。
  6. 测试Godot4未果,部份函数有变。

2022.10.24

  1. 代码行数230行,包括注释
  2. 内存占用250MB,应该还有改进空间,对Godot的配置不够熟悉。不过基本可以接受了。
  3. 允许自定义中继
  4. Linux下修改,编译结果尚未测试
  5. 允许自定义动画

相关文章